From ac4e88605a5a1513e736a517a278c7ce4d55ea8a Mon Sep 17 00:00:00 2001 From: wphyojpl <38299756+wphyojpl@users.noreply.github.com> Date: Wed, 24 Apr 2024 09:08:44 -0700 Subject: [PATCH 01/12] feat: Add Granuile CNM Ingester TF (#365) * feat: add mock lambda + tf * feat: allow some settings configurable + add tags * fix: prep for s3 part (blocked by IAM) * chore: remove comment * fix: update sns policy for s3 connection * fix: remove s3 bucket code --- .../granules_cnm_ingester/__init__.py | 0 .../granules_cnm_ingester/lambda_function.py | 13 +++ .../unity-cumulus/granules_cnm_ingester.tf | 96 +++++++++++++++++++ tf-module/unity-cumulus/main.tf | 2 + tf-module/unity-cumulus/sns_policy.json | 31 ++++++ tf-module/unity-cumulus/sqs-sns.tf | 1 + tf-module/unity-cumulus/sqs_policy.json | 2 +- tf-module/unity-cumulus/variables.tf | 39 +++++++- 8 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 cumulus_lambda_functions/granules_cnm_ingester/__init__.py create mode 100644 cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py create mode 100644 tf-module/unity-cumulus/granules_cnm_ingester.tf create mode 100644 tf-module/unity-cumulus/sns_policy.json diff --git a/cumulus_lambda_functions/granules_cnm_ingester/__init__.py b/cumulus_lambda_functions/granules_cnm_ingester/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py b/cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py new file mode 100644 index 00000000..626431a1 --- /dev/null +++ b/cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py @@ -0,0 +1,13 @@ +import json +from cumulus_lambda_functions.lib.lambda_logger_generator import LambdaLoggerGenerator + + +def lambda_handler(event, context): + """ + :param event: + :param context: + :return: + """ + LambdaLoggerGenerator.remove_default_handlers() + print(f'event: {event}') + raise NotImplementedError('Require implementation later') diff --git a/tf-module/unity-cumulus/granules_cnm_ingester.tf b/tf-module/unity-cumulus/granules_cnm_ingester.tf new file mode 100644 index 00000000..1d45a863 --- /dev/null +++ b/tf-module/unity-cumulus/granules_cnm_ingester.tf @@ -0,0 +1,96 @@ +resource "aws_lambda_function" "granules_cnm_ingester" { + filename = local.lambda_file_name + source_code_hash = filebase64sha256(local.lambda_file_name) + function_name = "${var.prefix}-granules_cnm_ingester" + role = var.lambda_processing_role_arn + handler = "cumulus_lambda_functions.granules_cnm_ingester.lambda_function.lambda_handler" + runtime = "python3.9" + timeout = 300 + reserved_concurrent_executions = var.granules_cnm_ingester__lambda_concurrency # TODO + environment { + variables = { + LOG_LEVEL = var.log_level + SNS_TOPIC_ARN = var.cnm_sns_topic_arn + } + } + + vpc_config { + subnet_ids = var.cumulus_lambda_subnet_ids + security_group_ids = local.security_group_ids_set ? var.security_group_ids : [aws_security_group.unity_cumulus_lambda_sg[0].id] + } + tags = var.tags +} + +resource "aws_sns_topic" "granules_cnm_ingester" { + name = "${var.prefix}-granules_cnm_ingester" + tags = var.tags +} + +resource "aws_sns_topic_policy" "granules_cnm_ingester_policy" { + arn = aws_sns_topic.granules_cnm_ingester.arn + policy = templatefile("${path.module}/sns_policy.json", { + region: var.aws_region, + accountId: local.account_id, + snsName: "${var.prefix}-granules_cnm_ingester", + s3Glob: var.granules_cnm_ingester__s3_glob + }) +} + +resource "aws_sqs_queue" "dead_letter_granules_cnm_ingester" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue + // TODO how to notify admin for failed ingestion? + tags = var.tags + name = "${var.prefix}-dead_letter_granules_cnm_ingester" + delay_seconds = 0 + max_message_size = 262144 + message_retention_seconds = 345600 + visibility_timeout_seconds = 300 + receive_wait_time_seconds = 0 + policy = templatefile("${path.module}/sqs_policy.json", { + region: var.aws_region, + roleArn: var.lambda_processing_role_arn, + accountId: local.account_id, + sqsName: "${var.prefix}-dead_letter_granules_cnm_ingester", + }) +// redrive_policy = jsonencode({ +// deadLetterTargetArn = aws_sqs_queue.terraform_queue_deadletter.arn +// maxReceiveCount = 4 +// }) +// tags = { +// Environment = "production" +// } +} + +resource "aws_sqs_queue" "granules_cnm_ingester" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue + name = "${var.prefix}-granules_cnm_ingester" + delay_seconds = 0 + max_message_size = 262144 + message_retention_seconds = 345600 + visibility_timeout_seconds = var.granules_cnm_ingester__sqs_visibility_timeout_seconds // Used as cool off time in seconds. It will wait for 5 min if it fails + receive_wait_time_seconds = 0 + policy = templatefile("${path.module}/sqs_policy.json", { + region: var.aws_region, + roleArn: var.lambda_processing_role_arn, + accountId: local.account_id, + sqsName: "${var.prefix}-granules_cnm_ingester", + }) + redrive_policy = jsonencode({ + deadLetterTargetArn = aws_sqs_queue.dead_letter_granules_cnm_ingester.arn + maxReceiveCount = var.granules_cnm_ingester__sqs_retried_count // How many times it will be retried. + }) + tags = var.tags +} + +resource "aws_sns_topic_subscription" "granules_cnm_ingester_topic_subscription" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription + topic_arn = aws_sns_topic.granules_cnm_ingester.arn + protocol = "sqs" + endpoint = aws_sqs_queue.granules_cnm_ingester.arn +# filter_policy_scope = "MessageBody" // MessageAttributes. not using attributes +# filter_policy = templatefile("${path.module}/ideas_api_job_results_filter_policy.json", {}) +} + +resource "aws_lambda_event_source_mapping" "granules_cnm_ingester_queue_lambda_trigger" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_event_source_mapping#sqs + event_source_arn = aws_sqs_queue.granules_cnm_ingester.arn + function_name = aws_lambda_function.granules_cnm_ingester.arn + batch_size = 1 + enabled = true +} diff --git a/tf-module/unity-cumulus/main.tf b/tf-module/unity-cumulus/main.tf index 1f50b125..2a29591e 100644 --- a/tf-module/unity-cumulus/main.tf +++ b/tf-module/unity-cumulus/main.tf @@ -170,6 +170,7 @@ resource "aws_ssm_parameter" "uds_api_1" { name = "/unity/unity-ds/api-gateway/integrations/${var.prefix}-uds_api_1-function-name" type = "String" value = aws_lambda_function.uds_api_1.function_name + tags = var.tags } @@ -178,4 +179,5 @@ resource "aws_ssm_parameter" "uds_api_1" { name = "${var.health_check_base_path}/${var.health_check_marketplace_item}/${var.health_check_component_name}/url" type = "String" value = "${var.uds_base_url}/${var.dapa_api_prefix}/collections" + tags = var.tags } \ No newline at end of file diff --git a/tf-module/unity-cumulus/sns_policy.json b/tf-module/unity-cumulus/sns_policy.json new file mode 100644 index 00000000..638b7ebe --- /dev/null +++ b/tf-module/unity-cumulus/sns_policy.json @@ -0,0 +1,31 @@ +{ + "Version": "2008-10-17", + "Id": "__default_policy_ID", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": ["s3.amazonaws.com"] + }, + "Action": [ + "SNS:GetTopicAttributes", + "SNS:SetTopicAttributes", + "SNS:AddPermission", + "SNS:RemovePermission", + "SNS:DeleteTopic", + "SNS:Subscribe", + "SNS:ListSubscriptionsByTopic", + "SNS:Publish" + ], + "Resource": "arn:aws:sns:${region}:${accountId}:${snsName}", + "Condition": { + "ArnLike": { + "aws:SourceArn": "arn:aws:s3:*:*:${s3Glob}" + }, + "StringEquals": { + "AWS:SourceAccount": "${accountId}" + } + } + } + ] +} \ No newline at end of file diff --git a/tf-module/unity-cumulus/sqs-sns.tf b/tf-module/unity-cumulus/sqs-sns.tf index e1adfa43..b516fdd2 100644 --- a/tf-module/unity-cumulus/sqs-sns.tf +++ b/tf-module/unity-cumulus/sqs-sns.tf @@ -22,6 +22,7 @@ resource "aws_sqs_queue" "granules_to_es_queue" { // https://registry.terraform // tags = { // Environment = "production" // } + tags = var.tags } resource "aws_sns_topic_subscription" "report_granules_topic_subscription" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription diff --git a/tf-module/unity-cumulus/sqs_policy.json b/tf-module/unity-cumulus/sqs_policy.json index f6bbacfb..9dbf3f9d 100644 --- a/tf-module/unity-cumulus/sqs_policy.json +++ b/tf-module/unity-cumulus/sqs_policy.json @@ -12,7 +12,7 @@ "sqs:SendMessage*" ], "Principal": { - "Service": "sns.amazonaws.com" + "Service": ["sns.amazonaws.com", "sqs.amazonaws.com"] }, "Resource": "arn:aws:sqs:${region}:${accountId}:${sqsName}" }, diff --git a/tf-module/unity-cumulus/variables.tf b/tf-module/unity-cumulus/variables.tf index cd1705ea..855db151 100644 --- a/tf-module/unity-cumulus/variables.tf +++ b/tf-module/unity-cumulus/variables.tf @@ -190,4 +190,41 @@ variable "health_check_base_path" { type = string default = "/unity/healthCheck" description = "base path for healthcheck which should start with, but not end with `/`" -} \ No newline at end of file +} + +// << Variables for granules_cnm_ingester >> +variable "granules_cnm_ingester__sqs_visibility_timeout_seconds" { + type = number + default = 300 + description = "when a lambda ends in error, how much sqs should wait till it is retried again. (in seconds). defaulted to 5 min" +} + +variable "granules_cnm_ingester__sqs_retried_count" { + type = number + default = 3 + description = "How many times it is retried before pushing it to DLQ. defaulted to 3 times" +} + +variable "granules_cnm_ingester__lambda_concurrency" { + type = number + default = 20 + description = "How many Lambdas can be executed for CNM ingester concurrently" +} + +variable "granules_cnm_ingester__bucket_notification_prefix" { + type = string + default = "stage_out" + description = "path to the directory where catalogs.json will be written" +} + +variable "granules_cnm_ingester__s3_glob" { + type = string + default = "*unity*" + description = "GLOB expression that has all s3 buckets connecting to SNS topic" +} +#variable "granules_cnm_ingester__is_deploying_bucket" { +# type = bool +# default = false +# description = "flag to specify if deploying example bucket" +#} +// << Variables for granules_cnm_ingester END >> From 33310aefc1092c2afc719e2af5aae39b0c3b3411 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 09:13:48 -0700 Subject: [PATCH 02/12] chore: update version + change log (#367) Co-authored-by: ngachung --- CHANGELOG.md | 4 ++++ setup.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bc19b4c..d0681cd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.5.0] - 2024-04-24 +### Changed +- [#365](https://github.com/unity-sds/unity-data-services/pull/365) feat: add granuile cnm ingester tf + ## [7.4.0] - 2024-04-15 ### Changed - [#361](https://github.com/unity-sds/unity-data-services/pull/361) feat: uploading successful feature collection to s3 diff --git a/setup.py b/setup.py index fb1bd221..147aa4fd 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ setup( name="cumulus_lambda_functions", - version="7.4.0", + version="7.5.0", packages=find_packages(), install_requires=install_requires, package_data={ From 8ecadd72d4c73916ff4493959fa15ad466ad3842 Mon Sep 17 00:00:00 2001 From: wphyojpl <38299756+wphyojpl@users.noreply.github.com> Date: Mon, 13 May 2024 11:19:58 -0700 Subject: [PATCH 03/12] feat: Adding automated ingestion lambda (#368) * feat: some steps for cnm ingester * feat: add default collection code * feat: create collection is done * feat: methods for automated ingester is done * feat: add lambda entry pointj * fix: merge conflicts * feat: update lambda config * fix: unquoting s3 url * fix: not triggering final step debugging * fix: maybe provider is missing * fix: add big upload test * chore: dummy commit * fix: get docker build working again * fix: get github action working again --- .github/workflows/makefile.yml | 2 +- README.md | 2 +- ci.cd/Makefile | 5 +- .../granules_cnm_ingester_logic.py | 193 +++++++ .../granules_cnm_ingester/lambda_function.py | 7 +- .../lib/aws/aws_message_transformers.py | 56 +- cumulus_lambda_functions/lib/aws/aws_s3.py | 7 + .../lib/uds_db/uds_collections.py | 19 + .../stage_in_out/catalog_granules_unity.py | 7 +- .../stage_in_out/stage_in_out_utils.py | 1 + docker/Dockerfile_download_granules.jpl | 4 +- docker/Dockerfile_download_granules.public | 4 +- requirements.txt | 39 ++ .../granules_cnm_ingester/__init__.py | 0 .../test_granules_cnm_ingester_logic.py | 65 +++ ...est_custom_metadata_automated_ingestion.py | 528 ++++++++++++++++++ .../test_custom_metadata_end_to_end.py | 2 +- .../unity-cumulus/granules_cnm_ingester.tf | 8 + tf-module/unity-cumulus/main.tf | 1 - 19 files changed, 918 insertions(+), 32 deletions(-) create mode 100644 cumulus_lambda_functions/granules_cnm_ingester/granules_cnm_ingester_logic.py create mode 100644 requirements.txt create mode 100644 tests/cumulus_lambda_functions/granules_cnm_ingester/__init__.py create mode 100644 tests/cumulus_lambda_functions/granules_cnm_ingester/test_granules_cnm_ingester_logic.py create mode 100644 tests/integration_tests/test_custom_metadata_automated_ingestion.py diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml index 72e24062..980087d7 100644 --- a/.github/workflows/makefile.yml +++ b/.github/workflows/makefile.yml @@ -19,7 +19,7 @@ jobs: with: python-version: '3.9' - run: | - python3 "${GITHUB_WORKSPACE}/setup.py" install + python3 -m pip install -r "${GITHUB_WORKSPACE}/requirements.txt" - run: | python3 "${GITHUB_WORKSPACE}/setup.py" install_lib - run: | diff --git a/README.md b/README.md index 67d9bdb8..3f8a05af 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ -
This repository contains source code that handles data ingest, data catalog, data search and data access that complies to OGC DAPA and STAC specifications.
+
This repository contains source code that handles data ingest, data catalog, data search and data access that complies to OGC DAPA and STAC specifications
diff --git a/ci.cd/Makefile b/ci.cd/Makefile index 7590edfd..d9023867 100644 --- a/ci.cd/Makefile +++ b/ci.cd/Makefile @@ -21,7 +21,7 @@ upload_lambda: aws --profile saml-pub s3 cp cumulus_lambda_functions_deployment.zip s3://am-uds-dev-cumulus-tf-state/unity_cumulus_lambda/ upload_lambda_mcp_dev: - aws s3 cp cumulus_lambda_functions_deployment.zip s3://uds-dev-cumulus-public/unity_cumulus_lambda/ + aws s3 cp tf-module/unity-cumulus/build/cumulus_lambda_functions_deployment.zip s3://uds-dev-cumulus-public/unity_cumulus_lambda/ update_lambda_function_mcp_dev_6: aws lambda update-function-code --s3-key unity_cumulus_lambda/cumulus_lambda_functions_deployment.zip --s3-bucket uds-dev-cumulus-public --function-name arn:aws:lambda:us-west-2:237868187491:function:uds-dev-cumulus-metadata_s4pa_generate_cmr --publish &>/dev/null update_lambda_function_mcp_dev_7: @@ -49,6 +49,9 @@ update_lambda_function_mcp_sbx_7: update_lambda_function_mcp_sbx_8: aws lambda update-function-code --s3-key unity_cumulus_lambda/cumulus_lambda_functions_deployment.zip --s3-bucket uds-dev-cumulus-public --function-name arn:aws:lambda:us-west-2:237868187491:function:uds-sbx-cumulus-granules_to_es --publish &>/dev/null +update_lambda_function_mcp_sbx_ingester: + aws lambda update-function-code --s3-key unity_cumulus_lambda/cumulus_lambda_functions_deployment.zip --s3-bucket uds-dev-cumulus-public --function-name arn:aws:lambda:us-west-2:237868187491:function:uds-sbx-cumulus-granules_cnm_ingester --publish &>/dev/null + mcp_sbx: upload_lambda_mcp_dev update_lambda_function_mcp_sbx_7 update_lambda_function_mcp_sbx_8 mcp_sbx_fastapi: upload_lambda_mcp_dev update_lambda_function_mcp_sbx_uds_api diff --git a/cumulus_lambda_functions/granules_cnm_ingester/granules_cnm_ingester_logic.py b/cumulus_lambda_functions/granules_cnm_ingester/granules_cnm_ingester_logic.py new file mode 100644 index 00000000..47bad3ad --- /dev/null +++ b/cumulus_lambda_functions/granules_cnm_ingester/granules_cnm_ingester_logic.py @@ -0,0 +1,193 @@ +import os +import time + +from cumulus_lambda_functions.lib.aws.aws_message_transformers import AwsMessageTransformers +from cumulus_lambda_functions.lib.uds_db.uds_collections import UdsCollections + +from cumulus_lambda_functions.stage_in_out.stage_in_out_utils import StageInOutUtils + +from cumulus_lambda_functions.uds_api.dapa.collections_dapa_cnm import CollectionsDapaCnm + +from cumulus_lambda_functions.cumulus_stac.unity_collection_stac import UnityCollectionStac +from cumulus_lambda_functions.uds_api.dapa.collections_dapa_creation import CollectionDapaCreation +from cumulus_lambda_functions.cumulus_stac.item_transformer import ItemTransformer +from pystac import ItemCollection, Item +from cumulus_lambda_functions.lib.utils.file_utils import FileUtils +from cumulus_lambda_functions.lib.lambda_logger_generator import LambdaLoggerGenerator +from cumulus_lambda_functions.lib.aws.aws_s3 import AwsS3 + +LOGGER = LambdaLoggerGenerator.get_logger(__name__, LambdaLoggerGenerator.get_level_from_env()) + +""" +TODO + +UNITY_DEFAULT_PROVIDER +CUMULUS_WORKFLOW_NAME +REPORT_TO_EMS +CUMULUS_WORKFLOW_SQS_URL +CUMULUS_LAMBDA_PREFIX +ES_URL +ES_PORT +SNS_TOPIC_ARN +""" +class GranulesCnmIngesterLogic: + def __init__(self): + self.__s3 = AwsS3() + self.__successful_features_json = None + self.__successful_features: ItemCollection = None + self.__collection_id = None + self.__chunk_size = StageInOutUtils.CATALOG_DEFAULT_CHUNK_SIZE + if 'UNITY_DEFAULT_PROVIDER' not in os.environ: + raise ValueError(f'missing UNITY_DEFAULT_PROVIDER') + self.__default_provider = os.environ.get('UNITY_DEFAULT_PROVIDER') + self.__uds_collection = UdsCollections(es_url=os.getenv('ES_URL'), es_port=int(os.getenv('ES_PORT', '443'))) + + @property + def successful_features_json(self): + return self.__successful_features_json + + @successful_features_json.setter + def successful_features_json(self, val): + """ + :param val: + :return: None + """ + self.__successful_features_json = val + return + + @property + def collection_id(self): + return self.__collection_id + + @collection_id.setter + def collection_id(self, val): + """ + :param val: + :return: None + """ + self.__collection_id = val + return + + @property + def successful_features(self): + return self.__successful_features + + @successful_features.setter + def successful_features(self, val): + """ + :param val: + :return: None + """ + self.__successful_features = val + return + + def load_successful_features_s3(self, successful_features_s3_url): + self.__s3.set_s3_url(successful_features_s3_url) + if not self.__s3.exists(self.__s3.target_bucket, self.__s3.target_key): + LOGGER.error(f'missing successful_features: {successful_features_s3_url}') + raise ValueError(f'missing successful_features: {successful_features_s3_url}') + local_successful_features = self.__s3.download('/tmp') + self.__successful_features_json = FileUtils.read_json(local_successful_features) + FileUtils.remove_if_exists(local_successful_features) + self.__successful_features = ItemCollection.from_dict(self.__successful_features_json) + return + + def validate_granules(self): + if self.successful_features is None: + raise RuntimeError(f'NULL successful_features') + missing_granules = [] + for each_granule in self.successful_features.items: + missing_assets = [] + for each_asset_name, each_asset in each_granule.assets.items(): + temp_bucket, temp_key = self.__s3.split_s3_url(each_asset.href) + if not self.__s3.exists(temp_bucket, temp_key): + missing_assets.append({each_asset_name: each_asset.href}) + if len(missing_assets) > 0: + missing_granules.append({ + 'granule_id': each_granule.id, + 'missing_assets': missing_assets + }) + if len(missing_granules) > 0: + LOGGER.error(f'missing_granules: {missing_granules}') + raise ValueError(f'missing_granules: {missing_granules}') + return + + def extract_collection_id(self): + if self.successful_features is None: + raise RuntimeError(f'NULL successful_features') + if len(self.successful_features.items) < 1: + LOGGER.error(f'not required to process. No Granules: {self.successful_features.to_dict(False)}') + return + self.collection_id = self.successful_features.items[0].collection_id + return + + def has_collection(self): + uds_collection_result = self.__uds_collection.get_collection(self.collection_id) + return len(uds_collection_result) > 0 + + def create_collection(self): + if self.collection_id is None: + raise RuntimeError(f'NULL collection_id') + if self.has_collection(): + LOGGER.debug(f'{self.collection_id} already exists. continuing..') + return + # ref: https://github.com/unity-sds/unity-py/blob/0.4.0/unity_sds_client/services/data_service.py + dapa_collection = UnityCollectionStac() \ + .with_id(self.collection_id) \ + .with_graule_id_regex("^test_file.*$") \ + .with_granule_id_extraction_regex("(^test_file.*)(\\.nc|\\.nc\\.cas|\\.cmr\\.xml)") \ + .with_title(f'Collection: {self.collection_id}') \ + .with_process('stac') \ + .with_provider(self.__default_provider) \ + .add_file_type("test_file01.nc", "^test_file.*\\.nc$", 'unknown_bucket', 'application/json', 'root') \ + .add_file_type("test_file01.nc", "^test_file.*\\.nc$", 'protected', 'data', 'item') \ + .add_file_type("test_file01.nc.cas", "^test_file.*\\.nc.cas$", 'protected', 'metadata', 'item') \ + .add_file_type("test_file01.nc.cmr.xml", "^test_file.*\\.nc.cmr.xml$", 'protected', 'metadata', 'item') \ + .add_file_type("test_file01.nc.stac.json", "^test_file.*\\.nc.stac.json$", 'protected', 'metadata', 'item') + + stac_collection = dapa_collection.start() + creation_result = CollectionDapaCreation(stac_collection).create() + if creation_result['statusCode'] >= 400: + raise RuntimeError(f'failed to create collection: {self.collection_id}. details: {creation_result["body"]}') + time.sleep(3) # cool off period before checking DB + if not self.has_collection(): + LOGGER.error(f'missing collection. (failed to create): {self.collection_id}') + raise ValueError(f'missing collection. (failed to create): {self.collection_id}') + return + + def send_cnm_msg(self): + LOGGER.debug(f'starting ingest_cnm_dapa_actual') + try: + errors = [] + for i, features_chunk in enumerate(StageInOutUtils.chunk_list(self.successful_features_json['features'], self.__chunk_size)): + try: + LOGGER.debug(f'working on chunk_index {i}') + dapa_body = { + "provider_id": self.__default_provider, + "features": features_chunk + } + collections_dapa_cnm = CollectionsDapaCnm(dapa_body) + cnm_result = collections_dapa_cnm.start() + if cnm_result['statusCode'] != 200: + errors.extend(features_chunk) + except Exception as e1: + LOGGER.exception(f'failed to queue CNM process.') + errors.extend(features_chunk) + except Exception as e: + LOGGER.exception('failed to ingest to CNM') + raise ValueError(f'failed to ingest to CNM: {e}') + if len(errors) > 0: + raise RuntimeError(f'failures during CNM ingestion: {errors}') + return + + def start(self, event): + LOGGER.debug(f'event: {event}') + sns_msg = AwsMessageTransformers().sqs_sns(event) + s3_details = AwsMessageTransformers().get_s3_from_sns(sns_msg) + s3_url = f's3://{s3_details["bucket"]}/{s3_details["key"]}' + self.load_successful_features_s3(s3_url) + self.validate_granules() + self.extract_collection_id() + self.create_collection() + self.send_cnm_msg() + return diff --git a/cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py b/cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py index 626431a1..b5f7cbaf 100644 --- a/cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py +++ b/cumulus_lambda_functions/granules_cnm_ingester/lambda_function.py @@ -1,4 +1,6 @@ import json + +from cumulus_lambda_functions.granules_cnm_ingester.granules_cnm_ingester_logic import GranulesCnmIngesterLogic from cumulus_lambda_functions.lib.lambda_logger_generator import LambdaLoggerGenerator @@ -7,7 +9,8 @@ def lambda_handler(event, context): :param event: :param context: :return: + {'Records': [{'messageId': '6ff7c6fd-4053-4ab4-bc12-c042be1ed275', 'receiptHandle': 'AQEBYASiFPjQT5JBI2KKCTF/uQhHfJt/tHhgucslQQdvkNVxcXCNi2E5Ux4U9N0eu7RfvlnvtycjUh0gdL7jIeoyH+VRKSF61uAJuT4p31BsNe0GYu49N9A6+kxjP/RrykR7ZofmQRdHToX1ugRc76SMRic4H/ZZ89YAHA2QeomJFMrYywIxlk8OAzYaBf2dQI7WexjY5u1CW00XNMbTGyTo4foVPxcSn6bdFpfgxW/L7yJMX/0YQvrA9ruiuQ+lrui+6fWYh5zEk3f5v1bYtUQ6DtyyfbtMHZQJTJpUlWAFRzzN+3melilH7FySyOGDXhPb0BOSzmdKq9wBbfLW/YPb7l99ejq4GfRfj8LyI4EtB96vTeUw4LCgUqbZcBrxbGBLUXMacweh+gCjHav9ylqr2SeOiqG3vWPq9pwFYQIDqNE=', 'body': '{\n "Type" : "Notification",\n "MessageId" : "33e1075a-435c-5217-a33d-59fae85e19b2",\n "TopicArn" : "arn:aws:sns:us-west-2:237868187491:uds-sbx-cumulus-granules_cnm_ingester",\n "Subject" : "Amazon S3 Notification",\n "Message" : "{\\"Service\\":\\"Amazon S3\\",\\"Event\\":\\"s3:TestEvent\\",\\"Time\\":\\"2024-04-22T18:13:22.416Z\\",\\"Bucket\\":\\"uds-sbx-cumulus-staging\\",\\"RequestId\\":\\"DQ4T0GRVFPSX45C9\\",\\"HostId\\":\\"gHBFnYNmfnGDZBmqoQwA3RScjtjBk5lr426moGxu8IDpe5UhWAqNTxHqilWBoPN1njzIrzNrf8c=\\"}",\n "Timestamp" : "2024-04-22T18:13:22.434Z",\n "SignatureVersion" : "1",\n "Signature" : "RvSxqpU7J7CCJXbin9cXqTxzjMjgAUFtk/n454mTMcOe5x3Ay1w4AHfzyeYQCFBdLHNBa8n3OdMDoDlJqyVQMb8k+nERaiZWN2oqFVDRqT9pqSr89b+4FwlhPv6TYy2pBa/bgjZ4cOSYsey1uSQ3hjl0idfssvuV5cCRxQScbA+yu8Gcv9K7Oqgy01mC0sDHiuPIifhFXxupG5ygbjqoHIB+1gdMEbBwyixoY5GOpHM/O2uHNF+dJDjax1WMxQ2FzVjiFeCa+tNcjovF059+tx2v1YmDq/kEAFrN6DAtP6R4zKag62P9jkvjU/wHYJ2jjXmZAqoG+nuzAo24HiZPSw==",\n "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-60eadc530605d63b8e62a523676ef735.pem",\n "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:237868187491:uds-sbx-cumulus-granules_cnm_ingester:76cbefa1-addf-45c2-97e1-ae16986b195b"\n}', 'attributes': {'ApproximateReceiveCount': '1', 'SentTimestamp': '1713809602474', 'SenderId': 'AIDAIYLAVTDLUXBIEIX46', 'ApproximateFirstReceiveTimestamp': '1713809602483'}, 'messageAttributes': {}, 'md5OfBody': 'c6d06d1b742ad5bd2cfe5f542640aad2', 'eventSource': 'aws:sqs', 'eventSourceARN': 'arn:aws:sqs:us-west-2:237868187491:uds-sbx-cumulus-granules_cnm_ingester', 'awsRegion': 'us-west-2'}]} """ LambdaLoggerGenerator.remove_default_handlers() - print(f'event: {event}') - raise NotImplementedError('Require implementation later') + GranulesCnmIngesterLogic().start(event) + return diff --git a/cumulus_lambda_functions/lib/aws/aws_message_transformers.py b/cumulus_lambda_functions/lib/aws/aws_message_transformers.py index 0fe119aa..101b383b 100644 --- a/cumulus_lambda_functions/lib/aws/aws_message_transformers.py +++ b/cumulus_lambda_functions/lib/aws/aws_message_transformers.py @@ -1,4 +1,5 @@ import json +from urllib.parse import unquote from cumulus_lambda_functions.lib.json_validator import JsonValidator @@ -29,8 +30,15 @@ class AwsMessageTransformers: "Type": {"type": "string"}, "MessageId": {"type": "string"}, "TopicArn": {"type": "string"}, + "Subject": {"type": "string"}, + "Timestamp": {"type": "string"}, + "SignatureVersion": {"type": "string"}, + "Signature": {"type": "string"}, + "SigningCertURL": {"type": "string"}, + "UnsubscribeURL": {"type": "string"}, "Message": {"type": "string"}, - } + }, + "required": ["Message"] } S3_RECORD_SCHEMA = { @@ -41,22 +49,25 @@ class AwsMessageTransformers: 'maxItems': 1, 'items': { 'type': 'object', - 'properties': {'s3': { - 'type': 'object', - 'properties': { - 'bucket': { - 'type': 'object', - 'properties': {'name': {'type': 'string', 'minLength': 1}}, - 'required': ['name'] - }, - 'object': { - 'type': 'object', - 'properties': {'key': {'type': 'string', 'minLength': 1}}, - 'required': ['key'] - }}, - 'required': ['bucket', 'object'] - }}, - 'required': ['s3'] + 'properties': { + 'eventName': {'type': 'string'}, + 's3': { + 'type': 'object', + 'properties': { + 'bucket': { + 'type': 'object', + 'properties': {'name': {'type': 'string', 'minLength': 1}}, + 'required': ['name'] + }, + 'object': { + 'type': 'object', + 'properties': {'key': {'type': 'string', 'minLength': 1}}, + 'required': ['key'] + }}, + 'required': ['bucket', 'object'] + } + }, + 'required': ['eventName', 's3'] } }}, 'required': ['Records'] @@ -74,3 +85,14 @@ def sqs_sns(self, raw_msg: json): sns_msg_body = sqs_msg_body['Message'] sns_msg_body = json.loads(sns_msg_body) return sns_msg_body + + def get_s3_from_sns(self, sns_msg_body): + result = JsonValidator(self.S3_RECORD_SCHEMA).validate(sns_msg_body) + if result is not None: + raise ValueError(f'sqs_msg did not pass SQS_MSG_SCHEMA: {result}') + s3_summary = { + 'eventName': sns_msg_body['Records'][0]['eventName'], + 'bucket': sns_msg_body['Records'][0]['s3']['bucket']['name'], + 'key': unquote(sns_msg_body['Records'][0]['s3']['object']['key'].replace('+', ' ')), + } + return s3_summary \ No newline at end of file diff --git a/cumulus_lambda_functions/lib/aws/aws_s3.py b/cumulus_lambda_functions/lib/aws/aws_s3.py index 4467c931..f4cbc4ae 100644 --- a/cumulus_lambda_functions/lib/aws/aws_s3.py +++ b/cumulus_lambda_functions/lib/aws/aws_s3.py @@ -58,6 +58,13 @@ def __upload_to_s3(self, bucket, prefix, file_path, delete_files=False, add_size raise e return f's3://{bucket}/{s3_key}' + def exists(self, base_path: str, relative_path: str): + try: + response = self.__s3_client.head_object(Bucket=base_path, Key=relative_path) + except: + return False + return True + def upload(self, file_path: str, base_path: str, relative_parent_path: str, delete_files: bool, s3_name: Union[str, None] = None, obj_tags: dict = {}, overwrite: bool = False): s3_url = self.__upload_to_s3(base_path, relative_parent_path, file_path, delete_files, True, obj_tags, s3_name) diff --git a/cumulus_lambda_functions/lib/uds_db/uds_collections.py b/cumulus_lambda_functions/lib/uds_db/uds_collections.py index d37f625c..17cf06c4 100644 --- a/cumulus_lambda_functions/lib/uds_db/uds_collections.py +++ b/cumulus_lambda_functions/lib/uds_db/uds_collections.py @@ -70,6 +70,25 @@ def add_collection(self, collection_id: str, start_time: int, end_time: int, bbo self.__es.index_one(indexing_dict, collection_id, DBConstants.collections_index) return self + def get_collection(self, collection_id: str): + authorized_collection_ids_dsl = { + 'size': 20, + 'query': { + 'bool': { + 'must': [ + {'term': {DBConstants.collection_id: {'value': collection_id}}} + ] + } + }, + 'sort': [ + {DBConstants.collection_id: {'order': 'asc'}} + ] + } + LOGGER.debug(f'authorized_collection_ids_dsl: {authorized_collection_ids_dsl}') + authorized_collection_ids = self.__es.query(authorized_collection_ids_dsl, DBConstants.collections_index) + authorized_collection_ids = [k['_source'] for k in authorized_collection_ids['hits']['hits']] + return authorized_collection_ids + def get_collections(self, collection_regex: list): # temp_dsl = { # 'query': {'match_all': {}}, diff --git a/cumulus_lambda_functions/stage_in_out/catalog_granules_unity.py b/cumulus_lambda_functions/stage_in_out/catalog_granules_unity.py index ed1691f0..53811749 100644 --- a/cumulus_lambda_functions/stage_in_out/catalog_granules_unity.py +++ b/cumulus_lambda_functions/stage_in_out/catalog_granules_unity.py @@ -19,7 +19,6 @@ class CatalogGranulesUnity(CatalogGranulesAbstract): DELAY_SECOND = 'DELAY_SECOND' REPEAT_TIMES = 'REPEAT_TIMES' CHUNK_SIZE = 'CHUNK_SIZE' - DEFAULT_CHUNK_SIZE = 5 def __init__(self) -> None: super().__init__() @@ -27,15 +26,15 @@ def __init__(self) -> None: self.__verify_ssl = True self.__delaying_second = 30 self.__repeating_times = 0 - self.__chunk_size = self.DEFAULT_CHUNK_SIZE + self.__chunk_size = StageInOutUtils.CATALOG_DEFAULT_CHUNK_SIZE def __set_props_from_env(self): missing_keys = [k for k in [self.UPLOADED_FILES_JSON, self.PROVIDER_ID_KEY] if k not in os.environ] if len(missing_keys) > 0: raise ValueError(f'missing environment keys: {missing_keys}') self._retrieve_stac_json() - self.__chunk_size = int(os.environ.get(self.CHUNK_SIZE, self.DEFAULT_CHUNK_SIZE)) - self.__chunk_size = self.__chunk_size if self.__chunk_size > 0 else self.DEFAULT_CHUNK_SIZE + self.__chunk_size = int(os.environ.get(self.CHUNK_SIZE, StageInOutUtils.CATALOG_DEFAULT_CHUNK_SIZE)) + self.__chunk_size = self.__chunk_size if self.__chunk_size > 0 else StageInOutUtils.CATALOG_DEFAULT_CHUNK_SIZE self.__provider_id = os.environ.get(self.PROVIDER_ID_KEY) self.__verify_ssl = os.environ.get(self.VERIFY_SSL_KEY, 'TRUE').strip().upper() == 'TRUE' self.__delaying_second = int(os.environ.get(self.DELAY_SECOND, '30')) diff --git a/cumulus_lambda_functions/stage_in_out/stage_in_out_utils.py b/cumulus_lambda_functions/stage_in_out/stage_in_out_utils.py index 70d1b6ea..3de73a1c 100644 --- a/cumulus_lambda_functions/stage_in_out/stage_in_out_utils.py +++ b/cumulus_lambda_functions/stage_in_out/stage_in_out_utils.py @@ -10,6 +10,7 @@ class StageInOutUtils: OUTPUT_FILE = 'OUTPUT_FILE' + CATALOG_DEFAULT_CHUNK_SIZE = 5 @staticmethod def write_output_to_file(output_json: Union[dict, str, list]): diff --git a/docker/Dockerfile_download_granules.jpl b/docker/Dockerfile_download_granules.jpl index 0d1b56f4..895a375f 100644 --- a/docker/Dockerfile_download_granules.jpl +++ b/docker/Dockerfile_download_granules.jpl @@ -5,8 +5,8 @@ RUN apt-get update -y && apt-get install vim -y ENV PYTHONPATH "${PYTHONPATH}:/usr/src/app/unity" RUN python -m pip install boto3 RUN mkdir -p /usr/src/app/unity -COPY setup.py ./setup.py -RUN ["python", "setup.py", "install"] +COPY requirements.txt ./requirements.txt +RUN python3 -m pip install -r requirements.txt COPY setup.py /usr/src/app/unity/setup.py COPY cumulus_lambda_functions /usr/src/app/unity/cumulus_lambda_functions diff --git a/docker/Dockerfile_download_granules.public b/docker/Dockerfile_download_granules.public index c74f9e26..16dd71a4 100644 --- a/docker/Dockerfile_download_granules.public +++ b/docker/Dockerfile_download_granules.public @@ -5,8 +5,8 @@ RUN apt-get update -y && apt-get install vim -y ENV PYTHONPATH "${PYTHONPATH}:/usr/src/app/unity" RUN python -m pip install boto3 RUN mkdir -p /usr/src/app/unity -COPY setup.py ./setup.py -RUN ["python", "setup.py", "install"] +COPY requirements.txt ./requirements.txt +RUN python3 -m pip install -r requirements.txt COPY setup.py /usr/src/app/unity/setup.py COPY cumulus_lambda_functions /usr/src/app/unity/cumulus_lambda_functions diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..291699f8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,39 @@ +annotated-types==0.6.0 +anyio==4.3.0 +attrs==23.2.0 +certifi==2024.2.2 +charset-normalizer==3.3.2 +click==8.1.7 +dateparser==1.2.0 +elasticsearch==7.13.4 +exceptiongroup==1.2.1 +fastapi==0.110.3 +fastjsonschema==2.19.1 +h11==0.14.0 +idna==3.7 +jsonschema==4.22.0 +jsonschema-specifications==2023.12.1 +lark==0.12.0 +mangum==0.17.0 +pydantic==2.7.1 +pydantic_core==2.18.2 +pygeofilter==0.2.1 +pygeoif==1.4.0 +pystac==1.9.0 +python-dateutil==2.9.0.post0 +python-dotenv==1.0.1 +pytz==2024.1 +referencing==0.35.0 +regex==2024.4.28 +requests==2.31.0 +requests-aws4auth==1.2.3 +rpds-py==0.18.0 +six==1.16.0 +sniffio==1.3.1 +starlette==0.37.2 +tenacity==8.2.3 +typing_extensions==4.11.0 +tzlocal==5.2 +urllib3==1.26.18 +uvicorn==0.29.0 +xmltodict==0.13.0 \ No newline at end of file diff --git a/tests/cumulus_lambda_functions/granules_cnm_ingester/__init__.py b/tests/cumulus_lambda_functions/granules_cnm_ingester/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/cumulus_lambda_functions/granules_cnm_ingester/test_granules_cnm_ingester_logic.py b/tests/cumulus_lambda_functions/granules_cnm_ingester/test_granules_cnm_ingester_logic.py new file mode 100644 index 00000000..7849c00e --- /dev/null +++ b/tests/cumulus_lambda_functions/granules_cnm_ingester/test_granules_cnm_ingester_logic.py @@ -0,0 +1,65 @@ +import json +import os +from unittest import TestCase + +from cumulus_lambda_functions.lib.time_utils import TimeUtils +from pystac import ItemCollection + +from cumulus_lambda_functions.granules_cnm_ingester.granules_cnm_ingester_logic import GranulesCnmIngesterLogic + + +class TestGranulesCnmIngesterLogic(TestCase): + + def __init__(self, methodName: str = ...) -> None: + super().__init__(methodName) + os.environ['SNS_TOPIC_ARN'] = 'arn:aws:sns:us-west-2:237868187491:uds-sbx-cumulus-cnm-submission-sns' + os.environ['COLLECTION_CREATION_LAMBDA_NAME'] = 'NA' + os.environ['UNITY_DEFAULT_PROVIDER'] = 'unity' + os.environ['CUMULUS_WORKFLOW_NAME'] = 'CatalogGranule' + os.environ['REPORT_TO_EMS'] = 'FALSE' + os.environ['CUMULUS_LAMBDA_PREFIX'] = 'uds-sbx-cumulus' + os.environ['CUMULUS_WORKFLOW_SQS_URL'] = 'https://sqs.us-west-2.amazonaws.com/237868187491/uds-sbx-cumulus-cnm-submission-queue' + os.environ['ES_URL'] = 'vpc-uds-sbx-cumulus-es-qk73x5h47jwmela5nbwjte4yzq.us-west-2.es.amazonaws.com' + os.environ['ES_PORT'] = '9200' + + def test_load_successful_features_s3(self): + s3_url = 's3://uds-sbx-cumulus-staging/integration_test/stag_eout/successful_features_2024-04-11T21:21:13.019769.json' + a = GranulesCnmIngesterLogic().load_successful_features_s3(s3_url) + return + + def test_validate_granules(self): + result = {"type": "FeatureCollection", "features": [{"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file01", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file01.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file01.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file01.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file02", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file02.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file02/test_file02.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file02.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file02/test_file02.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file02.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file02/test_file02.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file03", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file03.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file03/test_file03.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file03.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file03/test_file03.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file03.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file03/test_file03.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file04", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file04.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file04/test_file04.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file04.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file04/test_file04.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file04.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file04/test_file04.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file05", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file05.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file05/test_file05.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file05.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file05/test_file05.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file05.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file05/test_file05.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file06", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file06.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file06/test_file06.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file06.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file06/test_file06.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file06.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file06/test_file06.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file08", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file08.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file08/test_file08.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file08.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file08/test_file08.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file08.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file08/test_file08.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file07", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file07.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file07/test_file07.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file07.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file07/test_file07.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file07.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file07/test_file07.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file10", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file10.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file10/test_file10.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file10.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file10/test_file10.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file10.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file10/test_file10.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file09", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file09.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file09/test_file09.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file09.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file09/test_file09.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file09.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file09/test_file09.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}]} + result = ItemCollection.from_dict(result) + a = GranulesCnmIngesterLogic() + a.successful_features = result + a.validate_granules() + return + + def test_extract_collection_id(self): + result = {"type": "FeatureCollection", "features": [{"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file01", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file01.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file01.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file01.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file02", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file02.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file02/test_file02.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file02.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file02/test_file02.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file02.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file02/test_file02.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file03", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file03.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file03/test_file03.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file03.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file03/test_file03.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file03.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file03/test_file03.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file04", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file04.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file04/test_file04.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file04.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file04/test_file04.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file04.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file04/test_file04.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file05", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file05.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file05/test_file05.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file05.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file05/test_file05.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file05.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file05/test_file05.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file06", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file06.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file06/test_file06.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file06.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file06/test_file06.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file06.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file06/test_file06.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file08", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file08.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file08/test_file08.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file08.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file08/test_file08.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file08.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file08/test_file08.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file07", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file07.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file07/test_file07.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file07.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file07/test_file07.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file07.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file07/test_file07.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file10", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file10.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file10/test_file10.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file10.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file10/test_file10.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file10.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file10/test_file10.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}, {"type": "Feature", "stac_version": "1.0.0", "id": "NEW_COLLECTION_EXAMPLE_L1B___9:test_file09", "properties": {"start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"test_file09.nc": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file09/test_file09.nc", "title": "test_file01.nc", "roles": ["data"]}, "test_file09.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file09/test_file09.nc.cas", "title": "test_file01.nc.cas", "roles": ["metadata"]}, "test_file09.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file09/test_file09.nc.stac.json", "title": "test_file01.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "NEW_COLLECTION_EXAMPLE_L1B___9"}]} + result = ItemCollection.from_dict(result) + a = GranulesCnmIngesterLogic() + a.successful_features = result + a.extract_collection_id() + self.assertEqual(a.collection_id, 'NEW_COLLECTION_EXAMPLE_L1B___9') + return + + def test_create_collection(self): + a = GranulesCnmIngesterLogic() + self.tenant = 'UDS_LOCAL_TEST' # 'uds_local_test' # 'uds_sandbox' + self.tenant_venue = 'DEV' # 'DEV1' # 'dev' + self.collection_name = 'UDS_COLLECTION_CNM_INGESTION' # 'uds_collection' # 'sbx_collection' + self.collection_version = '24.04.24.06.00'.replace('.', '') # '2402011200' + temp_collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' + a.collection_id = temp_collection_id + a.create_collection() + return + + def test_send_cnm_msg(self): + result = '''{"type": "FeatureCollection", "features": [{"type": "Feature", "stac_version": "1.0.0", "id": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700:abcd.1234.efgh.test_file05", "properties": {"tag": "#sample", "c_data1": [1, 10, 100, 1000], "c_data2": [false, true, true, false, true], "c_data3": ["Bellman Ford"], "soil10": {"0_0": 0, "0_1": 1, "0_2": 0}, "start_datetime": "2016-01-31T18:00:00.009057Z", "end_datetime": "2016-01-31T19:59:59.991043Z", "created": "2016-02-01T02:45:59.639000Z", "updated": "2022-03-23T15:48:21.578000Z", "datetime": "1970-01-01T00:00:00Z"}, "geometry": {"type": "Point", "coordinates": [0.0, 0.0]}, "links": [], "assets": {"abcd.1234.efgh.test_file05.data.stac.json": {"href": "s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700:abcd.1234.efgh.test_file05/abcd.1234.efgh.test_file05.data.stac.json", "title": "abcd.1234.efgh.test_file05.data.stac.json", "roles": ["data"]}, "abcd.1234.efgh.test_file05.nc.cas": {"href": "s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700:abcd.1234.efgh.test_file05/abcd.1234.efgh.test_file05.nc.cas", "title": "abcd.1234.efgh.test_file05.nc.cas", "roles": ["metadata"]}, "abcd.1234.efgh.test_file05.nc.stac.json": {"href": "s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700:abcd.1234.efgh.test_file05/abcd.1234.efgh.test_file05.nc.stac.json", "title": "abcd.1234.efgh.test_file05.nc.stac.json", "roles": ["metadata"]}}, "bbox": [0.0, 0.0, 0.0, 0.0], "stac_extensions": [], "collection": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2404240700"}]} + ''' + result = json.loads(result) + a = GranulesCnmIngesterLogic() + a.successful_features_json = result + a.send_cnm_msg() + return diff --git a/tests/integration_tests/test_custom_metadata_automated_ingestion.py b/tests/integration_tests/test_custom_metadata_automated_ingestion.py new file mode 100644 index 00000000..2342edd7 --- /dev/null +++ b/tests/integration_tests/test_custom_metadata_automated_ingestion.py @@ -0,0 +1,528 @@ +import base64 +import json +import os +import tempfile +from datetime import datetime +from sys import argv +from time import sleep +from unittest import TestCase + +import pystac +import requests +from cumulus_lambda_functions.lib.aws.aws_s3 import AwsS3 + +from cumulus_lambda_functions.lib.time_utils import TimeUtils +from pystac import Link, Catalog, Asset, Item, ItemCollection + +from cumulus_lambda_functions.docker_entrypoint.__main__ import choose_process + +from cumulus_lambda_functions.lib.utils.file_utils import FileUtils + +from cumulus_lambda_functions.cumulus_stac.unity_collection_stac import UnityCollectionStac + +from cumulus_lambda_functions.lib.cognito_login.cognito_login import CognitoLogin +from dotenv import load_dotenv + + +class TestCustomMetadataEndToEnd(TestCase): + # 1. setup admin for the test venue + # 2. create a custom metadata for the venue + # 3. create a collection + # 4. push granules to cnm w/ custom metadata + # 5. get granules w/ custom metadata + + def setUp(self) -> None: + super().setUp() + load_dotenv() + self.cognito_login = CognitoLogin() \ + .with_client_id(os.environ.get('CLIENT_ID', '')) \ + .with_cognito_url(os.environ.get('COGNITO_URL', '')) \ + .with_verify_ssl(False) \ + .start(base64.standard_b64decode(os.environ.get('USERNAME')).decode(), + base64.standard_b64decode(os.environ.get('PASSWORD')).decode()) + self._url_prefix = f'{os.environ.get("UNITY_URL")}/{os.environ.get("UNITY_STAGE", "sbx-uds-dapa")}' + self.tenant = 'UDS_LOCAL_TEST' # 'uds_local_test' # 'uds_sandbox' + self.tenant_venue = 'DEV' # 'DEV1' # 'dev' + self.collection_name = 'UDS_COLLECTION' # 'uds_collection' # 'sbx_collection' + self.collection_version = '24.04.25.11.00'.replace('.', '') # '2402011200' + + self.custom_metadata_body = { + 'tag': {'type': 'keyword'}, + 'c_data1': {'type': 'long'}, + 'c_data2': {'type': 'boolean'}, + 'c_data3': {'type': 'keyword'}, + 'soil10': { + "properties": { + "0_0": {"type": "integer"}, + "0_1": {"type": "integer"}, + "0_2": {"type": "integer"}, + } + } + } + self.granule_id = 'abcd.1234.efgh.test_file05' + return + + def test_04_upload_sample_granule(self): + custom_metadata = { + 'tag': '#sample', + 'c_data1': [1, 10, 10**2, 10**3], + 'c_data2': [False, True, True, False, True], + 'c_data3': ['Bellman Ford'], + 'soil10': { + "0_0": 0, + "0_1": 1, + "0_2": 0, + } + } + temp_collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' + os.environ['VERIFY_SSL'] = 'FALSE' + + os.environ['COLLECTION_ID'] = temp_collection_id + os.environ['STAGING_BUCKET'] = 'uds-sbx-cumulus-staging' + + os.environ['GRANULES_SEARCH_DOMAIN'] = 'UNITY' + # os.environ['GRANULES_UPLOAD_TYPE'] = 'UPLOAD_S3_BY_STAC_CATALOG' + # defaulted to this value + + if len(argv) > 1: + argv.pop(-1) + argv.append('UPLOAD') + + with tempfile.TemporaryDirectory() as tmp_dir_name: + os.environ['OUTPUT_FILE'] = os.path.join(tmp_dir_name, 'some_output', 'output.json') + os.environ['UPLOAD_DIR'] = '' # not needed + os.environ['CATALOG_FILE'] = os.path.join(tmp_dir_name, 'catalog.json') + os.environ['OUTPUT_DIRECTORY'] = os.path.join(tmp_dir_name, 'output_dir') + FileUtils.mk_dir_p(os.environ.get('OUTPUT_DIRECTORY')) + granules_dir = os.path.join(tmp_dir_name, 'some_granules') + FileUtils.mk_dir_p(granules_dir) + with open(os.path.join(granules_dir, f'{self.granule_id}.data.stac.json'), 'w') as ff: + ff.write('sample_file') + with open(os.path.join(granules_dir, f'{self.granule_id}.nc.cas'), 'w') as ff: + ff.write(''' + + + AggregateDir + snppatmsl1a + + + AutomaticQualityFlag + Passed + + + BuildId + v01.43.00 + + + CollectionLabel + L1AMw_nominal2 + + + DataGroup + sndr + + + EndDateTime + 2016-01-14T10:06:00.000Z + + + EndTAI93 + 726919569.000 + + + FileFormat + nc4 + + + FileLocation + /pge/out + + + Filename + SNDR.SNPP.ATMS.L1A.nominal2.02.nc + + + GranuleNumber + 101 + + + JobId + f163835c-9945-472f-bee2-2bc12673569f + + + ModelId + urn:npp:SnppAtmsL1a + + + NominalDate + 2016-01-14 + + + ProductName + SNDR.SNPP.ATMS.20160114T1000.m06.g101.L1A.L1AMw_nominal2.v03_15_00.D.201214135000.nc + + + ProductType + SNDR_SNPP_ATMS_L1A + + + ProductionDateTime + 2020-12-14T13:50:00.000Z + + + ProductionLocation + Sounder SIPS: JPL/Caltech (Dev) + + + ProductionLocationCode + D + + + RequestId + 1215 + + + StartDateTime + 2016-01-14T10:00:00.000Z + + + StartTAI93 + 726919209.000 + + + TaskId + 8c3ae101-8f7c-46c8-b5c6-63e7b6d3c8cd + + ''') + stac_item = Item(id=self.granule_id, + geometry={ + "type": "Point", + "coordinates": [0.0, 0.0] + }, + bbox=[0.0, 0.0, 0.0, 0.0], + datetime=TimeUtils().parse_from_unix(0, True).get_datetime_obj(), + properties={ + **custom_metadata, + "start_datetime": "2016-01-31T18:00:00.009057Z", + "end_datetime": "2016-01-31T19:59:59.991043Z", + "created": "2016-02-01T02:45:59.639000Z", + "updated": "2022-03-23T15:48:21.578000Z", + "datetime": "2022-03-23T15:48:19.079000Z" + }, + href=os.path.join('some_granules', f'{self.granule_id}.nc.stac.json'), + collection=temp_collection_id, + assets={ + f'{self.granule_id}.data.stac.json': Asset(os.path.join('.', f'{self.granule_id}.data.stac.json'), title=f'{self.granule_id}.data.stac.json', roles=['data']), + f'{self.granule_id}.nc.cas': Asset(os.path.join('.', f'{self.granule_id}.nc.cas'), title=f'{self.granule_id}.nc.cas', roles=['metadata']), + f'{self.granule_id}.nc.stac.json': Asset(os.path.join('.', f'{self.granule_id}.nc.stac.json'), title=f'{self.granule_id}.nc.stac.json', roles=['metadata']), + }) + with open(os.path.join(granules_dir, f'{self.granule_id}.nc.stac.json'), 'w') as ff: + ff.write(json.dumps(stac_item.to_dict(False, False))) + catalog = Catalog( + id='NA', + description='NA') + catalog.set_self_href(os.environ['CATALOG_FILE']) + catalog.add_link( + Link('item', os.path.join('some_granules', f'{self.granule_id}.nc.stac.json'), 'application/json')) + print(json.dumps(catalog.to_dict(False, False))) + with open(os.environ['CATALOG_FILE'], 'w') as ff: + ff.write(json.dumps(catalog.to_dict(False, False))) + + upload_result_str = choose_process() + upload_result = json.loads(upload_result_str) + print(upload_result) + self.assertTrue('type' in upload_result, 'missing type') + self.assertEqual(upload_result['type'], 'Catalog', 'missing type') + upload_result = Catalog.from_dict(upload_result) + child_links = [k.href for k in upload_result.get_links(rel='item')] + self.assertEqual(len(child_links), 2, f'wrong length: {child_links}') + self.assertTrue(FileUtils.file_exist(child_links[0]), f'missing file: {child_links[0]}') + successful_feature_collection = ItemCollection.from_dict(FileUtils.read_json(child_links[0])) + successful_feature_collection = list(successful_feature_collection.items) + self.assertEqual(len(successful_feature_collection), 1, + f'wrong length: {successful_feature_collection}') + + self.assertTrue(FileUtils.file_exist(child_links[1]), f'missing file: {child_links[1]}') + failed_feature_collection = ItemCollection.from_dict(FileUtils.read_json(child_links[1])) + failed_feature_collection = list(failed_feature_collection.items) + self.assertEqual(len(failed_feature_collection), 0, f'wrong length: {failed_feature_collection}') + + upload_result = successful_feature_collection[0].to_dict(False, False) + print(f'example feature: {upload_result}') + self.assertTrue('assets' in upload_result, 'missing assets') + self.assertTrue(f'{self.granule_id}.nc.cas' in upload_result['assets'], 'missing assets#metadata__cas') + self.assertTrue('href' in upload_result['assets'][f'{self.granule_id}.nc.cas'], 'missing assets#metadata__cas#href') + self.assertTrue(upload_result['assets'][f'{self.granule_id}.nc.cas']['href'].startswith( + f's3://{os.environ["STAGING_BUCKET"]}/{os.environ["COLLECTION_ID"]}/')) + self.assertTrue(f'{self.granule_id}.data.stac.json' in upload_result['assets'], 'missing assets#data') + self.assertTrue('href' in upload_result['assets'][f'{self.granule_id}.data.stac.json'], 'missing assets#data#href') + self.assertTrue(upload_result['assets'][f'{self.granule_id}.data.stac.json']['href'].startswith( + f's3://{os.environ["STAGING_BUCKET"]}/{os.environ["COLLECTION_ID"]}/')) + self.assertTrue(FileUtils.file_exist(os.environ['OUTPUT_FILE']), f'missing output file') + return + + def test_04_upload_many_granules(self): + custom_metadata = { + 'tag': '#sample', + 'c_data1': [1, 10, 10**2, 10**3], + 'c_data2': [False, True, True, False, True], + 'c_data3': ['Bellman Ford'], + 'soil10': { + "0_0": 0, + "0_1": 1, + "0_2": 0, + } + } + temp_collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' + + os.environ['VERIFY_SSL'] = 'FALSE' + # os.environ['RESULT_PATH_PREFIX'] = 'integration_test/stag_eout' + os.environ['STAGING_BUCKET'] = 'uds-sbx-cumulus-staging' + os.environ['COLLECTION_ID'] = temp_collection_id + + os.environ['GRANULES_SEARCH_DOMAIN'] = 'UNITY' + # os.environ['GRANULES_UPLOAD_TYPE'] = 'UPLOAD_S3_BY_STAC_CATALOG' + # defaulted to this value + + if len(argv) > 1: + argv.pop(-1) + argv.append('UPLOAD') + + starting_time = datetime.utcnow().strftime('%Y-%m-%dT%H:%M') + with tempfile.TemporaryDirectory() as tmp_dir_name: + os.environ['OUTPUT_FILE'] = os.path.join(tmp_dir_name, 'some_output', 'output.json') + os.environ['UPLOAD_DIR'] = '' # not needed + os.environ['OUTPUT_DIRECTORY'] = os.path.join(tmp_dir_name, 'output_dir') + FileUtils.mk_dir_p(os.environ.get('OUTPUT_DIRECTORY')) + os.environ['CATALOG_FILE'] = os.path.join(tmp_dir_name, 'catalog.json') + total_files = 20 + # os.environ['PARALLEL_COUNT'] = str(total_files) + granules_dir = os.path.join(tmp_dir_name, 'some_granules') + FileUtils.mk_dir_p(granules_dir) + catalog = Catalog( + id='NA', + description='NA') + catalog.set_self_href(os.environ['CATALOG_FILE']) + + for i in range(1, total_files+1): + filename = f'test_file{i:02d}' + with open(os.path.join(granules_dir, f'{filename}.nc'), 'w') as ff: + ff.write('sample_file') + with open(os.path.join(granules_dir, f'{filename}.nc.cas'), 'w') as ff: + ff.write(''' + + + AggregateDir + snppatmsl1a + + + AutomaticQualityFlag + Passed + + + BuildId + v01.43.00 + + + CollectionLabel + L1AMw_nominal2 + + + DataGroup + sndr + + + EndDateTime + 2016-01-14T10:06:00.000Z + + + EndTAI93 + 726919569.000 + + + FileFormat + nc4 + + + FileLocation + /pge/out + + + Filename + SNDR.SNPP.ATMS.L1A.nominal2.02.nc + + + GranuleNumber + 101 + + + JobId + f163835c-9945-472f-bee2-2bc12673569f + + + ModelId + urn:npp:SnppAtmsL1a + + + NominalDate + 2016-01-14 + + + ProductName + SNDR.SNPP.ATMS.20160114T1000.m06.g101.L1A.L1AMw_nominal2.v03_15_00.D.201214135000.nc + + + ProductType + SNDR_SNPP_ATMS_L1A + + + ProductionDateTime + 2020-12-14T13:50:00.000Z + + + ProductionLocation + Sounder SIPS: JPL/Caltech (Dev) + + + ProductionLocationCode + D + + + RequestId + 1215 + + + StartDateTime + 2016-01-14T10:00:00.000Z + + + StartTAI93 + 726919209.000 + + + TaskId + 8c3ae101-8f7c-46c8-b5c6-63e7b6d3c8cd + + ''') + stac_item = Item(id=filename, + geometry={ + "type": "Point", + "coordinates": [0.0, 0.0] + }, + bbox=[0.0, 0.0, 0.0, 0.0], + datetime=TimeUtils().parse_from_unix(0, True).get_datetime_obj(), + properties={ + **custom_metadata, + "start_datetime": "2016-01-31T18:00:00.009057Z", + "end_datetime": "2016-01-31T19:59:59.991043Z", + "created": "2016-02-01T02:45:59.639000Z", + "updated": "2022-03-23T15:48:21.578000Z", + "datetime": "2022-03-23T15:48:19.079000Z" + }, + href=os.path.join('some_granules', f'{filename}.nc.stac.json'), + collection='NA', + assets={ + f'{filename}.nc': Asset(os.path.join('.', f'{filename}.nc'), title='test_file01.nc', roles=['data']), + f'{filename}.nc.cas': Asset(os.path.join('.', f'{filename}.nc.cas'), title='test_file01.nc.cas', roles=['metadata']), + f'{filename}.nc.stac.json': Asset(os.path.join('.', f'{filename}.nc.stac.json'), title='test_file01.nc.stac.json', roles=['metadata']), + }) + with open(os.path.join(granules_dir, f'{filename}.nc.stac.json'), 'w') as ff: + ff.write(json.dumps(stac_item.to_dict(False, False))) + catalog.add_link(Link('item', os.path.join('some_granules', f'{filename}.nc.stac.json'), 'application/json')) + print(json.dumps(catalog.to_dict(False, False))) + with open(os.environ['CATALOG_FILE'], 'w') as ff: + ff.write(json.dumps(catalog.to_dict(False, False))) + + upload_result_str = choose_process() + upload_result = json.loads(upload_result_str) + print(upload_result) + """ + {'type': 'Catalog', 'id': 'NA', 'stac_version': '1.0.0', 'description': 'NA', 'links': [{'rel': 'root', 'href': '/var/folders/33/xhq97d6s0dq78wg4h2smw23m0000gq/T/tmprew515jo/catalog.json', 'type': 'application/json'}, {'rel': 'item', 'href': '/var/folders/33/xhq97d6s0dq78wg4h2smw23m0000gq/T/tmprew515jo/successful_features.json', 'type': 'application/json'}, {'rel': 'item', 'href': '/var/folders/33/xhq97d6s0dq78wg4h2smw23m0000gq/T/tmprew515jo/failed_features.json', 'type': 'application/json'}]} + """ + self.assertTrue('type' in upload_result, 'missing type') + self.assertEqual(upload_result['type'], 'Catalog', 'missing type') + upload_result = Catalog.from_dict(upload_result) + child_links = [k.href for k in upload_result.get_links(rel='item')] + self.assertEqual(len(child_links), 2, f'wrong length: {child_links}') + self.assertTrue(FileUtils.file_exist(child_links[0]), f'missing file: {child_links[0]}') + successful_feature_collection = ItemCollection.from_dict(FileUtils.read_json(child_links[0])) + successful_feature_collection = list(successful_feature_collection.items) + self.assertEqual(len(successful_feature_collection), total_files, f'wrong length: {successful_feature_collection}') + + self.assertTrue(FileUtils.file_exist(child_links[1]), f'missing file: {child_links[1]}') + failed_feature_collection = ItemCollection.from_dict(FileUtils.read_json(child_links[1])) + failed_feature_collection = list(failed_feature_collection.items) + self.assertEqual(len(failed_feature_collection), 0, f'wrong length: {failed_feature_collection}') + + upload_result = successful_feature_collection[0].to_dict(False, False) + print(f'example feature: {upload_result}') + self.assertTrue('assets' in upload_result, 'missing assets') + result_key = [k for k in upload_result['assets'].keys()][0] + self.assertTrue(result_key.startswith('test_file'), f'worng asset key: {result_key}') + result_key_prefix = result_key.split('.')[0] + self.assertTrue(f'{result_key_prefix}.nc.cas' in upload_result['assets'], f'missing assets#metadata asset: {result_key_prefix}.nc.cas') + self.assertTrue('href' in upload_result['assets'][f'{result_key_prefix}.nc.cas'], 'missing assets#metadata__cas#href') + self.assertTrue(upload_result['assets'][f'{result_key_prefix}.nc.cas']['href'].startswith(f's3://{os.environ["STAGING_BUCKET"]}/{os.environ["COLLECTION_ID"]}/')) + self.assertTrue(f'{result_key_prefix}.nc' in upload_result['assets'], f'missing assets#data: {result_key_prefix}.nc') + self.assertTrue('href' in upload_result['assets'][f'{result_key_prefix}.nc'], 'missing assets#data#href') + self.assertTrue(upload_result['assets'][f'{result_key_prefix}.nc']['href'].startswith(f's3://{os.environ["STAGING_BUCKET"]}/{os.environ["COLLECTION_ID"]}/')) + self.assertTrue(FileUtils.file_exist(os.environ['OUTPUT_FILE']), f'missing output file') + """ + Example output: + { + 'type': 'FeatureCollection', + 'features': [{ + 'type': 'Feature', + 'stac_version': '1.0.0', + 'id': 'NEW_COLLECTION_EXAMPLE_L1B___9:test_file01', + 'properties': {'start_datetime': '2016-01-31T18:00:00.009057Z', + 'end_datetime': '2016-01-31T19:59:59.991043Z', 'created': '2016-02-01T02:45:59.639000Z', + 'updated': '2022-03-23T15:48:21.578000Z', 'datetime': '1970-01-01T00:00:00Z'}, + 'geometry': {'type': 'Point', 'coordinates': [0.0, 0.0]}, 'links': [], + 'assets': {'data': { + 'href': 's3://uds-test-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc', + 'title': 'main data'}, 'metadata__cas': { + 'href': 's3://uds-test-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc.cas', + 'title': 'metadata cas'}, 'metadata__stac': { + 'href': 's3://uds-test-cumulus-staging/NEW_COLLECTION_EXAMPLE_L1B___9/NEW_COLLECTION_EXAMPLE_L1B___9:test_file01/test_file01.nc.stac.json', + 'title': 'metadata stac'}}, + 'bbox': [0.0, 0.0, 0.0, 0.0], + 'stac_extensions': [], + 'collection': 'NEW_COLLECTION_EXAMPLE_L1B___9'}]} + """ + s3 = AwsS3() + s3_keys = [k for k in s3.get_child_s3_files(os.environ['STAGING_BUCKET'], + f"stage_out/successful_features_{starting_time}", + )] + s3_keys = sorted(s3_keys) + print(f's3_keys: {s3_keys}') + self.assertTrue(len(s3_keys) > 0, f'empty files in S3') + local_file = s3.set_s3_url(f's3://{os.environ["STAGING_BUCKET"]}/{s3_keys[-1][0]}').download(tmp_dir_name) + successful_feature_collection = ItemCollection.from_dict(FileUtils.read_json(local_file)) + successful_feature_collection = list(successful_feature_collection.items) + self.assertEqual(len(successful_feature_collection), total_files, f'wrong length: {successful_feature_collection}') + return + + + def test_06_retrieve_granule(self): + temp_collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' + post_url = f'{self._url_prefix}/collections/{temp_collection_id}/items?limit=2' + # post_url = f'{self._url_prefix}/collections/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2312041030/items?limit=2&offset=URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:UDS_COLLECTION___2312041030:test_file02' + print(post_url) + headers = { + 'Authorization': f'Bearer {self.cognito_login.token}', + 'Content-Type': 'application/json', + } + query_result = requests.get(url=post_url, + headers=headers) + self.assertEqual(query_result.status_code, 200, f'wrong status code. {query_result.text}') + response_json = json.loads(query_result.content.decode()) + print(response_json) + self.assertTrue(len(response_json['features']) > 0, f'empty granules. Need collections to compare') + for each_feature in response_json['features']: + stac_item = pystac.Item.from_dict(each_feature) + validation_result = stac_item.validate() + self.assertTrue(isinstance(validation_result, list), + f'wrong validation for : {json.dumps(each_feature, indent=4)}. details: {validation_result}') + self.assertTrue('c_data3' in stac_item.properties, f'missing custom_metadata: {each_feature}') + return diff --git a/tests/integration_tests/test_custom_metadata_end_to_end.py b/tests/integration_tests/test_custom_metadata_end_to_end.py index c6c14cc2..b548df66 100644 --- a/tests/integration_tests/test_custom_metadata_end_to_end.py +++ b/tests/integration_tests/test_custom_metadata_end_to_end.py @@ -41,7 +41,7 @@ def setUp(self) -> None: self.tenant = 'UDS_LOCAL_TEST' # 'uds_local_test' # 'uds_sandbox' self.tenant_venue = 'DEV' # 'DEV1' # 'dev' self.collection_name = 'UDS_COLLECTION' # 'uds_collection' # 'sbx_collection' - self.collection_version = '24.03.29.10.00'.replace('.', '') # '2402011200' + self.collection_version = '24.04.25.09.00'.replace('.', '') # '2402011200' self.custom_metadata_body = { 'tag': {'type': 'keyword'}, diff --git a/tf-module/unity-cumulus/granules_cnm_ingester.tf b/tf-module/unity-cumulus/granules_cnm_ingester.tf index 1d45a863..49a435e2 100644 --- a/tf-module/unity-cumulus/granules_cnm_ingester.tf +++ b/tf-module/unity-cumulus/granules_cnm_ingester.tf @@ -11,6 +11,14 @@ resource "aws_lambda_function" "granules_cnm_ingester" { variables = { LOG_LEVEL = var.log_level SNS_TOPIC_ARN = var.cnm_sns_topic_arn + ES_URL = aws_elasticsearch_domain.uds-es.endpoint + ES_PORT = 443 + CUMULUS_WORKFLOW_SQS_URL = var.workflow_sqs_url + CUMULUS_LAMBDA_PREFIX = var.prefix + REPORT_TO_EMS = var.report_to_ems + CUMULUS_WORKFLOW_NAME = "CatalogGranule" + UNITY_DEFAULT_PROVIDER = var.unity_default_provider + COLLECTION_CREATION_LAMBDA_NAME = "NA" } } diff --git a/tf-module/unity-cumulus/main.tf b/tf-module/unity-cumulus/main.tf index 2a29591e..bff1222a 100644 --- a/tf-module/unity-cumulus/main.tf +++ b/tf-module/unity-cumulus/main.tf @@ -148,7 +148,6 @@ resource "aws_lambda_function" "uds_api_1" { UNITY_DEFAULT_PROVIDER = var.unity_default_provider COLLECTION_CREATION_LAMBDA_NAME = "arn:aws:lambda:${var.aws_region}:${local.account_id}:function:${var.prefix}-uds_api_1" SNS_TOPIC_ARN = var.cnm_sns_topic_arn - UNITY_DEFAULT_PROVIDER = var.unity_default_provider DAPA_API_PREIFX_KEY = var.dapa_api_prefix CORS_ORIGINS = var.cors_origins UDS_BASE_URL = var.uds_base_url From ffa973606befacdb6be89c78aaeacff8e780bcf7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 11:21:30 -0700 Subject: [PATCH 04/12] chore: update version + change log (#370) Co-authored-by: wphyojpl --- CHANGELOG.md | 4 ++++ setup.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0681cd0..0fe9aaca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.6.0] - 2024-05-13 +### Changed +- [#368](https://github.com/unity-sds/unity-data-services/pull/368) feat: adding automated ingestion lambda + ## [7.5.0] - 2024-04-24 ### Changed - [#365](https://github.com/unity-sds/unity-data-services/pull/365) feat: add granuile cnm ingester tf diff --git a/setup.py b/setup.py index 147aa4fd..be5c1e86 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ setup( name="cumulus_lambda_functions", - version="7.5.0", + version="7.6.0", packages=find_packages(), install_requires=install_requires, package_data={ From 714364151bb6aa7a54e448f42cebc794069e1200 Mon Sep 17 00:00:00 2001 From: wphyojpl <38299756+wphyojpl@users.noreply.github.com> Date: Mon, 13 May 2024 11:22:58 -0700 Subject: [PATCH 05/12] feat: add CNM Response Archival lambda (#369) * feat: add additional lambda * fix: urllib has some library clash in github actions * fix: still not working * fix: still not working * fix: still not working * fix: fixing github action * fix: undo setup.py * fix: forgot to call s3 url extraction * feat: add test case * feat: add diagrams * fix: remove extra arrow --- ci.cd/Makefile | 4 + .../granules_cnm_response_writer/__init__.py | 0 .../cnm_result_writer.py | 90 ++++++++++++++++++ .../lambda_function.py | 15 +++ .../granules_cnm_response_writer/__init__.py | 0 .../test_cnm_result_writer.py | 54 +++++++++++ .../test_custom_metadata_end_to_end.py | 18 +++- ...stom metadata Ingestion Infrastructure.png | Bin 0 -> 142033 bytes .../unity-cumulus/DAPA API Infrastructure.png | Bin 0 -> 84929 bytes tf-module/unity-cumulus/README.md | 15 +++ ...auto-ingestion workflow infrastructure.png | Bin 0 -> 165022 bytes .../unity-cumulus/granules_cnm_ingester.tf | 59 ++++++++++++ tf-module/unity-cumulus/variables.tf | 11 +++ 13 files changed, 265 insertions(+), 1 deletion(-) create mode 100644 cumulus_lambda_functions/granules_cnm_response_writer/__init__.py create mode 100644 cumulus_lambda_functions/granules_cnm_response_writer/cnm_result_writer.py create mode 100644 cumulus_lambda_functions/granules_cnm_response_writer/lambda_function.py create mode 100644 tests/cumulus_lambda_functions/granules_cnm_response_writer/__init__.py create mode 100644 tests/cumulus_lambda_functions/granules_cnm_response_writer/test_cnm_result_writer.py create mode 100644 tf-module/unity-cumulus/Custom metadata Ingestion Infrastructure.png create mode 100644 tf-module/unity-cumulus/DAPA API Infrastructure.png create mode 100644 tf-module/unity-cumulus/README.md create mode 100644 tf-module/unity-cumulus/auto-ingestion workflow infrastructure.png diff --git a/ci.cd/Makefile b/ci.cd/Makefile index d9023867..139ed30a 100644 --- a/ci.cd/Makefile +++ b/ci.cd/Makefile @@ -49,6 +49,10 @@ update_lambda_function_mcp_sbx_7: update_lambda_function_mcp_sbx_8: aws lambda update-function-code --s3-key unity_cumulus_lambda/cumulus_lambda_functions_deployment.zip --s3-bucket uds-dev-cumulus-public --function-name arn:aws:lambda:us-west-2:237868187491:function:uds-sbx-cumulus-granules_to_es --publish &>/dev/null + +update_lambda_function_uds-sbx-cumulus-granules_cnm_response_writer: + aws lambda update-function-code --s3-key unity_cumulus_lambda/cumulus_lambda_functions_deployment.zip --s3-bucket uds-dev-cumulus-public --function-name arn:aws:lambda:us-west-2:237868187491:function:uds-sbx-cumulus-granules_cnm_response_writer --publish &>/dev/null + update_lambda_function_mcp_sbx_ingester: aws lambda update-function-code --s3-key unity_cumulus_lambda/cumulus_lambda_functions_deployment.zip --s3-bucket uds-dev-cumulus-public --function-name arn:aws:lambda:us-west-2:237868187491:function:uds-sbx-cumulus-granules_cnm_ingester --publish &>/dev/null diff --git a/cumulus_lambda_functions/granules_cnm_response_writer/__init__.py b/cumulus_lambda_functions/granules_cnm_response_writer/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cumulus_lambda_functions/granules_cnm_response_writer/cnm_result_writer.py b/cumulus_lambda_functions/granules_cnm_response_writer/cnm_result_writer.py new file mode 100644 index 00000000..ce590c3a --- /dev/null +++ b/cumulus_lambda_functions/granules_cnm_response_writer/cnm_result_writer.py @@ -0,0 +1,90 @@ +import json + +from cumulus_lambda_functions.lib.json_validator import JsonValidator +from cumulus_lambda_functions.lib.lambda_logger_generator import LambdaLoggerGenerator +from cumulus_lambda_functions.lib.aws.aws_message_transformers import AwsMessageTransformers +from cumulus_lambda_functions.lib.aws.aws_s3 import AwsS3 + +LOGGER = LambdaLoggerGenerator.get_logger(__name__, LambdaLoggerGenerator.get_level_from_env()) + + +class CnmResultWriter: + def __init__(self): + self.__s3 = AwsS3() + self.__cnm_response_schema = { + 'type': 'object', + 'required': ['collection', 'product', 'submissionTime'], + 'properties': { + 'submissionTime': {'type': 'string'}, + 'collection': {'type': 'string'}, + 'product': { + 'type': 'object', + 'required': ['name', 'files'], + 'properties': { + 'name': {'type': 'string'}, + 'files': { + 'type': 'array', + 'minItems': 1, + 'items': { + 'type': 'object', + 'required': ['name', 'uri'], + 'properties': { + 'name': {'type': 'string'}, + 'uri': {'type': 'string'}, + } + }, + } + } + } + } + } + self.__cnm_response = {} + self.__s3_url = None + + @property + def s3_url(self): + return self.__s3_url + + @s3_url.setter + def s3_url(self, val): + """ + :param val: + :return: None + """ + self.__s3_url = val + return + + @property + def cnm_response(self): + return self.__cnm_response + + @cnm_response.setter + def cnm_response(self, val): + """ + :param val: + :return: None + """ + self.__cnm_response = val + return + + def extract_s3_location(self): + result = JsonValidator(self.__cnm_response_schema).validate(self.cnm_response) + if result is not None: + LOGGER.error(f'invalid JSON: {result}. request_body: {self.cnm_response}') + raise ValueError(f'invalid JSON: {result}. request_body: {self.cnm_response}') + response_filename = f'{self.cnm_response["product"]["name"]}.{self.cnm_response["submissionTime"]}.cnm.json' + parsed_url = self.cnm_response['product']['files'][0]['uri'].split('//')[1] + s3_url = parsed_url.split('/') + s3_url[-1] = response_filename + self.__s3_url = 's3://' + '/'.join(s3_url[1:]) + LOGGER.debug(f'extracted s3_url: {self.__s3_url}') + return self + + def start(self, event): + LOGGER.debug(f'event: {event}') + sns_msg = AwsMessageTransformers().sqs_sns(event) + LOGGER.debug(f'sns_msg: {sns_msg}') + self.cnm_response = sns_msg + self.extract_s3_location() + self.__s3.set_s3_url(self.s3_url).upload_bytes(json.dumps(self.cnm_response, indent=4).encode()) + return diff --git a/cumulus_lambda_functions/granules_cnm_response_writer/lambda_function.py b/cumulus_lambda_functions/granules_cnm_response_writer/lambda_function.py new file mode 100644 index 00000000..9cb4c044 --- /dev/null +++ b/cumulus_lambda_functions/granules_cnm_response_writer/lambda_function.py @@ -0,0 +1,15 @@ +import json + +from cumulus_lambda_functions.granules_cnm_response_writer.cnm_result_writer import CnmResultWriter +from cumulus_lambda_functions.lib.lambda_logger_generator import LambdaLoggerGenerator + + +def lambda_handler(event, context): + """ + :param event: + :param context: + :return: + """ + LambdaLoggerGenerator.remove_default_handlers() + CnmResultWriter().start(event) + return diff --git a/tests/cumulus_lambda_functions/granules_cnm_response_writer/__init__.py b/tests/cumulus_lambda_functions/granules_cnm_response_writer/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/cumulus_lambda_functions/granules_cnm_response_writer/test_cnm_result_writer.py b/tests/cumulus_lambda_functions/granules_cnm_response_writer/test_cnm_result_writer.py new file mode 100644 index 00000000..15746252 --- /dev/null +++ b/tests/cumulus_lambda_functions/granules_cnm_response_writer/test_cnm_result_writer.py @@ -0,0 +1,54 @@ +from unittest import TestCase + +from cumulus_lambda_functions.granules_cnm_response_writer.cnm_result_writer import CnmResultWriter + + +class TestCnmResultWriter(TestCase): + def test_01(self): + sample_msg = { + "collection": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT", + "identifier": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05", + "submissionTime": "2024-05-01T13:35:23.796366", + "provider": "unity", + "version": "1.6.0", + "product": { + "dataVersion": "2403261440", + "files": [ + { + "type": "data", + "name": "abcd.1234.efgh.test_file05.nc", + "uri": "https://uds-distribution-placeholder/uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05/abcd.1234.efgh.test_file05.nc", + "checksumType": "md5", + "checksum": "unknown", + "size": -1 + }, + { + "type": "metadata", + "name": "abcd.1234.efgh.test_file05.nc.cas", + "uri": "https://uds-distribution-placeholder/uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05/abcd.1234.efgh.test_file05.nc.cas", + "checksumType": "md5", + "checksum": "unknown", + "size": -1 + }, + { + "type": "metadata", + "name": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05.cmr.xml", + "uri": "https://uds-distribution-placeholder/uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05.cmr.xml", + "checksumType": "md5", + "checksum": "63e0f7f9b76d56189267c854b67cd91b", + "size": 1858 + } + ], + "name": "URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05" + }, + "receivedTime": "2024-05-01T13:37:29.643Z", + "response": { + "status": "SUCCESS" + }, + "processCompleteTime": "2024-05-01T13:38:01.676Z" + } + test = CnmResultWriter() + test.cnm_response = sample_msg + test.extract_s3_location() + self.assertEqual('s3://uds-sbx-cumulus-staging/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05/URN:NASA:UNITY:UDS_LOCAL_TEST:DEV:SNDR-SNPP_ATMS@L1B$OUTPUT___2403261440:abcd.1234.efgh.test_file05.2024-05-01T13:35:23.796366.cnm.json', test.s3_url) + return diff --git a/tests/integration_tests/test_custom_metadata_end_to_end.py b/tests/integration_tests/test_custom_metadata_end_to_end.py index b548df66..df38db2b 100644 --- a/tests/integration_tests/test_custom_metadata_end_to_end.py +++ b/tests/integration_tests/test_custom_metadata_end_to_end.py @@ -8,6 +8,8 @@ import pystac import requests +from cumulus_lambda_functions.lib.aws.aws_s3 import AwsS3 + from cumulus_lambda_functions.lib.time_utils import TimeUtils from pystac import Link, Catalog, Asset, Item, ItemCollection @@ -41,7 +43,7 @@ def setUp(self) -> None: self.tenant = 'UDS_LOCAL_TEST' # 'uds_local_test' # 'uds_sandbox' self.tenant_venue = 'DEV' # 'DEV1' # 'dev' self.collection_name = 'UDS_COLLECTION' # 'uds_collection' # 'sbx_collection' - self.collection_version = '24.04.25.09.00'.replace('.', '') # '2402011200' + self.collection_version = '24.05.01.14.00'.replace('.', '') # '2402011200' self.custom_metadata_body = { 'tag': {'type': 'keyword'}, @@ -494,6 +496,20 @@ def test_06_03_retrieve_granule_filter_no_result(self): self.assertTrue(len(response_json['features']) == 0, f'empty granules. Need collections to compare') return + def test_07_check_cnm_response(self): + os.environ['STAGING_BUCKET'] = 'uds-sbx-cumulus-staging' + temp_collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' + s3 = AwsS3() + child_files = [k for k in s3.get_child_s3_files(os.environ['STAGING_BUCKET'], f'{temp_collection_id}/{temp_collection_id}:{self.granule_id}')] + cnm_response = [k for k in child_files if k[0].endswith('.cnm.json')] + self.assertEqual(len(cnm_response), 1) + with tempfile.TemporaryDirectory() as tmp_dir_name: + local_file_path = s3.set_s3_url(f's3://{os.environ["STAGING_BUCKET"]}/{cnm_response[0][0]}').download(tmp_dir_name) + cnm_response = FileUtils.read_json(local_file_path) + # NOTE: CNM response do not have collection version + self.assertEqual(cnm_response['collection'], f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}', f'wrong collection ID') + return + def test_01_pagination(self): temp_collection_id = f'URN:NASA:UNITY:{self.tenant}:{self.tenant_venue}:{self.collection_name}___{self.collection_version}' post_url = f'{self._url_prefix}/collections/{temp_collection_id}/items?limit=2' diff --git a/tf-module/unity-cumulus/Custom metadata Ingestion Infrastructure.png b/tf-module/unity-cumulus/Custom metadata Ingestion Infrastructure.png new file mode 100644 index 0000000000000000000000000000000000000000..e47f1e2f5a24162cd1bde60a6de93073f6f2fb16 GIT binary patch literal 142033 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 literal 0 HcmV?d00001 diff --git a/tf-module/unity-cumulus/README.md b/tf-module/unity-cumulus/README.md new file mode 100644 index 00000000..53adcf38 --- /dev/null +++ b/tf-module/unity-cumulus/README.md @@ -0,0 +1,15 @@ +## Terraform Guide on what are being deployed as there are various components. + +### REST API +- Source: https://www.figma.com/file/dRmKfOzPC2NKACc0NL29bT/DAPA-API-Infrastructure +![DAPA API Infrastructure.png](DAPA%20API%20Infrastructure.png) +### Auto Ingestion Workflow +- Source: https://www.figma.com/file/5kI41JOXP1WPuC4veGCEgm/auto-ingestion-workflow-infrastructure +![auto-ingestion workflow infrastructure.png](auto-ingestion%20workflow%20infrastructure.png) + +### CMR metadata generators +- 3 Lambdas which are used in CNM Step function definitions stored in cumulus-template-deploy terraform. +- Example: STAC [Metadata](https://github.jpl.nasa.gov/unity-uds/cumulus-template-deploy/blob/master/cumulus-tf/catalog_granule_workflow.asl.json#L216) Extraction +### Custom Metadata Ingestion +- Source: https://www.figma.com/file/mKxRrAlvKmrR5DULHD2yah/Custom-metadata-Ingestion-Infrastructure +![Custom metadata Ingestion Infrastructure.png](Custom%20metadata%20Ingestion%20Infrastructure.png) \ No newline at end of file diff --git a/tf-module/unity-cumulus/auto-ingestion workflow infrastructure.png b/tf-module/unity-cumulus/auto-ingestion workflow infrastructure.png new file mode 100644 index 0000000000000000000000000000000000000000..7906029783fd4f05068cbea29230342b312bd76f GIT binary patch literal 165022 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 literal 0 HcmV?d00001 diff --git a/tf-module/unity-cumulus/granules_cnm_ingester.tf b/tf-module/unity-cumulus/granules_cnm_ingester.tf index 49a435e2..004b981a 100644 --- a/tf-module/unity-cumulus/granules_cnm_ingester.tf +++ b/tf-module/unity-cumulus/granules_cnm_ingester.tf @@ -102,3 +102,62 @@ resource "aws_lambda_event_source_mapping" "granules_cnm_ingester_queue_lambda_t batch_size = 1 enabled = true } +################# << CNM Response Writer >> ######################## + +resource "aws_lambda_function" "granules_cnm_response_writer" { + filename = local.lambda_file_name + source_code_hash = filebase64sha256(local.lambda_file_name) + function_name = "${var.prefix}-granules_cnm_response_writer" + role = var.lambda_processing_role_arn + handler = "cumulus_lambda_functions.granules_cnm_response_writer.lambda_function.lambda_handler" + runtime = "python3.9" + timeout = 300 + reserved_concurrent_executions = var.granules_cnm_response_writer__lambda_concurrency # TODO + environment { + variables = { + LOG_LEVEL = var.log_level + SNS_TOPIC_ARN = var.cnm_sns_topic_arn + } + } + + vpc_config { + subnet_ids = var.cumulus_lambda_subnet_ids + security_group_ids = local.security_group_ids_set ? var.security_group_ids : [aws_security_group.unity_cumulus_lambda_sg[0].id] + } + tags = var.tags +} + +data "aws_sns_topic" "granules_cnm_response_topic" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic.html + name = var.granules_cnm_response_topic +} + +resource "aws_sqs_queue" "granules_cnm_response_writer" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue + name = "${var.prefix}-granules_cnm_response_writer" + delay_seconds = 0 + max_message_size = 262144 + message_retention_seconds = 345600 + visibility_timeout_seconds = var.granules_cnm_ingester__sqs_visibility_timeout_seconds // Used as cool off time in seconds. It will wait for 5 min if it fails + receive_wait_time_seconds = 0 + policy = templatefile("${path.module}/sqs_policy.json", { + region: var.aws_region, + roleArn: var.lambda_processing_role_arn, + accountId: local.account_id, + sqsName: "${var.prefix}-granules_cnm_response_writer", + }) + tags = var.tags +} + +resource "aws_sns_topic_subscription" "granules_cnm_response_writer_subscription" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription + topic_arn = data.aws_sns_topic.granules_cnm_response_topic.arn + protocol = "sqs" + endpoint = aws_sqs_queue.granules_cnm_response_writer.arn +# filter_policy_scope = "MessageBody" // MessageAttributes. not using attributes +# filter_policy = templatefile("${path.module}/ideas_api_job_results_filter_policy.json", {}) +} + +resource "aws_lambda_event_source_mapping" "granules_cnm_response_writer_lambda_trigger" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_event_source_mapping#sqs + event_source_arn = aws_sqs_queue.granules_cnm_response_writer.arn + function_name = aws_lambda_function.granules_cnm_response_writer.arn + batch_size = 1 + enabled = true +} \ No newline at end of file diff --git a/tf-module/unity-cumulus/variables.tf b/tf-module/unity-cumulus/variables.tf index 855db151..ee5a7a12 100644 --- a/tf-module/unity-cumulus/variables.tf +++ b/tf-module/unity-cumulus/variables.tf @@ -211,6 +211,17 @@ variable "granules_cnm_ingester__lambda_concurrency" { description = "How many Lambdas can be executed for CNM ingester concurrently" } +variable "granules_cnm_response_writer__lambda_concurrency" { + type = number + default = 20 + description = "How many Lambdas can be executed for CNM Response Writer concurrently" +} + +variable "granules_cnm_response_topic" { + type = string + description = "Name of CNM Response SNS Topic" +} + variable "granules_cnm_ingester__bucket_notification_prefix" { type = string default = "stage_out" From a51770a09319d8c5da154cc4856ba8654770ee3a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 11:23:58 -0700 Subject: [PATCH 06/12] chore: update version + change log (#371) Co-authored-by: wphyojpl --- CHANGELOG.md | 4 ++++ setup.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fe9aaca..f27a481d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.7.0] - 2024-05-13 +### Changed +- [#369](https://github.com/unity-sds/unity-data-services/pull/369) feat: add cnm response archival lambda + ## [7.6.0] - 2024-05-13 ### Changed - [#368](https://github.com/unity-sds/unity-data-services/pull/368) feat: adding automated ingestion lambda diff --git a/setup.py b/setup.py index be5c1e86..d0098e12 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ setup( name="cumulus_lambda_functions", - version="7.6.0", + version="7.7.0", packages=find_packages(), install_requires=install_requires, package_data={ From fa36bd3189378fc883fcf1137767a214e0a2b372 Mon Sep 17 00:00:00 2001 From: wphyojpl <38299756+wphyojpl@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:12:44 -0700 Subject: [PATCH 07/12] feat: market place bucket (#372) * feat: market place bucket * feat: create a new tf module for marketplace * feat: add marketplace terraform zip in github * feat: add example terraform files * feat: get new bucket to work with lambdas * fix: cumulus prefix is different from bucket name prefix * fix: updates for cross account * fix: remove root access to s3 * feat: add prefix in ssm + read it from marketplace * fix: updating names + getting region from param * chore: some touchups * feat: use project + venue as requested by UCS * chore: add UCS marketplace requried variables --- .github/workflows/makefile.yml | 27 +++++++++ ci.cd/create_aws_lambda_zip.sh | 5 ++ tf-module/marketplace/outputs.tf | 3 + tf-module/marketplace/s3_bucket_creation.tf | 50 +++++++++++++++++ tf-module/marketplace/s3_bucket_policy.json | 24 ++++++++ tf-module/marketplace/terraform.tf.example | 8 +++ .../marketplace/terraform.tfvars.example | 18 ++++++ tf-module/marketplace/variables.tf | 55 +++++++++++++++++++ tf-module/unity-cumulus/main.tf | 12 +++- tf-module/unity-cumulus/sns_policy.json | 3 - 10 files changed, 201 insertions(+), 4 deletions(-) create mode 100644 tf-module/marketplace/outputs.tf create mode 100644 tf-module/marketplace/s3_bucket_creation.tf create mode 100644 tf-module/marketplace/s3_bucket_policy.json create mode 100644 tf-module/marketplace/terraform.tf.example create mode 100644 tf-module/marketplace/terraform.tfvars.example create mode 100644 tf-module/marketplace/variables.tf diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml index 980087d7..08f9be58 100644 --- a/.github/workflows/makefile.yml +++ b/.github/workflows/makefile.yml @@ -31,10 +31,15 @@ jobs: - run: | artifact_file_name="${{ env.ARTIFACT_BASE_NAME }}-${{ env.software_version }}.zip" terraform_artifact_file_name="terraform_${{ env.ARTIFACT_BASE_NAME }}-${{ env.software_version }}.zip" + terraform_marketplace_artifact_file_name="terraform_marketplace-${{ env.software_version }}.zip" + echo "ARTIFACT_FILE=$artifact_file_name" >> $GITHUB_ENV echo "TERRAFORM_ARTIFACT_FILE=$terraform_artifact_file_name" >> $GITHUB_ENV + echo "TERRAFORM_MARKETPLACE_ARTIFACT_FILE=$terraform_marketplace_artifact_file_name" >> $GITHUB_ENV + cp "${GITHUB_WORKSPACE}/cumulus_lambda_functions_deployment.zip" "$artifact_file_name" cp "${GITHUB_WORKSPACE}/terraform_cumulus_lambda_functions_deployment.zip" "$terraform_artifact_file_name" + cp "${GITHUB_WORKSPACE}/terraform_marketplace_deployment.zip" "$terraform_marketplace_artifact_file_name" - name: Create Release id: create_release if: ${{ contains(github.ref, 'master') }} @@ -86,6 +91,17 @@ jobs: asset_path: "${{ env.TERRAFORM_ARTIFACT_FILE }}" asset_name: "${{ env.TERRAFORM_ARTIFACT_FILE }}" asset_content_type: application/zip + - name: Upload PreRelease Asset TERRAFORM_MARKETPLACE_ARTIFACT_FILE + id: upload-prerelease-asset-TERRAFORM_MARKETPLACE_ARTIFACT_FILE +# if: ${{ contains(github.ref, 'main') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_prerelease.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: "${{ env.TERRAFORM_MARKETPLACE_ARTIFACT_FILE }}" + asset_name: "${{ env.TERRAFORM_MARKETPLACE_ARTIFACT_FILE }}" + asset_content_type: application/zip - name: Upload Release Asset 1 id: upload-release-asset-1 if: ${{ contains(github.ref, 'master') }} @@ -107,4 +123,15 @@ jobs: upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: "${{ env.TERRAFORM_ARTIFACT_FILE }}" asset_name: "${{ env.TERRAFORM_ARTIFACT_FILE }}" + asset_content_type: application/zip + - name: Upload Release Asset TERRAFORM_MARKETPLACE_ARTIFACT_FILE + id: upload-release-asset-TERRAFORM_MARKETPLACE_ARTIFACT_FILE + if: ${{ contains(github.ref, 'master') }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: "${{ env.TERRAFORM_MARKETPLACE_ARTIFACT_FILE }}" + asset_name: "${{ env.TERRAFORM_MARKETPLACE_ARTIFACT_FILE }}" asset_content_type: application/zip \ No newline at end of file diff --git a/ci.cd/create_aws_lambda_zip.sh b/ci.cd/create_aws_lambda_zip.sh index 51052696..734e7d5a 100644 --- a/ci.cd/create_aws_lambda_zip.sh +++ b/ci.cd/create_aws_lambda_zip.sh @@ -4,9 +4,11 @@ apt-get update -y && apt-get install zip -y ZIP_NAME='cumulus_lambda_functions_deployment.zip' TERRAFORM_ZIP_NAME='terraform_cumulus_lambda_functions_deployment.zip' +TERRAFORM_MARKETPLACE_ZIP_NAME='terraform_marketplace_deployment.zip' project_root_dir=${GITHUB_WORKSPACE} zip_file="${project_root_dir}/$ZIP_NAME" ; # save the result file in current working directory terraform_zip_file="${project_root_dir}/$TERRAFORM_ZIP_NAME" ; # save the result file in current working directory +terraform_marketplace_zip_file="${project_root_dir}/$TERRAFORM_MARKETPLACE_ZIP_NAME" ; # save the result file in current working directory source_dir=`python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])'` @@ -22,6 +24,9 @@ cp ${zip_file} build/ cd $project_root_dir/tf-module/unity-cumulus zip -9 ${terraform_zip_file} * **/* +cd $project_root_dir/tf-module/marketplace +zip -9 ${terraform_marketplace_zip_file} * **/* + # github.job github_branch=${GITHUB_REF##*/} software_version_trailing="" diff --git a/tf-module/marketplace/outputs.tf b/tf-module/marketplace/outputs.tf new file mode 100644 index 00000000..9c7661e8 --- /dev/null +++ b/tf-module/marketplace/outputs.tf @@ -0,0 +1,3 @@ +output "market_bucket_name" { + value = aws_s3_bucket.market_bucket.id +} \ No newline at end of file diff --git a/tf-module/marketplace/s3_bucket_creation.tf b/tf-module/marketplace/s3_bucket_creation.tf new file mode 100644 index 00000000..d2c7a932 --- /dev/null +++ b/tf-module/marketplace/s3_bucket_creation.tf @@ -0,0 +1,50 @@ +data "aws_ssm_parameter" "uds_aws_account" { + name = var.uds_aws_account_ssm_path +} + +data "aws_ssm_parameter" "uds_aws_account_region" { + name = var.uds_aws_account_region_ssm_path +} + +data "aws_ssm_parameter" "uds_prefix" { + name = "arn:aws:ssm:${data.aws_ssm_parameter.uds_aws_account_region.value}:${data.aws_ssm_parameter.uds_aws_account.value}:parameter${var.uds_prefix_ssm_path}" +} +resource "aws_s3_bucket" "market_bucket" { + bucket = lower(replace("${var.project}-${var.venue}-unity-${var.market_bucket_name}", "_", "-")) + tags = merge( + var.tags, + { + "project" = var.project + "venue" = var.venue + } + ) +} + +resource "aws_s3_bucket_server_side_encryption_configuration" "market_bucket" { // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_server_side_encryption_configuration + bucket = aws_s3_bucket.market_bucket.id + rule { + apply_server_side_encryption_by_default { + sse_algorithm = "AES256" + } + } +} + +resource "aws_s3_bucket_policy" "market_bucket" { + // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_policy + bucket = aws_s3_bucket.market_bucket.id + policy = templatefile("${path.module}/s3_bucket_policy.json", { + udsAwsAccount: data.aws_ssm_parameter.uds_aws_account.value, + s3BucketName: aws_s3_bucket.market_bucket.id, + cumulus_lambda_processing_role_name: "${data.aws_ssm_parameter.uds_prefix.value}-${var.cumulus_lambda_processing_role_name_postfix}" + }) +} + +resource "aws_s3_bucket_notification" "bucket_notification" { + bucket = aws_s3_bucket.market_bucket.id + topic { + topic_arn = "arn:aws:sns:${data.aws_ssm_parameter.uds_aws_account_region.value}:${data.aws_ssm_parameter.uds_aws_account.value}:${data.aws_ssm_parameter.uds_prefix.value}-granules_cnm_ingester" + events = ["s3:ObjectCreated:*"] + filter_suffix = ".json" + filter_prefix = var.market_bucket__notification_prefix + } +} \ No newline at end of file diff --git a/tf-module/marketplace/s3_bucket_policy.json b/tf-module/marketplace/s3_bucket_policy.json new file mode 100644 index 00000000..fb8624af --- /dev/null +++ b/tf-module/marketplace/s3_bucket_policy.json @@ -0,0 +1,24 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "DelegateS3Access", + "Effect": "Allow", + "Principal": { + "Service": "s3.amazonaws.com", + "AWS": [ + "arn:aws:iam::${udsAwsAccount}:role/${cumulus_lambda_processing_role_name}" + ] + }, + "Action": [ + "s3:ListBucket", + "s3:GetObject*", + "s3:PutObject*" + ], + "Resource": [ + "arn:aws:s3:::${s3BucketName}/*", + "arn:aws:s3:::${s3BucketName}" + ] + } + ] +} diff --git a/tf-module/marketplace/terraform.tf.example b/tf-module/marketplace/terraform.tf.example new file mode 100644 index 00000000..30696b75 --- /dev/null +++ b/tf-module/marketplace/terraform.tf.example @@ -0,0 +1,8 @@ +terraform { + backend "s3" { + region = "us-west-2" + bucket = "am-uds-dev-cumulus-tf-state" + key = "am-uds-dev-cumulus/marketplace/unity/terraform.tfstate" + dynamodb_table = "am-uds-dev-cumulus-tf-locks" + } +} diff --git a/tf-module/marketplace/terraform.tfvars.example b/tf-module/marketplace/terraform.tfvars.example new file mode 100644 index 00000000..7155da08 --- /dev/null +++ b/tf-module/marketplace/terraform.tfvars.example @@ -0,0 +1,18 @@ +project = "Unity" +venue = "dev" +market_bucket_name = "william_test_1" +market_bucket__notification_prefix = "stage_out" +tags = { + Venue = "test", + ServiceArea = "ds", + CapVersion = "18.0.0" + Component = "Cumulus", + Proj = "Unity", + CreatedBy = "ds", + Env = "test", + Stack = "Cumulus" +} +uds_aws_account_ssm_path="/unity/shared-services/aws/account" +uds_aws_account_region_ssm_path="/unity/shared-services/aws/account/region" +uds_prefix_ssm_path="/unity/shared-services/data-catalog/deployment/prefix" +cumulus_lambda_processing_role_name_postfix="lambda-processing" \ No newline at end of file diff --git a/tf-module/marketplace/variables.tf b/tf-module/marketplace/variables.tf new file mode 100644 index 00000000..b586c926 --- /dev/null +++ b/tf-module/marketplace/variables.tf @@ -0,0 +1,55 @@ +variable "installprefix" { + type = string + default = "" + description = "This is not needed, but required by UCS marketplace. Empty string is good enough for manual deployment" +} +variable "deployment_name" { + type = string + default = "" + description = "This is not needed, but required by UCS marketplace. Empty string is good enough for manual deployment" +} +variable "project" { + type = string + default = "UnknownProject" + description = "Name of Project" +} +variable "venue" { + type = string + default = "Unknownvenue" + description = "Name of Project" +} +variable "tags" { + description = "Tags to be applied to Cumulus resources that support tags" + type = map(string) + default = {} +} +variable "market_bucket_name" { + type = string + description = "name of S3 bucket. Note-1: it will be prefixed with '--unity-'. Note-2: It should only have '-'. '_' will be replaced with '-'" +} +variable "market_bucket__notification_prefix" { + type = string + default = "stage_out" + description = "path to the directory where catalogs.json will be written" +} +variable "uds_aws_account_ssm_path" { + type = string + default = "/unity/shared-services/aws/account" + description = "SSM parameter path where aws account for interacting UDS to created S3 bucket is stored" +} +variable "uds_aws_account_region_ssm_path" { + type = string + default = "/unity/shared-services/aws/account/region" + description = "SSM parameter path where aws account for interacting UDS to created S3 bucket is stored" +} +variable "uds_prefix_ssm_path" { + type = string + default = "/unity/shared-services/data-catalog/deployment/prefix" + description = "SSM parameter path where aws account for interacting UDS to created S3 bucket is stored" +} +variable "cumulus_lambda_processing_role_name_postfix" { + type = string + default = "lambda-processing" + description = "name of the Lambda Processing role by Cumulus after `prefix`" +} + diff --git a/tf-module/unity-cumulus/main.tf b/tf-module/unity-cumulus/main.tf index bff1222a..8134f759 100644 --- a/tf-module/unity-cumulus/main.tf +++ b/tf-module/unity-cumulus/main.tf @@ -173,10 +173,20 @@ resource "aws_ssm_parameter" "uds_api_1" { } - resource "aws_ssm_parameter" "health_check_value" { +resource "aws_ssm_parameter" "health_check_value" { count = var.is_deploying_healthcheck ? 1 : 0 name = "${var.health_check_base_path}/${var.health_check_marketplace_item}/${var.health_check_component_name}/url" type = "String" + tier = "Advanced" value = "${var.uds_base_url}/${var.dapa_api_prefix}/collections" tags = var.tags +} + +resource "aws_ssm_parameter" "marketplace_prefix" { + count = var.is_deploying_healthcheck ? 1 : 0 + name = "/unity/${var.health_check_marketplace_item}/${var.health_check_component_name}/deployment/prefix" + type = "String" + value = var.prefix + tier = "Advanced" + tags = var.tags } \ No newline at end of file diff --git a/tf-module/unity-cumulus/sns_policy.json b/tf-module/unity-cumulus/sns_policy.json index 638b7ebe..5ccb3080 100644 --- a/tf-module/unity-cumulus/sns_policy.json +++ b/tf-module/unity-cumulus/sns_policy.json @@ -21,9 +21,6 @@ "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:${s3Glob}" - }, - "StringEquals": { - "AWS:SourceAccount": "${accountId}" } } } From cb9364a21f612d8a0b783121d669fa8b9d6abba3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:14:02 -0700 Subject: [PATCH 08/12] chore: update version + change log (#383) Co-authored-by: ngachung --- CHANGELOG.md | 4 ++++ setup.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f27a481d..b05a9e23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.8.0] - 2024-06-27 +### Changed +- [#372](https://github.com/unity-sds/unity-data-services/pull/372) feat: market place bucket + ## [7.7.0] - 2024-05-13 ### Changed - [#369](https://github.com/unity-sds/unity-data-services/pull/369) feat: add cnm response archival lambda diff --git a/setup.py b/setup.py index d0098e12..13629298 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ setup( name="cumulus_lambda_functions", - version="7.7.0", + version="7.8.0", packages=find_packages(), install_requires=install_requires, package_data={ From 2ba810594b456c3b419df49cc7cb67f34ee72963 Mon Sep 17 00:00:00 2001 From: wphyojpl <38299756+wphyojpl@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:19:15 -0700 Subject: [PATCH 09/12] fix: updating path for httpd testing (#373) * fix: updating path for httpd testing * fix: testing stac browser with token via cookie * fix: replacing stac browser prefix to work with any prefix * fix: some error * fix: new stac browser built files * chore: add log to see if correct files are being replaced * fix: reverting changes * fix: run stac-browser from tmp location * fix: it is reverted to wrong prefix * fix: adding endpoints to redirect stac_browser * feat: set cookie using incoming header * feat: add sample docker-compose for web service * fix: adding public catalog list endpoint * feat: applying settings * fix: trying to add setting to stac_browser * fix: logic error loading the setting * feat: loading extra setting from env * fix: add new env to the lambda --- cumulus_lambda_functions/lib/constants.py | 1 + .../lib/utils/file_utils.py | 6 ++ .../uds_api/fast_api_utils.py | 31 ++++++++++ cumulus_lambda_functions/uds_api/misc_api.py | 62 +++++++++++++++++++ .../uds_api/routes_api.py | 3 +- .../{7944.72c8c98f.css => 9044.72c8c98f.css} | 0 .../uds_api/stac_browser/index.html | 2 +- .../js/{3912.637fb6c7.js => 3912.900420c2.js} | 4 +- ...2.637fb6c7.js.map => 3912.900420c2.js.map} | 2 +- .../js/{572.85a7e414.js => 572.40caaa91.js} | 2 +- ...72.85a7e414.js.map => 572.40caaa91.js.map} | 2 +- .../stac_browser/js/5879.06b98803.js.map | 1 - .../js/{5879.06b98803.js => 5879.4c193e89.js} | 6 +- .../stac_browser/js/5879.4c193e89.js.map | 1 + .../uds_api/stac_browser/js/7944.a7540bf6.js | 2 - .../stac_browser/js/7944.a7540bf6.js.map | 1 - .../uds_api/stac_browser/js/9044.8526a0bb.js | 2 + .../stac_browser/js/9044.8526a0bb.js.map | 1 + .../uds_api/stac_browser/js/app.79583f94.js | 2 + .../stac_browser/js/app.79583f94.js.map | 1 + .../uds_api/stac_browser/js/app.e7e16cdc.js | 2 - .../stac_browser/js/app.e7e16cdc.js.map | 1 - .../js/chunk-vendors.5426dbfb.js.map | 1 - ....5426dbfb.js => chunk-vendors.eae96ced.js} | 12 +++- .../js/chunk-vendors.eae96ced.js.map | 1 + .../uds_api/stac_browser/report.html | 39 ------------ .../uds_api/web_service.py | 24 +++++-- .../uds_api/web_service_constants.py | 6 ++ docker/docker-compose-web-service.yml | 36 +++++++++++ tf-module/unity-cumulus/api_gateway.tf | 3 + .../unity-cumulus/api_gateway_01_misc_base.tf | 21 +++++++ ...pi_gateway_01_misc_base_00_catalog_list.tf | 47 ++++++++++++++ .../api_gateway_01_misc_base_00_proxy.tf | 20 ++++++ .../api_gateway_01_misc_base_00_stac_entry.tf | 47 ++++++++++++++ tf-module/unity-cumulus/main.tf | 1 + 35 files changed, 328 insertions(+), 65 deletions(-) create mode 100644 cumulus_lambda_functions/uds_api/misc_api.py rename cumulus_lambda_functions/uds_api/stac_browser/css/{7944.72c8c98f.css => 9044.72c8c98f.css} (100%) rename cumulus_lambda_functions/uds_api/stac_browser/js/{3912.637fb6c7.js => 3912.900420c2.js} (72%) rename cumulus_lambda_functions/uds_api/stac_browser/js/{3912.637fb6c7.js.map => 3912.900420c2.js.map} (99%) rename cumulus_lambda_functions/uds_api/stac_browser/js/{572.85a7e414.js => 572.40caaa91.js} (99%) rename cumulus_lambda_functions/uds_api/stac_browser/js/{572.85a7e414.js.map => 572.40caaa91.js.map} (99%) delete mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/5879.06b98803.js.map rename cumulus_lambda_functions/uds_api/stac_browser/js/{5879.06b98803.js => 5879.4c193e89.js} (77%) create mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/5879.4c193e89.js.map delete mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/7944.a7540bf6.js delete mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/7944.a7540bf6.js.map create mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/9044.8526a0bb.js create mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/9044.8526a0bb.js.map create mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js create mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/app.79583f94.js.map delete mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/app.e7e16cdc.js delete mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/app.e7e16cdc.js.map delete mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/chunk-vendors.5426dbfb.js.map rename cumulus_lambda_functions/uds_api/stac_browser/js/{chunk-vendors.5426dbfb.js => chunk-vendors.eae96ced.js} (65%) create mode 100644 cumulus_lambda_functions/uds_api/stac_browser/js/chunk-vendors.eae96ced.js.map delete mode 100644 cumulus_lambda_functions/uds_api/stac_browser/report.html create mode 100644 docker/docker-compose-web-service.yml create mode 100644 tf-module/unity-cumulus/api_gateway_01_misc_base.tf create mode 100644 tf-module/unity-cumulus/api_gateway_01_misc_base_00_catalog_list.tf create mode 100644 tf-module/unity-cumulus/api_gateway_01_misc_base_00_proxy.tf create mode 100644 tf-module/unity-cumulus/api_gateway_01_misc_base_00_stac_entry.tf diff --git a/cumulus_lambda_functions/lib/constants.py b/cumulus_lambda_functions/lib/constants.py index c79428a5..010bc6fa 100644 --- a/cumulus_lambda_functions/lib/constants.py +++ b/cumulus_lambda_functions/lib/constants.py @@ -18,5 +18,6 @@ class Constants: PARAM_STORE = 'PARAM_STORE' DAPA_API_KEY = 'DAPA_API' DAPA_API_PREIFX_KEY = 'DAPA_API_PREIFX_KEY' + DAPA_API_URL_BASE = 'DAPA_API_URL_BASE' CORS_ORIGINS = 'CORS_ORIGINS' PARALLEL_COUNT = 'PARALLEL_COUNT' diff --git a/cumulus_lambda_functions/lib/utils/file_utils.py b/cumulus_lambda_functions/lib/utils/file_utils.py index 2e56fce7..ba063aef 100644 --- a/cumulus_lambda_functions/lib/utils/file_utils.py +++ b/cumulus_lambda_functions/lib/utils/file_utils.py @@ -21,6 +21,7 @@ from functools import partial from pathlib import Path from subprocess import Popen, PIPE +from distutils.dir_util import copy_tree class FileUtils: @@ -43,6 +44,11 @@ def mk_dir_p(dir_path): Path(dir_path).mkdir(parents=True, exist_ok=True) return + @staticmethod + def copy_dir(source_dir, dest_dir): + copy_tree(source_dir, dest_dir) + return + @staticmethod def gunzip_file_os(zipped_file_path, output_file_path=None): if not FileUtils.file_exist(zipped_file_path): diff --git a/cumulus_lambda_functions/uds_api/fast_api_utils.py b/cumulus_lambda_functions/uds_api/fast_api_utils.py index e3903542..8b58b8f5 100644 --- a/cumulus_lambda_functions/uds_api/fast_api_utils.py +++ b/cumulus_lambda_functions/uds_api/fast_api_utils.py @@ -42,3 +42,34 @@ def get_cors_origins(): @staticmethod def get_api_base_prefix(): return os.environ.get(Constants.DAPA_API_PREIFX_KEY) if Constants.DAPA_API_PREIFX_KEY in os.environ else WebServiceConstants.API_PREFIX + + @staticmethod + def get_api_url_base(): + if Constants.DAPA_API_URL_BASE not in os.environ: + raise ValueError(f'missing DAPA_API_URL_BASE in ENV') + dapa_api_base = os.environ.get(Constants.DAPA_API_URL_BASE) + dapa_api_base = dapa_api_base[:-1] if dapa_api_base.endswith('/') else dapa_api_base + return dapa_api_base + + @staticmethod + def replace_in_file(file_path, old_string, new_string): + try: + with open(file_path, 'r') as file: + content = file.read() + + content = content.replace(old_string, new_string) + + with open(file_path, 'w') as file: + file.write(content) + except Exception as e: + print(f'{file_path}.. {str(e)}') + return + + @staticmethod + def replace_in_folder(folder_path, old_string, new_string): + for dirpath, _, filenames in os.walk(folder_path): + for filename in filenames: + print(f'replace_in_folder: filename={filename}') + file_path = os.path.join(dirpath, filename) + FastApiUtils.replace_in_file(file_path, old_string, new_string) + return diff --git a/cumulus_lambda_functions/uds_api/misc_api.py b/cumulus_lambda_functions/uds_api/misc_api.py new file mode 100644 index 00000000..4d5dbbe2 --- /dev/null +++ b/cumulus_lambda_functions/uds_api/misc_api.py @@ -0,0 +1,62 @@ +import json +import os +from time import time +from typing import Union + +from starlette.responses import Response, RedirectResponse +from cumulus_lambda_functions.uds_api.fast_api_utils import FastApiUtils + +from cumulus_lambda_functions.lib.lambda_logger_generator import LambdaLoggerGenerator + +from fastapi import APIRouter, HTTPException, Request +from cumulus_lambda_functions.uds_api.web_service_constants import WebServiceConstants + + +LOGGER = LambdaLoggerGenerator.get_logger(__name__, LambdaLoggerGenerator.get_level_from_env()) + +router = APIRouter( + prefix=f'/{WebServiceConstants.MISC}', + tags=["Granules CRUD API"], + responses={404: {"description": "Not found"}}, +) + + +@router.get(f'/catalog_list') +@router.get(f'/catalog_list/') +async def stac_entry(request: Request, response: Response): + base_url = os.environ.get(WebServiceConstants.BASE_URL, f'{request.url.scheme}://{request.url.netloc}') + base_url = base_url[:-1] if base_url.endswith('/') else base_url + base_url = base_url if base_url.startswith('http') else f'https://{base_url}' + api_base_prefix = FastApiUtils.get_api_base_prefix() + stac_browser_expecting_result = [{ + "id": 1, + "url": f'{base_url}/{api_base_prefix}/catalog', + "slug": "unity-ds", + "title": "Unity DS (Venue: TODO)", + "summary": "Unity DS collections & granules", + "access": "public", + "created": "2023-03-16T09:15:31.242Z", + "updated": "2023-03-16T09:15:31.242Z", + "isPrivate": False, + "isApi": False, + "accessInfo": None + }] + return stac_browser_expecting_result + +@router.get(f'/stac_entry') +@router.get(f'/stac_entry/') +async def stac_entry(request: Request, response: Response): + request_headers = dict(request.headers) + LOGGER.debug(f'stac_entry - request_headers: {request_headers}') + print(request_headers) + base_url = os.environ.get(WebServiceConstants.BASE_URL, f'{request.url.scheme}://{request.url.netloc}') + base_url = base_url[:-1] if base_url.endswith('/') else base_url + base_url = base_url if base_url.startswith('http') else f'https://{base_url}' + api_base_prefix = FastApiUtils.get_api_base_prefix() + ending_url = f'{WebServiceConstants.STAC_BROWSER}/' if str(request.url).endswith('/') else WebServiceConstants.STAC_BROWSER + redirect_response = RedirectResponse(f'/{api_base_prefix}/{ending_url}') + if 'oidc_access_token' in request_headers: + # TODO not sure cookie settings need to be stricter + redirect_response.set_cookie(key="unity_token", value=request_headers['oidc_access_token'], httponly=False, secure=False, samesite='strict') # missing , domain=base_url + redirect_response.set_cookie(key="test1", value=f"{time()}", httponly=False, secure=False, samesite='strict') # missing , domain=base_url + return redirect_response diff --git a/cumulus_lambda_functions/uds_api/routes_api.py b/cumulus_lambda_functions/uds_api/routes_api.py index b21e5ea4..ca8c70fc 100644 --- a/cumulus_lambda_functions/uds_api/routes_api.py +++ b/cumulus_lambda_functions/uds_api/routes_api.py @@ -1,7 +1,7 @@ from fastapi import APIRouter from cumulus_lambda_functions.uds_api import collections_api, granules_api, auth_admin_api, system_admin_api, \ - custom_meta_admin_api, catalog_api + custom_meta_admin_api, catalog_api, misc_api # from ideas_api.src.endpoints import job_endpoints # from ideas_api.src.endpoints import process_endpoints @@ -16,4 +16,5 @@ main_router.include_router(catalog_api.router) main_router.include_router(granules_api.router) main_router.include_router(custom_meta_admin_api.router) +main_router.include_router(misc_api.router) diff --git a/cumulus_lambda_functions/uds_api/stac_browser/css/7944.72c8c98f.css b/cumulus_lambda_functions/uds_api/stac_browser/css/9044.72c8c98f.css similarity index 100% rename from cumulus_lambda_functions/uds_api/stac_browser/css/7944.72c8c98f.css rename to cumulus_lambda_functions/uds_api/stac_browser/css/9044.72c8c98f.css diff --git a/cumulus_lambda_functions/uds_api/stac_browser/index.html b/cumulus_lambda_functions/uds_api/stac_browser/index.html index 0148a45c..80e1b2ad 100644 --- a/cumulus_lambda_functions/uds_api/stac_browser/index.html +++ b/cumulus_lambda_functions/uds_api/stac_browser/index.html @@ -1 +1 @@ -STAC Browser

\ No newline at end of file +STAC Browser
\ No newline at end of file diff --git a/cumulus_lambda_functions/uds_api/stac_browser/js/3912.637fb6c7.js b/cumulus_lambda_functions/uds_api/stac_browser/js/3912.900420c2.js similarity index 72% rename from cumulus_lambda_functions/uds_api/stac_browser/js/3912.637fb6c7.js rename to cumulus_lambda_functions/uds_api/stac_browser/js/3912.900420c2.js index 29cdee78..1beef431 100644 --- a/cumulus_lambda_functions/uds_api/stac_browser/js/3912.637fb6c7.js +++ b/cumulus_lambda_functions/uds_api/stac_browser/js/3912.900420c2.js @@ -1,2 +1,2 @@ -(self["webpackChunk_radiantearth_stac_browser"]=self["webpackChunk_radiantearth_stac_browser"]||[]).push([[3912],{22768:function(t,e,r){"use strict";var n=r(96604),o=r(4572),i=o(n("String.prototype.indexOf"));t.exports=function(t,e){var r=n(t,!!e);return"function"===typeof r&&i(t,".prototype.")>-1?o(r):r}},4572:function(t,e,r){"use strict";var n=r(30268),o=r(96604),i=r(52392),a=r(76556),u=o("%Function.prototype.apply%"),c=o("%Function.prototype.call%"),f=o("%Reflect.apply%",!0)||n.call(c,u),p=o("%Object.defineProperty%",!0),y=o("%Math.max%");if(p)try{p({},"a",{value:1})}catch(s){p=null}t.exports=function(t){if("function"!==typeof t)throw new a("a function is required");var e=f(n,c,arguments);return i(e,1+y(0,t.length-(arguments.length-1)),!0)};var l=function(){return f(n,u,arguments)};p?p(t.exports,"apply",{value:l}):t.exports.apply=l},5456:function(t,e,r){"use strict";var n=r(71188)(),o=r(96604),i=n&&o("%Object.defineProperty%",!0);if(i)try{i({},"a",{value:1})}catch(f){i=!1}var a=r(17668),u=r(76556),c=r(80872);t.exports=function(t,e,r){if(!t||"object"!==typeof t&&"function"!==typeof t)throw new u("`obj` must be an object or a function`");if("string"!==typeof e&&"symbol"!==typeof e)throw new u("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!==typeof arguments[3]&&null!==arguments[3])throw new u("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!==typeof arguments[4]&&null!==arguments[4])throw new u("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!==typeof arguments[5]&&null!==arguments[5])throw new u("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!==typeof arguments[6])throw new u("`loose`, if provided, must be a boolean");var n=arguments.length>3?arguments[3]:null,o=arguments.length>4?arguments[4]:null,f=arguments.length>5?arguments[5]:null,p=arguments.length>6&&arguments[6],y=!!c&&c(t,e);if(i)i(t,e,{configurable:null===f&&y?y.configurable:!f,enumerable:null===n&&y?y.enumerable:!n,value:r,writable:null===o&&y?y.writable:!o});else{if(!p&&(n||o||f))throw new a("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},59576:function(t){"use strict";t.exports=EvalError},42772:function(t){"use strict";t.exports=Error},75360:function(t){"use strict";t.exports=RangeError},62380:function(t){"use strict";t.exports=ReferenceError},17668:function(t){"use strict";t.exports=SyntaxError},76556:function(t){"use strict";t.exports=TypeError},10568:function(t){"use strict";t.exports=URIError},7040:function(t,e,r){"use strict";var n=r(18528),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty,a=function(t,e,r){for(var n=0,o=t.length;n=3&&(i=r),"[object Array]"===o.call(t)?a(t,e,i):"string"===typeof t?u(t,e,i):c(t,e,i)};t.exports=f},97840:function(t){"use strict";var e="Function.prototype.bind called on incompatible ",r=Object.prototype.toString,n=Math.max,o="[object Function]",i=function(t,e){for(var r=[],n=0;n1&&"boolean"!==typeof e)throw new f('"allowMissing" argument must be a boolean');if(null===B(/^%?[^%]*%?$/,t))throw new c("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=R(t),n=r.length>0?r[0]:"",o=M("%"+n+"%",e),i=o.name,a=o.value,u=!1,p=o.alias;p&&(n=p[0],F(r,x([0,1],p)));for(var y=1,l=!0;y=r.length){var h=s(a,g);l=!!h,a=l&&"get"in h&&!("originalValue"in h.get)?h.get:a[g]}else l=E(a,g),a=a[g];l&&!u&&(w[i]=a)}}return a}},80872:function(t,e,r){"use strict";var n=r(96604),o=n("%Object.getOwnPropertyDescriptor%",!0);if(o)try{o([],"length")}catch(i){o=null}t.exports=o},71188:function(t,e,r){"use strict";var n=r(96604),o=n("%Object.defineProperty%",!0),i=function(){if(o)try{return o({},"a",{value:1}),!0}catch(t){return!1}return!1};i.hasArrayLengthDefineBug=function(){if(!i())return null;try{return 1!==o([],"length",{value:1}).length}catch(t){return!0}},t.exports=i},37636:function(t){"use strict";var e={foo:{}},r=Object;t.exports=function(){return{__proto__:e}.foo===e.foo&&!({__proto__:null}instanceof r)}},24308:function(t,e,r){"use strict";var n="undefined"!==typeof Symbol&&Symbol,o=r(31968);t.exports=function(){return"function"===typeof n&&("function"===typeof Symbol&&("symbol"===typeof n("foo")&&("symbol"===typeof Symbol("bar")&&o())))}},31968:function(t){"use strict";t.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"===typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;var n=42;for(e in t[e]=n,t)return!1;if("function"===typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var o=Object.getOwnPropertySymbols(t);if(1!==o.length||o[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(i.value!==n||!0!==i.enumerable)return!1}return!0}},53804:function(t,e,r){"use strict";var n=r(31968);t.exports=function(){return n()&&!!Symbol.toStringTag}},15176:function(t,e,r){"use strict";var n=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=r(30268);t.exports=i.call(n,o)},18248:function(t){"function"===typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},22816:function(t,e,r){"use strict";var n=r(53804)(),o=r(22768),i=o("Object.prototype.toString"),a=function(t){return!(n&&t&&"object"===typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===i(t)},u=function(t){return!!a(t)||null!==t&&"object"===typeof t&&"number"===typeof t.length&&t.length>=0&&"[object Array]"!==i(t)&&"[object Function]"===i(t.callee)},c=function(){return a(arguments)}();a.isLegacyArguments=u,t.exports=c?a:u},18528:function(t){"use strict";var e,r,n=Function.prototype.toString,o="object"===typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"===typeof o&&"function"===typeof Object.defineProperty)try{e=Object.defineProperty({},"length",{get:function(){throw r}}),r={},o((function(){throw 42}),null,e)}catch(m){m!==r&&(o=null)}else o=null;var i=/^\s*class\b/,a=function(t){try{var e=n.call(t);return i.test(e)}catch(r){return!1}},u=function(t){try{return!a(t)&&(n.call(t),!0)}catch(e){return!1}},c=Object.prototype.toString,f="[object Object]",p="[object Function]",y="[object GeneratorFunction]",l="[object HTMLAllCollection]",s="[object HTML document.all class]",g="[object HTMLCollection]",b="function"===typeof Symbol&&!!Symbol.toStringTag,d=!(0 in[,]),h=function(){return!1};if("object"===typeof document){var A=document.all;c.call(A)===c.call(document.all)&&(h=function(t){if((d||!t)&&("undefined"===typeof t||"object"===typeof t))try{var e=c.call(t);return(e===l||e===s||e===g||e===f)&&null==t("")}catch(r){}return!1})}t.exports=o?function(t){if(h(t))return!0;if(!t)return!1;if("function"!==typeof t&&"object"!==typeof t)return!1;try{o(t,null,e)}catch(n){if(n!==r)return!1}return!a(t)&&u(t)}:function(t){if(h(t))return!0;if(!t)return!1;if("function"!==typeof t&&"object"!==typeof t)return!1;if(b)return u(t);if(a(t))return!1;var e=c.call(t);return!(e!==p&&e!==y&&!/^\[object HTML/.test(e))&&u(t)}},77700:function(t,e,r){"use strict";var n,o=Object.prototype.toString,i=Function.prototype.toString,a=/^\s*(?:function)?\*/,u=r(53804)(),c=Object.getPrototypeOf,f=function(){if(!u)return!1;try{return Function("return function*() {}")()}catch(t){}};t.exports=function(t){if("function"!==typeof t)return!1;if(a.test(i.call(t)))return!0;if(!u){var e=o.call(t);return"[object GeneratorFunction]"===e}if(!c)return!1;if("undefined"===typeof n){var r=f();n=!!r&&c(r)}return c(t)===n}},83340:function(t,e,r){"use strict";var n=r(8488);t.exports=function(t){return!!n(t)}},52392:function(t,e,r){"use strict";var n=r(96604),o=r(5456),i=r(71188)(),a=r(80872),u=r(76556),c=n("%Math.floor%");t.exports=function(t,e){if("function"!==typeof t)throw new u("`fn` is not a function");if("number"!==typeof e||e<0||e>4294967295||c(e)!==e)throw new u("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,f=!0;if("length"in t&&a){var p=a(t,"length");p&&!p.configurable&&(n=!1),p&&!p.writable&&(f=!1)}return(n||f||!r)&&(i?o(t,"length",e,!0,!0):o(t,"length",e)),t}},12848:function(t){t.exports=function(t){return t&&"object"===typeof t&&"function"===typeof t.copy&&"function"===typeof t.fill&&"function"===typeof t.readUInt8}},59032:function(t,e,r){"use strict";var n=r(22816),o=r(77700),i=r(8488),a=r(83340);function u(t){return t.call.bind(t)}var c="undefined"!==typeof BigInt,f="undefined"!==typeof Symbol,p=u(Object.prototype.toString),y=u(Number.prototype.valueOf),l=u(String.prototype.valueOf),s=u(Boolean.prototype.valueOf);if(c)var g=u(BigInt.prototype.valueOf);if(f)var b=u(Symbol.prototype.valueOf);function d(t,e){if("object"!==typeof t)return!1;try{return e(t),!0}catch(r){return!1}}function h(t){return"undefined"!==typeof Promise&&t instanceof Promise||null!==t&&"object"===typeof t&&"function"===typeof t.then&&"function"===typeof t.catch}function A(t){return"undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):a(t)||z(t)}function m(t){return"Uint8Array"===i(t)}function v(t){return"Uint8ClampedArray"===i(t)}function w(t){return"Uint16Array"===i(t)}function S(t){return"Uint32Array"===i(t)}function j(t){return"Int8Array"===i(t)}function O(t){return"Int16Array"===i(t)}function P(t){return"Int32Array"===i(t)}function E(t){return"Float32Array"===i(t)}function x(t){return"Float64Array"===i(t)}function F(t){return"BigInt64Array"===i(t)}function I(t){return"BigUint64Array"===i(t)}function U(t){return"[object Map]"===p(t)}function B(t){return"undefined"!==typeof Map&&(U.working?U(t):t instanceof Map)}function _(t){return"[object Set]"===p(t)}function k(t){return"undefined"!==typeof Set&&(_.working?_(t):t instanceof Set)}function R(t){return"[object WeakMap]"===p(t)}function M(t){return"undefined"!==typeof WeakMap&&(R.working?R(t):t instanceof WeakMap)}function D(t){return"[object WeakSet]"===p(t)}function T(t){return D(t)}function N(t){return"[object ArrayBuffer]"===p(t)}function W(t){return"undefined"!==typeof ArrayBuffer&&(N.working?N(t):t instanceof ArrayBuffer)}function G(t){return"[object DataView]"===p(t)}function z(t){return"undefined"!==typeof DataView&&(G.working?G(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=a,e.isPromise=h,e.isArrayBufferView=A,e.isUint8Array=m,e.isUint8ClampedArray=v,e.isUint16Array=w,e.isUint32Array=S,e.isInt8Array=j,e.isInt16Array=O,e.isInt32Array=P,e.isFloat32Array=E,e.isFloat64Array=x,e.isBigInt64Array=F,e.isBigUint64Array=I,U.working="undefined"!==typeof Map&&U(new Map),e.isMap=B,_.working="undefined"!==typeof Set&&_(new Set),e.isSet=k,R.working="undefined"!==typeof WeakMap&&R(new WeakMap),e.isWeakMap=M,D.working="undefined"!==typeof WeakSet&&D(new WeakSet),e.isWeakSet=T,N.working="undefined"!==typeof ArrayBuffer&&N(new ArrayBuffer),e.isArrayBuffer=W,G.working="undefined"!==typeof ArrayBuffer&&"undefined"!==typeof DataView&&G(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=z;var C="undefined"!==typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function V(t){return"[object SharedArrayBuffer]"===p(t)}function $(t){return"undefined"!==typeof C&&("undefined"===typeof V.working&&(V.working=V(new C)),V.working?V(t):t instanceof C)}function J(t){return"[object AsyncFunction]"===p(t)}function H(t){return"[object Map Iterator]"===p(t)}function L(t){return"[object Set Iterator]"===p(t)}function q(t){return"[object Generator]"===p(t)}function Z(t){return"[object WebAssembly.Module]"===p(t)}function K(t){return d(t,y)}function Q(t){return d(t,l)}function X(t){return d(t,s)}function Y(t){return c&&d(t,g)}function tt(t){return f&&d(t,b)}function et(t){return K(t)||Q(t)||X(t)||Y(t)||tt(t)}function rt(t){return"undefined"!==typeof Uint8Array&&(W(t)||$(t))}e.isSharedArrayBuffer=$,e.isAsyncFunction=J,e.isMapIterator=H,e.isSetIterator=L,e.isGeneratorObject=q,e.isWebAssemblyCompiledModule=Z,e.isNumberObject=K,e.isStringObject=Q,e.isBooleanObject=X,e.isBigIntObject=Y,e.isSymbolObject=tt,e.isBoxedPrimitive=et,e.isAnyArrayBuffer=rt,["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})}))},93912:function(t,e,r){var n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=i)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return t}})),u=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(r)?n.showHidden=r:r&&e._extend(n,r),P(n.showHidden)&&(n.showHidden=!1),P(n.depth)&&(n.depth=2),P(n.colors)&&(n.colors=!1),P(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),l(n,t,n.depth)}function f(t,e){var r=c.styles[e];return r?"["+c.colors[r][0]+"m"+t+"["+c.colors[r][1]+"m":t}function p(t,e){return t}function y(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}function l(t,r,n){if(t.customInspect&&r&&U(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return j(o)||(o=l(t,o,n)),o}var i=s(t,r);if(i)return i;var a=Object.keys(r),u=y(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),I(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return g(r);if(0===a.length){if(U(r)){var c=r.name?": "+r.name:"";return t.stylize("[Function"+c+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(F(r))return t.stylize(Date.prototype.toString.call(r),"date");if(I(r))return g(r)}var f,p="",m=!1,v=["{","}"];if(A(r)&&(m=!0,v=["[","]"]),U(r)){var w=r.name?": "+r.name:"";p=" [Function"+w+"]"}return E(r)&&(p=" "+RegExp.prototype.toString.call(r)),F(r)&&(p=" "+Date.prototype.toUTCString.call(r)),I(r)&&(p=" "+g(r)),0!==a.length||m&&0!=r.length?n<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),f=m?b(t,r,n,u,a):a.map((function(e){return d(t,r,n,u,e,m)})),t.seen.pop(),h(f,p,v)):v[0]+p+v[1]}function s(t,e){if(P(e))return t.stylize("undefined","undefined");if(j(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return S(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function g(t){return"["+Error.prototype.toString.call(t)+"]"}function b(t,e,r,n,o){for(var i=[],a=0,u=e.length;a-1&&(u=i?u.split("\n").map((function(t){return" "+t})).join("\n").slice(2):"\n"+u.split("\n").map((function(t){return" "+t})).join("\n"))):u=t.stylize("[Circular]","special")),P(a)){if(i&&o.match(/^\d+$/))return u;a=JSON.stringify(""+o),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.slice(1,-1),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+u}function h(t,e,r){var n=t.reduce((function(t,e){return e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0);return n>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function A(t){return Array.isArray(t)}function m(t){return"boolean"===typeof t}function v(t){return null===t}function w(t){return null==t}function S(t){return"number"===typeof t}function j(t){return"string"===typeof t}function O(t){return"symbol"===typeof t}function P(t){return void 0===t}function E(t){return x(t)&&"[object RegExp]"===_(t)}function x(t){return"object"===typeof t&&null!==t}function F(t){return x(t)&&"[object Date]"===_(t)}function I(t){return x(t)&&("[object Error]"===_(t)||t instanceof Error)}function U(t){return"function"===typeof t}function B(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===typeof t||"undefined"===typeof t}function _(t){return Object.prototype.toString.call(t)}function k(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!i[t])if(a.test(t)){var r=process.pid;i[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else i[t]=function(){};return i[t]},e.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(59032),e.isArray=A,e.isBoolean=m,e.isNull=v,e.isNullOrUndefined=w,e.isNumber=S,e.isString=j,e.isSymbol=O,e.isUndefined=P,e.isRegExp=E,e.types.isRegExp=E,e.isObject=x,e.isDate=F,e.types.isDate=F,e.isError=I,e.types.isNativeError=I,e.isFunction=U,e.isPrimitive=B,e.isBuffer=r(12848);var R=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function M(){var t=new Date,e=[k(t.getHours()),k(t.getMinutes()),k(t.getSeconds())].join(":");return[t.getDate(),R[t.getMonth()],e].join(" ")}function D(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",M(),e.format.apply(e,arguments))},e.inherits=r(18248),e._extend=function(t,e){if(!e||!x(e))return t;var r=Object.keys(e),n=r.length;while(n--)t[r[n]]=e[r[n]];return t};var T="undefined"!==typeof Symbol?Symbol("util.promisify.custom"):void 0;function N(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}function W(t){if("function"!==typeof t)throw new TypeError('The "original" argument must be of type Function');function e(){for(var e=[],r=0;r-1?e:"Object"===e&&h(t)}return u?d(t):null}},37236:function(t,e,r){"use strict";var n=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],o="undefined"===typeof globalThis?r.g:globalThis;t.exports=function(){for(var t=[],e=0;e-1?o(r):r}},4572:function(t,e,r){"use strict";var n=r(30268),o=r(96604),i=r(52392),a=r(76556),u=o("%Function.prototype.apply%"),c=o("%Function.prototype.call%"),f=o("%Reflect.apply%",!0)||n.call(c,u),p=o("%Object.defineProperty%",!0),y=o("%Math.max%");if(p)try{p({},"a",{value:1})}catch(s){p=null}t.exports=function(t){if("function"!==typeof t)throw new a("a function is required");var e=f(n,c,arguments);return i(e,1+y(0,t.length-(arguments.length-1)),!0)};var l=function(){return f(n,u,arguments)};p?p(t.exports,"apply",{value:l}):t.exports.apply=l},5456:function(t,e,r){"use strict";var n=r(71188)(),o=r(96604),i=n&&o("%Object.defineProperty%",!0);if(i)try{i({},"a",{value:1})}catch(f){i=!1}var a=r(17668),u=r(76556),c=r(80872);t.exports=function(t,e,r){if(!t||"object"!==typeof t&&"function"!==typeof t)throw new u("`obj` must be an object or a function`");if("string"!==typeof e&&"symbol"!==typeof e)throw new u("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!==typeof arguments[3]&&null!==arguments[3])throw new u("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!==typeof arguments[4]&&null!==arguments[4])throw new u("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!==typeof arguments[5]&&null!==arguments[5])throw new u("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!==typeof arguments[6])throw new u("`loose`, if provided, must be a boolean");var n=arguments.length>3?arguments[3]:null,o=arguments.length>4?arguments[4]:null,f=arguments.length>5?arguments[5]:null,p=arguments.length>6&&arguments[6],y=!!c&&c(t,e);if(i)i(t,e,{configurable:null===f&&y?y.configurable:!f,enumerable:null===n&&y?y.enumerable:!n,value:r,writable:null===o&&y?y.writable:!o});else{if(!p&&(n||o||f))throw new a("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},59576:function(t){"use strict";t.exports=EvalError},42772:function(t){"use strict";t.exports=Error},75360:function(t){"use strict";t.exports=RangeError},62380:function(t){"use strict";t.exports=ReferenceError},17668:function(t){"use strict";t.exports=SyntaxError},76556:function(t){"use strict";t.exports=TypeError},10568:function(t){"use strict";t.exports=URIError},7040:function(t,e,r){"use strict";var n=r(18528),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty,a=function(t,e,r){for(var n=0,o=t.length;n=3&&(i=r),"[object Array]"===o.call(t)?a(t,e,i):"string"===typeof t?u(t,e,i):c(t,e,i)};t.exports=f},97840:function(t){"use strict";var e="Function.prototype.bind called on incompatible ",r=Object.prototype.toString,n=Math.max,o="[object Function]",i=function(t,e){for(var r=[],n=0;n1&&"boolean"!==typeof e)throw new f('"allowMissing" argument must be a boolean');if(null===B(/^%?[^%]*%?$/,t))throw new c("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=R(t),n=r.length>0?r[0]:"",o=M("%"+n+"%",e),i=o.name,a=o.value,u=!1,p=o.alias;p&&(n=p[0],F(r,x([0,1],p)));for(var y=1,l=!0;y=r.length){var h=s(a,g);l=!!h,a=l&&"get"in h&&!("originalValue"in h.get)?h.get:a[g]}else l=E(a,g),a=a[g];l&&!u&&(w[i]=a)}}return a}},80872:function(t,e,r){"use strict";var n=r(96604),o=n("%Object.getOwnPropertyDescriptor%",!0);if(o)try{o([],"length")}catch(i){o=null}t.exports=o},71188:function(t,e,r){"use strict";var n=r(96604),o=n("%Object.defineProperty%",!0),i=function(){if(o)try{return o({},"a",{value:1}),!0}catch(t){return!1}return!1};i.hasArrayLengthDefineBug=function(){if(!i())return null;try{return 1!==o([],"length",{value:1}).length}catch(t){return!0}},t.exports=i},37636:function(t){"use strict";var e={foo:{}},r=Object;t.exports=function(){return{__proto__:e}.foo===e.foo&&!({__proto__:null}instanceof r)}},24308:function(t,e,r){"use strict";var n="undefined"!==typeof Symbol&&Symbol,o=r(31968);t.exports=function(){return"function"===typeof n&&("function"===typeof Symbol&&("symbol"===typeof n("foo")&&("symbol"===typeof Symbol("bar")&&o())))}},31968:function(t){"use strict";t.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"===typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;var n=42;for(e in t[e]=n,t)return!1;if("function"===typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var o=Object.getOwnPropertySymbols(t);if(1!==o.length||o[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(i.value!==n||!0!==i.enumerable)return!1}return!0}},53804:function(t,e,r){"use strict";var n=r(31968);t.exports=function(){return n()&&!!Symbol.toStringTag}},15176:function(t,e,r){"use strict";var n=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=r(30268);t.exports=i.call(n,o)},18248:function(t){"function"===typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},22816:function(t,e,r){"use strict";var n=r(53804)(),o=r(22768),i=o("Object.prototype.toString"),a=function(t){return!(n&&t&&"object"===typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===i(t)},u=function(t){return!!a(t)||null!==t&&"object"===typeof t&&"number"===typeof t.length&&t.length>=0&&"[object Array]"!==i(t)&&"[object Function]"===i(t.callee)},c=function(){return a(arguments)}();a.isLegacyArguments=u,t.exports=c?a:u},18528:function(t){"use strict";var e,r,n=Function.prototype.toString,o="object"===typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"===typeof o&&"function"===typeof Object.defineProperty)try{e=Object.defineProperty({},"length",{get:function(){throw r}}),r={},o((function(){throw 42}),null,e)}catch(m){m!==r&&(o=null)}else o=null;var i=/^\s*class\b/,a=function(t){try{var e=n.call(t);return i.test(e)}catch(r){return!1}},u=function(t){try{return!a(t)&&(n.call(t),!0)}catch(e){return!1}},c=Object.prototype.toString,f="[object Object]",p="[object Function]",y="[object GeneratorFunction]",l="[object HTMLAllCollection]",s="[object HTML document.all class]",g="[object HTMLCollection]",b="function"===typeof Symbol&&!!Symbol.toStringTag,d=!(0 in[,]),h=function(){return!1};if("object"===typeof document){var A=document.all;c.call(A)===c.call(document.all)&&(h=function(t){if((d||!t)&&("undefined"===typeof t||"object"===typeof t))try{var e=c.call(t);return(e===l||e===s||e===g||e===f)&&null==t("")}catch(r){}return!1})}t.exports=o?function(t){if(h(t))return!0;if(!t)return!1;if("function"!==typeof t&&"object"!==typeof t)return!1;try{o(t,null,e)}catch(n){if(n!==r)return!1}return!a(t)&&u(t)}:function(t){if(h(t))return!0;if(!t)return!1;if("function"!==typeof t&&"object"!==typeof t)return!1;if(b)return u(t);if(a(t))return!1;var e=c.call(t);return!(e!==p&&e!==y&&!/^\[object HTML/.test(e))&&u(t)}},77700:function(t,e,r){"use strict";var n,o=Object.prototype.toString,i=Function.prototype.toString,a=/^\s*(?:function)?\*/,u=r(53804)(),c=Object.getPrototypeOf,f=function(){if(!u)return!1;try{return Function("return function*() {}")()}catch(t){}};t.exports=function(t){if("function"!==typeof t)return!1;if(a.test(i.call(t)))return!0;if(!u){var e=o.call(t);return"[object GeneratorFunction]"===e}if(!c)return!1;if("undefined"===typeof n){var r=f();n=!!r&&c(r)}return c(t)===n}},83340:function(t,e,r){"use strict";var n=r(8488);t.exports=function(t){return!!n(t)}},52392:function(t,e,r){"use strict";var n=r(96604),o=r(5456),i=r(71188)(),a=r(80872),u=r(76556),c=n("%Math.floor%");t.exports=function(t,e){if("function"!==typeof t)throw new u("`fn` is not a function");if("number"!==typeof e||e<0||e>4294967295||c(e)!==e)throw new u("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,f=!0;if("length"in t&&a){var p=a(t,"length");p&&!p.configurable&&(n=!1),p&&!p.writable&&(f=!1)}return(n||f||!r)&&(i?o(t,"length",e,!0,!0):o(t,"length",e)),t}},12848:function(t){t.exports=function(t){return t&&"object"===typeof t&&"function"===typeof t.copy&&"function"===typeof t.fill&&"function"===typeof t.readUInt8}},59032:function(t,e,r){"use strict";var n=r(22816),o=r(77700),i=r(8488),a=r(83340);function u(t){return t.call.bind(t)}var c="undefined"!==typeof BigInt,f="undefined"!==typeof Symbol,p=u(Object.prototype.toString),y=u(Number.prototype.valueOf),l=u(String.prototype.valueOf),s=u(Boolean.prototype.valueOf);if(c)var g=u(BigInt.prototype.valueOf);if(f)var b=u(Symbol.prototype.valueOf);function d(t,e){if("object"!==typeof t)return!1;try{return e(t),!0}catch(r){return!1}}function h(t){return"undefined"!==typeof Promise&&t instanceof Promise||null!==t&&"object"===typeof t&&"function"===typeof t.then&&"function"===typeof t.catch}function A(t){return"undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):a(t)||z(t)}function m(t){return"Uint8Array"===i(t)}function v(t){return"Uint8ClampedArray"===i(t)}function w(t){return"Uint16Array"===i(t)}function S(t){return"Uint32Array"===i(t)}function j(t){return"Int8Array"===i(t)}function O(t){return"Int16Array"===i(t)}function P(t){return"Int32Array"===i(t)}function E(t){return"Float32Array"===i(t)}function x(t){return"Float64Array"===i(t)}function F(t){return"BigInt64Array"===i(t)}function I(t){return"BigUint64Array"===i(t)}function U(t){return"[object Map]"===p(t)}function B(t){return"undefined"!==typeof Map&&(U.working?U(t):t instanceof Map)}function _(t){return"[object Set]"===p(t)}function k(t){return"undefined"!==typeof Set&&(_.working?_(t):t instanceof Set)}function R(t){return"[object WeakMap]"===p(t)}function M(t){return"undefined"!==typeof WeakMap&&(R.working?R(t):t instanceof WeakMap)}function D(t){return"[object WeakSet]"===p(t)}function T(t){return D(t)}function N(t){return"[object ArrayBuffer]"===p(t)}function W(t){return"undefined"!==typeof ArrayBuffer&&(N.working?N(t):t instanceof ArrayBuffer)}function G(t){return"[object DataView]"===p(t)}function z(t){return"undefined"!==typeof DataView&&(G.working?G(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=a,e.isPromise=h,e.isArrayBufferView=A,e.isUint8Array=m,e.isUint8ClampedArray=v,e.isUint16Array=w,e.isUint32Array=S,e.isInt8Array=j,e.isInt16Array=O,e.isInt32Array=P,e.isFloat32Array=E,e.isFloat64Array=x,e.isBigInt64Array=F,e.isBigUint64Array=I,U.working="undefined"!==typeof Map&&U(new Map),e.isMap=B,_.working="undefined"!==typeof Set&&_(new Set),e.isSet=k,R.working="undefined"!==typeof WeakMap&&R(new WeakMap),e.isWeakMap=M,D.working="undefined"!==typeof WeakSet&&D(new WeakSet),e.isWeakSet=T,N.working="undefined"!==typeof ArrayBuffer&&N(new ArrayBuffer),e.isArrayBuffer=W,G.working="undefined"!==typeof ArrayBuffer&&"undefined"!==typeof DataView&&G(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=z;var C="undefined"!==typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function V(t){return"[object SharedArrayBuffer]"===p(t)}function $(t){return"undefined"!==typeof C&&("undefined"===typeof V.working&&(V.working=V(new C)),V.working?V(t):t instanceof C)}function J(t){return"[object AsyncFunction]"===p(t)}function H(t){return"[object Map Iterator]"===p(t)}function L(t){return"[object Set Iterator]"===p(t)}function q(t){return"[object Generator]"===p(t)}function Z(t){return"[object WebAssembly.Module]"===p(t)}function K(t){return d(t,y)}function Q(t){return d(t,l)}function X(t){return d(t,s)}function Y(t){return c&&d(t,g)}function tt(t){return f&&d(t,b)}function et(t){return K(t)||Q(t)||X(t)||Y(t)||tt(t)}function rt(t){return"undefined"!==typeof Uint8Array&&(W(t)||$(t))}e.isSharedArrayBuffer=$,e.isAsyncFunction=J,e.isMapIterator=H,e.isSetIterator=L,e.isGeneratorObject=q,e.isWebAssemblyCompiledModule=Z,e.isNumberObject=K,e.isStringObject=Q,e.isBooleanObject=X,e.isBigIntObject=Y,e.isSymbolObject=tt,e.isBoxedPrimitive=et,e.isAnyArrayBuffer=rt,["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})}))},93912:function(t,e,r){var n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=i)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return t}})),u=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(r)?n.showHidden=r:r&&e._extend(n,r),P(n.showHidden)&&(n.showHidden=!1),P(n.depth)&&(n.depth=2),P(n.colors)&&(n.colors=!1),P(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),l(n,t,n.depth)}function f(t,e){var r=c.styles[e];return r?"["+c.colors[r][0]+"m"+t+"["+c.colors[r][1]+"m":t}function p(t,e){return t}function y(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}function l(t,r,n){if(t.customInspect&&r&&U(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return j(o)||(o=l(t,o,n)),o}var i=s(t,r);if(i)return i;var a=Object.keys(r),u=y(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),I(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return g(r);if(0===a.length){if(U(r)){var c=r.name?": "+r.name:"";return t.stylize("[Function"+c+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(F(r))return t.stylize(Date.prototype.toString.call(r),"date");if(I(r))return g(r)}var f,p="",m=!1,v=["{","}"];if(A(r)&&(m=!0,v=["[","]"]),U(r)){var w=r.name?": "+r.name:"";p=" [Function"+w+"]"}return E(r)&&(p=" "+RegExp.prototype.toString.call(r)),F(r)&&(p=" "+Date.prototype.toUTCString.call(r)),I(r)&&(p=" "+g(r)),0!==a.length||m&&0!=r.length?n<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),f=m?b(t,r,n,u,a):a.map((function(e){return d(t,r,n,u,e,m)})),t.seen.pop(),h(f,p,v)):v[0]+p+v[1]}function s(t,e){if(P(e))return t.stylize("undefined","undefined");if(j(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return S(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function g(t){return"["+Error.prototype.toString.call(t)+"]"}function b(t,e,r,n,o){for(var i=[],a=0,u=e.length;a-1&&(u=i?u.split("\n").map((function(t){return" "+t})).join("\n").slice(2):"\n"+u.split("\n").map((function(t){return" "+t})).join("\n"))):u=t.stylize("[Circular]","special")),P(a)){if(i&&o.match(/^\d+$/))return u;a=JSON.stringify(""+o),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.slice(1,-1),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+u}function h(t,e,r){var n=t.reduce((function(t,e){return e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0);return n>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function A(t){return Array.isArray(t)}function m(t){return"boolean"===typeof t}function v(t){return null===t}function w(t){return null==t}function S(t){return"number"===typeof t}function j(t){return"string"===typeof t}function O(t){return"symbol"===typeof t}function P(t){return void 0===t}function E(t){return x(t)&&"[object RegExp]"===_(t)}function x(t){return"object"===typeof t&&null!==t}function F(t){return x(t)&&"[object Date]"===_(t)}function I(t){return x(t)&&("[object Error]"===_(t)||t instanceof Error)}function U(t){return"function"===typeof t}function B(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===typeof t||"undefined"===typeof t}function _(t){return Object.prototype.toString.call(t)}function k(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!i[t])if(a.test(t)){var r=process.pid;i[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else i[t]=function(){};return i[t]},e.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(59032),e.isArray=A,e.isBoolean=m,e.isNull=v,e.isNullOrUndefined=w,e.isNumber=S,e.isString=j,e.isSymbol=O,e.isUndefined=P,e.isRegExp=E,e.types.isRegExp=E,e.isObject=x,e.isDate=F,e.types.isDate=F,e.isError=I,e.types.isNativeError=I,e.isFunction=U,e.isPrimitive=B,e.isBuffer=r(12848);var R=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function M(){var t=new Date,e=[k(t.getHours()),k(t.getMinutes()),k(t.getSeconds())].join(":");return[t.getDate(),R[t.getMonth()],e].join(" ")}function D(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",M(),e.format.apply(e,arguments))},e.inherits=r(18248),e._extend=function(t,e){if(!e||!x(e))return t;var r=Object.keys(e),n=r.length;while(n--)t[r[n]]=e[r[n]];return t};var T="undefined"!==typeof Symbol?Symbol("util.promisify.custom"):void 0;function N(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}function W(t){if("function"!==typeof t)throw new TypeError('The "original" argument must be of type Function');function e(){for(var e=[],r=0;r-1?e:"Object"===e&&h(t)}return u?d(t):null}},37236:function(t,e,r){"use strict";var n=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],o="undefined"===typeof globalThis?r.g:globalThis;t.exports=function(){for(var t=[],e=0;e -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */ function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array} TypedArray */\n/** @typedef {'Int8Array' | 'Uint8Array' | 'Uint8ClampedArray' | 'Int16Array' | 'Uint16Array' | 'Int32Array' | 'Uint32Array' | 'Float32Array' | 'Float64Array' | 'BigInt64Array' | 'BigUint64Array'} TypedArrayName */\n/** @type {{ [k in `\\$${TypedArrayName}`]?: (receiver: TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {import('.')} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, typeof cache>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */ function (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar /** @type {ReturnType} */ possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n"],"names":["GetIntrinsic","callBind","$indexOf","module","exports","name","allowMissing","intrinsic","bind","setFunctionLength","$TypeError","$apply","$call","$reflectApply","call","$defineProperty","$max","value","e","originalFunction","func","arguments","length","applyBind","apply","hasPropertyDescriptors","$SyntaxError","gopd","obj","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","EvalError","Error","RangeError","ReferenceError","SyntaxError","TypeError","URIError","isCallable","toStr","Object","prototype","toString","hasOwnProperty","forEachArray","array","iterator","receiver","i","len","forEachString","string","charAt","forEachObject","object","k","forEach","list","thisArg","ERROR_MESSAGE","max","Math","funcType","concatty","a","b","arr","j","slicy","arrLike","offset","joiny","joiner","str","that","target","this","bound","args","binder","result","boundLength","boundArgs","Function","Empty","implementation","undefined","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasSymbols","hasProto","getProto","getPrototypeOf","x","__proto__","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","Array","ArrayBuffer","Symbol","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","Map","Number","parseFloat","parseInt","Promise","Proxy","Reflect","RegExp","Set","SharedArrayBuffer","String","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","error","errorProto","doEval","fn","gen","LEGACY_ALIASES","hasOwn","$concat","concat","$spliceApply","splice","$replace","replace","$strSlice","slice","$exec","exec","rePropName","reEscapeChar","stringToPath","first","last","match","number","quote","subString","getBaseIntrinsic","alias","intrinsicName","parts","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","hasArrayLengthDefineBug","test","foo","$Object","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","symVal","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","toStringTag","$hasOwn","create","ctor","superCtor","super_","constructor","TempCtor","hasToStringTag","callBound","$toString","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","defineProperty","_","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","isIE68","isDDA","document","all","strClass","GeneratorFunction","isFnRegex","getGeneratorFunc","generatorFunc","whichTypedArray","define","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","arg","copy","fill","readUInt8","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","f","BigIntSupported","SymbolSupported","ObjectToString","numberValue","valueOf","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isPromise","input","then","catch","isArrayBufferView","isView","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMapToString","isMap","working","isSetToString","isSet","isWeakMapToString","isWeakMap","isWeakSetToString","isWeakSet","isArrayBufferToString","isArrayBuffer","isDataViewToString","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isBoxedPrimitive","isAnyArrayBuffer","method","getOwnPropertyDescriptors","descriptors","formatRegExp","format","isString","objects","push","inspect","join","stringify","isNull","isObject","deprecate","msg","process","noDeprecation","warned","deprecated","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","toUpperCase","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","arrayToHash","hash","val","idx","recurseTimes","isFunction","ret","primitive","formatPrimitive","visibleKeys","isError","indexOf","formatError","isRegExp","isDate","output","base","braces","isArray","n","toUTCString","formatArray","map","key","formatProperty","pop","reduceToSingleString","simple","isNumber","l","set","split","line","reduce","prev","cur","numLinesEst","ar","isNullOrUndefined","isSymbol","re","objectToString","d","isPrimitive","o","pad","debuglog","pid","types","isNativeError","isBuffer","months","timestamp","time","getHours","getMinutes","getSeconds","getDate","getMonth","prop","log","inherits","origin","add","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","callbackify","original","callbackified","maybeCb","self","nextTick","rej","setPrototypeOf","defineProperties","promisify","promiseResolve","promiseReject","promise","resolve","reject","err","custom","availableTypedArrays","g","globalThis","typedArrays","$slice","cache","typedArray","proto","superProto","tryTypedArrays","found","getter","trySlices","tag","possibleNames","out"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/3912.900420c2.js","mappings":"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","sources":["webpack://@radiantearth/stac-browser/./node_modules/call-bind/callBound.js","webpack://@radiantearth/stac-browser/./node_modules/call-bind/index.js","webpack://@radiantearth/stac-browser/./node_modules/define-data-property/index.js","webpack://@radiantearth/stac-browser/./node_modules/es-errors/eval.js","webpack://@radiantearth/stac-browser/./node_modules/es-errors/index.js","webpack://@radiantearth/stac-browser/./node_modules/es-errors/range.js","webpack://@radiantearth/stac-browser/./node_modules/es-errors/ref.js","webpack://@radiantearth/stac-browser/./node_modules/es-errors/syntax.js","webpack://@radiantearth/stac-browser/./node_modules/es-errors/type.js","webpack://@radiantearth/stac-browser/./node_modules/es-errors/uri.js","webpack://@radiantearth/stac-browser/./node_modules/for-each/index.js","webpack://@radiantearth/stac-browser/./node_modules/function-bind/implementation.js","webpack://@radiantearth/stac-browser/./node_modules/function-bind/index.js","webpack://@radiantearth/stac-browser/./node_modules/get-intrinsic/index.js","webpack://@radiantearth/stac-browser/./node_modules/gopd/index.js","webpack://@radiantearth/stac-browser/./node_modules/has-property-descriptors/index.js","webpack://@radiantearth/stac-browser/./node_modules/has-proto/index.js","webpack://@radiantearth/stac-browser/./node_modules/has-symbols/index.js","webpack://@radiantearth/stac-browser/./node_modules/has-symbols/shams.js","webpack://@radiantearth/stac-browser/./node_modules/has-tostringtag/shams.js","webpack://@radiantearth/stac-browser/./node_modules/hasown/index.js","webpack://@radiantearth/stac-browser/./node_modules/inherits/inherits_browser.js","webpack://@radiantearth/stac-browser/./node_modules/is-arguments/index.js","webpack://@radiantearth/stac-browser/./node_modules/is-callable/index.js","webpack://@radiantearth/stac-browser/./node_modules/is-generator-function/index.js","webpack://@radiantearth/stac-browser/./node_modules/is-typed-array/index.js","webpack://@radiantearth/stac-browser/./node_modules/set-function-length/index.js","webpack://@radiantearth/stac-browser/./node_modules/util/support/isBufferBrowser.js","webpack://@radiantearth/stac-browser/./node_modules/util/support/types.js","webpack://@radiantearth/stac-browser/./node_modules/util/util.js","webpack://@radiantearth/stac-browser/./node_modules/which-typed-array/index.js","webpack://@radiantearth/stac-browser/./node_modules/available-typed-arrays/index.js"],"sourcesContent":["'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */ function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array} TypedArray */\n/** @typedef {'Int8Array' | 'Uint8Array' | 'Uint8ClampedArray' | 'Int16Array' | 'Uint16Array' | 'Int32Array' | 'Uint32Array' | 'Float32Array' | 'Float64Array' | 'BigInt64Array' | 'BigUint64Array'} TypedArrayName */\n/** @type {{ [k in `\\$${TypedArrayName}`]?: (receiver: TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {import('.')} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, typeof cache>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */ function (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar /** @type {ReturnType} */ possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n"],"names":["GetIntrinsic","callBind","$indexOf","module","exports","name","allowMissing","intrinsic","bind","setFunctionLength","$TypeError","$apply","$call","$reflectApply","call","$defineProperty","$max","value","e","originalFunction","func","arguments","length","applyBind","apply","hasPropertyDescriptors","$SyntaxError","gopd","obj","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","EvalError","Error","RangeError","ReferenceError","SyntaxError","TypeError","URIError","isCallable","toStr","Object","prototype","toString","hasOwnProperty","forEachArray","array","iterator","receiver","i","len","forEachString","string","charAt","forEachObject","object","k","forEach","list","thisArg","ERROR_MESSAGE","max","Math","funcType","concatty","a","b","arr","j","slicy","arrLike","offset","joiny","joiner","str","that","target","this","bound","args","binder","result","boundLength","boundArgs","Function","Empty","implementation","undefined","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasSymbols","hasProto","getProto","getPrototypeOf","x","__proto__","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","Array","ArrayBuffer","Symbol","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","Map","Number","parseFloat","parseInt","Promise","Proxy","Reflect","RegExp","Set","SharedArrayBuffer","String","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","error","errorProto","doEval","fn","gen","LEGACY_ALIASES","hasOwn","$concat","concat","$spliceApply","splice","$replace","replace","$strSlice","slice","$exec","exec","rePropName","reEscapeChar","stringToPath","first","last","match","number","quote","subString","getBaseIntrinsic","alias","intrinsicName","parts","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","hasArrayLengthDefineBug","test","foo","$Object","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","symVal","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","toStringTag","$hasOwn","create","ctor","superCtor","super_","constructor","TempCtor","hasToStringTag","callBound","$toString","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","defineProperty","_","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","isIE68","isDDA","document","all","strClass","GeneratorFunction","isFnRegex","getGeneratorFunc","generatorFunc","whichTypedArray","define","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","arg","copy","fill","readUInt8","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","f","BigIntSupported","SymbolSupported","ObjectToString","numberValue","valueOf","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isPromise","input","then","catch","isArrayBufferView","isView","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMapToString","isMap","working","isSetToString","isSet","isWeakMapToString","isWeakMap","isWeakSetToString","isWeakSet","isArrayBufferToString","isArrayBuffer","isDataViewToString","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isBoxedPrimitive","isAnyArrayBuffer","method","getOwnPropertyDescriptors","descriptors","formatRegExp","format","isString","objects","push","inspect","join","stringify","isNull","isObject","deprecate","msg","process","noDeprecation","warned","deprecated","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","toUpperCase","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","arrayToHash","hash","val","idx","recurseTimes","isFunction","ret","primitive","formatPrimitive","visibleKeys","isError","indexOf","formatError","isRegExp","isDate","output","base","braces","isArray","n","toUTCString","formatArray","map","key","formatProperty","pop","reduceToSingleString","simple","isNumber","l","set","split","line","reduce","prev","cur","numLinesEst","ar","isNullOrUndefined","isSymbol","re","objectToString","d","isPrimitive","o","pad","debuglog","pid","types","isNativeError","isBuffer","months","timestamp","time","getHours","getMinutes","getSeconds","getDate","getMonth","prop","log","inherits","origin","add","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","callbackify","original","callbackified","maybeCb","self","nextTick","rej","setPrototypeOf","defineProperties","promisify","promiseResolve","promiseReject","promise","resolve","reject","err","custom","availableTypedArrays","g","globalThis","typedArrays","$slice","cache","typedArray","proto","superProto","tryTypedArrays","found","getter","trySlices","tag","possibleNames","out"],"sourceRoot":""} \ No newline at end of file diff --git a/cumulus_lambda_functions/uds_api/stac_browser/js/572.85a7e414.js b/cumulus_lambda_functions/uds_api/stac_browser/js/572.40caaa91.js similarity index 99% rename from cumulus_lambda_functions/uds_api/stac_browser/js/572.85a7e414.js rename to cumulus_lambda_functions/uds_api/stac_browser/js/572.40caaa91.js index 044c1dce..f59e804d 100644 --- a/cumulus_lambda_functions/uds_api/stac_browser/js/572.85a7e414.js +++ b/cumulus_lambda_functions/uds_api/stac_browser/js/572.40caaa91.js @@ -65,4 +65,4 @@ e.read=function(t,e,n,r,i){var o,s,a=8*i-r-1,l=(1<>1,h=-7,c=n?i-1:0,f= * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade */ (function(t,n){n(e)})(0,(function(t){"use strict";var e="1.9.4";function n(t){var e,n,r,i;for(n=1,r=arguments.length;n0?Math.floor(t):Math.ceil(t)};function j(t,e,n){return t instanceof I?t:y(t)?new I(t[0],t[1]):void 0===t||null===t?t:"object"===typeof t&&"x"in t&&"y"in t?new I(t.x,t.y):new I(t,e,n)}function N(t,e){if(t)for(var n=e?[t,e]:t,r=0,i=n.length;r=this.min.x&&n.x<=this.max.x&&e.y>=this.min.y&&n.y<=this.max.y},intersects:function(t){t=B(t);var e=this.min,n=this.max,r=t.min,i=t.max,o=i.x>=e.x&&r.x<=n.x,s=i.y>=e.y&&r.y<=n.y;return o&&s},overlaps:function(t){t=B(t);var e=this.min,n=this.max,r=t.min,i=t.max,o=i.x>e.x&&r.xe.y&&r.y=r.lat&&n.lat<=i.lat&&e.lng>=r.lng&&n.lng<=i.lng},intersects:function(t){t=F(t);var e=this._southWest,n=this._northEast,r=t.getSouthWest(),i=t.getNorthEast(),o=i.lat>=e.lat&&r.lat<=n.lat,s=i.lng>=e.lng&&r.lng<=n.lng;return o&&s},overlaps:function(t){t=F(t);var e=this._southWest,n=this._northEast,r=t.getSouthWest(),i=t.getNorthEast(),o=i.lat>e.lat&&r.late.lng&&r.lng1,Ct=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",u,e),window.removeEventListener("testPassiveEventSupport",u,e)}catch(n){}return t}(),Tt=function(){return!!document.createElement("canvas").getContext}(),Ot=!(!document.createElementNS||!Y("svg").createSVGRect),Pt=!!Ot&&function(){var t=document.createElement("div");return t.innerHTML="","http://www.w3.org/2000/svg"===(t.firstChild&&t.firstChild.namespaceURI)}(),Lt=!Ot&&function(){try{var t=document.createElement("div");t.innerHTML='';var e=t.firstChild;return e.style.behavior="url(#default#VML)",e&&"object"===typeof e.adj}catch(n){return!1}}(),It=0===navigator.platform.indexOf("Mac"),Rt=0===navigator.platform.indexOf("Linux");function jt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var Nt={ie:$,ielt9:tt,edge:et,webkit:nt,android:rt,android23:it,androidStock:st,opera:at,chrome:lt,gecko:ut,safari:ht,phantom:ct,opera12:ft,win:dt,ie3d:pt,webkit3d:mt,gecko3d:gt,any3d:yt,mobile:_t,mobileWebkit:vt,mobileWebkit3d:bt,msPointer:wt,pointer:xt,touch:St,touchNative:kt,mobileOpera:Mt,mobileGecko:At,retina:Et,passiveEvents:Ct,canvas:Tt,svg:Ot,vml:Lt,inlineSvg:Pt,mac:It,linux:Rt},Bt=Nt.msPointer?"MSPointerDown":"pointerdown",Dt=Nt.msPointer?"MSPointerMove":"pointermove",Ft=Nt.msPointer?"MSPointerUp":"pointerup",Ut=Nt.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Bt,touchmove:Dt,touchend:Ft,touchcancel:Ut},zt={touchstart:Jt,touchmove:Xt,touchend:Xt,touchcancel:Xt},Ht={},qt=!1;function Zt(t,e,n){return"touchstart"===e&&Yt(),zt[e]?(n=zt[e].bind(this,n),t.addEventListener(Gt[e],n,!1),n):(console.warn("wrong event specified:",e),u)}function Wt(t,e,n){Gt[e]?t.removeEventListener(Gt[e],n,!1):console.warn("wrong event specified:",e)}function Vt(t){Ht[t.pointerId]=t}function Qt(t){Ht[t.pointerId]&&(Ht[t.pointerId]=t)}function Kt(t){delete Ht[t.pointerId]}function Yt(){qt||(document.addEventListener(Bt,Vt,!0),document.addEventListener(Dt,Qt,!0),document.addEventListener(Ft,Kt,!0),document.addEventListener(Ut,Kt,!0),qt=!0)}function Xt(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var n in e.touches=[],Ht)e.touches.push(Ht[n]);e.changedTouches=[e],t(e)}}function Jt(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&Ve(e),Xt(t,e)}function $t(t){var e,n,r={};for(n in t)e=t[n],r[n]=e&&e.bind?e.bind(t):e;return t=r,r.type="dblclick",r.detail=2,r.isTrusted=!1,r._simulated=!0,r}var te=200;function ee(t,e){t.addEventListener("dblclick",e);var n,r=0;function i(t){if(1===t.detail){if("mouse"!==t.pointerType&&(!t.sourceCapabilities||t.sourceCapabilities.firesTouchEvents)){var i=Ke(t);if(!i.some((function(t){return t instanceof HTMLLabelElement&&t.attributes.for}))||i.some((function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement}))){var o=Date.now();o-r<=te?(n++,2===n&&e($t(t))):n=1,r=o}}}else n=t.detail}return t.addEventListener("click",i),{dblclick:e,simDblclick:i}}function ne(t,e){t.removeEventListener("dblclick",e.dblclick),t.removeEventListener("click",e.simDblclick)}var re,ie,oe,se,ae,le=Me(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ue=Me(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),he="webkitTransition"===ue||"OTransition"===ue?ue+"End":"transitionend";function ce(t){return"string"===typeof t?document.getElementById(t):t}function fe(t,e){var n=t.style[e]||t.currentStyle&&t.currentStyle[e];if((!n||"auto"===n)&&document.defaultView){var r=document.defaultView.getComputedStyle(t,null);n=r?r[e]:null}return"auto"===n?null:n}function de(t,e,n){var r=document.createElement(t);return r.className=e||"",n&&n.appendChild(r),r}function pe(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){while(t.firstChild)t.removeChild(t.firstChild)}function ge(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ye(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function _e(t,e){if(void 0!==t.classList)return t.classList.contains(e);var n=xe(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)}function ve(t,e){if(void 0!==t.classList)for(var n=f(e),r=0,i=n.length;r0?2*window.devicePixelRatio:1;function Je(t){return Nt.edge?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Xe:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function $e(t,e){var n=e.relatedTarget;if(!n)return!0;try{while(n&&n!==t)n=n.parentNode}catch(r){return!1}return n!==t}var tn={__proto__:null,on:Be,off:Fe,stopPropagation:qe,disableScrollPropagation:Ze,disableClickPropagation:We,preventDefault:Ve,stop:Qe,getPropagationPath:Ke,getMousePosition:Ye,getWheelDelta:Je,isExternalTarget:$e,addListener:Be,removeListener:Fe},en=P.extend({run:function(t,e,n,r){this.stop(),this._el=t,this._inProgress=!0,this._duration=n||.25,this._easeOutPower=1/Math.max(r||.5,.2),this._startPos=Ce(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=M(this._animate,this),this._step()},_step:function(t){var e=+new Date-this._startTime,n=1e3*this._duration;ethis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var n=this.getCenter(),r=this._limitCenter(n,this._zoom,F(t));return n.equals(r)||this.panTo(r,e),this._enforcingBounds=!1,this},panInside:function(t,e){e=e||{};var n=j(e.paddingTopLeft||e.padding||[0,0]),r=j(e.paddingBottomRight||e.padding||[0,0]),i=this.project(this.getCenter()),o=this.project(t),s=this.getPixelBounds(),a=B([s.min.add(n),s.max.subtract(r)]),l=a.getSize();if(!a.contains(o)){this._enforcingBounds=!0;var u=o.subtract(a.getCenter()),h=a.extend(o).getSize().subtract(l);i.x+=u.x<0?-h.x:h.x,i.y+=u.y<0?-h.y:h.y,this.panTo(this.unproject(i),e),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=n({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var r=this.getSize(),o=e.divideBy(2).round(),s=r.divideBy(2).round(),a=o.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(i(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:r})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=n({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=i(this._handleGeolocationResponse,this),r=i(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,r,t):navigator.geolocation.getCurrentPosition(e,r,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){if(this._container._leaflet_id){var e=t.code,n=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+n+"."})}},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e=t.coords.latitude,n=t.coords.longitude,r=new U(e,n),i=r.toBounds(2*t.coords.accuracy),o=this._locateOptions;if(o.setView){var s=this.getBoundsZoom(i);this.setView(r,o.maxZoom?Math.min(s,o.maxZoom):s)}var a={latlng:r,bounds:i,timestamp:t.timestamp};for(var l in t.coords)"number"===typeof t.coords[l]&&(a[l]=t.coords[l]);this.fire("locationfound",a)}},addHandler:function(t,e){if(!e)return this;var n=this[t]=new e(this);return this._handlers.push(n),this.options[t]&&n.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(e){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),pe(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(A(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)pe(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){var n="leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),r=de("div",n,e||this._mapPane);return t&&(this._panes[t]=r),r},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),n=this.unproject(t.getTopRight());return new D(e,n)},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,n){t=F(t),n=j(n||[0,0]);var r=this.getZoom()||0,i=this.getMinZoom(),o=this.getMaxZoom(),s=t.getNorthWest(),a=t.getSouthEast(),l=this.getSize().subtract(n),u=B(this.project(a,r),this.project(s,r)).getSize(),h=Nt.any3d?this.options.zoomSnap:1,c=l.x/u.x,f=l.y/u.y,d=e?Math.max(c,f):Math.min(c,f);return r=this.getScaleZoom(d,r),h&&(r=Math.round(r/(h/100))*(h/100),r=e?Math.ceil(r/h)*h:Math.floor(r/h)*h),Math.max(i,Math.min(o,r))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new I(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var n=this._getTopLeftPoint(t,e);return new N(n,n.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"===typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var n=this.options.crs;return e=void 0===e?this._zoom:e,n.scale(t)/n.scale(e)},getScaleZoom:function(t,e){var n=this.options.crs;e=void 0===e?this._zoom:e;var r=n.zoom(t*n.scale(e));return isNaN(r)?1/0:r},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(G(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(j(t),e)},layerPointToLatLng:function(t){var e=j(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(G(t))._round();return e._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(G(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(F(t))},distance:function(t,e){return this.options.crs.distance(G(t),G(e))},containerPointToLayerPoint:function(t){return j(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return j(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(j(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(G(t)))},mouseEventToContainerPoint:function(t){return Ye(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=ce(t);if(!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");Be(e,"scroll",this._onScroll,this),this._containerId=s(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Nt.any3d,ve(t,"leaflet-container"+(Nt.touch?" leaflet-touch":"")+(Nt.retina?" leaflet-retina":"")+(Nt.ielt9?" leaflet-oldie":"")+(Nt.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var e=fe(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Ee(this._mapPane,new I(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ve(t.markerPane,"leaflet-zoom-hide"),ve(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,n){Ee(this._mapPane,new I(0,0));var r=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset");var i=this._zoom!==e;this._moveStart(i,n)._move(t,e)._moveEnd(i),this.fire("viewreset"),r&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,n,r){void 0===e&&(e=this._zoom);var i=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),r?n&&n.pinch&&this.fire("zoom",n):((i||n&&n.pinch)&&this.fire("zoom",n),this.fire("move",n)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return A(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Ee(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[s(this._container)]=this;var e=t?Fe:Be;e(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),Nt.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){A(this._resizeRequest),this._resizeRequest=M((function(){this.invalidateSize({debounceMoveend:!0})}),this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){var n,r=[],i="mouseout"===e||"mouseover"===e,o=t.target||t.srcElement,a=!1;while(o){if(n=this._targets[s(o)],n&&("click"===e||"preclick"===e)&&this._draggableMoved(n)){a=!0;break}if(n&&n.listens(e,!0)){if(i&&!$e(o,t))break;if(r.push(n),i)break}if(o===this._container)break;o=o.parentNode}return r.length||a||i||!this.listens(e,!0)||(r=[this]),r},_isClickDisabled:function(t){while(t&&t!==this._container){if(t["_leaflet_disable_click"])return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e=t.target||t.srcElement;if(!(!this._loaded||e["_leaflet_disable_events"]||"click"===t.type&&this._isClickDisabled(e))){var n=t.type;"mousedown"===n&&Le(e),this._fireDOMEvent(t,n)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,r){if("click"===t.type){var i=n({},t);i.type="preclick",this._fireDOMEvent(i,i.type,r)}var o=this._findEventTargets(t,e);if(r){for(var s=[],a=0;a0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),n=this.getMaxZoom(),r=Nt.any3d?this.options.zoomSnap:1;return r&&(t=Math.round(t/r)*r),Math.max(e,Math.min(n,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){be(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var n=this._getCenterOffset(t)._trunc();return!(!0!==(e&&e.animate)&&!this.getSize().contains(n))&&(this.panBy(n,e),!0)},_createAnimProxy:function(){var t=this._proxy=de("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",(function(t){var e=le,n=this._proxy.style[e];Ae(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),n===this._proxy.style[e]&&this._animatingZoom&&this._onZoomTransitionEnd()}),this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){pe(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),e=this.getZoom();Ae(this._proxy,this.project(t,e),this.getZoomScale(e,1))},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,n){if(this._animatingZoom)return!0;if(n=n||{},!this._zoomAnimated||!1===n.animate||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var r=this.getZoomScale(e),i=this._getCenterOffset(t)._divideBy(1-1/r);return!(!0!==n.animate&&!this.getSize().contains(i))&&(M((function(){this._moveStart(!0,n.noMoveStart||!1)._animateZoom(t,e,!0)}),this),!0)},_animateZoom:function(t,e,n,r){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,ve(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:r}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(i(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&be(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function rn(t,e){return new nn(t,e)}var on=C.extend({options:{position:"topright"},initialize:function(t){d(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),n=this.getPosition(),r=t._controlCorners[n];return ve(e,"leaflet-control"),-1!==n.indexOf("bottom")?r.insertBefore(e,r.firstChild):r.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(pe(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),sn=function(t){return new on(t)};nn.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},e="leaflet-",n=this._controlContainer=de("div",e+"control-container",this._container);function r(r,i){var o=e+r+" "+e+i;t[r+i]=de("div",o,n)}r("top","left"),r("top","right"),r("bottom","left"),r("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)pe(this._controlCorners[t]);pe(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var an=on.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,e,n,r){return n1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=e&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var e=this._getLayer(s(t.target)),n=e.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;n&&this._map.fire(n,e)},_createRadioElement:function(t,e){var n='",r=document.createElement("div");return r.innerHTML=n,r.firstChild},_addItem:function(t){var e,n=document.createElement("label"),r=this._map.hasLayer(t.layer);t.overlay?(e=document.createElement("input"),e.type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=r):e=this._createRadioElement("leaflet-base-layers_"+s(this),r),this._layerControlInputs.push(e),e.layerId=s(t.layer),Be(e,"click",this._onInputClick,this);var i=document.createElement("span");i.innerHTML=" "+t.name;var o=document.createElement("span");n.appendChild(o),o.appendChild(e),o.appendChild(i);var a=t.overlay?this._overlaysList:this._baseLayersList;return a.appendChild(n),this._checkDisabledLayers(),n},_onInputClick:function(){if(!this._preventClick){var t,e,n=this._layerControlInputs,r=[],i=[];this._handlingClick=!0;for(var o=n.length-1;o>=0;o--)t=n[o],e=this._getLayer(t.layerId).layer,t.checked?r.push(e):t.checked||i.push(e);for(o=0;o=0;i--)t=n[i],e=this._getLayer(t.layerId).layer,t.disabled=void 0!==e.options.minZoom&&re.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;this._preventClick=!0,Be(t,"click",Ve),this.expand();var e=this;setTimeout((function(){Fe(t,"click",Ve),e._preventClick=!1}))}}),ln=function(t,e,n){return new an(t,e,n)},un=on.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",n=de("div",e+" leaflet-bar"),r=this.options;return this._zoomInButton=this._createButton(r.zoomInText,r.zoomInTitle,e+"-in",n,this._zoomIn),this._zoomOutButton=this._createButton(r.zoomOutText,r.zoomOutTitle,e+"-out",n,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),n},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,n,r,i){var o=de("a",n,r);return o.innerHTML=t,o.href="#",o.title=e,o.setAttribute("role","button"),o.setAttribute("aria-label",e),We(o),Be(o,"click",Qe),Be(o,"click",i,this),Be(o,"click",this._refocusOnMap,this),o},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";be(this._zoomInButton,e),be(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||t._zoom===t.getMinZoom())&&(ve(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||t._zoom===t.getMaxZoom())&&(ve(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}});nn.mergeOptions({zoomControl:!0}),nn.addInitHook((function(){this.options.zoomControl&&(this.zoomControl=new un,this.addControl(this.zoomControl))}));var hn=function(t){return new un(t)},cn=on.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",n=de("div",e),r=this.options;return this._addScales(r,e+"-line",n),t.on(r.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),n},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,n){t.metric&&(this._mScale=de("div",e,n)),t.imperial&&(this._iScale=de("div",e,n))},_update:function(){var t=this._map,e=t.getSize().y/2,n=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(n)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),n=e<1e3?e+" m":e/1e3+" km";this._updateScale(this._mScale,n,e/t)},_updateImperial:function(t){var e,n,r,i=3.2808399*t;i>5280?(e=i/5280,n=this._getRoundNum(e),this._updateScale(this._iScale,n+" mi",n/e)):(r=this._getRoundNum(i),this._updateScale(this._iScale,r+" ft",r/i))},_updateScale:function(t,e,n){t.style.width=Math.round(this.options.maxWidth*n)+"px",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),n=t/e;return n=n>=10?10:n>=5?5:n>=3?3:n>=2?2:1,e*n}}),fn=function(t){return new cn(t)},dn='',pn=on.extend({options:{position:"bottomright",prefix:'
'+(Nt.inlineSvg?dn+" ":"")+"Leaflet"},initialize:function(t){d(this,t),this._attributions={}},onAdd:function(t){for(var e in t.attributionControl=this,this._container=de("div","leaflet-control-attribution"),We(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",(function(){this.removeAttribution(t.layer.getAttribution())}),this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var n=[];this.options.prefix&&n.push(this.options.prefix),t.length&&n.push(t.join(", ")),this._container.innerHTML=n.join(' ')}}});nn.mergeOptions({attributionControl:!0}),nn.addInitHook((function(){this.options.attributionControl&&(new pn).addTo(this)}));var mn=function(t){return new pn(t)};on.Layers=an,on.Zoom=un,on.Scale=cn,on.Attribution=pn,sn.layers=ln,sn.zoom=hn,sn.scale=fn,sn.attribution=mn;var gn=C.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});gn.addTo=function(t,e){return t.addHandler(e,this),this};var yn={Events:O},_n=Nt.touch?"touchstart mousedown":"mousedown",vn=P.extend({options:{clickTolerance:3},initialize:function(t,e,n,r){d(this,r),this._element=t,this._dragStartTarget=e||t,this._preventOutline=n},enable:function(){this._enabled||(Be(this._dragStartTarget,_n,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(vn._dragging===this&&this.finishDrag(!0),Fe(this._dragStartTarget,_n,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(this._enabled&&(this._moved=!1,!_e(this._element,"leaflet-zoom-anim")))if(t.touches&&1!==t.touches.length)vn._dragging===this&&this.finishDrag();else if(!(vn._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches)&&(vn._dragging=this,this._preventOutline&&Le(this._element),Oe(),re(),!this._moving)){this.fire("down");var e=t.touches?t.touches[0]:t,n=Re(this._element);this._startPoint=new I(e.clientX,e.clientY),this._startPos=Ce(this._element),this._parentScale=je(n);var r="mousedown"===t.type;Be(document,r?"mousemove":"touchmove",this._onMove,this),Be(document,r?"mouseup":"touchend touchcancel",this._onUp,this)}},_onMove:function(t){if(this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var e=t.touches&&1===t.touches.length?t.touches[0]:t,n=new I(e.clientX,e.clientY)._subtract(this._startPoint);(n.x||n.y)&&(Math.abs(n.x)+Math.abs(n.y)l&&(o=s,l=a);l>n&&(e[o]=1,Tn(t,e,n,r,o),Tn(t,e,n,o,i))}function On(t,e){for(var n=[t[0]],r=1,i=0,o=t.length;re&&(n.push(t[r]),i=r);return ie.max.x&&(n|=2),t.ye.max.y&&(n|=8),n}function Rn(t,e){var n=e.x-t.x,r=e.y-t.y;return n*n+r*r}function jn(t,e,n,r){var i,o=e.x,s=e.y,a=n.x-o,l=n.y-s,u=a*a+l*l;return u>0&&(i=((t.x-o)*a+(t.y-s)*l)/u,i>1?(o=n.x,s=n.y):i>0&&(o+=a*i,s+=l*i)),a=t.x-o,l=t.y-s,r?a*a+l*l:new I(o,s)}function Nn(t){return!y(t[0])||"object"!==typeof t[0][0]&&"undefined"!==typeof t[0][0]}function Bn(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Nn(t)}function Dn(t,e){var n,r,i,o,s,a,l,u;if(!t||0===t.length)throw new Error("latlngs not passed");Nn(t)||(console.warn("latlngs are not flat! Only the first ring will be used"),t=t[0]);var h=G([0,0]),c=F(t),f=c.getNorthWest().distanceTo(c.getSouthWest())*c.getNorthEast().distanceTo(c.getNorthWest());f<1700&&(h=xn(t));var d=t.length,p=[];for(n=0;nr){l=(o-r)/i,u=[a.x-l*(a.x-s.x),a.y-l*(a.y-s.y)];break}var g=e.unproject(j(u));return G([g.lat+h.lat,g.lng+h.lng])}var Fn={__proto__:null,simplify:Mn,pointToSegmentDistance:An,closestPointOnSegment:En,clipSegment:Pn,_getEdgeIntersection:Ln,_getBitCode:In,_sqClosestPointOnSegment:jn,isFlat:Nn,_flat:Bn,polylineCenter:Dn},Un={project:function(t){return new I(t.lng,t.lat)},unproject:function(t){return new U(t.y,t.x)},bounds:new N([-180,-90],[180,90])},Gn={R:6378137,R_MINOR:6356752.314245179,bounds:new N([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var e=Math.PI/180,n=this.R,r=t.lat*e,i=this.R_MINOR/n,o=Math.sqrt(1-i*i),s=o*Math.sin(r),a=Math.tan(Math.PI/4-r/2)/Math.pow((1-s)/(1+s),o/2);return r=-n*Math.log(Math.max(a,1e-10)),new I(t.lng*e*n,r)},unproject:function(t){for(var e,n=180/Math.PI,r=this.R,i=this.R_MINOR/r,o=Math.sqrt(1-i*i),s=Math.exp(-t.y/r),a=Math.PI/2-2*Math.atan(s),l=0,u=.1;l<15&&Math.abs(u)>1e-7;l++)e=o*Math.sin(a),e=Math.pow((1-e)/(1+e),o/2),u=Math.PI/2-2*Math.atan(s*e)-a,a+=u;return new U(a*n,t.x*n/r)}},zn={__proto__:null,LonLat:Un,Mercator:Gn,SphericalMercator:Z},Hn=n({},H,{code:"EPSG:3395",projection:Gn,transformation:function(){var t=.5/(Math.PI*Gn.R);return V(t,.5,-t,.5)}()}),qn=n({},H,{code:"EPSG:4326",projection:Un,transformation:V(1/180,1,-1/180,.5)}),Zn=n({},z,{projection:Un,transformation:V(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,e){var n=e.lng-t.lng,r=e.lat-t.lat;return Math.sqrt(n*n+r*r)},infinite:!0});z.Earth=H,z.EPSG3395=Hn,z.EPSG3857=Q,z.EPSG900913=K,z.EPSG4326=qn,z.Simple=Zn;var Wn=P.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[s(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[s(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var e=t.target;if(e.hasLayer(this)){if(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents){var n=this.getEvents();e.on(n,this),this.once("remove",(function(){e.off(n,this)}),this)}this.onAdd(e),this.fire("add"),e.fire("layeradd",{layer:this})}}});nn.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var e=s(t);return this._layers[e]||(this._layers[e]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var e=s(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return s(t)in this._layers},eachLayer:function(t,e){for(var n in this._layers)t.call(e,this._layers[n]);return this},_addLayers:function(t){t=t?y(t)?t:[t]:[];for(var e=0,n=t.length;ethis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()=2&&e[0]instanceof U&&e[0].equals(e[n-1])&&e.pop(),e},_setLatLngs:function(t){lr.prototype._setLatLngs.call(this,t),Nn(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Nn(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,e=this.options.weight,n=new I(e,e);if(t=new N(t.min.subtract(n),t.max.add(n)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var r,i=0,o=this._rings.length;it.y!==r.y>t.y&&t.x<(r.x-n.x)*(t.y-n.y)/(r.y-n.y)+n.x&&(u=!u);return u||lr.prototype._containsPoint.call(this,t,!0)}});function cr(t,e){return new hr(t,e)}var fr=Kn.extend({initialize:function(t,e){d(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,n,r,i=y(t)?t:t.features;if(i){for(e=0,n=i.length;e0&&i.push(i[0].slice()),i}function vr(t,e){return t.feature?n({},t.feature,{geometry:e}):br(e)}function br(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var wr={toGeoJSON:function(t){return vr(this,{type:"Point",coordinates:yr(this.getLatLng(),t)})}};function xr(t,e){return new fr(t,e)}er.include(wr),sr.include(wr),ir.include(wr),lr.include({toGeoJSON:function(t){var e=!Nn(this._latlngs),n=_r(this._latlngs,e?1:0,!1,t);return vr(this,{type:(e?"Multi":"")+"LineString",coordinates:n})}}),hr.include({toGeoJSON:function(t){var e=!Nn(this._latlngs),n=e&&!Nn(this._latlngs[0]),r=_r(this._latlngs,n?2:e?1:0,!0,t);return e||(r=[r]),vr(this,{type:(n?"Multi":"")+"Polygon",coordinates:r})}}),Vn.include({toMultiPoint:function(t){var e=[];return this.eachLayer((function(n){e.push(n.toGeoJSON(t).geometry.coordinates)})),vr(this,{type:"MultiPoint",coordinates:e})},toGeoJSON:function(t){var e=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===e)return this.toMultiPoint(t);var n="GeometryCollection"===e,r=[];return this.eachLayer((function(e){if(e.toGeoJSON){var i=e.toGeoJSON(t);if(n)r.push(i.geometry);else{var o=br(i);"FeatureCollection"===o.type?r.push.apply(r,o.features):r.push(o)}}})),n?vr(this,{geometries:r,type:"GeometryCollection"}):{type:"FeatureCollection",features:r}}});var kr=xr,Sr=Wn.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,e,n){this._url=t,this._bounds=F(e),d(this,n)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ve(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){pe(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ge(this._image),this},bringToBack:function(){return this._map&&ye(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=F(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,e=this._image=t?this._url:de("img");ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),this.options.className&&ve(e,this.options.className),e.onselectstart=u,e.onmousemove=u,e.onload=i(this.fire,this,"load"),e.onerror=i(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=e.src:(e.src=this._url,e.alt=this.options.alt)},_animateZoom:function(t){var e=this._map.getZoomScale(t.zoom),n=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;Ae(this._image,n,e)},_reset:function(){var t=this._image,e=new N(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),n=e.getSize();Ee(t,e.min),t.style.width=n.x+"px",t.style.height=n.y+"px"},_updateOpacity:function(){ke(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)},getCenter:function(){return this._bounds.getCenter()}}),Mr=function(t,e,n){return new Sr(t,e,n)},Ar=Sr.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,e=this._image=t?this._url:de("video");if(ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),this.options.className&&ve(e,this.options.className),e.onselectstart=u,e.onmousemove=u,e.onloadeddata=i(this.fire,this,"load"),t){for(var n=e.getElementsByTagName("source"),r=[],o=0;o0?r:[e.src]}else{y(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(e.style,"objectFit")&&(e.style["objectFit"]="fill"),e.autoplay=!!this.options.autoplay,e.loop=!!this.options.loop,e.muted=!!this.options.muted,e.playsInline=!!this.options.playsInline;for(var s=0;si?(e.height=i+"px",ve(t,o)):be(t,o),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),n=this._getAnchor();Ee(this._container,e.add(n))},_adjustPan:function(){if(this.options.autoPan)if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning)this._autopanning=!1;else{var t=this._map,e=parseInt(fe(this._container,"marginBottom"),10)||0,n=this._container.offsetHeight+e,r=this._containerWidth,i=new I(this._containerLeft,-n-this._containerBottom);i._add(Ce(this._container));var o=t.layerPointToContainerPoint(i),s=j(this.options.autoPanPadding),a=j(this.options.autoPanPaddingTopLeft||s),l=j(this.options.autoPanPaddingBottomRight||s),u=t.getSize(),h=0,c=0;o.x+r+l.x>u.x&&(h=o.x+r-u.x+l.x),o.x-h-a.x<0&&(h=o.x-a.x),o.y+n+l.y>u.y&&(c=o.y+n-u.y+l.y),o.y-c-a.y<0&&(c=o.y-a.y),(h||c)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([h,c]))}},_getAnchor:function(){return j(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),Lr=function(t,e){return new Pr(t,e)};nn.mergeOptions({closePopupOnClick:!0}),nn.include({openPopup:function(t,e,n){return this._initOverlay(Pr,t,e,n).openOn(this),this},closePopup:function(t){return t=arguments.length?t:this._popup,t&&t.close(),this}}),Wn.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Pr,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof Kn||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){if(this._popup&&this._map){Qe(t);var e=t.layer||t.target;this._popup._source!==e||e instanceof rr?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng)}},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var Ir=Or.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Or.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Or.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Or.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip",e=t+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=de("div",e),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+s(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,n,r=this._map,i=this._container,o=r.latLngToContainerPoint(r.getCenter()),s=r.layerPointToContainerPoint(t),a=this.options.direction,l=i.offsetWidth,u=i.offsetHeight,h=j(this.options.offset),c=this._getAnchor();"top"===a?(e=l/2,n=u):"bottom"===a?(e=l/2,n=0):"center"===a?(e=l/2,n=u/2):"right"===a?(e=0,n=u/2):"left"===a?(e=l,n=u/2):s.xthis.options.maxZoom||nr&&this._retainParent(i,o,s,r))},_retainChildren:function(t,e,n,r){for(var i=2*t;i<2*t+2;i++)for(var o=2*e;o<2*e+2;o++){var s=new I(i,o);s.z=n+1;var a=this._tileCoordsToKey(s),l=this._tiles[a];l&&l.active?l.retain=!0:(l&&l.loaded&&(l.retain=!0),n+1this.options.maxZoom||void 0!==this.options.minZoom&&i1)this._setView(t,n);else{for(var c=i.min.y;c<=i.max.y;c++)for(var f=i.min.x;f<=i.max.x;f++){var d=new I(f,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:s.push(d)}}if(s.sort((function(t,e){return t.distanceTo(o)-e.distanceTo(o)})),0!==s.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(f=0;fn.max.x)||!e.wrapLat&&(t.yn.max.y))return!1}if(!this.options.bounds)return!0;var r=this._tileCoordsToBounds(t);return F(this.options.bounds).overlaps(r)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,n=this.getTileSize(),r=t.scaleBy(n),i=r.add(n),o=e.unproject(r,t.z),s=e.unproject(i,t.z);return[o,s]},_tileCoordsToBounds:function(t){var e=this._tileCoordsToNwSe(t),n=new D(e[0],e[1]);return this.options.noWrap||(n=this._map.wrapLatLngBounds(n)),n},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=t.split(":"),n=new I(+e[0],+e[1]);return n.z=+e[2],n},_removeTile:function(t){var e=this._tiles[t];e&&(pe(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ve(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,Nt.ielt9&&this.options.opacity<1&&ke(t,this.options.opacity)},_addTile:function(t,e){var n=this._getTilePos(t),r=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),i(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&M(i(this._tileReady,this,t,null,o)),Ee(o,n),this._tiles[r]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,n){e&&this.fire("tileerror",{error:e,tile:n,coords:t});var r=this._tileCoordsToKey(t);n=this._tiles[r],n&&(n.loaded=+new Date,this._map._fadeAnimated?(ke(n.el,0),A(this._fadeFrame),this._fadeFrame=M(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),e||(ve(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Nt.ielt9||!this._map._fadeAnimated?M(this._pruneTiles,this):setTimeout(i(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new I(this._wrapX?l(t.x,this._wrapX):t.x,this._wrapY?l(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new N(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});function Dr(t){return new Br(t)}var Fr=Br.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,e=d(this,e),e.detectRetina&&Nt.retina&&e.maxZoom>0?(e.tileSize=Math.floor(e.tileSize/2),e.zoomReverse?(e.zoomOffset--,e.minZoom=Math.min(e.maxZoom,e.minZoom+1)):(e.zoomOffset++,e.maxZoom=Math.max(e.minZoom,e.maxZoom-1)),e.minZoom=Math.max(0,e.minZoom)):e.zoomReverse?e.minZoom=Math.min(e.maxZoom,e.minZoom):e.maxZoom=Math.max(e.minZoom,e.maxZoom),"string"===typeof e.subdomains&&(e.subdomains=e.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(t,e){return this._url===t&&void 0===e&&(e=!0),this._url=t,e||this.redraw(),this},createTile:function(t,e){var n=document.createElement("img");return Be(n,"load",i(this._tileOnLoad,this,e,n)),Be(n,"error",i(this._tileOnError,this,e,n)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(n.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),"string"===typeof this.options.referrerPolicy&&(n.referrerPolicy=this.options.referrerPolicy),n.alt="",n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Nt.retina?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var r=this._globalTileRange.max.y-t.y;this.options.tms&&(e["y"]=r),e["-y"]=r}return g(this._url,n(e,this.options))},_tileOnLoad:function(t,e){Nt.ielt9?setTimeout(i(t,this,null,e),0):t(null,e)},_tileOnError:function(t,e,n){var r=this.options.errorTileUrl;r&&e.getAttribute("src")!==r&&(e.src=r),t(n,e)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,e=this.options.maxZoom,n=this.options.zoomReverse,r=this.options.zoomOffset;return n&&(t=e-t),t+r},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_abortLoading:function(){var t,e;for(t in this._tiles)if(this._tiles[t].coords.z!==this._tileZoom&&(e=this._tiles[t].el,e.onload=u,e.onerror=u,!e.complete)){e.src=v;var n=this._tiles[t].coords;pe(e),delete this._tiles[t],this.fire("tileabort",{tile:e,coords:n})}},_removeTile:function(t){var e=this._tiles[t];if(e)return e.el.setAttribute("src",v),Br.prototype._removeTile.call(this,t)},_tileReady:function(t,e,n){if(this._map&&(!n||n.getAttribute("src")!==v))return Br.prototype._tileReady.call(this,t,e,n)}});function Ur(t,e){return new Fr(t,e)}var Gr=Fr.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var r=n({},this.defaultWmsParams);for(var i in e)i in this.options||(r[i]=e[i]);e=d(this,e);var o=e.detectRetina&&Nt.retina?2:1,s=this.getTileSize();r.width=s.x*o,r.height=s.y*o,this.wmsParams=r},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,Fr.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._tileCoordsToNwSe(t),n=this._crs,r=B(n.project(e[0]),n.project(e[1])),i=r.min,o=r.max,s=(this._wmsVersion>=1.3&&this._crs===qn?[i.y,i.x,o.y,o.x]:[i.x,i.y,o.x,o.y]).join(","),a=Fr.prototype.getTileUrl.call(this,t);return a+p(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+s},setParams:function(t,e){return n(this.wmsParams,t),e||this.redraw(),this}});function zr(t,e){return new Gr(t,e)}Fr.WMS=Gr,Ur.wms=zr;var Hr=Wn.extend({options:{padding:.1},initialize:function(t){d(this,t),s(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),ve(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,e){var n=this._map.getZoomScale(e,this._zoom),r=this._map.getSize().multiplyBy(.5+this.options.padding),i=this._map.project(this._center,e),o=r.multiplyBy(-n).add(i).subtract(this._map._getNewPixelOrigin(t,e));Nt.any3d?Ae(this._container,o,n):Ee(this._container,o)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,e=this._map.getSize(),n=this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();this._bounds=new N(n,n.add(e.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),qr=Hr.extend({options:{tolerance:0},getEvents:function(){var t=Hr.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Hr.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");Be(t,"mousemove",this._onMouseMove,this),Be(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Be(t,"mouseout",this._handleMouseOut,this),t["_leaflet_disable_events"]=!0,this._ctx=t.getContext("2d")},_destroyContainer:function(){A(this._redrawRequest),delete this._ctx,pe(this._container),Fe(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var t;for(var e in this._redrawBounds=null,this._layers)t=this._layers[e],t._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){Hr.prototype._update.call(this);var t=this._bounds,e=this._container,n=t.getSize(),r=Nt.retina?2:1;Ee(e,t.min),e.width=r*n.x,e.height=r*n.y,e.style.width=n.x+"px",e.style.height=n.y+"px",Nt.retina&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){Hr.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[s(t)]=t;var e=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=e),this._drawLast=e,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var e=t._order,n=e.next,r=e.prev;n?n.prev=r:this._drawLast=r,r?r.next=n:this._drawFirst=n,delete t._order,delete this._layers[s(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"===typeof t.options.dashArray){var e,n,r=t.options.dashArray.split(/[, ]+/),i=[];for(n=0;n')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),Vr={_initContainer:function(){this._container=de("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Hr.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Wr("shape");ve(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Wr("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;pe(e),t.removeInteractiveTarget(e),delete this._layers[s(t)]},_updateStyle:function(t){var e=t._stroke,n=t._fill,r=t.options,i=t._container;i.stroked=!!r.stroke,i.filled=!!r.fill,r.stroke?(e||(e=t._stroke=Wr("stroke")),i.appendChild(e),e.weight=r.weight+"px",e.color=r.color,e.opacity=r.opacity,r.dashArray?e.dashStyle=y(r.dashArray)?r.dashArray.join(" "):r.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=r.lineCap.replace("butt","flat"),e.joinstyle=r.lineJoin):e&&(i.removeChild(e),t._stroke=null),r.fill?(n||(n=t._fill=Wr("fill")),i.appendChild(n),n.color=r.fillColor||r.color,n.opacity=r.fillOpacity):n&&(i.removeChild(n),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),n=Math.round(t._radius),r=Math.round(t._radiusY||n);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+n+","+r+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){ge(t._container)},_bringToBack:function(t){ye(t._container)}},Qr=Nt.vml?Wr:Y,Kr=Hr.extend({_initContainer:function(){this._container=Qr("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Qr("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){pe(this._container),Fe(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!this._map._animatingZoom||!this._bounds){Hr.prototype._update.call(this);var t=this._bounds,e=t.getSize(),n=this._container;this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,n.setAttribute("width",e.x),n.setAttribute("height",e.y)),Ee(n,t.min),n.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update")}},_initPath:function(t){var e=t._path=Qr("path");t.options.className&&ve(e,t.options.className),t.options.interactive&&ve(e,"leaflet-interactive"),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){pe(t._path),t.removeInteractiveTarget(t._path),delete this._layers[s(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,n=t.options;e&&(n.stroke?(e.setAttribute("stroke",n.color),e.setAttribute("stroke-opacity",n.opacity),e.setAttribute("stroke-width",n.weight),e.setAttribute("stroke-linecap",n.lineCap),e.setAttribute("stroke-linejoin",n.lineJoin),n.dashArray?e.setAttribute("stroke-dasharray",n.dashArray):e.removeAttribute("stroke-dasharray"),n.dashOffset?e.setAttribute("stroke-dashoffset",n.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),n.fill?(e.setAttribute("fill",n.fillColor||n.color),e.setAttribute("fill-opacity",n.fillOpacity),e.setAttribute("fill-rule",n.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,X(t._parts,e))},_updateCircle:function(t){var e=t._point,n=Math.max(Math.round(t._radius),1),r=Math.max(Math.round(t._radiusY),1)||n,i="a"+n+","+r+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(e.x-n)+","+e.y+i+2*n+",0 "+i+2*-n+",0 ";this._setPath(t,o)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){ge(t._path)},_bringToBack:function(t){ye(t._path)}});function Yr(t){return Nt.svg||Nt.vml?new Kr(t):null}Nt.vml&&Kr.include(Vr),nn.include({getRenderer:function(t){var e=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return e||(e=this._renderer=this._createRenderer()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var e=this._paneRenderers[t];return void 0===e&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e},_createRenderer:function(t){return this.options.preferCanvas&&Zr(t)||Yr(t)}});var Xr=hr.extend({initialize:function(t,e){hr.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=F(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});function Jr(t,e){return new Xr(t,e)}Kr.create=Qr,Kr.pointsToPath=X,fr.geometryToLayer=dr,fr.coordsToLatLng=mr,fr.coordsToLatLngs=gr,fr.latLngToCoords=yr,fr.latLngsToCoords=_r,fr.getFeature=vr,fr.asFeature=br,nn.mergeOptions({boxZoom:!0});var $r=gn.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){Be(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Fe(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){pe(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Oe(),this._startPoint=this._map.mouseEventToContainerPoint(t),Be(document,{contextmenu:Qe,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=de("div","leaflet-zoom-box",this._container),ve(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=new N(this._point,this._startPoint),n=e.getSize();Ee(this._box,e.min),this._box.style.width=n.x+"px",this._box.style.height=n.y+"px"},_finish:function(){this._moved&&(pe(this._box),be(this._container,"leaflet-crosshair")),ie(),Pe(),Fe(document,{contextmenu:Qe,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(i(this._resetState,this),0);var e=new D(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});nn.addInitHook("addHandler","boxZoom",$r),nn.mergeOptions({doubleClickZoom:!0});var ti=gn.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,n=e.getZoom(),r=e.options.zoomDelta,i=t.originalEvent.shiftKey?n-r:n+r;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}});nn.addInitHook("addHandler","doubleClickZoom",ti),nn.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var ei=gn.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new vn(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}ve(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){be(this._map._container,"leaflet-grab"),be(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var e=F(this._map.options.maxBounds);this._offsetLimit=B(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var e=this._lastTime=+new Date,n=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(n),this._times.push(e),this._prunePositions(e)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){while(this._positions.length>1&&t-this._times[0]>50)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,e){return t-(t-e)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),e=this._offsetLimit;t.xe.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),n=this._initialWorldOffset,r=this._draggable._newPos.x,i=(r-e+n)%t+e-n,o=(r+e+n)%t-e-n,s=Math.abs(i+n)0?o:-o))-e;this._delta=0,this._startTime=null,s&&("center"===t.options.scrollWheelZoom?t.setZoom(e+s):t.setZoomAround(this._lastMousePos,e+s))}});nn.addInitHook("addHandler","scrollWheelZoom",ri);var ii=600;nn.mergeOptions({tapHold:Nt.touchNative&&Nt.safari&&Nt.mobile,tapTolerance:15});var oi=gn.extend({addHooks:function(){Be(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Fe(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(clearTimeout(this._holdTimeout),1===t.touches.length){var e=t.touches[0];this._startPos=this._newPos=new I(e.clientX,e.clientY),this._holdTimeout=setTimeout(i((function(){this._cancel(),this._isTapValid()&&(Be(document,"touchend",Ve),Be(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",e))}),this),ii),Be(document,"touchend touchcancel contextmenu",this._cancel,this),Be(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function t(){Fe(document,"touchend",Ve),Fe(document,"touchend touchcancel",t)},_cancel:function(){clearTimeout(this._holdTimeout),Fe(document,"touchend touchcancel contextmenu",this._cancel,this),Fe(document,"touchmove",this._onMove,this)},_onMove:function(t){var e=t.touches[0];this._newPos=new I(e.clientX,e.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(t,e){var n=new MouseEvent(t,{bubbles:!0,cancelable:!0,view:window,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY});n._simulated=!0,e.target.dispatchEvent(n)}});nn.addInitHook("addHandler","tapHold",oi),nn.mergeOptions({touchZoom:Nt.touch,bounceAtZoomLimits:!0});var si=gn.extend({addHooks:function(){ve(this._map._container,"leaflet-touch-zoom"),Be(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){be(this._map._container,"leaflet-touch-zoom"),Fe(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&!e._animatingZoom&&!this._zooming){var n=e.mouseEventToContainerPoint(t.touches[0]),r=e.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=e.getSize()._divideBy(2),this._startLatLng=e.containerPointToLatLng(this._centerPoint),"center"!==e.options.touchZoom&&(this._pinchStartLatLng=e.containerPointToLatLng(n.add(r)._divideBy(2))),this._startDist=n.distanceTo(r),this._startZoom=e.getZoom(),this._moved=!1,this._zooming=!0,e._stop(),Be(document,"touchmove",this._onTouchMove,this),Be(document,"touchend touchcancel",this._onTouchEnd,this),Ve(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var e=this._map,n=e.mouseEventToContainerPoint(t.touches[0]),r=e.mouseEventToContainerPoint(t.touches[1]),o=n.distanceTo(r)/this._startDist;if(this._zoom=e.getScaleZoom(o,this._startZoom),!e.options.bounceAtZoomLimits&&(this._zoome.getMaxZoom()&&o>1)&&(this._zoom=e._limitZoom(this._zoom)),"center"===e.options.touchZoom){if(this._center=this._startLatLng,1===o)return}else{var s=n._add(r)._divideBy(2)._subtract(this._centerPoint);if(1===o&&0===s.x&&0===s.y)return;this._center=e.unproject(e.project(this._pinchStartLatLng,this._zoom).subtract(s),this._zoom)}this._moved||(e._moveStart(!0,!1),this._moved=!0),A(this._animRequest);var a=i(e._move,e,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=M(a,this,!0),Ve(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,A(this._animRequest),Fe(document,"touchmove",this._onTouchMove,this),Fe(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});nn.addInitHook("addHandler","touchZoom",si),nn.BoxZoom=$r,nn.DoubleClickZoom=ti,nn.Drag=ei,nn.Keyboard=ni,nn.ScrollWheelZoom=ri,nn.TapHold=oi,nn.TouchZoom=si,t.Bounds=N,t.Browser=Nt,t.CRS=z,t.Canvas=qr,t.Circle=sr,t.CircleMarker=ir,t.Class=C,t.Control=on,t.DivIcon=jr,t.DivOverlay=Or,t.DomEvent=tn,t.DomUtil=Ne,t.Draggable=vn,t.Evented=P,t.FeatureGroup=Kn,t.GeoJSON=fr,t.GridLayer=Br,t.Handler=gn,t.Icon=Xn,t.ImageOverlay=Sr,t.LatLng=U,t.LatLngBounds=D,t.Layer=Wn,t.LayerGroup=Vn,t.LineUtil=Fn,t.Map=nn,t.Marker=er,t.Mixin=yn,t.Path=rr,t.Point=I,t.PolyUtil=Sn,t.Polygon=hr,t.Polyline=lr,t.Popup=Pr,t.PosAnimation=en,t.Projection=zn,t.Rectangle=Xr,t.Renderer=Hr,t.SVG=Kr,t.SVGOverlay=Cr,t.TileLayer=Fr,t.Tooltip=Ir,t.Transformation=W,t.Util=E,t.VideoOverlay=Ar,t.bind=i,t.bounds=B,t.canvas=Zr,t.circle=ar,t.circleMarker=or,t.control=sn,t.divIcon=Nr,t.extend=n,t.featureGroup=Yn,t.geoJSON=xr,t.geoJson=kr,t.gridLayer=Dr,t.icon=Jn,t.imageOverlay=Mr,t.latLng=G,t.latLngBounds=F,t.layerGroup=Qn,t.map=rn,t.marker=nr,t.point=j,t.polygon=cr,t.polyline=ur,t.popup=Lr,t.rectangle=Jr,t.setOptions=d,t.stamp=s,t.svg=Yr,t.svgOverlay=Tr,t.tileLayer=Ur,t.tooltip=Rr,t.transformation=V,t.version=e,t.videoOverlay=Er;var ai=window.L;t.noConflict=function(){return window.L=ai,this},window.L=t}))},74972:function(t,e,n){var r;let i=n(17216);const o=n(38776);"object"===typeof i&&"function"!==typeof i.defs&&"function"===typeof i.default&&(i=i.default),i.defs(o),r=function(){return i}.call(e,n,e,t),void 0===r||(t.exports=r),t.exports=i,t.exports["default"]=i},66056:function(t,e,n){var r;function i(){const t=[],e=t=>"object"===typeof t&&0===Object.keys(t).length&&"{}"===JSON.stringify(t),n=r=>{if(r){if(Array.isArray(r))return r.forEach(n);r.default&&(r=r.default),e(r)||t.push(r)}};if(Array.from(arguments).forEach(n),0===t.length)throw Error("[proj4-merge] merge called with zero instances of proj4");const[r,...i]=t;return i.forEach((t=>{r.defs(Object.entries(t.defs))})),r}r=function(){return i}.call(e,n,e,t),void 0===r||(t.exports=r),t.exports=i,t.exports["default"]=i},17216:function(t,e,n){"use strict";function r(t){t("EPSG:4326","+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"),t("EPSG:4269","+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"),t("EPSG:3857","+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"),t.WGS84=t["EPSG:4326"],t["EPSG:3785"]=t["EPSG:3857"],t.GOOGLE=t["EPSG:3857"],t["EPSG:900913"]=t["EPSG:3857"],t["EPSG:102113"]=t["EPSG:3857"]}n.r(e),n.d(e,{default:function(){return Jo}});var i=1,o=2,s=3,a=4,l=5,u=6378137,h=6356752.314,c=.0066943799901413165,f=484813681109536e-20,d=Math.PI/2,p=.16666666666666666,m=.04722222222222222,g=.022156084656084655,y=1e-10,_=.017453292519943295,v=57.29577951308232,b=Math.PI/4,w=2*Math.PI,x=3.14159265359,k={greenwich:0,lisbon:-9.131906111111,paris:2.337229166667,bogota:-74.080916666667,madrid:-3.687938888889,rome:12.452333333333,bern:7.439583333333,jakarta:106.807719444444,ferro:-17.666666666667,brussels:4.367975,stockholm:18.058277777778,athens:23.7163375,oslo:10.722916666667},S={ft:{to_meter:.3048},"us-ft":{to_meter:1200/3937}},M=/[\s_\-\/\(\)]/g;function A(t,e){if(t[e])return t[e];var n,r,i=Object.keys(t),o=e.toLowerCase().replace(M,""),s=-1;while(++s=this.text.length)return;t=this.text[this.place++]}switch(this.state){case T:return this.neutral(t);case O:return this.keyword(t);case L:return this.quoted(t);case I:return this.afterquote(t);case P:return this.number(t);case R:return}},U.prototype.afterquote=function(t){if('"'===t)return this.word+='"',void(this.state=L);if(D.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in afterquote yet, index '+this.place)},U.prototype.afterItem=function(t){return","===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=T)):"]"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=T,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=R))):void 0},U.prototype.number=function(t){if(!F.test(t)){if(D.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in number yet, index '+this.place)}this.word+=t},U.prototype.quoted=function(t){'"'!==t?this.word+=t:this.state=I},U.prototype.keyword=function(t){if(B.test(t))this.word+=t;else{if("["===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=T)}if(!D.test(t))throw new Error("havn't handled \""+t+'" in keyword yet, index '+this.place);this.afterItem(t)}},U.prototype.neutral=function(t){if(N.test(t))return this.word=t,void(this.state=O);if('"'===t)return this.word="",void(this.state=L);if(F.test(t))return this.word=t,void(this.state=P);if(!D.test(t))throw new Error("havn't handled \""+t+'" in neutral yet, index '+this.place);this.afterItem(t)},U.prototype.output=function(){while(this.place0?90:-90)):(t.lat0=W(t.lat1>0?90:-90),t.lat_ts=t.lat1)}function Q(t){var e=C(t),n=e.shift(),r=e.shift();e.unshift(["name",r]),e.unshift(["type",n]);var i={};return H(e,i),V(i),i}function K(t){var e=this;if(2===arguments.length){var n=arguments[1];"string"===typeof n?"+"===n.charAt(0)?K[t]=E(arguments[1]):K[t]=Q(arguments[1]):K[t]=n}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?K.apply(e,t):K(t)}));if("string"===typeof t){if(t in K)return K[t]}else"EPSG"in t?K["EPSG:"+t.EPSG]=t:"ESRI"in t?K["ESRI:"+t.ESRI]=t:"IAU2000"in t?K["IAU2000:"+t.IAU2000]=t:console.log(t);return}}r(K);var Y=K;function X(t){return"string"===typeof t}function J(t){return t in Y}var $=["PROJECTEDCRS","PROJCRS","GEOGCS","GEOCCS","PROJCS","LOCAL_CS","GEODCRS","GEODETICCRS","GEODETICDATUM","ENGCRS","ENGINEERINGCRS"];function tt(t){return $.some((function(e){return t.indexOf(e)>-1}))}var et=["3857","900913","3785","102113"];function nt(t){var e=A(t,"authority");if(e){var n=A(e,"epsg");return n&&et.indexOf(n)>-1}}function rt(t){var e=A(t,"extension");if(e)return A(e,"proj4")}function it(t){return"+"===t[0]}function ot(t){if(!X(t))return t;if(J(t))return Y[t];if(tt(t)){var e=Q(t);if(nt(e))return Y["EPSG:3857"];var n=rt(e);return n?E(n):e}return it(t)?E(t):void 0}var st=ot;function at(t,e){var n,r;if(t=t||{},!e)return t;for(r in e)n=e[r],void 0!==n&&(t[r]=n);return t}function lt(t,e,n){var r=t*e;return n/Math.sqrt(1-r*r)}function ut(t){return t<0?-1:1}function ht(t){return Math.abs(t)<=x?t:t-ut(t)*w}function ct(t,e,n){var r=t*n,i=.5*t;return r=Math.pow((1-r)/(1+r),i),Math.tan(.5*(d-e))/r}function ft(t,e){for(var n,r,i=.5*t,o=d-2*Math.atan(e),s=0;s<=15;s++)if(n=t*Math.sin(o),r=d-2*Math.atan(e*Math.pow((1-n)/(1+n),i))-o,o+=r,Math.abs(r)<=1e-10)return o;return-9999}function dt(){var t=this.b/this.a;this.es=1-t*t,"x0"in this||(this.x0=0),"y0"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=lt(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)}function pt(t){var e,n,r=t.x,i=t.y;if(i*v>90&&i*v<-90&&r*v>180&&r*v<-180)return null;if(Math.abs(Math.abs(i)-d)<=y)return null;if(this.sphere)e=this.x0+this.a*this.k0*ht(r-this.long0),n=this.y0+this.a*this.k0*Math.log(Math.tan(b+.5*i));else{var o=Math.sin(i),s=ct(this.e,i,o);e=this.x0+this.a*this.k0*ht(r-this.long0),n=this.y0-this.a*this.k0*Math.log(s)}return t.x=e,t.y=n,t}function mt(t){var e,n,r=t.x-this.x0,i=t.y-this.y0;if(this.sphere)n=d-2*Math.atan(Math.exp(-i/(this.a*this.k0)));else{var o=Math.exp(-i/(this.a*this.k0));if(n=ft(this.e,o),-9999===n)return null}return e=ht(this.long0+r/(this.a*this.k0)),t.x=e,t.y=n,t}var gt=["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","merc"],yt={init:dt,forward:pt,inverse:mt,names:gt};function _t(){}function vt(t){return t}var bt=["longlat","identity"],wt={init:_t,forward:vt,inverse:vt,names:bt},xt=[yt,wt],kt={},St=[];function Mt(t,e){var n=St.length;return t.names?(St[n]=t,t.names.forEach((function(t){kt[t.toLowerCase()]=n})),this):(console.log(e),!0)}function At(t){if(!t)return!1;var e=t.toLowerCase();return"undefined"!==typeof kt[e]&&St[kt[e]]?St[kt[e]]:void 0}function Et(){xt.forEach(Mt)}var Ct={start:Et,add:Mt,get:At},Tt={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563.396,b:6356256.91,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340.189,b:6356034.446,ellipseName:"Modified Airy"},andrae:{a:6377104.43,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397.155,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483.865,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:6378206.4,b:6356583.8,ellipseName:"Clarke 1866"},clrk80:{a:6378249.145,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk80ign:{a:6378249.2,b:6356515,rf:293.4660213,ellipseName:"Clarke 1880 (IGN)"},clrk58:{a:6378293.645208759,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:6375738.7,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:6378136.05,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276.345,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304.063,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301.243,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295.664,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298.556,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:6378157.5,b:6356772.2,ellipseName:"New International 1967"},plessis:{a:6376523,rf:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:6356773.3205,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:6355834.8467,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS7:{a:6378135,rf:298.26,ellipseName:"WGS 72"}},Ot=Tt.WGS84={a:6378137,rf:298.257223563,ellipseName:"WGS 84"};function Pt(t,e,n,r){var i=t*t,o=e*e,s=(i-o)/i,a=0;r?(t*=1-s*(p+s*(m+s*g)),i=t*t,s=0):a=Math.sqrt(s);var l=(i-o)/o;return{es:s,e:a,ep2:l}}function Lt(t,e,n,r,i){if(!t){var o=A(Tt,r);o||(o=Ot),t=o.a,e=o.b,n=o.rf}return n&&!e&&(e=(1-1/n)*t),(0===n||Math.abs(t-e)3&&(0===d.datum_params[3]&&0===d.datum_params[4]&&0===d.datum_params[5]&&0===d.datum_params[6]||(d.datum_type=o,d.datum_params[3]*=f,d.datum_params[4]*=f,d.datum_params[5]*=f,d.datum_params[6]=d.datum_params[6]/1e6+1))),c&&(d.datum_type=s,d.grids=c),d.a=n,d.b=r,d.es=u,d.ep2=h,d}It.wgs84={towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},It.ch1903={towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},It.ggrs87={towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},It.nad83={towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},It.nad27={nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},It.potsdam={towgs84:"598.1,73.7,418.2,0.202,0.045,-2.455,6.7",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},It.carthage={towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"},It.hermannskogel={towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Hermannskogel"},It.militargeographische_institut={towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Militar-Geographische Institut"},It.osni52={towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},It.ire65={towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},It.rassadiran={towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},It.nzgd49={towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},It.osgb36={towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Airy 1830"},It.s_jtsk={towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},It.beduaram={towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},It.gunung_segara={towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},It.rnb72={towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"};var jt=Rt,Nt={};function Bt(t,e){var n=new DataView(e),r=Gt(n),i=zt(n,r),o=qt(n,i,r),s={header:i,subgrids:o};return Nt[t]=s,s}function Dt(t){if(void 0===t)return null;var e=t.split(",");return e.map(Ft)}function Ft(t){if(0===t.length)return null;var e="@"===t[0];return e&&(t=t.slice(1)),"null"===t?{name:"null",mandatory:!e,grid:null,isNull:!0}:{name:t,mandatory:!e,grid:Nt[t]||null,isNull:!1}}function Ut(t){return t/3600*Math.PI/180}function Gt(t){var e=t.getInt32(8,!1);return 11!==e&&(e=t.getInt32(8,!0),11!==e&&console.warn("Failed to detect nadgrid endian-ness, defaulting to little-endian"),!0)}function zt(t,e){return{nFields:t.getInt32(8,e),nSubgridFields:t.getInt32(24,e),nSubgrids:t.getInt32(40,e),shiftType:Ht(t,56,64).trim(),fromSemiMajorAxis:t.getFloat64(120,e),fromSemiMinorAxis:t.getFloat64(136,e),toSemiMajorAxis:t.getFloat64(152,e),toSemiMinorAxis:t.getFloat64(168,e)}}function Ht(t,e,n){return String.fromCharCode.apply(null,new Uint8Array(t.buffer.slice(e,n)))}function qt(t,e,n){for(var r=176,i=[],o=0;o5e-11)&&(t.datum_type===i?t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]:t.datum_type!==o||t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]&&t.datum_params[3]===e.datum_params[3]&&t.datum_params[4]===e.datum_params[4]&&t.datum_params[5]===e.datum_params[5]&&t.datum_params[6]===e.datum_params[6]))}function Xt(t,e,n){var r,i,o,s,a=t.x,l=t.y,u=t.z?t.z:0;if(l<-d&&l>-1.001*d)l=-d;else if(l>d&&l<1.001*d)l=d;else{if(l<-d)return{x:-1/0,y:-1/0,z:t.z};if(l>d)return{x:1/0,y:1/0,z:t.z}}return a>Math.PI&&(a-=2*Math.PI),i=Math.sin(l),s=Math.cos(l),o=i*i,r=n/Math.sqrt(1-e*o),{x:(r+u)*s*Math.cos(a),y:(r+u)*s*Math.sin(a),z:(r*(1-e)+u)*i}}function Jt(t,e,n,r){var i,o,s,a,l,u,h,c,f,p,m,g,y,_,v,b,w=1e-12,x=w*w,k=30,S=t.x,M=t.y,A=t.z?t.z:0;if(i=Math.sqrt(S*S+M*M),o=Math.sqrt(S*S+M*M+A*A),i/nx&&yr.y||d>r.x||gu&&Math.abs(s.y)>u);if(l<0)return console.log("Inverse grid shift iterator failed to converge."),r;r.x=ht(o.x+n.ll[0]),r.y=o.y+n.ll[1]}else isNaN(o.x)||(r.x=t.x+o.x,r.y=t.y+o.y);return r}function oe(t,e){var n,r={x:t.x/e.del[0],y:t.y/e.del[1]},i={x:Math.floor(r.x),y:Math.floor(r.y)},o={x:r.x-1*i.x,y:r.y-1*i.y},s={x:Number.NaN,y:Number.NaN};if(i.x<0||i.x>=e.lim[0])return s;if(i.y<0||i.y>=e.lim[1])return s;n=i.y*e.lim[0]+i.x;var a={x:e.cvs[n][0],y:e.cvs[n][1]};n++;var l={x:e.cvs[n][0],y:e.cvs[n][1]};n+=e.lim[0];var u={x:e.cvs[n][0],y:e.cvs[n][1]};n--;var h={x:e.cvs[n][0],y:e.cvs[n][1]},c=o.x*o.y,f=o.x*(1-o.y),d=(1-o.x)*(1-o.y),p=(1-o.x)*o.y;return s.x=d*a.x+f*l.x+p*h.x+c*u.x,s.y=d*a.y+f*l.y+p*h.y+c*u.y,s}function se(t,e,n){var r,i,o,s=n.x,a=n.y,l=n.z||0,u={};for(o=0;o<3;o++)if(!e||2!==o||void 0!==n.z)switch(0===o?(r=s,i=-1!=="ew".indexOf(t.axis[o])?"x":"y"):1===o?(r=a,i=-1!=="ns".indexOf(t.axis[o])?"y":"x"):(r=l,i="z"),t.axis[o]){case"e":u[i]=r;break;case"w":u[i]=-r;break;case"n":u[i]=r;break;case"s":u[i]=-r;break;case"u":void 0!==n[i]&&(u.z=r);break;case"d":void 0!==n[i]&&(u.z=-r);break;default:return null}return u}function ae(t){var e={x:t[0],y:t[1]};return t.length>2&&(e.z=t[2]),t.length>3&&(e.m=t[3]),e}function le(t){ue(t.x),ue(t.y)}function ue(t){if("function"===typeof Number.isFinite){if(Number.isFinite(t))return;throw new TypeError("coordinates must be finite numbers")}if("number"!==typeof t||t!==t||!isFinite(t))throw new TypeError("coordinates must be finite numbers")}function he(t,e){return(t.datum.datum_type===i||t.datum.datum_type===o||t.datum.datum_type===s)&&"WGS84"!==e.datumCode||(e.datum.datum_type===i||e.datum.datum_type===o||e.datum.datum_type===s)&&"WGS84"!==t.datumCode}function ce(t,e,n,r){var i;n=Array.isArray(n)?ae(n):{x:n.x,y:n.y,z:n.z,m:n.m};var o=void 0!==n.z;if(le(n),t.datum&&e.datum&&he(t,e)&&(i=new Kt("WGS84"),n=ce(t,i,n,r),t=i),r&&"enu"!==t.axis&&(n=se(t,!1,n)),"longlat"===t.projName)n={x:n.x*_,y:n.y*_,z:n.z||0};else if(t.to_meter&&(n={x:n.x*t.to_meter,y:n.y*t.to_meter,z:n.z||0}),n=t.inverse(n),!n)return;if(t.from_greenwich&&(n.x+=t.from_greenwich),n=ne(t.datum,e.datum,n),n)return e.from_greenwich&&(n={x:n.x-e.from_greenwich,y:n.y,z:n.z||0}),"longlat"===e.projName?n={x:n.x*v,y:n.y*v,z:n.z||0}:(n=e.forward(n),e.to_meter&&(n={x:n.x/e.to_meter,y:n.y/e.to_meter,z:n.z||0})),r&&"enu"!==e.axis?se(e,!0,n):(n&&!o&&delete n.z,n)}var fe=Kt("WGS84");function de(t,e,n,r){var i,o,s;return Array.isArray(n)?(i=ce(t,e,n,r)||{x:NaN,y:NaN},n.length>2?"undefined"!==typeof t.name&&"geocent"===t.name||"undefined"!==typeof e.name&&"geocent"===e.name?"number"===typeof i.z?[i.x,i.y,i.z].concat(n.splice(3)):[i.x,i.y,n[2]].concat(n.splice(3)):[i.x,i.y].concat(n.splice(2)):[i.x,i.y]):(o=ce(t,e,n,r),s=Object.keys(n),2===s.length||s.forEach((function(r){if("undefined"!==typeof t.name&&"geocent"===t.name||"undefined"!==typeof e.name&&"geocent"===e.name){if("x"===r||"y"===r||"z"===r)return}else if("x"===r||"y"===r)return;o[r]=n[r]})),o)}function pe(t){return t instanceof Kt?t:t.oProj?t.oProj:Kt(t)}function me(t,e,n){t=pe(t);var r,i=!1;return"undefined"===typeof e?(e=t,t=fe,i=!0):("undefined"!==typeof e.x||Array.isArray(e))&&(n=e,e=t,t=fe,i=!0),e=pe(e),n?de(t,e,n):(r={forward:function(n,r){return de(t,e,n,r)},inverse:function(n,r){return de(e,t,n,r)}},i&&(r.oProj=e),r)}var ge=me,ye=6,_e="AJSAJS",ve="AFAFAF",be=65,we=73,xe=79,ke=86,Se=90,Me={forward:Ae,inverse:Ee,toPoint:Ce};function Ae(t,e){return e=e||5,Re(Pe({lat:t[1],lon:t[0]}),e)}function Ee(t){var e=Le(De(t.toUpperCase()));return e.lat&&e.lon?[e.lon,e.lat,e.lon,e.lat]:[e.left,e.bottom,e.right,e.top]}function Ce(t){var e=Le(De(t.toUpperCase()));return e.lat&&e.lon?[e.lon,e.lat]:[(e.left+e.right)/2,(e.top+e.bottom)/2]}function Te(t){return t*(Math.PI/180)}function Oe(t){return t/Math.PI*180}function Pe(t){var e,n,r,i,o,s,a,l,u,h=t.lat,c=t.lon,f=6378137,d=.00669438,p=.9996,m=Te(h),g=Te(c);u=Math.floor((c+180)/6)+1,180===c&&(u=60),h>=56&&h<64&&c>=3&&c<12&&(u=32),h>=72&&h<84&&(c>=0&&c<9?u=31:c>=9&&c<21?u=33:c>=21&&c<33?u=35:c>=33&&c<42&&(u=37)),e=6*(u-1)-180+3,l=Te(e),n=d/(1-d),r=f/Math.sqrt(1-d*Math.sin(m)*Math.sin(m)),i=Math.tan(m)*Math.tan(m),o=n*Math.cos(m)*Math.cos(m),s=Math.cos(m)*(g-l),a=f*((1-d/4-3*d*d/64-5*d*d*d/256)*m-(3*d/8+3*d*d/32+45*d*d*d/1024)*Math.sin(2*m)+(15*d*d/256+45*d*d*d/1024)*Math.sin(4*m)-35*d*d*d/3072*Math.sin(6*m));var y=p*r*(s+(1-i+o)*s*s*s/6+(5-18*i+i*i+72*o-58*n)*s*s*s*s*s/120)+5e5,_=p*(a+r*Math.tan(m)*(s*s/2+(5-i+9*o+4*o*o)*s*s*s*s/24+(61-58*i+i*i+600*o-330*n)*s*s*s*s*s*s/720));return h<0&&(_+=1e7),{northing:Math.round(_),easting:Math.round(y),zoneNumber:u,zoneLetter:Ie(h)}}function Le(t){var e=t.northing,n=t.easting,r=t.zoneLetter,i=t.zoneNumber;if(i<0||i>60)return null;var o,s,a,l,u,h,c,f,d,p,m=.9996,g=6378137,y=.00669438,_=(1-Math.sqrt(1-y))/(1+Math.sqrt(1-y)),v=n-5e5,b=e;r<"N"&&(b-=1e7),f=6*(i-1)-180+3,o=y/(1-y),c=b/m,d=c/(g*(1-y/4-3*y*y/64-5*y*y*y/256)),p=d+(3*_/2-27*_*_*_/32)*Math.sin(2*d)+(21*_*_/16-55*_*_*_*_/32)*Math.sin(4*d)+151*_*_*_/96*Math.sin(6*d),s=g/Math.sqrt(1-y*Math.sin(p)*Math.sin(p)),a=Math.tan(p)*Math.tan(p),l=o*Math.cos(p)*Math.cos(p),u=g*(1-y)/Math.pow(1-y*Math.sin(p)*Math.sin(p),1.5),h=v/(s*m);var w=p-s*Math.tan(p)/u*(h*h/2-(5+3*a+10*l-4*l*l-9*o)*h*h*h*h/24+(61+90*a+298*l+45*a*a-252*o-3*l*l)*h*h*h*h*h*h/720);w=Oe(w);var x,k=(h-(1+2*a+l)*h*h*h/6+(5-2*l+28*a-3*l*l+8*o+24*a*a)*h*h*h*h*h/120)/Math.cos(p);if(k=f+Oe(k),t.accuracy){var S=Le({northing:t.northing+t.accuracy,easting:t.easting+t.accuracy,zoneLetter:t.zoneLetter,zoneNumber:t.zoneNumber});x={top:S.lat,right:S.lon,bottom:w,left:k}}else x={lat:w,lon:k};return x}function Ie(t){var e="Z";return 84>=t&&t>=72?e="X":72>t&&t>=64?e="W":64>t&&t>=56?e="V":56>t&&t>=48?e="U":48>t&&t>=40?e="T":40>t&&t>=32?e="S":32>t&&t>=24?e="R":24>t&&t>=16?e="Q":16>t&&t>=8?e="P":8>t&&t>=0?e="N":0>t&&t>=-8?e="M":-8>t&&t>=-16?e="L":-16>t&&t>=-24?e="K":-24>t&&t>=-32?e="J":-32>t&&t>=-40?e="H":-40>t&&t>=-48?e="G":-48>t&&t>=-56?e="F":-56>t&&t>=-64?e="E":-64>t&&t>=-72?e="D":-72>t&&t>=-80&&(e="C"),e}function Re(t,e){var n="00000"+t.easting,r="00000"+t.northing;return t.zoneNumber+t.zoneLetter+je(t.easting,t.northing,t.zoneNumber)+n.substr(n.length-5,e)+r.substr(r.length-5,e)}function je(t,e,n){var r=Ne(n),i=Math.floor(t/1e5),o=Math.floor(e/1e5)%20;return Be(i,o,r)}function Ne(t){var e=t%ye;return 0===e&&(e=ye),e}function Be(t,e,n){var r=n-1,i=_e.charCodeAt(r),o=ve.charCodeAt(r),s=i+t-1,a=o+e,l=!1;s>Se&&(s=s-Se+be-1,l=!0),(s===we||iwe||(s>we||ixe||(s>xe||iSe&&(s=s-Se+be-1),a>ke?(a=a-ke+be-1,l=!0):l=!1,(a===we||owe||(a>we||oxe||(a>xe||oke&&(a=a-ke+be-1);var u=String.fromCharCode(s)+String.fromCharCode(a);return u}function De(t){if(t&&0===t.length)throw"MGRSPoint coverting from nothing";var e,n=t.length,r=null,i="",o=0;while(!/[A-Z]/.test(e=t.charAt(o))){if(o>=2)throw"MGRSPoint bad conversion from: "+t;i+=e,o++}var s=parseInt(i,10);if(0===o||o+3>n)throw"MGRSPoint bad conversion from: "+t;var a=t.charAt(o++);if(a<="A"||"B"===a||"Y"===a||a>="Z"||"I"===a||"O"===a)throw"MGRSPoint zone letter "+a+" not handled: "+t;r=t.substring(o,o+=2);var l=Ne(s),u=Fe(r.charAt(0),l),h=Ue(r.charAt(1),l);while(h0&&(f=1e5/Math.pow(10,y),d=t.substring(o,o+y),_=parseFloat(d)*f,p=t.substring(o+y),v=parseFloat(p)*f),m=_+u,g=v+h,{easting:m,northing:g,zoneLetter:a,zoneNumber:s,accuracy:f}}function Fe(t,e){var n=_e.charCodeAt(e-1),r=1e5,i=!1;while(n!==t.charCodeAt(0)){if(n++,n===we&&n++,n===xe&&n++,n>Se){if(i)throw"Bad character: "+t;n=be,i=!0}r+=1e5}return r}function Ue(t,e){if(t>"V")throw"MGRSPoint given invalid Northing "+t;var n=ve.charCodeAt(e-1),r=0,i=!1;while(n!==t.charCodeAt(0)){if(n++,n===we&&n++,n===xe&&n++,n>ke){if(i)throw"Bad character: "+t;n=be,i=!0}r+=1e5}return r}function Ge(t){var e;switch(t){case"C":e=11e5;break;case"D":e=2e6;break;case"E":e=28e5;break;case"F":e=37e5;break;case"G":e=46e5;break;case"H":e=55e5;break;case"J":e=64e5;break;case"K":e=73e5;break;case"L":e=82e5;break;case"M":e=91e5;break;case"N":e=0;break;case"P":e=8e5;break;case"Q":e=17e5;break;case"R":e=26e5;break;case"S":e=35e5;break;case"T":e=44e5;break;case"U":e=53e5;break;case"V":e=62e5;break;case"W":e=7e6;break;case"X":e=79e5;break;default:e=-1}if(e>=0)return e;throw"Invalid zone letter: "+t}function ze(t,e,n){if(!(this instanceof ze))return new ze(t,e,n);if(Array.isArray(t))this.x=t[0],this.y=t[1],this.z=t[2]||0;else if("object"===typeof t)this.x=t.x,this.y=t.y,this.z=t.z||0;else if("string"===typeof t&&"undefined"===typeof e){var r=t.split(",");this.x=parseFloat(r[0],10),this.y=parseFloat(r[1],10),this.z=parseFloat(r[2],10)||0}else this.x=t,this.y=e,this.z=n||0;console.warn("proj4.Point will be removed in version 3, use proj4.toPoint")}ze.fromMGRS=function(t){return new ze(Ce(t))},ze.prototype.toMGRS=function(t){return Ae([this.x,this.y],t)};var He=ze,qe=1,Ze=.25,We=.046875,Ve=.01953125,Qe=.01068115234375,Ke=.75,Ye=.46875,Xe=.013020833333333334,Je=.007120768229166667,$e=.3645833333333333,tn=.005696614583333333,en=.3076171875;function nn(t){var e=[];e[0]=qe-t*(Ze+t*(We+t*(Ve+t*Qe))),e[1]=t*(Ke-t*(We+t*(Ve+t*Qe)));var n=t*t;return e[2]=n*(Ye-t*(Xe+t*Je)),n*=t,e[3]=n*($e-t*tn),e[4]=n*t*en,e}function rn(t,e,n,r){return n*=e,e*=e,r[0]*t-n*(r[1]+e*(r[2]+e*(r[3]+e*r[4])))}var on=20;function sn(t,e,n){for(var r=1/(1-e),i=t,o=on;o;--o){var s=Math.sin(i),a=1-e*s*s;if(a=(rn(i,s,Math.cos(i),n)-t)*(a*Math.sqrt(a))*r,i-=a,Math.abs(a)y?Math.tan(o):0,p=Math.pow(d,2),m=Math.pow(p,2);e=1-this.es*Math.pow(a,2),u/=Math.sqrt(e);var g=rn(o,a,l,this.en);n=this.a*(this.k0*u*(1+h/6*(1-p+c+h/20*(5-18*p+m+14*c-58*p*c+h/42*(61+179*m-m*p-479*p)))))+this.x0,r=this.a*(this.k0*(g-this.ml0+a*s*u/2*(1+h/12*(5-p+9*c+4*f+h/30*(61+m-58*p+270*c-330*p*c+h/56*(1385+543*m-m*p-3111*p))))))+this.y0}else{var _=l*Math.sin(s);if(Math.abs(Math.abs(_)-1)=1){if(_-1>y)return 93;r=0}else r=Math.acos(r);o<0&&(r=-r),r=this.a*this.k0*(r-this.lat0)+this.y0}return t.x=n,t.y=r,t}function un(t){var e,n,r,i,o=(t.x-this.x0)*(1/this.a),s=(t.y-this.y0)*(1/this.a);if(this.es)if(e=this.ml0+s/this.k0,n=sn(e,this.es,this.en),Math.abs(n)y?Math.tan(n):0,h=this.ep2*Math.pow(l,2),c=Math.pow(h,2),f=Math.pow(u,2),p=Math.pow(f,2);e=1-this.es*Math.pow(a,2);var m=o*Math.sqrt(e)/this.k0,g=Math.pow(m,2);e*=u,r=n-e*g/(1-this.es)*.5*(1-g/12*(5+3*f-9*h*f+h-4*c-g/30*(61+90*f-252*h*f+45*p+46*h-g/56*(1385+3633*f+4095*p+1574*p*f)))),i=ht(this.long0+m*(1-g/6*(1+2*f+h-g/20*(5+28*f+24*p+8*h*f+6*h-g/42*(61+662*f+1320*p+720*p*f))))/l)}else r=d*ut(s),i=0;else{var _=Math.exp(o/this.k0),v=.5*(_-1/_),b=this.lat0+s/this.k0,w=Math.cos(b);e=Math.sqrt((1-Math.pow(w,2))/(1+Math.pow(v,2))),r=Math.asin(e),s<0&&(r=-r),i=0===v&&0===w?0:ht(Math.atan2(v,w)+this.long0)}return t.x=i,t.y=r,t}var hn=["Fast_Transverse_Mercator","Fast Transverse Mercator"],cn={init:an,forward:ln,inverse:un,names:hn};function fn(t){var e=Math.exp(t);return e=(e-1/e)/2,e}function dn(t,e){t=Math.abs(t),e=Math.abs(e);var n=Math.max(t,e),r=Math.min(t,e)/(n||1);return n*Math.sqrt(1+Math.pow(r,2))}function pn(t){var e=1+t,n=e-1;return 0===n?t:t*Math.log(e)/n}function mn(t){var e=Math.abs(t);return e=pn(e*(1+e/(dn(1,e)+1))),t<0?-e:e}function gn(t,e){var n,r=2*Math.cos(2*e),i=t.length-1,o=t[i],s=0;while(--i>=0)n=r*o-s+t[i],s=o,o=n;return e+n*Math.sin(2*e)}function yn(t,e){var n,r=2*Math.cos(e),i=t.length-1,o=t[i],s=0;while(--i>=0)n=r*o-s+t[i],s=o,o=n;return Math.sin(e)*n}function _n(t){var e=Math.exp(t);return e=(e+1/e)/2,e}function vn(t,e,n){var r,i,o=Math.sin(e),s=Math.cos(e),a=fn(n),l=_n(n),u=2*s*l,h=-2*o*a,c=t.length-1,f=t[c],d=0,p=0,m=0;while(--c>=0)r=p,i=d,p=f,d=m,f=u*p-r-h*d+t[c],m=h*p-i+u*d;return u=o*l,h=s*a,[u*f-h*m,u*m+h*f]}function bn(){if(!this.approx&&(isNaN(this.es)||this.es<=0))throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION["Fast_Transverse_Mercator"] in the WKT.');this.approx&&(cn.init.apply(this),this.forward=cn.forward,this.inverse=cn.inverse),this.x0=void 0!==this.x0?this.x0:0,this.y0=void 0!==this.y0?this.y0:0,this.long0=void 0!==this.long0?this.long0:0,this.lat0=void 0!==this.lat0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var t=this.es/(1+Math.sqrt(1-this.es)),e=t/(2-t),n=e;this.cgb[0]=e*(2+e*(-2/3+e*(e*(116/45+e*(26/45+e*(-2854/675)))-2))),this.cbg[0]=e*(e*(2/3+e*(4/3+e*(-82/45+e*(32/45+e*(4642/4725)))))-2),n*=e,this.cgb[1]=n*(7/3+e*(e*(-227/45+e*(2704/315+e*(2323/945)))-1.6)),this.cbg[1]=n*(5/3+e*(-16/15+e*(-13/9+e*(904/315+e*(-1522/945))))),n*=e,this.cgb[2]=n*(56/15+e*(-136/35+e*(-1262/105+e*(73814/2835)))),this.cbg[2]=n*(-26/15+e*(34/21+e*(1.6+e*(-12686/2835)))),n*=e,this.cgb[3]=n*(4279/630+e*(-332/35+e*(-399572/14175))),this.cbg[3]=n*(1237/630+e*(e*(-24832/14175)-2.4)),n*=e,this.cgb[4]=n*(4174/315+e*(-144838/6237)),this.cbg[4]=n*(-734/315+e*(109598/31185)),n*=e,this.cgb[5]=n*(601676/22275),this.cbg[5]=n*(444337/155925),n=Math.pow(e,2),this.Qn=this.k0/(1+e)*(1+n*(1/4+n*(1/64+n/256))),this.utg[0]=e*(e*(2/3+e*(-37/96+e*(1/360+e*(81/512+e*(-96199/604800)))))-.5),this.gtu[0]=e*(.5+e*(-2/3+e*(5/16+e*(41/180+e*(-127/288+e*(7891/37800)))))),this.utg[1]=n*(-1/48+e*(-1/15+e*(437/1440+e*(-46/105+e*(1118711/3870720))))),this.gtu[1]=n*(13/48+e*(e*(557/1440+e*(281/630+e*(-1983433/1935360)))-.6)),n*=e,this.utg[2]=n*(-17/480+e*(37/840+e*(209/4480+e*(-5569/90720)))),this.gtu[2]=n*(61/240+e*(-103/140+e*(15061/26880+e*(167603/181440)))),n*=e,this.utg[3]=n*(-4397/161280+e*(11/504+e*(830251/7257600))),this.gtu[3]=n*(49561/161280+e*(-179/168+e*(6601661/7257600))),n*=e,this.utg[4]=n*(-4583/161280+e*(108847/3991680)),this.gtu[4]=n*(34729/80640+e*(-3418889/1995840)),n*=e,this.utg[5]=n*(-20648693/638668800),this.gtu[5]=.6650675310896665*n;var r=gn(this.cbg,this.lat0);this.Zb=-this.Qn*(r+yn(this.gtu,2*r))}function wn(t){var e=ht(t.x-this.long0),n=t.y;n=gn(this.cbg,n);var r=Math.sin(n),i=Math.cos(n),o=Math.sin(e),s=Math.cos(e);n=Math.atan2(r,s*i),e=Math.atan2(o*i,dn(r,i*s)),e=mn(Math.tan(e));var a,l,u=vn(this.gtu,2*n,2*e);return n+=u[0],e+=u[1],Math.abs(e)<=2.623395162778?(a=this.a*(this.Qn*e)+this.x0,l=this.a*(this.Qn*n+this.Zb)+this.y0):(a=1/0,l=1/0),t.x=a,t.y=l,t}function xn(t){var e,n,r=(t.x-this.x0)*(1/this.a),i=(t.y-this.y0)*(1/this.a);if(i=(i-this.Zb)/this.Qn,r/=this.Qn,Math.abs(r)<=2.623395162778){var o=vn(this.utg,2*i,2*r);i+=o[0],r+=o[1],r=Math.atan(fn(r));var s=Math.sin(i),a=Math.cos(i),l=Math.sin(r),u=Math.cos(r);i=Math.atan2(s*u,dn(l,u*a)),r=Math.atan2(l,u*a),e=ht(r+this.long0),n=gn(this.cgb,i)}else e=1/0,n=1/0;return t.x=e,t.y=n,t}var kn=["Extended_Transverse_Mercator","Extended Transverse Mercator","etmerc","Transverse_Mercator","Transverse Mercator","Gauss Kruger","Gauss_Kruger","tmerc"],Sn={init:bn,forward:wn,inverse:xn,names:kn};function Mn(t,e){if(void 0===t){if(t=Math.floor(30*(ht(e)+Math.PI)/Math.PI)+1,t<0)return 0;if(t>60)return 60}return t}var An="etmerc";function En(){var t=Mn(this.zone,this.long0);if(void 0===t)throw new Error("unknown utm zone");this.lat0=0,this.long0=(6*Math.abs(t)-183)*_,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,Sn.init.apply(this),this.forward=Sn.forward,this.inverse=Sn.inverse}var Cn=["Universal Transverse Mercator System","utm"],Tn={init:En,names:Cn,dependsOn:An};function On(t,e){return Math.pow((1-t)/(1+t),e)}var Pn=20;function Ln(){var t=Math.sin(this.lat0),e=Math.cos(this.lat0);e*=e,this.rc=Math.sqrt(1-this.es)/(1-this.es*t*t),this.C=Math.sqrt(1+this.es*e*e/(1-this.es)),this.phic0=Math.asin(t/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+b)/(Math.pow(Math.tan(.5*this.lat0+b),this.C)*On(this.e*t,this.ratexp))}function In(t){var e=t.x,n=t.y;return t.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*n+b),this.C)*On(this.e*Math.sin(n),this.ratexp))-d,t.x=this.C*e,t}function Rn(t){for(var e=1e-14,n=t.x/this.C,r=t.y,i=Math.pow(Math.tan(.5*r+b)/this.K,1/this.C),o=Pn;o>0;--o){if(r=2*Math.atan(i*On(this.e*Math.sin(t.y),-.5*this.e))-d,Math.abs(r-t.y)0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),1===this.k0&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=y&&Math.abs(Math.cos(this.lat_ts))>y&&(this.k0=.5*this.cons*lt(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/ct(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=lt(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-d,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))}function qn(t){var e,n,r,i,o,s,a=t.x,l=t.y,u=Math.sin(l),h=Math.cos(l),c=ht(a-this.long0);return Math.abs(Math.abs(a-this.long0)-Math.PI)<=y&&Math.abs(l+this.lat0)<=y?(t.x=NaN,t.y=NaN,t):this.sphere?(e=2*this.k0/(1+this.sinlat0*u+this.coslat0*h*Math.cos(c)),t.x=this.a*e*h*Math.sin(c)+this.x0,t.y=this.a*e*(this.coslat0*u-this.sinlat0*h*Math.cos(c))+this.y0,t):(n=2*Math.atan(this.ssfn_(l,u,this.e))-d,i=Math.cos(n),r=Math.sin(n),Math.abs(this.coslat0)<=y?(o=ct(this.e,l*this.con,this.con*u),s=2*this.a*this.k0*o/this.cons,t.x=this.x0+s*Math.sin(a-this.long0),t.y=this.y0-this.con*s*Math.cos(a-this.long0),t):(Math.abs(this.sinlat0)0?ht(this.long0+Math.atan2(t.x,-1*t.y)):ht(this.long0+Math.atan2(t.x,t.y)):ht(this.long0+Math.atan2(t.x*Math.sin(a),s*this.coslat0*Math.cos(a)-t.y*this.sinlat0*Math.sin(a))),t.x=e,t.y=n,t)}if(Math.abs(this.coslat0)<=y){if(s<=y)return n=this.lat0,e=this.long0,t.x=e,t.y=n,t;t.x*=this.con,t.y*=this.con,r=s*this.cons/(2*this.a*this.k0),n=this.con*ft(this.e,r),e=this.con*ht(this.con*this.long0+Math.atan2(t.x,-1*t.y))}else i=2*Math.atan(s*this.cosX0/(2*this.a*this.k0*this.ms1)),e=this.long0,s<=y?o=this.X0:(o=Math.asin(Math.cos(i)*this.sinX0+t.y*Math.sin(i)*this.cosX0/s),e=ht(this.long0+Math.atan2(t.x*Math.sin(i),s*this.cosX0*Math.cos(i)-t.y*this.sinX0*Math.sin(i)))),n=-1*ft(this.e,Math.tan(.5*(d+o)));return t.x=e,t.y=n,t}var Wn=["stere","Stereographic_South_Pole","Polar Stereographic (variant B)","Polar_Stereographic"],Vn={init:Hn,forward:qn,inverse:Zn,names:Wn,ssfn_:zn};function Qn(){var t=this.lat0;this.lambda0=this.long0;var e=Math.sin(t),n=this.a,r=this.rf,i=1/r,o=2*i-Math.pow(i,2),s=this.e=Math.sqrt(o);this.R=this.k0*n*Math.sqrt(1-o)/(1-o*Math.pow(e,2)),this.alpha=Math.sqrt(1+o/(1-o)*Math.pow(Math.cos(t),4)),this.b0=Math.asin(e/this.alpha);var a=Math.log(Math.tan(Math.PI/4+this.b0/2)),l=Math.log(Math.tan(Math.PI/4+t/2)),u=Math.log((1+s*e)/(1-s*e));this.K=a-this.alpha*l+this.alpha*s/2*u}function Kn(t){var e=Math.log(Math.tan(Math.PI/4-t.y/2)),n=this.e/2*Math.log((1+this.e*Math.sin(t.y))/(1-this.e*Math.sin(t.y))),r=-this.alpha*(e+n)+this.K,i=2*(Math.atan(Math.exp(r))-Math.PI/4),o=this.alpha*(t.x-this.lambda0),s=Math.atan(Math.sin(o)/(Math.sin(this.b0)*Math.tan(i)+Math.cos(this.b0)*Math.cos(o))),a=Math.asin(Math.cos(this.b0)*Math.sin(i)-Math.sin(this.b0)*Math.cos(i)*Math.cos(o));return t.y=this.R/2*Math.log((1+Math.sin(a))/(1-Math.sin(a)))+this.y0,t.x=this.R*s+this.x0,t}function Yn(t){var e=t.x-this.x0,n=t.y-this.y0,r=e/this.R,i=2*(Math.atan(Math.exp(n/this.R))-Math.PI/4),o=Math.asin(Math.cos(this.b0)*Math.sin(i)+Math.sin(this.b0)*Math.cos(i)*Math.cos(r)),s=Math.atan(Math.sin(r)/(Math.cos(this.b0)*Math.cos(r)-Math.sin(this.b0)*Math.tan(i))),a=this.lambda0+s/this.alpha,l=0,u=o,h=-1e3,c=0;while(Math.abs(u-h)>1e-7){if(++c>20)return;l=1/this.alpha*(Math.log(Math.tan(Math.PI/4+o/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(u))/2)),h=u,u=2*Math.atan(Math.exp(l))-Math.PI/2}return t.x=a,t.y=u,t}var Xn=["somerc"],Jn={init:Qn,forward:Kn,inverse:Yn,names:Xn},$n=1e-7;function tr(t){var e=["Hotine_Oblique_Mercator","Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],n="object"===typeof t.PROJECTION?Object.keys(t.PROJECTION)[0]:t.PROJECTION;return"no_uoff"in t||"no_off"in t||-1!==e.indexOf(n)}function er(){var t,e,n,r,i,o,s,a,l,u,h,c=0,f=0,p=0,m=0,g=0,v=0,x=0;this.no_off=tr(this),this.no_rot="no_rot"in this;var k=!1;"alpha"in this&&(k=!0);var S=!1;if("rectified_grid_angle"in this&&(S=!0),k&&(x=this.alpha),S&&(c=this.rectified_grid_angle*_),k||S)f=this.longc;else if(p=this.long1,g=this.lat1,m=this.long2,v=this.lat2,Math.abs(g-v)<=$n||(t=Math.abs(g))<=$n||Math.abs(t-d)<=$n||Math.abs(Math.abs(this.lat0)-d)<=$n||Math.abs(Math.abs(v)-d)<=$n)throw new Error;var M=1-this.es;e=Math.sqrt(M),Math.abs(this.lat0)>y?(a=Math.sin(this.lat0),n=Math.cos(this.lat0),t=1-this.es*a*a,this.B=n*n,this.B=Math.sqrt(1+this.es*this.B*this.B/M),this.A=this.B*this.k0*e/t,r=this.B*e/(n*Math.sqrt(t)),i=r*r-1,i<=0?i=0:(i=Math.sqrt(i),this.lat0<0&&(i=-i)),this.E=i+=r,this.E*=Math.pow(ct(this.e,this.lat0,a),this.B)):(this.B=1/e,this.A=this.k0,this.E=r=i=1),k||S?(k?(h=Math.asin(Math.sin(x)/r),S||(c=x)):(h=c,x=Math.asin(r*Math.sin(h))),this.lam0=f-Math.asin(.5*(i-1/i)*Math.tan(h))/this.B):(o=Math.pow(ct(this.e,g,Math.sin(g)),this.B),s=Math.pow(ct(this.e,v,Math.sin(v)),this.B),i=this.E/o,l=(s-o)/(s+o),u=this.E*this.E,u=(u-s*o)/(u+s*o),t=p-m,t<-Math.pi?m-=w:t>Math.pi&&(m+=w),this.lam0=ht(.5*(p+m)-Math.atan(u*Math.tan(.5*this.B*(p-m))/l)/this.B),h=Math.atan(2*Math.sin(this.B*ht(p-this.lam0))/(i-1/i)),c=x=Math.asin(r*Math.sin(h))),this.singam=Math.sin(h),this.cosgam=Math.cos(h),this.sinrot=Math.sin(c),this.cosrot=Math.cos(c),this.rB=1/this.B,this.ArB=this.A*this.rB,this.BrA=1/this.ArB,this.A,this.B,this.no_off?this.u_0=0:(this.u_0=Math.abs(this.ArB*Math.atan(Math.sqrt(r*r-1)/Math.cos(x))),this.lat0<0&&(this.u_0=-this.u_0)),i=.5*h,this.v_pole_n=this.ArB*Math.log(Math.tan(b-i)),this.v_pole_s=this.ArB*Math.log(Math.tan(b+i))}function nr(t){var e,n,r,i,o,s,a,l,u={};if(t.x=t.x-this.lam0,Math.abs(Math.abs(t.y)-d)>y){if(o=this.E/Math.pow(ct(this.e,t.y,Math.sin(t.y)),this.B),s=1/o,e=.5*(o-s),n=.5*(o+s),i=Math.sin(this.B*t.x),r=(e*this.singam-i*this.cosgam)/n,Math.abs(Math.abs(r)-1)0?this.v_pole_n:this.v_pole_s,a=this.ArB*t.y;return this.no_rot?(u.x=a,u.y=l):(a-=this.u_0,u.x=l*this.cosrot+a*this.sinrot,u.y=a*this.cosrot-l*this.sinrot),u.x=this.a*u.x+this.x0,u.y=this.a*u.y+this.y0,u}function rr(t){var e,n,r,i,o,s,a,l={};if(t.x=(t.x-this.x0)*(1/this.a),t.y=(t.y-this.y0)*(1/this.a),this.no_rot?(n=t.y,e=t.x):(n=t.x*this.cosrot-t.y*this.sinrot,e=t.y*this.cosrot+t.x*this.sinrot+this.u_0),r=Math.exp(-this.BrA*n),i=.5*(r-1/r),o=.5*(r+1/r),s=Math.sin(this.BrA*e),a=(s*this.cosgam+i*this.singam)/o,Math.abs(Math.abs(a)-1)y?this.ns=Math.log(r/a)/Math.log(i/l):this.ns=e,isNaN(this.ns)&&(this.ns=e),this.f0=r/(this.ns*Math.pow(i,this.ns)),this.rh=this.a*this.f0*Math.pow(u,this.ns),this.title||(this.title="Lambert Conformal Conic")}}function ar(t){var e=t.x,n=t.y;Math.abs(2*Math.abs(n)-Math.PI)<=y&&(n=ut(n)*(d-2*y));var r,i,o=Math.abs(Math.abs(n)-d);if(o>y)r=ct(this.e,n,Math.sin(n)),i=this.a*this.f0*Math.pow(r,this.ns);else{if(o=n*this.ns,o<=0)return null;i=0}var s=this.ns*ht(e-this.long0);return t.x=this.k0*(i*Math.sin(s))+this.x0,t.y=this.k0*(this.rh-i*Math.cos(s))+this.y0,t}function lr(t){var e,n,r,i,o,s=(t.x-this.x0)/this.k0,a=this.rh-(t.y-this.y0)/this.k0;this.ns>0?(e=Math.sqrt(s*s+a*a),n=1):(e=-Math.sqrt(s*s+a*a),n=-1);var l=0;if(0!==e&&(l=Math.atan2(n*s,n*a)),0!==e||this.ns>0){if(n=1/this.ns,r=Math.pow(e/(this.a*this.f0),n),i=ft(this.e,r),-9999===i)return null}else i=-d;return o=ht(l/this.ns+this.long0),t.x=o,t.y=i,t}var ur=["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_1SP","Lambert_Conformal_Conic_2SP","lcc","Lambert Conic Conformal (1SP)","Lambert Conic Conformal (2SP)"],hr={init:sr,forward:ar,inverse:lr,names:ur};function cr(){this.a=6377397.155,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.4334234309119251),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq}function fr(t){var e,n,r,i,o,s,a,l=t.x,u=t.y,h=ht(l-this.long0);return e=Math.pow((1+this.e*Math.sin(u))/(1-this.e*Math.sin(u)),this.alfa*this.e/2),n=2*(Math.atan(this.k*Math.pow(Math.tan(u/2+this.s45),this.alfa)/e)-this.s45),r=-h*this.alfa,i=Math.asin(Math.cos(this.ad)*Math.sin(n)+Math.sin(this.ad)*Math.cos(n)*Math.cos(r)),o=Math.asin(Math.cos(n)*Math.sin(r)/Math.cos(i)),s=this.n*o,a=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(i/2+this.s45),this.n),t.y=a*Math.cos(s)/1,t.x=a*Math.sin(s)/1,this.czech||(t.y*=-1,t.x*=-1),t}function dr(t){var e,n,r,i,o,s,a,l,u=t.x;t.x=t.y,t.y=u,this.czech||(t.y*=-1,t.x*=-1),s=Math.sqrt(t.x*t.x+t.y*t.y),o=Math.atan2(t.y,t.x),i=o/Math.sin(this.s0),r=2*(Math.atan(Math.pow(this.ro0/s,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),e=Math.asin(Math.cos(this.ad)*Math.sin(r)-Math.sin(this.ad)*Math.cos(r)*Math.cos(i)),n=Math.asin(Math.cos(r)*Math.sin(i)/Math.cos(e)),t.x=this.long0-n/this.alfa,a=e,l=0;var h=0;do{t.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(e/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(a))/(1-this.e*Math.sin(a)),this.e/2))-this.s45),Math.abs(a-t.y)<1e-10&&(l=1),a=t.y,h+=1}while(0===l&&h<15);return h>=15?null:t}var pr=["Krovak","krovak"],mr={init:cr,forward:fr,inverse:dr,names:pr};function gr(t,e,n,r,i){return t*i-e*Math.sin(2*i)+n*Math.sin(4*i)-r*Math.sin(6*i)}function yr(t){return 1-.25*t*(1+t/16*(3+1.25*t))}function _r(t){return.375*t*(1+.25*t*(1+.46875*t))}function vr(t){return.05859375*t*t*(1+.75*t)}function br(t){return t*t*t*(35/3072)}function wr(t,e,n){var r=e*n;return t/Math.sqrt(1-r*r)}function xr(t){return Math.abs(t)1e-7?(n=t*e,(1-t*t)*(e/(1-n*n)-.5/t*Math.log((1-n)/(1+n)))):2*e}var Or=1,Pr=2,Lr=3,Ir=4;function Rr(){var t,e=Math.abs(this.lat0);if(Math.abs(e-d)0)switch(this.qp=Tr(this.e,1),this.mmf=.5/(1-this.es),this.apa=Hr(this.es),this.mode){case this.N_POLE:this.dd=1;break;case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=Tr(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd;break}else this.mode===this.OBLIQ&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))}function jr(t){var e,n,r,i,o,s,a,l,u,h,c=t.x,f=t.y;if(c=ht(c-this.long0),this.sphere){if(o=Math.sin(f),h=Math.cos(f),r=Math.cos(c),this.mode===this.OBLIQ||this.mode===this.EQUIT){if(n=this.mode===this.EQUIT?1+h*r:1+this.sinph0*o+this.cosph0*h*r,n<=y)return null;n=Math.sqrt(2/n),e=n*h*Math.sin(c),n*=this.mode===this.EQUIT?o:this.cosph0*o-this.sinph0*h*r}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(r=-r),Math.abs(f+this.lat0)=0?(e=(u=Math.sqrt(s))*i,n=r*(this.mode===this.S_POLE?u:-u)):e=n=0;break}}return t.x=this.a*e+this.x0,t.y=this.a*n+this.y0,t}function Nr(t){t.x-=this.x0,t.y-=this.y0;var e,n,r,i,o,s,a,l=t.x/this.a,u=t.y/this.a;if(this.sphere){var h,c=0,f=0;if(h=Math.sqrt(l*l+u*u),n=.5*h,n>1)return null;switch(n=2*Math.asin(n),this.mode!==this.OBLIQ&&this.mode!==this.EQUIT||(f=Math.sin(n),c=Math.cos(n)),this.mode){case this.EQUIT:n=Math.abs(h)<=y?0:Math.asin(u*f/h),l*=f,u=c*h;break;case this.OBLIQ:n=Math.abs(h)<=y?this.lat0:Math.asin(c*this.sinph0+u*f*this.cosph0/h),l*=f*this.cosph0,u=(c-Math.sin(n)*this.sinph0)*h;break;case this.N_POLE:u=-u,n=d-n;break;case this.S_POLE:n-=d;break}e=0!==u||this.mode!==this.EQUIT&&this.mode!==this.OBLIQ?Math.atan2(l,u):0}else{if(a=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(l/=this.dd,u*=this.dd,s=Math.sqrt(l*l+u*u),s1&&(t=t>1?1:-1),Math.asin(t)}function Qr(){Math.abs(this.lat1+this.lat2)y?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)}function Kr(t){var e=t.x,n=t.y;this.sin_phi=Math.sin(n),this.cos_phi=Math.cos(n);var r=Tr(this.e3,this.sin_phi),i=this.a*Math.sqrt(this.c-this.ns0*r)/this.ns0,o=this.ns0*ht(e-this.long0),s=i*Math.sin(o)+this.x0,a=this.rh-i*Math.cos(o)+this.y0;return t.x=s,t.y=a,t}function Yr(t){var e,n,r,i,o,s;return t.x-=this.x0,t.y=this.rh-t.y+this.y0,this.ns0>=0?(e=Math.sqrt(t.x*t.x+t.y*t.y),r=1):(e=-Math.sqrt(t.x*t.x+t.y*t.y),r=-1),i=0,0!==e&&(i=Math.atan2(r*t.x,r*t.y)),r=e*this.ns0/this.a,this.sphere?s=Math.asin((this.c-r*r)/(2*this.ns0)):(n=(this.c-r*r)/this.ns0,s=this.phi1z(this.e3,n)),o=ht(i/this.ns0+this.long0),t.x=o,t.y=s,t}function Xr(t,e){var n,r,i,o,s,a=Vr(.5*e);if(t0||Math.abs(s)<=y?(a=this.x0+this.a*o*n*Math.sin(r)/s,l=this.y0+this.a*o*(this.cos_p14*e-this.sin_p14*n*i)/s):(a=this.x0+this.infinity_dist*n*Math.sin(r),l=this.y0+this.infinity_dist*(this.cos_p14*e-this.sin_p14*n*i)),t.x=a,t.y=l,t}function ni(t){var e,n,r,i,o,s;return t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,t.x/=this.k0,t.y/=this.k0,(e=Math.sqrt(t.x*t.x+t.y*t.y))?(i=Math.atan2(e,this.rc),n=Math.sin(i),r=Math.cos(i),s=Vr(r*this.sin_p14+t.y*n*this.cos_p14/e),o=Math.atan2(t.x*n,e*this.cos_p14*r-t.y*this.sin_p14*n),o=ht(this.long0+o)):(s=this.phic0,o=0),t.x=o,t.y=s,t}var ri=["gnom"],ii={init:ti,forward:ei,inverse:ni,names:ri};function oi(t,e){var n=1-(1-t*t)/(2*t)*Math.log((1-t)/(1+t));if(Math.abs(Math.abs(e)-n)<1e-6)return e<0?-1*d:d;for(var r,i,o,s,a=Math.asin(.5*e),l=0;l<30;l++)if(i=Math.sin(a),o=Math.cos(a),s=t*i,r=Math.pow(1-s*s,2)/(2*o)*(e/(1-t*t)-i/(1-s*s)+.5/t*Math.log((1-s)/(1+s))),a+=r,Math.abs(r)<=1e-10)return a;return NaN}function si(){this.sphere||(this.k0=lt(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))}function ai(t){var e,n,r=t.x,i=t.y,o=ht(r-this.long0);if(this.sphere)e=this.x0+this.a*o*Math.cos(this.lat_ts),n=this.y0+this.a*Math.sin(i)/Math.cos(this.lat_ts);else{var s=Tr(this.e,Math.sin(i));e=this.x0+this.a*this.k0*o,n=this.y0+this.a*s*.5/this.k0}return t.x=e,t.y=n,t}function li(t){var e,n;return t.x-=this.x0,t.y-=this.y0,this.sphere?(e=ht(this.long0+t.x/this.a/Math.cos(this.lat_ts)),n=Math.asin(t.y/this.a*Math.cos(this.lat_ts))):(n=oi(this.e,2*t.y*this.k0/this.a),e=ht(this.long0+t.x/(this.a*this.k0))),t.x=e,t.y=n,t}var ui=["cea"],hi={init:si,forward:ai,inverse:li,names:ui};function ci(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Equidistant Cylindrical (Plate Carre)",this.rc=Math.cos(this.lat_ts)}function fi(t){var e=t.x,n=t.y,r=ht(e-this.long0),i=xr(n-this.lat0);return t.x=this.x0+this.a*r*this.rc,t.y=this.y0+this.a*i,t}function di(t){var e=t.x,n=t.y;return t.x=ht(this.long0+(e-this.x0)/(this.a*this.rc)),t.y=xr(this.lat0+(n-this.y0)/this.a),t}var pi=["Equirectangular","Equidistant_Cylindrical","eqc"],mi={init:ci,forward:fi,inverse:di,names:pi},gi=20;function yi(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=yr(this.es),this.e1=_r(this.es),this.e2=vr(this.es),this.e3=br(this.es),this.ml0=this.a*gr(this.e0,this.e1,this.e2,this.e3,this.lat0)}function _i(t){var e,n,r,i=t.x,o=t.y,s=ht(i-this.long0);if(r=s*Math.sin(o),this.sphere)Math.abs(o)<=y?(e=this.a*s,n=-1*this.a*this.lat0):(e=this.a*Math.sin(r)/Math.tan(o),n=this.a*(xr(o-this.lat0)+(1-Math.cos(r))/Math.tan(o)));else if(Math.abs(o)<=y)e=this.a*s,n=-1*this.ml0;else{var a=wr(this.a,this.e,Math.sin(o))/Math.tan(o);e=a*Math.sin(r),n=this.a*gr(this.e0,this.e1,this.e2,this.e3,o)-this.ml0+a*(1-Math.cos(r))}return t.x=e+this.x0,t.y=n+this.y0,t}function vi(t){var e,n,r,i,o,s,a,l,u;if(r=t.x-this.x0,i=t.y-this.y0,this.sphere)if(Math.abs(i+this.a*this.lat0)<=y)e=ht(r/this.a+this.long0),n=0;else{var h;for(s=this.lat0+i/this.a,a=r*r/this.a/this.a+s*s,l=s,o=gi;o;--o)if(h=Math.tan(l),u=-1*(s*(l*h+1)-l-.5*(l*l+a)*h)/((l-s)/h-1),l+=u,Math.abs(u)<=y){n=l;break}e=ht(this.long0+Math.asin(r*Math.tan(l)/this.a)/Math.sin(n))}else if(Math.abs(i+this.ml0)<=y)n=0,e=ht(this.long0+r/this.a);else{var c,f,d,p,m;for(s=(this.ml0+i)/this.a,a=r*r/this.a/this.a+s*s,l=s,o=gi;o;--o)if(m=this.e*Math.sin(l),c=Math.sqrt(1-m*m)*Math.tan(l),f=this.a*gr(this.e0,this.e1,this.e2,this.e3,l),d=this.e0-2*this.e1*Math.cos(2*l)+4*this.e2*Math.cos(4*l)-6*this.e3*Math.cos(6*l),p=f/this.a,u=(s*(c*p+1)-p-.5*c*(p*p+a))/(this.es*Math.sin(2*l)*(p*p+a-2*s*p)/(4*c)+(s-p)*(c*d-2/Math.sin(2*l))-d),l-=u,Math.abs(u)<=y){n=l;break}c=Math.sqrt(1-this.es*Math.pow(Math.sin(n),2))*Math.tan(n),e=ht(this.long0+Math.asin(r*c/this.a)/Math.sin(n))}return t.x=e,t.y=n,t}var bi=["Polyconic","poly"],wi={init:yi,forward:_i,inverse:vi,names:bi};function xi(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013}function ki(t){var e,n=t.x,r=t.y,i=r-this.lat0,o=n-this.long0,s=i/f*1e-5,a=o,l=1,u=0;for(e=1;e<=10;e++)l*=s,u+=this.A[e]*l;var h,c,d=u,p=a,m=1,g=0,y=0,_=0;for(e=1;e<=6;e++)h=m*d-g*p,c=g*d+m*p,m=h,g=c,y=y+this.B_re[e]*m-this.B_im[e]*g,_=_+this.B_im[e]*m+this.B_re[e]*g;return t.x=_*this.a+this.x0,t.y=y*this.a+this.y0,t}function Si(t){var e,n,r,i=t.x,o=t.y,s=i-this.x0,a=o-this.y0,l=a/this.a,u=s/this.a,h=1,c=0,d=0,p=0;for(e=1;e<=6;e++)n=h*l-c*u,r=c*l+h*u,h=n,c=r,d=d+this.C_re[e]*h-this.C_im[e]*c,p=p+this.C_im[e]*h+this.C_re[e]*c;for(var m=0;m.999999999999&&(n=.999999999999),e=Math.asin(n);var r=ht(this.long0+t.x/(.900316316158*this.a*Math.cos(e)));r<-Math.PI&&(r=-Math.PI),r>Math.PI&&(r=Math.PI),n=(2*e+Math.sin(2*e))/Math.PI,Math.abs(n)>1&&(n=1);var i=Math.asin(n);return t.x=r,t.y=i,t}var Gi=["Mollweide","moll"],zi={init:Di,forward:Fi,inverse:Ui,names:Gi};function Hi(){Math.abs(this.lat1+this.lat2)=0?(n=Math.sqrt(t.x*t.x+t.y*t.y),e=1):(n=-Math.sqrt(t.x*t.x+t.y*t.y),e=-1);var o=0;if(0!==n&&(o=Math.atan2(e*t.x,e*t.y)),this.sphere)return i=ht(this.long0+o/this.ns),r=xr(this.g-n/this.a),t.x=i,t.y=r,t;var s=this.g-n/this.a;return r=kr(s,this.e0,this.e1,this.e2,this.e3),i=ht(this.long0+o/this.ns),t.x=i,t.y=r,t}var Wi=["Equidistant_Conic","eqdc"],Vi={init:Hi,forward:qi,inverse:Zi,names:Wi};function Qi(){this.R=this.a}function Ki(t){var e,n,r=t.x,i=t.y,o=ht(r-this.long0);Math.abs(i)<=y&&(e=this.x0+this.R*o,n=this.y0);var s=Vr(2*Math.abs(i/Math.PI));(Math.abs(o)<=y||Math.abs(Math.abs(i)-d)<=y)&&(e=this.x0,n=i>=0?this.y0+Math.PI*this.R*Math.tan(.5*s):this.y0+Math.PI*this.R*-Math.tan(.5*s));var a=.5*Math.abs(Math.PI/o-o/Math.PI),l=a*a,u=Math.sin(s),h=Math.cos(s),c=h/(u+h-1),f=c*c,p=c*(2/u-1),m=p*p,g=Math.PI*this.R*(a*(c-m)+Math.sqrt(l*(c-m)*(c-m)-(m+l)*(f-m)))/(m+l);o<0&&(g=-g),e=this.x0+g;var _=l+c;return g=Math.PI*this.R*(p*_-a*Math.sqrt((m+l)*(l+1)-_*_))/(m+l),n=i>=0?this.y0+g:this.y0-g,t.x=e,t.y=n,t}function Yi(t){var e,n,r,i,o,s,a,l,u,h,c,f,d;return t.x-=this.x0,t.y-=this.y0,c=Math.PI*this.R,r=t.x/c,i=t.y/c,o=r*r+i*i,s=-Math.abs(i)*(1+o),a=s-2*i*i+r*r,l=-2*s+1+2*i*i+o*o,d=i*i/l+(2*a*a*a/l/l/l-9*s*a/l/l)/27,u=(s-a*a/3/l)/l,h=2*Math.sqrt(-u/3),c=3*d/u/h,Math.abs(c)>1&&(c=c>=0?1:-1),f=Math.acos(c)/3,n=t.y>=0?(-h*Math.cos(f+Math.PI/3)-a/3/l)*Math.PI:-(-h*Math.cos(f+Math.PI/3)-a/3/l)*Math.PI,e=Math.abs(r)2*d*this.a)return;return n=e/this.a,r=Math.sin(n),i=Math.cos(n),o=this.long0,Math.abs(e)<=y?s=this.lat0:(s=Vr(i*this.sin_p12+t.y*r*this.cos_p12/e),a=Math.abs(this.lat0)-d,o=Math.abs(a)<=y?this.lat0>=0?ht(this.long0+Math.atan2(t.x,-t.y)):ht(this.long0-Math.atan2(-t.x,t.y)):ht(this.long0+Math.atan2(t.x*r,e*this.cos_p12*i-t.y*this.sin_p12*r))),t.x=o,t.y=s,t}return l=yr(this.es),u=_r(this.es),h=vr(this.es),c=br(this.es),Math.abs(this.sin_p12-1)<=y?(f=this.a*gr(l,u,h,c,d),e=Math.sqrt(t.x*t.x+t.y*t.y),p=f-e,s=kr(p/this.a,l,u,h,c),o=ht(this.long0+Math.atan2(t.x,-1*t.y)),t.x=o,t.y=s,t):Math.abs(this.sin_p12+1)<=y?(f=this.a*gr(l,u,h,c,d),e=Math.sqrt(t.x*t.x+t.y*t.y),p=e-f,s=kr(p/this.a,l,u,h,c),o=ht(this.long0+Math.atan2(t.x,t.y)),t.x=o,t.y=s,t):(e=Math.sqrt(t.x*t.x+t.y*t.y),_=Math.atan2(t.x,t.y),m=wr(this.a,this.e,this.sin_p12),v=Math.cos(_),b=this.e*this.cos_p12*v,w=-b*b/(1-this.es),x=3*this.es*(1-w)*this.sin_p12*this.cos_p12*v/(1-this.es),k=e/m,S=k-w*(1+w)*Math.pow(k,3)/6-x*(1+3*w)*Math.pow(k,4)/24,M=1-w*S*S/2-k*S*S*S/6,g=Math.asin(this.sin_p12*Math.cos(S)+this.cos_p12*Math.sin(S)*v),o=ht(this.long0+Math.asin(Math.sin(_)*Math.sin(S)/Math.cos(g))),A=Math.sin(g),s=Math.atan2((A-this.es*M*this.sin_p12)*Math.tan(g),A*(1-this.es)),t.x=o,t.y=s,t)}var no=["Azimuthal_Equidistant","aeqd"],ro={init:$i,forward:to,inverse:eo,names:no};function io(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)}function oo(t){var e,n,r,i,o,s,a,l,u=t.x,h=t.y;return r=ht(u-this.long0),e=Math.sin(h),n=Math.cos(h),i=Math.cos(r),s=this.sin_p14*e+this.cos_p14*n*i,o=1,(s>0||Math.abs(s)<=y)&&(a=this.a*o*n*Math.sin(r),l=this.y0+this.a*o*(this.cos_p14*e-this.sin_p14*n*i)),t.x=a,t.y=l,t}function so(t){var e,n,r,i,o,s,a;return t.x-=this.x0,t.y-=this.y0,e=Math.sqrt(t.x*t.x+t.y*t.y),n=Vr(e/this.a),r=Math.sin(n),i=Math.cos(n),s=this.long0,Math.abs(e)<=y?(a=this.lat0,t.x=s,t.y=a,t):(a=Vr(i*this.sin_p14+t.y*r*this.cos_p14/e),o=Math.abs(this.lat0)-d,Math.abs(o)<=y?(s=this.lat0>=0?ht(this.long0+Math.atan2(t.x,-t.y)):ht(this.long0-Math.atan2(-t.x,t.y)),t.x=s,t.y=a,t):(s=ht(this.long0+Math.atan2(t.x*r,e*this.cos_p14*i-t.y*this.sin_p14*r)),t.x=s,t.y=a,t))}var ao=["ortho"],lo={init:io,forward:oo,inverse:so,names:ao},uo={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},ho={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function co(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Quadrilateralized Spherical Cube",this.lat0>=d-b/2?this.face=uo.TOP:this.lat0<=-(d-b/2)?this.face=uo.BOTTOM:Math.abs(this.long0)<=b?this.face=uo.FRONT:Math.abs(this.long0)<=d+b?this.face=this.long0>0?uo.RIGHT:uo.LEFT:this.face=uo.BACK,0!==this.es&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)}function fo(t){var e,n,r,i,o,s,a={x:0,y:0},l={value:0};if(t.x-=this.long0,e=0!==this.es?Math.atan(this.one_minus_f_squared*Math.tan(t.y)):t.y,n=t.x,this.face===uo.TOP)i=d-e,n>=b&&n<=d+b?(l.value=ho.AREA_0,r=n-d):n>d+b||n<=-(d+b)?(l.value=ho.AREA_1,r=n>0?n-x:n+x):n>-(d+b)&&n<=-b?(l.value=ho.AREA_2,r=n+d):(l.value=ho.AREA_3,r=n);else if(this.face===uo.BOTTOM)i=d+e,n>=b&&n<=d+b?(l.value=ho.AREA_0,r=-n+d):n=-b?(l.value=ho.AREA_1,r=-n):n<-b&&n>=-(d+b)?(l.value=ho.AREA_2,r=-n-d):(l.value=ho.AREA_3,r=n>0?-n+x:-n-x);else{var u,h,c,f,p,m,g;this.face===uo.RIGHT?n=go(n,+d):this.face===uo.BACK?n=go(n,+x):this.face===uo.LEFT&&(n=go(n,-d)),f=Math.sin(e),p=Math.cos(e),m=Math.sin(n),g=Math.cos(n),u=p*g,h=p*m,c=f,this.face===uo.FRONT?(i=Math.acos(u),r=mo(i,c,h,l)):this.face===uo.RIGHT?(i=Math.acos(h),r=mo(i,c,-u,l)):this.face===uo.BACK?(i=Math.acos(-u),r=mo(i,c,-h,l)):this.face===uo.LEFT?(i=Math.acos(-h),r=mo(i,c,u,l)):(i=r=0,l.value=ho.AREA_0)}return s=Math.atan(12/x*(r+Math.acos(Math.sin(r)*Math.cos(b))-d)),o=Math.sqrt((1-Math.cos(i))/(Math.cos(s)*Math.cos(s))/(1-Math.cos(Math.atan(1/Math.cos(r))))),l.value===ho.AREA_1?s+=d:l.value===ho.AREA_2?s+=x:l.value===ho.AREA_3&&(s+=1.5*x),a.x=o*Math.cos(s),a.y=o*Math.sin(s),a.x=a.x*this.a+this.x0,a.y=a.y*this.a+this.y0,t.x=a.x,t.y=a.y,t}function po(t){var e,n,r,i,o,s,a,l,u,h,c,f,p={lam:0,phi:0},m={value:0};if(t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,n=Math.atan(Math.sqrt(t.x*t.x+t.y*t.y)),e=Math.atan2(t.y,t.x),t.x>=0&&t.x>=Math.abs(t.y)?m.value=ho.AREA_0:t.y>=0&&t.y>=Math.abs(t.x)?(m.value=ho.AREA_1,e-=d):t.x<0&&-t.x>=Math.abs(t.y)?(m.value=ho.AREA_2,e=e<0?e+x:e-x):(m.value=ho.AREA_3,e+=d),u=x/12*Math.tan(e),o=Math.sin(u)/(Math.cos(u)-1/Math.sqrt(2)),s=Math.atan(o),r=Math.cos(e),i=Math.tan(n),a=1-r*r*i*i*(1-Math.cos(Math.atan(1/Math.cos(s)))),a<-1?a=-1:a>1&&(a=1),this.face===uo.TOP)l=Math.acos(a),p.phi=d-l,m.value===ho.AREA_0?p.lam=s+d:m.value===ho.AREA_1?p.lam=s<0?s+x:s-x:m.value===ho.AREA_2?p.lam=s-d:p.lam=s;else if(this.face===uo.BOTTOM)l=Math.acos(a),p.phi=l-d,m.value===ho.AREA_0?p.lam=-s+d:m.value===ho.AREA_1?p.lam=-s:m.value===ho.AREA_2?p.lam=-s-d:p.lam=s<0?-s-x:-s+x;else{var g,y,_;g=a,u=g*g,_=u>=1?0:Math.sqrt(1-u)*Math.sin(s),u+=_*_,y=u>=1?0:Math.sqrt(1-u),m.value===ho.AREA_1?(u=y,y=-_,_=u):m.value===ho.AREA_2?(y=-y,_=-_):m.value===ho.AREA_3&&(u=y,y=_,_=-u),this.face===uo.RIGHT?(u=g,g=-y,y=u):this.face===uo.BACK?(g=-g,y=-y):this.face===uo.LEFT&&(u=g,g=y,y=-u),p.phi=Math.acos(-_)-d,p.lam=Math.atan2(y,g),this.face===uo.RIGHT?p.lam=go(p.lam,-d):this.face===uo.BACK?p.lam=go(p.lam,-x):this.face===uo.LEFT&&(p.lam=go(p.lam,+d))}0!==this.es&&(h=p.phi<0?1:0,c=Math.tan(p.phi),f=this.b/Math.sqrt(c*c+this.one_minus_f_squared),p.phi=Math.atan(Math.sqrt(this.a*this.a-f*f)/(this.one_minus_f*f)),h&&(p.phi=-p.phi));return p.lam+=this.long0,t.x=p.lam,t.y=p.phi,t}function mo(t,e,n,r){var i;return tb&&i<=d+b?(r.value=ho.AREA_1,i-=d):i>d+b||i<=-(d+b)?(r.value=ho.AREA_2,i=i>=0?i-x:i+x):(r.value=ho.AREA_3,i+=d)),i}function go(t,e){var n=t+e;return n<-x?n+=w:n>+x&&(n-=w),n}var yo=["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube","qsc"],_o={init:co,forward:fo,inverse:po,names:yo},vo=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-9.86701e-7],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,1.8736e-8],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,9.34959e-7],[.7986,-.00755338,-500009e-10,9.35324e-7],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],bo=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-1.26793e-9,4.22642e-10],[.124,.0124,5.07171e-9,-1.60604e-9],[.186,.0123999,-1.90189e-8,6.00152e-9],[.248,.0124002,7.10039e-8,-2.24e-8],[.31,.0123992,-2.64997e-7,8.35986e-8],[.372,.0124029,9.88983e-7,-3.11994e-7],[.434,.0123893,-369093e-11,-4.35621e-7],[.4958,.0123198,-102252e-10,-3.45523e-7],[.5571,.0121916,-154081e-10,-5.82288e-7],[.6176,.0119938,-241424e-10,-5.25327e-7],[.6769,.011713,-320223e-10,-5.16405e-7],[.7346,.0113541,-397684e-10,-6.09052e-7],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-1.40374e-9],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],wo=.8487,xo=1.3523,ko=v/5,So=1/ko,Mo=18,Ao=function(t,e){return t[0]+e*(t[1]+e*(t[2]+e*t[3]))},Eo=function(t,e){return t[1]+e*(2*t[2]+3*e*t[3])};function Co(t,e,n,r){for(var i=e;r;--r){var o=t(i);if(i-=o,Math.abs(o)=Mo&&(r=Mo-1),n=v*(n-So*r);var i={x:Ao(vo[r],n)*e,y:Ao(bo[r],n)};return t.y<0&&(i.y=-i.y),i.x=i.x*this.a*wo+this.x0,i.y=i.y*this.a*xo+this.y0,i}function Po(t){var e={x:(t.x-this.x0)/(this.a*wo),y:Math.abs(t.y-this.y0)/(this.a*xo)};if(e.y>=1)e.x/=vo[Mo][0],e.y=t.y<0?-d:d;else{var n=Math.floor(e.y*Mo);for(n<0?n=0:n>=Mo&&(n=Mo-1);;)if(bo[n][0]>e.y)--n;else{if(!(bo[n+1][0]<=e.y))break;++n}var r=bo[n],i=5*(e.y-r[0])/(bo[n+1][0]-r[0]);i=Co((function(t){return(Ao(r,t)-e.y)/Eo(r,t)}),i,y,100),e.x/=Ao(vo[n],i),e.y=(5*n+i)*_,t.y<0&&(e.y=-e.y)}return e.x=ht(e.x+this.long0),e}var Lo=["Robinson","robin"],Io={init:To,forward:Oo,inverse:Po,names:Lo};function Ro(){this.name="geocent"}function jo(t){var e=Xt(t,this.es,this.a);return e}function No(t){var e=Jt(t,this.es,this.a,this.b);return e}var Bo=["Geocentric","geocentric","geocent","Geocent"],Do={init:Ro,forward:jo,inverse:No,names:Bo},Fo={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3},Uo={h:{def:1e5,num:!0},azi:{def:0,num:!0,degrees:!0},tilt:{def:0,num:!0,degrees:!0},long0:{def:0,num:!0},lat0:{def:0,num:!0}};function Go(){if(Object.keys(Uo).forEach(function(t){if("undefined"===typeof this[t])this[t]=Uo[t].def;else{if(Uo[t].num&&isNaN(this[t]))throw new Error("Invalid parameter value, must be numeric "+t+" = "+this[t]);Uo[t].num&&(this[t]=parseFloat(this[t]))}Uo[t].degrees&&(this[t]=this[t]*_)}.bind(this)),Math.abs(Math.abs(this.lat0)-d)1e10)throw new Error("Invalid height");this.p=1+this.pn1,this.rp=1/this.p,this.h1=1/this.pn1,this.pfact=(this.p+1)*this.h1,this.es=0;var t=this.tilt,e=this.azi;this.cg=Math.cos(e),this.sg=Math.sin(e),this.cw=Math.cos(t),this.sw=Math.sin(t)}function zo(t){t.x-=this.long0;var e,n,r,i,o=Math.sin(t.y),s=Math.cos(t.y),a=Math.cos(t.x);switch(this.mode){case Fo.OBLIQ:n=this.sinph0*o+this.cosph0*s*a;break;case Fo.EQUIT:n=s*a;break;case Fo.S_POLE:n=-o;break;case Fo.N_POLE:n=o;break}switch(n=this.pn1/(this.p-n),e=n*s*Math.sin(t.x),this.mode){case Fo.OBLIQ:n*=this.cosph0*o-this.sinph0*s*a;break;case Fo.EQUIT:n*=o;break;case Fo.N_POLE:n*=-s*a;break;case Fo.S_POLE:n*=s*a;break}return r=n*this.cg+e*this.sg,i=1/(r*this.sw*this.h1+this.cw),e=(e*this.cg-n*this.sg)*this.cw*i,n=r*i,t.x=e*this.a,t.y=n*this.a,t}function Ho(t){t.x/=this.a,t.y/=this.a;var e,n,r,i={x:t.x,y:t.y};r=1/(this.pn1-t.y*this.sw),e=this.pn1*t.x*r,n=this.pn1*t.y*this.cw*r,t.x=e*this.cg+n*this.sg,t.y=n*this.cg-e*this.sg;var o=dn(t.x,t.y);if(Math.abs(o)1e10)throw new Error;if(this.radius_g=1+this.radius_g_1,this.C=this.radius_g*this.radius_g-1,0!==this.es){var t=1-this.es,e=1/t;this.radius_p=Math.sqrt(t),this.radius_p2=t,this.radius_p_inv2=e,this.shape="ellipse"}else this.radius_p=1,this.radius_p2=1,this.radius_p_inv2=1,this.shape="sphere";this.title||(this.title="Geostationary Satellite View")}function Vo(t){var e,n,r,i,o=t.x,s=t.y;if(o-=this.long0,"ellipse"===this.shape){s=Math.atan(this.radius_p2*Math.tan(s));var a=this.radius_p/dn(this.radius_p*Math.cos(s),Math.sin(s));if(n=a*Math.cos(o)*Math.cos(s),r=a*Math.sin(o)*Math.cos(s),i=a*Math.sin(s),(this.radius_g-n)*n-r*r-i*i*this.radius_p_inv2<0)return t.x=Number.NaN,t.y=Number.NaN,t;e=this.radius_g-n,this.flip_axis?(t.x=this.radius_g_1*Math.atan(r/dn(i,e)),t.y=this.radius_g_1*Math.atan(i/e)):(t.x=this.radius_g_1*Math.atan(r/e),t.y=this.radius_g_1*Math.atan(i/dn(r,e)))}else"sphere"===this.shape&&(e=Math.cos(s),n=Math.cos(o)*e,r=Math.sin(o)*e,i=Math.sin(s),e=this.radius_g-n,this.flip_axis?(t.x=this.radius_g_1*Math.atan(r/dn(i,e)),t.y=this.radius_g_1*Math.atan(i/e)):(t.x=this.radius_g_1*Math.atan(r/e),t.y=this.radius_g_1*Math.atan(i/dn(r,e))));return t.x=t.x*this.a,t.y=t.y*this.a,t}function Qo(t){var e,n,r,i,o=-1,s=0,a=0;if(t.x=t.x/this.a,t.y=t.y/this.a,"ellipse"===this.shape){this.flip_axis?(a=Math.tan(t.y/this.radius_g_1),s=Math.tan(t.x/this.radius_g_1)*dn(1,a)):(s=Math.tan(t.x/this.radius_g_1),a=Math.tan(t.y/this.radius_g_1)*dn(1,s));var l=a/this.radius_p;if(e=s*s+l*l+o*o,n=2*this.radius_g*o,r=n*n-4*e*this.C,r<0)return t.x=Number.NaN,t.y=Number.NaN,t;i=(-n-Math.sqrt(r))/(2*e),o=this.radius_g+i*o,s*=i,a*=i,t.x=Math.atan2(s,o),t.y=Math.atan(a*Math.cos(t.x)/o),t.y=Math.atan(this.radius_p_inv2*Math.tan(t.y))}else if("sphere"===this.shape){if(this.flip_axis?(a=Math.tan(t.y/this.radius_g_1),s=Math.tan(t.x/this.radius_g_1)*Math.sqrt(1+a*a)):(s=Math.tan(t.x/this.radius_g_1),a=Math.tan(t.y/this.radius_g_1)*Math.sqrt(1+s*s)),e=s*s+a*a+o*o,n=2*this.radius_g*o,r=n*n-4*e*this.C,r<0)return t.x=Number.NaN,t.y=Number.NaN,t;i=(-n-Math.sqrt(r))/(2*e),o=this.radius_g+i*o,s*=i,a*=i,t.x=Math.atan2(s,o),t.y=Math.atan(a*Math.cos(t.x)/o)}return t.x=t.x+this.long0,t}var Ko=["Geostationary Satellite View","Geostationary_Satellite","geos"],Yo={init:Wo,forward:Vo,inverse:Qo,names:Ko};function Xo(t){t.Proj.projections.add(cn),t.Proj.projections.add(Sn),t.Proj.projections.add(Tn),t.Proj.projections.add(Gn),t.Proj.projections.add(Vn),t.Proj.projections.add(Jn),t.Proj.projections.add(or),t.Proj.projections.add(hr),t.Proj.projections.add(mr),t.Proj.projections.add(Cr),t.Proj.projections.add(Wr),t.Proj.projections.add($r),t.Proj.projections.add(ii),t.Proj.projections.add(hi),t.Proj.projections.add(mi),t.Proj.projections.add(wi),t.Proj.projections.add(Ai),t.Proj.projections.add(Pi),t.Proj.projections.add(Bi),t.Proj.projections.add(zi),t.Proj.projections.add(Vi),t.Proj.projections.add(Ji),t.Proj.projections.add(ro),t.Proj.projections.add(lo),t.Proj.projections.add(_o),t.Proj.projections.add(Io),t.Proj.projections.add(Do),t.Proj.projections.add(Zo),t.Proj.projections.add(Yo)}ge.defaultDatum="WGS84",ge.Proj=Kt,ge.WGS84=new ge.Proj("WGS84"),ge.Point=He,ge.toPoint=ae,ge.defs=Y,ge.nadgrid=Bt,ge.transform=ce,ge.mgrs=Me,ge.version="__VERSION__",Xo(ge);var Jo=ge},38776:function(t){const e=" +no_defs",n=" +towgs84=0,0,0,0,0,0,0",r=" +ellps=GRS80",i="+proj=tmerc",o=" +units=m",s=" +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12",a=" +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22",l="+proj=lcc",u="+proj=utm",h=" +units=us-ft",c="+proj=longlat",f=" +lat_0=0",d=" +ellps=krass",p=" +y_0=0",m=" +x_0=500000",g=" +towgs84=0,0,4.5,0,0,0.554,0.2263",y=" +towgs84=0,0,1.9,0,0,0.814,-0.38",_=" +ellps=intl",v=" +datum=WGS84",b=" +ellps=WGS72",w=" +towgs84=15.8,-154.4,-82.3,0,0,0,0",x=" +k=0.9999",k=" +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",S=" +datum=NAD27",M=" +ellps=bessel",A=" +x_0=609601.2192024384",E=" +x_0=600000",C=" +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84",T=" +ellps=clrk80",O=" +b=6356755.288157528",P=" +x_0=152400.3048006096",L=" +lat_0=36.66666666666666",I=" +towgs84=-146.414,507.337,680.507,0,0,0,0",R=" +x_0=200000",j=" +ellps=clrk66",N=" +ellps=WGS84",B=" +x_0=500000.001016002",D=" +x_0=240000",F=" +lat_0=-90",U=" +towgs84=-87,-98,-121,0,0,0,0",G=" +south",z=" +lat_0=41.66666666666666",H=" +y_0=36000",q=" +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29",Z=" +x_0=0",W=" +units=ft",V=" +x_0=400000",Q=" +towgs84=-115.854,-99.0583,-152.462,0,0,0,0",K=" +towgs84=-208.406,-109.878,-2.5764,0,0,0,0",Y=" +ellps=aust_SA",X=" +lat_0=39.33333333333334",J=" +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232",$=" +lat_0=37.66666666666666",tt=" +lat_0=36.33333333333334",et=" +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7",nt=" +y_0=500000.0001016001",rt=" +x_0=200000.0001016002",it=" +x_0=500000.0001016001",ot=" +x_0=500000.00001016",st=" +y_0=1000000",at=" +x_0=300000",lt=" +lon_0=-120.5",ut=" +lat_0=43.66666666666666",ht=" +lat_0=43.83333333333334",ct=" +lat_1=-68.66666666666667",ft=" +lat_2=-71.33333333333333",dt=" +k=0.999966667",pt=" +k=0.9996",mt=" +lat_0=38.33333333333334",gt=" +lat_1=73.66666666666667",yt=" +lat_2=70.33333333333333",_t=" +lat_0=72.02500919444445",vt=" +a=6378249.2",bt=" +x_0=1500000",wt=" +lat_ts=-80.23861111111111",xt=" +towgs84=-288,175,-376,0,0,0,0",kt=" +lat_1=41.78333333333333",St=" +lat_2=-75.33333333333333",Mt=" +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21",At=" +x_0=304800",Et=" +x_0=2000000.0001016",Ct=" +k=0.9999375",Tt=" +y_0=500000",Ot=" +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547",Pt=" +lon_0=-100.3333333333333",Lt=" +lat_1=-72.66666666666667",It=" +lat_1=-76.66666666666667",Rt=" +lat_2=-79.33333333333333",jt=" +y_0=10000000",Nt=" +towgs84=-57,1,-41,0,0,0,0",Bt=" +k=0.999941177",Dt=" +x_0=800000.0000101599",Ft=" +y_0=99999.99998983997",Ut=" +lat_1=38.43333333333333",Gt=" +lat_0=24.33333333333333",zt=" +towgs84=26,-121,-78,0,0,0,0",Ht=" +a=6378140",qt=" +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496",Zt=" +x_0=399999.99998984",Wt=" +towgs84=-24,-15,5,0,0,0,0",Vt=" +towgs84=682,-203,480,0,0,0,0",Qt=" +towgs84=-136,-108,-292,0,0,0,0",Kt=" +b=6356075.41314024",Yt=" +lat_1=37.96666666666667",Xt=" +lat_0=38.83333333333334",Jt=" +lat_0=40.16666666666666",$t=" +lat_0=34.33333333333334",te=" +lat_0=42.83333333333334",ee=" +lon_0=-84.36666666666666",ne=" +x_0=300000.0000000001",re=" +k=0.999933333",ie=" +lat_1=48.73333333333333",oe=" +lon_0=-111.5",se=" +k=0.9999473679999999",ae=" +towgs84=-67.35,3.88,-38.22,0,0,0,0",le=" +lat_2=73.66666666666667",ue=" +lat_0=75.36440330555556",he=" +b=6356515",ce=" +towgs84=25,-141,-78.5,-0,0.35,0.736,0",fe="+proj=stere",de=" +lat_1=-64.66666666666667",pe=" +lat_2=-67.33333333333333",me=" +b=6356514.966398753",ge=" +towgs84=295,736,257,0,0,0,0",ye=" +x_0=100000",_e=" +towgs84=-11,851,5,0,0,0,0",ve=" +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0",be=" +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06",we=" +lat_0=39.66666666666666",xe=" +x_0=1000000",ke=" +lon_0=-105.5",Se=" +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15",Me=" +a=6378249.145",Ae=" +x_0=2000000",Ee=" +lat_0=45.66666666666666",Ce=" +lat_1=80.33333333333333",Te=" +lat_0=78.70733752777778",Oe=" +b=6356774.50408554",Pe=" +lon_0=-91.33333333333333",Le=" +lon_0=-123.3333333333333",Ie=" +towgs84=-168,-60,320,0,0,0,0",Re=" +lat_0=31",je=" +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093",Ne=" +x_0=150000",Be=" +x_0=3500000",De=" +towgs84=213.11,9.37,-74.95,0,0,0,0",Fe=" +lat_1=43.66666666666666",Ue=" +lat_0=40.33333333333334",Ge=" +towgs84=-148,136,90,0,0,0,0",ze=" +towgs84=616,97,-251,0,0,0,0",He=" +lon_0=-90",qe=" +x_0=250000",Ze=" +x_0=914401.8288036576",We=" +lon_0=-90.33333333333333",Ve=" +a=6377276.345",Qe=" +b=6356103.038993155",Ke=" +lat_0=40.5",Ye=" +towgs84=-134,-48,149,0,0,0,0",Xe=" +towgs84=25,-141,-78.5,0,0.35,0.736,0",Je=" +lat_1=27.83333333333333",$e=" +lat_2=26.16666666666667",tn=" +lat_2=40.71666666666667",en=" +lat_2=39.01666666666667",nn=" +lat_2=37.21666666666667",rn=" +lat_1=70.33333333333333",on=" +lat_0=68.68747555555557",sn=" +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68",an=" +y_0=304800.6096012192",ln=" +x_0=699999.9998983998",un=" +y_0=999999.9998983998",hn=" +y_0=800000",cn=" +k=0.99995",fn=" +lat_0=34.75",dn=" +lon_0=-81",pn=" +lon_0=-100",mn=" +b=6356098.145120132",gn="+proj=omerc",yn=" +lon_0=-98.5",_n=" +towgs84=-103.746,-9.614,-255.95,0,0,0,0",vn=" +x_0=800000",bn=" +lat_0=37.83333333333334",wn=" +lat_2=44.33333333333334",xn=" +lat_2=42.33333333333334",kn=" +lat_0=29.66666666666667",Sn=" +lat_0=25.66666666666667",Mn=" +lat_0=35.83333333333334",An=" +lat_1=83.66666666666667",En=" +lat_2=80.33333333333333",Cn=" +lat_0=82.05842488888888",Tn=" +lat_0=38",On=" +x_0=2500000",Pn=" +towgs84=-377,681,-50,0,0,0,0",Ln="+proj=cass",In=" +y_0=2000000",Rn=" +towgs84=-143,-236,7,0,0,0,0",jn=" +lon_0=-110.1666666666667",Nn=" +lon_0=-111.9166666666667",Bn=" +lon_0=-75.41666666666667",Dn=" +lon_0=-82.16666666666667",Fn=" +lon_0=-84.16666666666667",Un=" +lon_0=-112.1666666666667",Gn=" +lon_0=-88.83333333333333",zn=" +lon_0=-104.3333333333333",Hn=" +lon_0=-107.8333333333333",qn=" +lon_0=-76.58333333333333",Zn=" +lon_0=-78.58333333333333",Wn=" +lon_0=-120.8333333333333",Vn=" +lon_0=-88.33333333333333",Qn=" +lon_0=-90.16666666666667",Kn=" +lon_0=-85.66666666666667",Yn=" +lon_0=-87.08333333333333",Xn=" +lon_0=-70.16666666666667",Jn=" +lon_0=-93.09999999999999",$n=" +lon_0=-115.5833333333333",tr=" +lon_0=-116.6666666666667",er=" +lon_0=-118.5833333333333",nr=" +lon_0=-71.66666666666667",rr=" +lon_0=-105.1666666666667",ir=" +lon_0=-107.3333333333333",or=" +lon_0=-110.0833333333333",sr=" +lat_0=37.5",ar=" +y_0=700000",lr=" +towgs84=-242.2,-144.9,370.3,0,0,0,0",ur=" +x_0=4500000",hr=" +y_0=1500000",cr=" +x_0=599999.9999976",fr=" +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1",dr="+proj=aea",pr=" +y_0=-2500000",mr=" +lat_2=38.96666666666667",gr=" +lat_1=41.66666666666666",yr=" +lat_1=39.83333333333334",_r=" +lat_2=38.33333333333334",vr=" +lat_2=37.06666666666667",br=" +lat_0=35.33333333333334",wr=" +lat_1=35.46666666666667",xr=" +lat_2=34.03333333333333",kr=" +lat_1=33.88333333333333",Sr=" +lat_2=32.78333333333333",Mr=" +lat_0=32.16666666666666",Ar=" +lat_2=37.23333333333333",Er=" +lat_1=41.86666666666667",Cr=" +lat_0=40.83333333333334",Tr=" +lat_2=29.58333333333333",Or=" +lat_2=41.71666666666667",Pr=" +lat_1=41.03333333333333",Lr=" +lat_2=40.66666666666666",Ir=" +lat_1=36.76666666666667",Rr=" +lat_0=33.33333333333334",jr=" +lat_1=40.96666666666667",Nr=" +lat_2=39.93333333333333",Br=" +lat_0=31.83333333333333",Dr=" +lat_0=31.66666666666667",Fr=" +lat_0=27.83333333333333",Ur=" +lat_2=36.76666666666667",Gr=" +lat_0=45.33333333333334",zr=" +lat_0=45.16666666666666",Hr=" +lat_1=36.23333333333333",qr=" +lat_2=34.93333333333333",Zr=" +lat_1=34.76666666666667",Wr=" +lat_0=32.66666666666666",Vr=" +lat_1=43.26666666666667",Qr=" +lat_2=42.06666666666667",Kr=" +lat_2=40.61666666666667",Yr=" +lat_1=39.78333333333333",Xr=" +lat_2=38.71666666666667",Jr=" +lat_1=38.56666666666667",$r=" +lat_2=37.26666666666667",ti=" +lat_0=41.08333333333334",ei=" +lat_0=42.33333333333334",ni=" +y_0=100000",ri=" +b=6356173.508712696",ii=" +y_0=5500000",oi=" +lon_0=105",si=" +y_0=-5000000",ai=" +k=0.9995000000000001",li=" +k=0.9999749999999999",ui=" +towgs84=-160,-6,-302,0,0,0,0",hi=" +towgs84=307,304,-318,0,0,0,0",ci=" +lon_0=-82.5",fi=" +towgs84=70.995,-335.916,262.898,0,0,0,0",di=" +towgs84=-304.046,-60.576,103.64,0,0,0,0",pi=" +x_0=700000",mi=" +x_0=213360",gi=" +lon_0=-85.75",yi=" +lon_0=-100.5",_i=" +lon_0=-77.75",vi=" +x_0=999999.9999898402",bi=" +towgs84=-151.99,287.04,-147.45,0,0,0,0",wi=" +lon_0=129",xi=" +a=6378293.645208759",ki=" +b=6356617.987679838",Si=" +x_0=5500000",Mi=" +lat_1=40.78333333333333",Ai=" +lat_2=39.71666666666667",Ei=" +lat_1=37.93333333333333",Ci=" +lat_2=36.73333333333333",Ti=" +lat_1=42.68333333333333",Oi=" +lat_1=41.48333333333333",Pi=" +lat_2=41.28333333333333",Li=" +lat_1=47.08333333333334",Ii=" +lat_2=45.48333333333333",Ri=" +lat_0=44.78333333333333",ji=" +lat_2=44.18333333333333",Ni=" +lat_0=43.31666666666667",Bi=" +lat_1=36.16666666666666",Di=" +lat_2=34.33333333333334",Fi=" +lat_2=47.43333333333333",Ui=" +lat_1=47.48333333333333",Gi=" +lat_2=46.18333333333333",zi=" +lat_2=35.56666666666667",Hi=" +lat_1=35.23333333333333",qi=" +lat_2=33.93333333333333",Zi=" +lat_2=40.88333333333333",Wi=" +lat_1=34.83333333333334",Vi=" +lat_1=36.41666666666666",Qi=" +lat_1=36.18333333333333",Ki=" +lat_1=33.96666666666667",Yi=" +lat_2=32.13333333333333",Xi=" +lat_1=31.88333333333333",Ji=" +lat_2=30.11666666666667",$i=" +lat_1=30.28333333333333",to=" +lat_2=28.38333333333333",eo=" +lat_2=38.03333333333333",no=" +lat_1=47.33333333333334",ro=" +lat_2=45.83333333333334",io=" +lat_1=46.76666666666667",oo=" +lat_2=45.56666666666667",so=" +lat_1=44.06666666666667",ao=" +lat_2=42.73333333333333",lo=" +lat_1=32.66666666666666",uo=" +lat_2=31.16666666666667",ho=" +lat_1=48.63333333333333",co=" +lat_2=47.03333333333333",fo=" +lat_2=45.61666666666667",po=" +lat_1=45.21666666666667",mo=" +lat_2=43.78333333333333",go=" +lat_0=39.83333333333334",yo=" +lat_2=40.43333333333333",_o=" +lat_1=40.03333333333333",vo=" +lat_2=38.73333333333333",bo=" +lat_1=45.68333333333333",wo=" +lat_2=44.41666666666666",xo=" +lat_2=42.83333333333334",ko=" +lat_1=38.88333333333333",So=" +lat_2=37.48333333333333",Mo=" +lat_1=37.08333333333334",Ao=" +lat_2=38.66666666666666",Eo=" +lat_0=58",Co=" +lon_0=-98",To=" +lon_0=117",Oo=" +lon_0=135",Po=" +lat_0=41.5",Lo=" +lat_0=42.5",Io=" +y_0=3000000",Ro=" +lon_0=123",jo=" +lat_0=40",No=" +lat_0=54",Bo=" +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188",Do=" +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725",Fo=" +x_0=914401.8289",Uo=" +y_0=304800.6096",Go=" +lon_0=111",zo=" +k_0=0.99878641",Ho=" +lon_0=-66.43333333333334",qo=" +towgs84=61,-285,-181,0,0,0,0",Zo=" +towgs84=-133,-77,-51,0,0,0,0",Wo=" +towgs84=-679,669,-48,0,0,0,0",Vo=" +lon_0=-71.5",Qo=" +lon_0=-78.5",Ko=" +lon_0=-93.5",Yo=" +lat_0=41.75",Xo=" +y_0=249999.9998983998",Jo=" +y_0=999999.9999898402",$o=" +to_meter=1.0000135965",ts=" +a=6377304.063",es=" +lat_0=36",ns=" +towgs84=-79.9,-158,-168.9,0,0,0,0",rs=" +towgs84=-50.9,-347.6,-231,0,0,0,0",is=" +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747",os=" +towgs84=283,682,231,0,0,0,0",ss=" +towgs84=-206,172,-6,0,0,0,0",as=" +towgs84=-92,-93,122,0,0,0,0",ls=" +to_meter=0.9143985307444408",us="+proj=sterea",hs=" +lat_0=21.16666666666667",cs=" +lat_1=18.43333333333333",fs=" +lat_2=18.03333333333333",ds=" +lat_0=17.83333333333333",ps=" +gamma=323.1301023611111",ms=" +lon_0=-79.5",gs=" +y_0=4500000",ys=" +x_0=31500000",_s=" +x_0=500000.0001504",vs=" +b=6356514.96582849",bs=" +towgs84=674.4,15.1,405.3,0,0,0,0",ws=" +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101",xs=" +towgs84=589,76,480,0,0,0,0",ks=" +towgs84=-263,6,431,0,0,0,0",Ss=" +lon_0=15",Ms=" +axis=wsu",As=" +lon_0=21",Es=" +lat_0=30",Cs=" +ellps=helmert",Ts=" +a=6377299.151",Os=" +lon_0=-74.5",Ps=" +b=6356750.304921594",Ls=" +y_0=2000000.0001016",Is=" +x_0=3500000.0001016",Rs=" +y_0=399999.99998984",js=" +x_0=200000.00001016",Ns=" +b=6356098.359005156",Bs=" +x_0=14500000",Ds=" +x_0=29500000",Fs=" +towgs84=-117,-132,-164,0,0,0,0",Us=" +zone=20",Gs=" +lon_0=-122",zs=" +ellps=bess_nam",Hs=" +lon_0=-86.15000000000001",qs=" +towgs84=-189,-242,-91,0,0,0,0",Zs=" +towgs84=-265,120,-358,0,0,0,0",Ws=" +towgs84=-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586",Vs=" +towgs84=-17.51,-108.32,-62.39,0,0,0,0",Qs=" +towgs84=-10.18,-350.43,291.37,0,0,0,0",Ks=" +towgs84=-190.421,8.532,238.69,0,0,0,0",Ys=" +lon_0=-68.5",Xs=" +a=6377299.36559538",Js=" +x_0=79999.99999968",$s=" +x_0=50000.00001504",ta=" +lon_0=0",ea=" +lon_0=27",na=" +lon_0=75",ra=" +lon_0=81",ia=" +lon_0=93",oa=" +lon_0=99",sa=" +x_0=900000",aa=" +x_0=13500000",la=" +x_0=20500000",ua=" +x_0=22500000",ha=" +towgs84=-166,-15,204,0,0,0,0",ca=" +towgs84=-130,110,-13,0,0,0,0",fa=" +towgs84=-587.8,519.75,145.76,0,0,0,0",da=" +lat_2=83.66666666666667",pa=" +lat_0=85.43711833333333",ma=" +towgs84=-273.5,110.6,-357.9,0,0,0,0",ga=" +lon_0=87",ya="+proj=laea",_a=" +towgs84=-403,684,41,0,0,0,0",va=" +lon_0=-92.5",ba=" +y_0=6000000",wa=" +zone=19",xa=" +lat_0=29.5",ka=" +y_0=300000",Sa=" +lat_2=45.5",Ma=" +k=0.999909091",Aa=" +a=6377492.018",Ea=" +b=6356751.689189189",Ca=" +b=6356100.230165384",Ta=" +lon_0=90",Oa=" +lat_0=90",Pa=" +x_0=18500000",La=" +x_0=19500000",Ia=" +x_0=15500000",Ra=" +x_0=16500000",ja=" +x_0=21500000",Na=" +x_0=23500000",Ba=" +x_0=25500000",Da=" +x_0=26500000",Fa=" +x_0=27500000",Ua=" +x_0=28500000",Ga=" +zone=18",za=" +zone=21",Ha=" +towgs84=-124.76,53,466.79,0,0,0,0",qa=" +lon_0=-92",Za=" +lon_0=33",Wa=" +lon_0=12",Va=" +lon_0=24",Qa=" +lat_2=77",Ka=" +y_0=200000",Ya=" +lon_0=-70.5",Xa=" +x_0=7500000",Ja=" +y_0=3500000",$a=" +towgs84=31,146,47,0,0,0,0",tl=" +lat_0=45",el=" +lat_0=26",nl=" +a=6378160",rl=" +lon_0=-109.5",il=" +x_0=30500000",ol=" +x_0=32500000",sl=" +lon_0=-85.83333333333333",al=" +lon_0=-118.3333333333333",ll=" +y_0=0.003048006096012192",ul=" +lat_0=30.5",hl=" +lat_0=44",cl=" +lon_0=30",fl=" +lat_0=47",dl=" +lat_1=77",pl=" +lat_0=36.16666666666666",ml=" +lat_0=4.596200416666666",gl=" +gamma=53.13010236111111",yl=" +lon_0=13.33333333333333",_l=" +lat_0=81.31722600000001",vl=" +lat_0=73.15574086111111",bl=" +lat_0=65.10127088888888",wl=" +zone=17",xl=" +lon_0=132",kl=" +lon_0=114",Sl=" +towgs84=-143,-90,-294,0,0,0,0",Ml=" +zone=22",Al=" +lat_0=41",El=" +lat_0=46.5",Cl=" +lon_0=-118",Tl=" +y_0=400000",Ol=" +x_0=17500000",Pl=" +x_0=33500000",Ll=" +lon_0=-113.75",Il=" +lon_0=-116.25",Rl=" +lon_0=-115.75",jl=" +lon_0=-106.25",Nl=" +k=0.999916667",Bl=" +k=0.999964286",Dl=" +lon_0=-108.75",Fl=" +towgs84=-73,-247,227,0,0,0,0",Ul=" +towgs84=265.025,384.929,-194.046,0,0,0,0",Gl=" +k=0.99998",zl=" +lat_1=40.65",Hl=" +lat_1=38.35",ql=" +y_0=2500000",Zl=" +y_0=6500000",Wl=" +x_0=39999.99999984",Vl=" +towgs84=-61.702,284.488,472.052,0,0,0,0",Ql=" +towgs84=-223.237,110.193,36.649,0,0,0,0",Kl=" +zone=39",Yl=" +zone=32",Xl=" +towgs84=-125,53,467,0,0,0,0",Jl=" +towgs84=198,881,317,0,0,0,0",$l=" +towgs84=214,804,268,0,0,0,0",tu=" +towgs84=217,823,299,0,0,0,0",eu=" +lon_0=45",nu=" +lat_1=43",ru="+proj=merc",iu=" +x_0=99999.99998983997",ou=" +x_0=99999.99999960001",su=" +x_0=2743195.592233322",au=" +y_0=914398.5307444407",lu=" +zone=38",uu=" +zone=28",hu=" +lon_0=-114",cu=" +lat_1=45.5",fu=" +towgs84=-73,46,-86,0,0,0,0",du=" +towgs84=11,72,-101,0,0,0,0",pu=" +towgs84=287.58,177.78,-135.41,0,0,0,0",mu=" +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425",gu=" +lon_0=-87",yu=" +lon_0=-99",_u=" +lon_0=102",vu=" +lon_0=126",bu=" +k=0.99999",wu=" +x_0=50000",xu=" +lat_2=40",ku=" +lon_0=-84.25",Su=" +x_0=11500000",Mu=" +lon_0=-72.75",Au=" +lon_0=-101.5",Eu=" +lon_0=-94.25",Cu=" +x_0=6500000",Tu=" +y_0=5000000",Ou=" +x_0=1700000",Pu=" +towgs84=31.95,300.99,419.19,0,0,0,0",Lu=" +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598",Iu=" +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706",Ru=" +towgs84=982.609,552.753,-540.873,6.68163,-31.6115,-19.8482,16.805",ju=" +zone=29",Nu=" +lon_0=9",Bu=" +zone=33",Du=" +zone=37",Fu=" +no_uoff",Uu=" +lon_0=120",Gu=" +lon_0=177",zu=" +lon_0=-177",Hu=" +lon_0=-158",qu=" +y_0=250000",Zu=" +lon_0=-111",Wu=" +x_0=2500000.0001424",Vu=" +x_0=1500000.0001464",Qu=" +lon_0=-71.60561777777777",Ku=" +lon_0=-156.6666666666667",Yu=" +lon_0=-160.1666666666667",Xu=" +lat_0=0.1166666666666667",Ju=" +towgs84=0,0,0,-0,-0,-0,0",$u=" +lon_0=-117.8333333333333",th=" +lon_0=-123.1666666666667",eh=" +lon_0=-122.3333333333333",nh=" +lon_0=-119.1666666666667",rh=" +lon_0=-123.0833333333333",ih=" +lon_0=-85.84999999999999",oh=" +lon_0=-87.09999999999999",sh=" +lon_0=-86.90000000000001",ah=" +lon_0=-89.24166666666667",lh=" +lon_0=-92.63333333333334",uh=" +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074",hh=" +towgs84=8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926",ch=" +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7",fh=" +towgs84=-0.293,766.95,87.713,0.195704,1.69507,3.47302,-0.039338",dh=" +towgs84=221.525,152.948,176.768,-2.3847,-1.3896,-0.877,11.4741",ph=" +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773",mh=" +zone=35",gh=" +lat_0=46.95240555555556",yh=" +alpha=30.28813972222222",_h=" +lat_1=10.16666666666667",vh=" +lat_0=10.16666666666667",bh=" +lat_0=18.83333333333333",wh=" +lat_0=20.33333333333333",xh=" +lat_0=21.83333333333333",kh=" +lat_0=21.66666666666667",Sh=" +lat_0=45.30916666666666",Mh=" +lat_1=49.83333333333334",Ah=" +lat_2=51.16666666666666",Eh=" +lonc=-133.6666666666667",Ch=" +alpha=323.1301023611111",Th=" +lat_1=53.83333333333334",Oh=" +lat_2=51.83333333333334",Ph=" +lat_1=44.66666666666666",Lh=" +lat_0=44.66666666666666",Ih=" +lat_1=45.66666666666666",Rh=" +lat_0=45.91666666666666",jh=" +lat_0=45.08333333333334",Nh=" +lat_0=44.33333333333334",Bh=" +lat_0=44.08333333333334",Dh=" +lat_1=48.33333333333334",Fh=" +lat_0=48.33333333333334",Uh=" +lat_0=31.73409694444445",Gh=" +lon_0=35.21208055555556",zh=" +lat_0=44.03611111111111",Hh=" +lat_0=4.599047222222222",qh=" +lat_0=40.66666666666666",Zh=" +lat_1=49",Wh=" +lon_0=39",Vh=" +lat_1=37.25",Qh=" +lat_1=39.75",Kh=" +lat_2=38.45",Yh=" +lat_1=30.75",Xh=" +lon_0=-84.5",Jh=" +lat_0=33.75",$h=" +x_0=4000000",tc=" +y_0=4000000",ec=" +lon_0=-72.5",nc=" +x_0=5000000",rc=" +x_0=10500000",ic=" +x_0=12500000",oc=" +x_0=24500000",sc=" +k=0.99999375",ac=" +x_0=399999.9999984",lc=" +lon_0=-77",uc=" +lon_0=108",hc=" +lon_0=171",cc=" +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925",fc=" +lon_0=-171",dc=" +lat_0=32.5",pc=" +lon_0=-117",mc=" +k=1.000015",gc=" +k=1.000034",yc=" +k=1.000031",_c=" +k=1.000026",vc=" +ellps=evrstSS",bc=" +a=6377301.243",wc=" +towgs84=410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311",xc=" +towgs84=72.438,345.918,79.486,1.6045,0.8823,0.5565,1.3746",kc=" +pm=ferro",Sc=" +lon_0=78",Mc=" +lon_0=10",Ac=" +pm=paris",Ec=" +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014",Cc=" +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489",Tc=" +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081",Oc=" +towgs84=572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378",Pc=" +zone=58",Lc=" +zone=23",Ic=" +x_0=304800.6096012192",Rc=" +y_0=152400.3048006096",jc=" +x_0=800000.0001016001",Nc=" +x_0=399999.9998983998",Bc=" +x_0=7999999.999968001",Dc=" +x_0=5999999.999976001",Fc=" +x_0=830000.0001016001",Uc=" +x_0=249999.9998983998",Gc=" +x_0=350000.0001016001",zc=" +to_meter=0.3047972654",Hc=" +x_0=99999.99989839978",qc=" +y_0=8000000.000010163",Zc=" +x_0=699999.9999898402",Wc=" +lon_0=-69",Vc=" +lon_0=-86",Qc=" +towgs84=-3.2,-5.7,2.8,0,0,0,0",Kc=" +x_0=8500000",Yc=" +x_0=9500000",Xc=" +lat_1=39.45",Jc=" +lat_0=44.25",$c=" +lat_1=41.95",tf=" +lat_2=35.25",ef=" +lat_2=34.65",nf=" +lat_2=44.25",rf=" +lat_1=47.05",of=" +lat_1=40.25",sf=" +k_0=1.00012",af=" +lat_0=40.25",lf=" +zone=40",uf=" +zone=36",hf=" +zone=51",cf=" +zone=48",ff=" +zone=49",df=" +lon_0=96",pf=" +y_0=750000",mf=" +lat_0=36.5",gf=" +lon_0=-119",yf=" +lat_0=33.5",_f=" +lat_2=41.2",vf=" +k=0.999995",bf=" +lat_2=33.3",wf=" +lat_0=38.5",xf=" +lon_0=-154",kf=" +lon_0=-120",Sf=" +x_0=34500000",Mf=" +x_0=35500000",Af=" +x_0=36500000",Ef=" +x_0=37500000",Cf=" +x_0=38500000",Tf=" +x_0=39500000",Of=" +x_0=40500000",Pf=" +x_0=41500000",Lf=" +x_0=43500000",If=" +x_0=45500000",Rf=" +y_0=3999999.99998984",jf=" +y_0=2000000.00001016",Nf=" +towgs84=164,138,-189,0,0,0,0",Bf=" +towgs84=-186,230,110,0,0,0,0",Df=" +towgs84=-199,32,322,0,0,0,0",Ff=" +to_meter=0.3047997101815088",Uf=" +towgs84=-76,-138,67,0,0,0,0",Gf=" +towgs84=-43,-163,45,0,0,0,0",zf=" +towgs84=-346,-1,224,0,0,0,0",Hf=" +towgs84=210,814,289,0,0,0,0",qf=" +towgs84=-74,-130,42,0,0,0,0",Zf=" +zone=15",Wf=" +zone=16",Vf=" +zone=34",Qf=" +zone=50",Kf=" +zone=52",Yf=" +lon_0=-62",Xf=" +lon_0=-84",Jf=" +lon_0=-79",$f=" +lon_0=131",td=" +lon_0=153",ed=" +lon_0=165",nd=" +lon_0=-94",rd=" +lon_0=-54",id=" +a=6378300.789",od=" +b=6356566.435",sd=" +y_0=3999999.9998984",ad=" +y_0=5000000.0001016",ld=" +x_0=150000.00001464",ud=" +lat_2=46",hd=" +lon_0=84",cd=" +lat_0=43",fd=" +k_0=0.999625769",dd=" +towgs84=51,391,-36,0,0,0,0",pd=" +towgs84=-83,37,124,0,0,0,0",md=" +towgs84=-355,21,72,0,0,0,0",gd=" +towgs84=-23,259,-9,0,0,0,0",yd=" +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263",_d=" +zone=59",vd=" +zone=25",bd=" +zone=11",wd=" +zone=12",xd=" +zone=13",kd=" +zone=54",Sd=" +zone=14",Md=" +zone=24",Ad=" +zone=47",Ed=" +lat_2=38.3",Cd=" +lat_1=45.7",Td=" +lat_2=42.1",Od=" +x_0=165000",Pd=" +lat_2=32.5",Ld=" +x_0=609600",Id=" +lat_1=39.2",Rd=" +lat_2=47.5",jd=" +lat_1=30.7",Nd=" +lat_2=29.3",Bd=" +lat_0=28.5",Dd=" +lat_1=41.7",Fd=" +lat_1=44.4",Ud=" +lat_1=27.5",Gd=" +lon_0=-150",zd=" +lat_0=44.5",Hd=" +k=1.000027",qd=" +k=1.000038",Zd=" +k=1.000036",Wd=" +lon_0=-87.5",Vd=" +x_0=3999999.999984",Qd=" +x_0=199999.9999992",Kd=" +towgs84=16,196,93,0,0,0,0",Yd=" +towgs84=-88,4,101,0,0,0,0",Xd=" +lat_0=18",Jd=" +lat_2=67",$d=" +lon_0=-96",tp=" +x_0=80000",ep=" +lon_0=-82",np=" +lon_0=-74",rp=" +lon_0=147",ip=" +lon_0=150",op=" +x_0=40000",sp=" +k=1.00002",ap=" +x_0=42500000",lp=" +x_0=44500000",up=" +lon_0=-85.05",hp=" +ellps=mod_airy",cp=" +lat_0=0.1333333333333333",fp=" +lat_1=-60.66666666666666",dp=" +lat_2=-63.33333333333334",pp=" +lon_0=-91.91666666666667",mp=" +y_0=0.003352806705613411",gp=" +zone=30",yp=" +lon_0=3",_p=" +zone=26",vp=" +zone=53",bp=" +lat_0=31.73439361111111",wp=" +lon_0=35.20451694444445",xp=" +lon_0=7.439583333333333",kp=" +lon_0=132.1666666666667",Sp=" +lon_0=134.3333333333333",Mp=" +lon_0=137.1666666666667",Ap=" +lon_0=139.8333333333333",Ep=" +lon_0=140.8333333333333",Cp=" +lon_0=3.192280555555556",Tp=" +lat_1=49.50000000000001",Op=" +lat_0=49.50000000000001",Pp=" +alpha=53.31582047222222",Lp=" +lon_0=10.33333333333333",Ip=" +lon_0=16.33333333333333",Rp=" +towgs84=-502.862,-247.438,312.724,0,0,0,0",jp=" +towgs84=-381.788,-57.501,-256.673,0,0,0,0",Np=" +towgs84=-43.685,-179.785,-267.721,0,0,0,0",Bp=" +zone=60",Dp=" +zone=55",Fp=" +lon_0=36",Up=" +lon_0=42",Gp=" +lat_1=46",zp=" +lat_1=44",Hp=" +lat_0=42",qp=" +lon_0=51",Zp=" +lat_0=33",Wp=" +lat_0=52",Vp=" +ellps=airy",Qp=" +pm=jakarta",Kp=" +x_0=2743195.5",Yp=" +y_0=-4354009.816",Xp=" +k_0=0.9987864078000001",Jp=" +towgs84=-106.226,166.366,-37.893,0,0,0,0",$p=" +towgs84=508.088,-191.042,565.223,0,0,0,0",tm=" +k=0.99996",em=" +a=6378135",nm=" +lon_0=-66",rm=" +lon_0=141",im=" +lon_0=159",om=" +k=0.99984",sm=" +lat_0=-22",am=" +lon_0=127.5",lm=" +x_0=6000000",um=" +x_0=3900000",hm=" +y_0=1300000",cm=" +lat_0=44.75",fm=" +lat_0=37.75",dm=" +lat_0=40.55",pm=" +lon_0=-87.3",mm=" +lon_0=-86.5",gm=" +towgs84=195.671,332.517,274.607,0,0,0,0",ym=" +towgs84=-204.619,140.176,55.226,0,0,0,0",_m="+proj=somerc",vm=" +y_0=30480.06096012192",bm=" +y_0=999999.9999960001",wm=" +x_0=182880.3657607315",xm=" +towgs84=674.374,15.056,405.346,0,0,0,0",km=" +towgs84=-133.63,-157.5,-158.62,0,0,0,0",Sm=" +towgs84=-0.465,372.095,171.736,0,0,0,0",Mm=" +towgs84=-56.263,16.136,-22.856,0,0,0,0",Am=" +towgs84=-241.54,-163.64,396.06,0,0,0,0",Em=" +zone=31",Cm=" +zone=10",Tm=" +zone=46",Om=" +x_0=304800.6096",Pm=" +y_0=152400.3048",Lm=" +alpha=337.25556",Im=" +x_0=2546731.496",Rm=" +gamma=337.25556",jm=" +k_0=0.999625544",Nm=" +towgs84=335.47,222.58,-230.94,0,0,0,0",Bm=" +towgs84=217.037,86.959,23.956,0,0,0,0",Dm=" +towgs84=-128.16,-282.42,21.93,0,0,0,0",Fm=" +towgs84=103.25,-100.4,-307.19,0,0,0,0",Um=" +lon_0=31",Gm=" +lon_0=18",zm=" +lat_2=36",Hm=" +lat_0=29",qm=" +lat_0=35",Zm=" +lat_0=34",Wm=" +lon_0=63",Vm=" +lat_0=37",Qm=" +lat_2=65",Km=" +y_0=-4000000",Ym=" +y_0=914398.5",Xm=" +towgs84=-199.87,74.79,246.62,0,0,0,0",Jm=" +towgs84=-11.64,-348.6,291.98,0,0,0,0",$m=" +towgs84=-254.1,-5.36,-100.29,0,0,0,0",tg=" +towgs84=-206.1,-174.7,-87.7,0,0,0,0",eg=" +towgs84=-770.1,158.4,-498.2,0,0,0,0",ng=" +towgs84=-146.21,112.63,4.05,0,0,0,0",rg=" +towgs84=-294.7,-200.1,525.5,0,0,0,0",ig=" +lat_0=4",og=" +a=6378300",sg=" +lon_0=-63",ag=" +lon_0=162",lg=" +lat_ts=90",ug=" +y_0=600000",hg=" +x_0=350000",cg=" +y_0=900000",fg=" +lat_1=32.5",dg=" +lon_0=-147",pg=" +k=1.000043",mg=" +lat_0=48.5",gg=" +lat_0=40.9",yg=" +k=1.000028",_g=" +k=1.000025",vg=" +x_0=170251.555",bg=" +b=6356657.142669561",wg=" +b=6356094.667915204",xg=" +b=6355862.933255573",kg=" +a=6378249.144808011",Sg=" +b=6356514.966204134",Mg=" +towgs84=-70.9,-151.8,-41.4,0,0,0,0",Ag=" +towgs84=52.17,-71.82,-14.9,0,0,0,0",Eg=" +towgs84=283.7,735.9,261.1,0,0,0,0",Cg=" +zone=5",Tg=" +zone=7",Og=" +lon_0=19",Pg=" +lon_0=25",Lg=" +lat_2=45",Ig=" +lon_0=57",Rg=" +lon_0=69",jg=" +lat_2=39",Ng=" +lat_2=35",Bg=" +lon_0=28",Dg=" +lon_0=-61.5",Fg=" +lon_0=-64.5",Ug=" +lon_0=-90.5",Gg=" +lon_0=-94.5",zg=" +y_0=2800000",Hg=" +x_0=4321000",qg=" +y_0=3210000",Zg=" +y_0=14743.5",Wg=" +y_0=1999999.999992",Vg=" +y_0=2999999.999988",Qg=" +y_0=50000.00001504",Kg=" +zone=41",Yg=" +zone=42",Xg=" +k=0.994",Jg=" +zone=56",$g=" +lon_0=-67.875",ty=" +lon_0=-70.375",ey=" +x_0=609601.22",ny=" +b=6356889.449",ry=" +lon_0=-69.125",iy=" +lon_0=-121.75",oy=" +lon_0=-121.25",sy=" +lon_0=-119.75",ay=" +lon_0=-122.75",ly=" +zone=6",uy="+proj=krovak",hy=" +towgs84=-637,-549,-203,0,0,0,0",cy=" +towgs84=-20.8,11.3,2.4,0,0,0,0",fy=" +lon_0=-93",dy=" +lon_0=127",py=" +lon_0=125",my=" +k=0.99975",gy=" +lon_0=136",yy=" +lon_0=138",_y=" +lon_0=180",vy=" +y_0=50000",by=" +lon_0=-85",wy=" +k=1.00016",xy=" +lon_0=2.7",ky=" +towgs84=27.5,14,186.4,0,0,0,0",Sy=" +towgs84=-499,-249,314,0,0,0,0",My=" +towgs84=-467,-16,-300,0,0,0,0",Ay=" +towgs84=-382,-59,-262,0,0,0,0",Ey=" +towgs84=253,-132,-127,0,0,0,0",Cy=" +towgs84=-963,510,-359,0,0,0,0",Ty=" +towgs84=94,-948,-1262,0,0,0,0",Oy=" +zone=1",Py=" +zone=27",Ly=" +zone=57",Iy=" +pm=oslo",Ry=" +zone=43",jy=" +lon_0=23",Ny=" +lon_0=48",By=" +lon_0=54",Dy=" +lat_0=49.5",Fy=" +k=0.999912",Uy=" +lon_0=-174",Gy=" +lon_0=-168",zy=" +lon_0=-170",Hy=" +lon_0=-165",qy=" +lat_2=40.5",Zy=" +lon_0=-115",Wy=" +lat_1=29.5",Vy=" +k=1.000045",Qy=" +lat_1=39.5",Ky=" +lat_1=33.3",Yy=" +lat_0=33.3",Xy=" +lon_0=-155.5",Jy=" +lon_0=-159.5",$y=" +y_0=-4480000",t_=" +lon_0=-176.5",e_=" +lon_0=-89.75",n_=" +k_0=1.000008",r_=" +lonc=-124.05",i_=" +k_0=1.000002",o_=" +lon_0=-122.5",s_=" +lon_0=-98.25",a_=" +lon_0=-112.5",l_=" +lon_0=-84.95",u_=" +lon_0=-86.95",h_=" +lon_0=-85.45",c_=" +lon_0=-87.45",f_=" +lon_0=-87.55",d_=" +towgs84=-149,128,296,0,0,0,0",p_=" +towgs84=-425,-169,81,0,0,0,0",m_=" +towgs84=-104,167,-38,0,0,0,0",g_=" +towgs84=-106,-87,188,0,0,0,0",y_=" +towgs84=-289,-124,60,0,0,0,0",__=" +towgs84=137,248,-430,0,0,0,0",v_=" +towgs84=-13,-348,292,0,0,0,0",b_=" +towgs84=-115,118,426,0,0,0,0",w_=" +towgs84=0,-0.15,0.68,0,0,0,0",x_=" +towgs84=145,-187,103,0,0,0,0",k_=" +towgs84=-134,229,-29,0,0,0,0",S_=" +towgs84=70,207,389.5,0,0,0,0",M_=" +towgs84=-148,51,-291,0,0,0,0",A_=" +towgs84=-255,-15,71,0,0,0,0",E_=" +towgs84=725,685,536,0,0,0,0",C_=" +towgs84=72,213.7,93,0,0,0,0",T_=" +towgs84=174,359,365,0,0,0,0",O_=" +towgs84=-173,253,27,0,0,0,0",P_=" +towgs84=-203,141,53,0,0,0,0",L_=" +towgs84=186,482,151,0,0,0,0",I_=" +towgs84=162,117,154,0,0,0,0",R_=" +towgs84=-73,213,296,0,0,0,0",j_=" +towgs84=-130,29,364,0,0,0,0",N_=" +towgs84=-10,375,165,0,0,0,0",B_=" +towgs84=175,-38,113,0,0,0,0",D_=" +to_meter=0.9143984146160287",F_=" +zone=2",U_=" +zone=8",G_=" +zone=9",z_=" +zone=4",H_=" +towgs84=30,430,368,0,0,0,0",q_=" +towgs84=185,165,42,0,0,0,0",Z_=" +towgs84=-97,787,86,0,0,0,0",W_=" +towgs84=639,405,60,0,0,0,0",V_=" +zone=44",Q_=" +zone=45",K_=" +lon_0=-58.5",Y_=" +lon_0=-67.5",X_=" +lon_0=-73.5",J_=" +lon_0=-76.5",$_=" +y_0=1200000",tv=" +lon_0=133.5",ev=" +x_0=8000000",nv=" +y_0=8000000",rv=" +k=0.9998335",iv=" +lon_0=-85.5",ov=" +x_0=7000000",sv=" +lat_0=43.75",av=" +lat_0=43.25",lv=" +lat_0=45.25",uv=" +lon_0=-86.3",hv=" +lat_0=38.15",cv=" +lat_0=39.15",fv=" +lat_0=41.25",dv=" +lat_0=40.65",pv=" +lat_0=39.25",mv=" +lat_0=40.35",gv=" +lon_0=-85.8",yv=" +towgs84=9,183,236,0,0,0,0",_v=" +towgs84=-48,55,52,0,0,0,0",vv=" +towgs84=84,274,65,0,0,0,0",bv=" +lon_0=17",wv=" +lat_1=60",xv=" +k=0.9998",kv=" +lon_0=66",Sv=" +lon_0=20",Mv=" +lon_0=26",Av=" +lat_0=51",Ev=" +lat_1=87",Cv=" +lat_1=26",Tv=" +lon_0=144",Ov=" +lon_0=168",Pv=" +lon_0=174",Lv=" +lon_0=-72",Iv=" +lon_0=-75",Rv=" +lon_0=-60",jv=" +lon_0=-39",Nv="+proj=poly",Bv=" +x_0=219529.584",Dv=" +a=6378306.3696",Fv=" +lon_0=-61.33333333333334",Uv=" +lon_0=-91.86666666666666",Gv=" +lon_0=-8.131906111111112",zv=" +lon_0=-83.66666666666667",Hv=" +lon_0=-108.4166666666667",qv=" +lon_0=-108.3333333333333",Zv=" +lon_0=-85.40000000000001",Wv=" +lon_0=-86.65000000000001",Vv=" +lon_0=-86.40000000000001",Qv=" +lon_0=-85.59999999999999",Kv=" +lon_0=-87.15000000000001",Yv=" +lon_0=-86.59999999999999",Xv=" +lon_0=-84.90000000000001",Jv=" +lon_0=-85.65000000000001",$v=" +lon_0=-87.65000000000001",tb=" +lon_0=-85.34999999999999",eb=" +lon_0=-87.40000000000001",nb=" +lon_0=-87.34999999999999",rb=" +lon_0=-85.90000000000001",ib=" +lon_0=-90.62222222222222",ob=" +lon_0=-91.84999999999999",sb=" +lon_0=-91.15277777777779",ab=" +lon_0=-91.79722222222222",lb=" +lon_0=-92.45777777777778",ub=" +lon_0=-91.29444444444444",hb=" +lon_0=-90.70833333333334",cb=" +lon_0=-89.39444444444445",fb=" +lon_0=-89.42222222222223",db=" +lon_0=-88.77500000000001",pb=" +lon_0=-87.27222222222223",mb=" +lon_0=-91.89444444444445",gb=" +lon_0=-91.28888888888889",yb=" +lon_0=-88.14166666666668",_b=" +lon_0=-88.63333333333334",vb=" +lon_0=-89.83888888888889",bb=" +lon_0=-90.16111111111111",wb=" +lon_0=-90.25555555555556",xb=" +lon_0=-90.84429651944444",kb=" +lon_0=-87.89444444444445",Sb=" +lon_0=-91.31666666666666",Mb=" +lon_0=-89.03333333333333",Ab=" +lon_0=-89.73333333333333",Eb=" +lon_0=-87.71111111111111",Cb=" +lon_0=-88.41666666666667",Tb=" +lon_0=-90.64166666666668",Ob=" +lon_0=-87.90833333333335",Pb=" +lon_0=-89.54444444444444",Lb=" +lon_0=-92.22777777777777",Ib=" +lon_0=-90.48888888888889",Rb=" +lon_0=-90.43055555555556",jb=" +lon_0=-89.07222222222222",Nb=" +lon_0=-91.06666666666666",Bb=" +lon_0=-89.90000000000001",Db=" +lon_0=-91.11666666666666",Fb=" +lon_0=-88.60555555555555",Ub=" +lon_0=-90.48333333333333",Gb=" +lon_0=-91.36666666666666",zb=" +lon_0=-90.78333333333333",Hb=" +lon_0=-89.48888888888889",qb=" +lon_0=-88.54166666666667",Zb=" +lon_0=-91.78333333333333",Wb=" +lon_0=-88.06388888888888",Vb=" +lon_0=-88.22499999999999",Qb=" +lon_0=-88.81666666666666",Kb=" +y_0=0.004876809753619507",Yb=" +y_0=0.008534417068834137",Xb=" +y_0=0.003962407924815849",Jb=" +y_0=0.005791211582423164",$b=" +lon_0=-55.68333333333333",tw=" +to_meter=0.201166195164",ew=" +lat_0=4.666666666666667",nw=" +lat_0=6.666666666666667",rw=" +lon_0=6.166666666666667",iw=" +lat_0=10.44166666666667",ow=" +lat_0=22.31213333333334",sw=" +lon_0=114.1785555555556",aw=" +lon_0=51.21666666666667",lw=" +lon_0=11.30827777777778",uw=" +lon_0=13.55827777777778",hw=" +lon_0=15.80827777777778",cw=" +lon_0=18.05827777777778",fw=" +lon_0=20.30827777777778",dw=" +lon_0=22.55827777777778",pw=" +lat_1=27.41666666666667",mw=" +lat_2=34.91666666666666",gw=" +lat_0=31.16666666666667",yw=" +lat_1=59.33333333333334",_w=" +lat_0=57.51755393055556",vw=" +lon_0=4.359215833333333",bw=" +lat_1=61.66666666666666",ww=" +lat_0=29.02626833333333",xw=" +lat_1=48.66666666666666",kw=" +lat_2=53.66666666666666",Sw=" +lon_0=127.0028902777778",Mw=" +lon_0=89.84999999999999",Aw=" +lon_0=91.56666666666666",Ew=" +lon_0=24.83333333333333",Cw=" +lat_2=63.66666666666666",Tw=" +lat_0=65.35103930555555",Ow=" +lat_1=63.66666666666666",Pw=" +lat_2=60.33333333333334",Lw=" +lat_0=62.01530688888889",Iw=" +lat_1=45.78333333333333",Rw=" +lat_0=45.78333333333333",jw=" +lat_0=42.66666666666666",Nw=" +lat_0=43.36666666666667",Bw=" +lat_0=45.70611111111111",Dw=" +lat_0=45.13333333333333",Fw=" +lat_1=46.66964837722222",Uw=" +lat_0=46.66964837722222",Gw=" +lat_0=43.48138888888889",zw=" +lat_1=45.89871486583333",Hw=" +lat_0=45.89871486583333",qw=" +lat_0=42.71944444444445",Zw=" +lat_1=44.97785689861112",Ww=" +lat_0=44.97785689861112",Vw=" +lat_1=43.46254664583333",Qw=" +lat_0=43.46254664583333",Kw=" +lon_0=-90.9388888888889",Yw=" +lat_0=41.47222222222222",Xw=" +lat_0=45.88333333333333",Jw=" +lat_0=44.40833333333333",$w=" +lat_1=44.87228112638889",tx=" +lat_0=44.87228112638889",ex=" +lat_0=45.43888888888888",nx=" +lat_0=44.00555555555555",rx=" +lat_0=41.41111111111111",ix=" +lat_1=42.63756227694444",ox=" +lat_0=42.63756227694444",sx=" +lat_1=43.80700011777778",ax=" +lat_0=43.80700011777778",lx=" +lat_0=42.53888888888888",ux=" +lat_0=45.43333333333333",hx=" +lat_0=44.25333512777778",cx=" +lat_0=42.21666666666667",fx=" +lat_0=43.26666666666667",dx=" +lat_0=43.45111111111111",px=" +lat_1=45.15423710527778",mx=" +lat_0=45.15423710527778",gx=" +lat_0=44.84444444444445",yx=" +lat_1=44.90090442361111",_x=" +lat_0=44.90090442361111",vx=" +lat_0=44.69166666666666",bx=" +lat_0=44.71666666666667",wx=" +lat_1=44.00007392861111",xx=" +lat_0=44.00007392861111",kx=" +lat_0=44.39722222222222",Sx=" +lat_1=45.70422377027778",Mx=" +lat_0=45.70422377027778",Ax=" +lat_1=44.63614887194444",Ex=" +lat_0=44.63614887194444",Cx=" +lat_0=44.66111111111111",Tx=" +lat_1=44.41682397527777",Ox=" +lat_0=44.41682397527777",Px=" +lat_0=44.55555555555555",Lx=" +lat_0=41.94444444444444",Ix=" +lat_0=43.91944444444444",Rx=" +lat_0=42.81944444444445",jx=" +lat_1=45.90009913138888",Nx=" +lat_0=45.90009913138888",Bx=" +lat_1=45.17782208583333",Dx=" +lat_0=45.17782208583333",Fx=" +lat_0=43.16111111111111",Ux=" +lat_1=43.57503293972223",Gx=" +lat_0=43.57503293972223",zx=" +lat_1=46.07784409055556",Hx=" +lat_0=46.07784409055556",qx=" +lat_1=42.66946209694444",Zx=" +lat_0=42.66946209694444",Wx=" +lat_1=45.96121983333334",Vx=" +lat_0=45.96121983333334",Qx=" +lat_0=42.91805555555555",Kx=" +lat_0=42.56944444444445",Yx=" +lat_0=43.42027777777778",Xx=" +lat_1=44.11394404583334",Jx=" +lat_0=44.11394404583334",$x=" +lat_1=44.36259546944444",tk=" +lat_0=44.36259546944444",ek=" +lat_1=44.10000000000001",nk=" +lat_0=44.10000000000001",rk=" +lat_1=42.16500000000001",ik=" +lat_0=42.16500000000001",ok=" +lat_0=52.15616055555555",sk=" +lat_2=48.73333333333333",ak=" +zone=3",lk=" +lat_0=53.5",uk=" +k=0.999923",hk=" +x_0=850000",ck=" +x_0=830000",fk=" +lon_0=16.5",dk=" +x_0=520000",pk=" +lat_2=31.5",mk=" +lon_0=10.5",gk=" +lat_1=44.5",yk=" +lon_0=-153",_k=" +lon_0=-135",vk=" +x_0=750000",bk=" +lat_0=43.5",wk=" +lon_0=-142",xk=" +lon_0=-146",kk=" +lon_0=-162",Sk=" +lon_0=-166",Mk=" +lon_0=-176",Ak=" +lat_2=39.5",Ek=" +lon_0=-129",Ck=" +k_0=1.0002",Tk=" +k=1.000023",Ok=" +lon_0=-121",Pk=" +k=1.000175",Lk=" +lat_0=45.5",Ik=" +k=1.000155",Rk=" +lat_2=37.5",jk=" +lat_1=48.5",Nk=" +k=1.000029",Bk=" +lat_0=39.6",Dk=" +k=1.000013",Fk=" +k=1.000022",Uk=" +lat_0=40.7",Gk=" +lat_0=39.3",zk=" +lat_0=37.8",Hk=" +lat_0=38.9",qk=" +lon_0=-5.4",Zk=" +y_0=626907.39",Wk=" +b=6356571.996",Vk=" +a=6377295.664",Qk=" +lon_0=5.38763888888889",Kk=" +y_0=-4600000.00001208",Yk=" +y_0=1889763.779527559",Xk=" +y_0=99999.99999960001",Jk=" +x_0=120091.4401828804",$k=" +lon_0=72",tS=" +lat_0=50",eS=" +lat_1=50",nS=" +lat_1=35",rS=" +lon_0=22",iS=" +lat_1=34",oS=" +lonc=115",sS=" +lat_0=-9",aS=" +lat_0=23",lS=" +lat_1=85",uS=" +lat_2=69",hS=" +lat_1=69",cS=" +lat_2=61",fS=" +lon_0=34",dS=" +lon_0=140.25",pS=" +lon_0=142.25",mS=" +lon_0=144.25",gS=" +x_0=47500000",yS=" +y_0=-3000000",_S=" +pm=2.337208333333333",vS=" +x_0=7000000.00000248",bS=" +lon_0=6",wS=" +k=0.997",xS=" +lon_0=106",kS=" +lon_0=154",SS=" +lon_0=156",MS=" +lat_2=-36",AS=" +lon_0=119",ES=" +lon_0=121",CS=" +lon_0=166",TS=" +a=6371228",OS=" +b=6371228",PS=" +a=6378273",LS=" +lat_0=-44",IS=" +pm=lisbon",RS=" +lon_0=-57",jS=" +lon_0=-56",NS=" +k=1.00007",BS=" +lonc=-123",DS=" +alpha=295",FS=" +gamma=295",US=" +k=1.00011",GS=" +k=1.00005",zS=" +k=1.00013",HS=" +x_0=30000",qS=" +k=1.00001",ZS=" +k=1.00003",WS=" +y_0=130000.00001472",VS=" +x_0=119999.99999952",QS=" +y_0=-2999999.999988",KS=" +x_0=-299999.9999988",YS=" +lat_1=43.0695160375",XS=" +lat_0=43.0695160375",JS=" +lat_1=43.3223129275",$S=" +lat_0=43.3223129275",tM=" +k=1.0000067",eM=" +a=6378298.3",nM=" +lon_0=-66.5",rM=" +lon_0=129.5",iM=" +lon_0=138.5",oM=" +x_0=2300000",sM=" +x_0=3300000",aM=" +x_0=4300000",lM=" +y_0=7500000",uM=" +lonc=102.25",hM=" +y_0=1166200",cM=" +x_0=3000000",fM=" +lat_1=46.25",dM=" +ellps=WGS66",pM=" +ellps=GRS67",mM=" +lat_1=34.65",gM=" +y_0=59999.99999976",yM=" +y_0=30000.00001512",_M=" +x_0=59999.99999976",vM=" +x_0=30000.00001512",bM=" +lat_1=43.200055605",wM=" +lat_0=43.200055605",xM=" +y_0=65379.0134283",kM=" +alpha=323.0257905",SM=" +alpha=53.31580995",MM=" +x_0=10000.0000152";t.exports=[2e3,i+f+Yf+ai+V+p+T+o+e,1,i+f+Yf+ai+V+p+T+A_+o+e,1,i+f+Yf+ai+V+p+T+E_+o+e,1,i+f+Yf+ai+V+p+T+C_+o+e,1,i+f+Yf+ai+V+p+T+T_+o+e,1,i+f+Yf+ai+V+p+T+yv+o+e,1,i+f+Yf+ai+V+p+T+d_+o+e,1,i+f+Yf+ai+V+p+T+gm+o+e,2,i+f+K_+x+At+p+j+o+e,1,i+f+Dg+x+At+p+j+o+e,1,i+f+Fg+x+At+p+j+o+e,1,i+f+Y_+x+At+p+j+o+e,1,i+f+Ya+x+At+p+j+o+e,1,i+f+X_+x+At+p+j+o+e,1,i+f+J_+x+At+p+j+o+e,1,i+f+ms+x+At+p+j+o+e,1,i+f+X_+x+At+p+j+o+e,1,i+f+J_+x+At+p+j+o+e,1,i+f+ms+x+At+p+j+o+e,1,i+f+ci+x+At+p+j+o+e,1,i+f+dn+x+At+p+j+o+e,1,i+f+Xf+x+At+p+j+o+e,1,i+f+gu+x+At+p+j+o+e,1,i+f+He+x+At+p+j+o+e,1,i+f+fy+x+At+p+j+o+e,1,i+f+$d+x+At+p+j+o+e,1,u+Zf+j+o+e,1,u+Wf+j+o+e,1,u+wl+j+o+e,1,u+Ga+j+o+e,1,u+wl+j+o+e,1,u+Ga+j+o+e,1,u+wa+j+o+e,1,u+Us+j+o+e,1,u+za+j+o+e,4,i+bp+wp+tM+Bv+Zk+r+_v+o+e,1,u+gp+T+Xl+o+e,1,u+gp+T+Ha+o+e,1,u+ju+T+Xl+o+e,1,u+ju+T+Ha+o+e,1,i+f+oi+" +k=1"+Pa+p+d+Vs+o+e,1,i+f+Go+" +k=1"+La+p+d+Vs+o+e,1,i+f+Ss+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+bv+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+Og+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+As+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+jy+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+Pg+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+ea+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+" +lon_0=29 +k=1"+Z+p+Ms+N+n+o+e,1,i+f+Um+" +k=1"+Z+p+Ms+N+n+o+e,1,i+f+Za+" +k=1"+Z+p+Ms+N+n+o+e,1,_m+gh+xp+" +k_0=1 +x_0=2600000"+$_+M+xm+o+e,1,gn+" +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +gamma=0.5716611944444444"+_+km+o+e,1,u+lu+_+Fs+o+e,1,u+Kl+_+Fs+o+e,1,u+lf+_+Fs+o+e,1,u+Kg+_+Fs+o+e,1,l+" +lat_1=40"+jo+ta+" +k_0=0.9988085293"+E+ug+eM+bg+" +pm=madrid"+o+e,3,uy+Dy+" +lon_0=42.5"+yh+x+Z+p+M+xs+kc+o+e,1,Ln+" +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952"+xi+ki+tw+e,1,u+Us+_+Sm+o+e,1,i+f+Nu+x+R+p+_+Q+o+e,1,i+f+" +lon_0=11"+x+R+p+_+Q+o+e,1,i+f+" +lon_0=13"+x+R+p+_+Q+o+e,1,i+f+Ss+x+R+p+_+Q+o+e,1,i+f+bv+x+R+p+_+Q+o+e,1,i+f+Og+x+R+p+_+Q+o+e,1,i+f+As+x+R+p+_+Q+o+e,1,i+f+jy+x+R+p+_+Q+o+e,1,i+f+Pg+x+R+p+_+Q+o+e,1,u+Yl+_+Q+o+e,1,u+Bu+_+Q+o+e,1,u+Vf+_+Q+o+e,1,u+mh+_+Q+o+e,1,i+F+Wc+" +k=1"+On+p+_+o+e,1,i+F+Wc+" +k=1"+On+p+_+ky+o+e,1,i+F+Wc+" +k=1"+On+p+_+Kd+o+e,1,u+wa+G+_+Kd+o+e,3,i+f+Wa+pt+m+p+_+Q+o+e,1,i+f+" +lon_0=11"+pt+m+p+vt+he+ks+o+e,1,u+lu+N+n+o+e,1,u+Kl+N+n+o+e,3,i+f+xS+" +k=1"+m+p+d+Vs+o+e,1,i+f+xS+pt+m+p+b+y+o+e,1,u+uu+_+O_+o+e,1,i+Tn+wi+" +k=1"+R+Tt+M+o+e,1,i+Tn+dy+" +k=1"+R+Tt+M+o+e,1,i+Tn+py+" +k=1"+R+Tt+M+o+e,1,Ln+" +lat_0=25.38236111111111 +lon_0=50.76138888888889"+ye+ni+Cs+o+e,1,i+f+Va+pt+m+p+r+Xm+o+e,1,l+_h+vh+Qu+" +k_0=1"+Z+" +y_0=-52684.972"+_+o+e,1,l+_h+vh+Qu+" +k_0=1"+R+" +y_0=147315.028"+_+o+e,1,l+_h+vh+Qu+" +k_0=1"+m+" +y_0=447315.028"+_+o+e,1,l+_h+vh+Qu+" +k_0=1 +x_0=-17044 +y_0=-23139.97"+_+o+e,1,i+" +lat_0=-36.87972222222222 +lon_0=174.7641666666667"+x+V+hn+r+n+o+e,1,i+" +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-39.51222222222222 +lon_0=175.64 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-42.68888888888888 +lon_0=173.01 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-43.11 +lon_0=170.2608333333333 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-44.735 +lon_0=169.4675 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1"+V+hn+r+n+o+e,1,i+" +lat_0=-45.86138888888889 +lon_0=170.2825"+tm+V+hn+r+n+o+e,1,i+" +lat_0=-46.6 +lon_0=168.3427777777778 +k=1"+V+hn+r+n+o+e,1,u+Pc+G+r+n+o+e,1,u+_d+G+r+n+o+e,1,u+Bp+G+r+n+o+e,1,i+ew+" +lon_0=-1"+my+" +x_0=274319.7391633579"+p+og+Ea+Df+Ff+e,1,i+f+" +lon_0=-1"+pt+m+p+og+Ea+Df+o+e,1,l+wv+ud+hl+Ys+Z+p+j+o+e,16,l+Zh+" +lat_2=44"+El+yp+pi+" +y_0=6600000"+r+n+o+e,3,i+lk+" +lon_0=-8 +k=0.99982"+E+pf+r+n+o+e,1,u+ju+r+n+o+e,1,i+nw+" +lon_0=-12 +k=1 +x_0=152399.8550907544"+p+og+Ea+Ff+e,1,i+nw+" +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053"+og+Ea+Ff+e,1,u+uu+T+Yd+o+e,1,u+ju+T+Yd+o+e,1,ya+tl+pn+Z+p+" +a=6370997 +b=6370997"+o+e,1,i+f+" +lon_0=-5"+pt+m+p+T+Xl+o+e,1,i+f+" +lon_0=-5"+pt+m+p+T+Ha+o+e,4,i+" +lat_0=49.83333333333334"+rw+" +k=1"+tp+ni+_+Lu+o+e,3,us+" +lat_0=53.00194444444445 +lon_0=21.50277777777778"+xv+" +x_0=4603000 +y_0=5806000"+d+C+o+e,1,us+" +lat_0=53.58333333333334 +lon_0=17.00833333333333"+xv+" +x_0=3501000 +y_0=5999000"+d+C+o+e,1,us+" +lat_0=51.67083333333333 +lon_0=16.67222222222222"+xv+" +x_0=3703000 +y_0=5627000"+d+C+o+e,1,i+f+" +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000"+d+C+o+e,1,i+f+Ss+uk+Si+p+r+n+o+e,1,i+f+Gm+uk+Cu+p+r+n+o+e,1,i+f+As+uk+Xa+p+r+n+o+e,1,i+f+Va+uk+Kc+p+r+n+o+e,1,i+f+Og+" +k=0.9993"+m+" +y_0=-5300000"+r+n+o+e,8,u+vd+_+p_+o+e,1,u+_p+_+m_+o+e,1,u+_p+_+P_+o+e,3,i+f+" +lon_0=173"+pt+" +x_0=1600000"+jt+r+n+o+e,2,u+F_+G+r+n+o+e,1,i+f+" +lon_0=9.5"+cn+R+p+r+n+o+e,1,i+f+Wa+cn+m+p+r+n+o+e,1,i+f+Ss+" +k=1"+sa+p+r+n+o+e,2,us+El+nM+Fy+at+hn+em+Ps+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,u+Us+r+n+o+e,1,l+" +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666"+Vc+A+vm+S+h+e,1,l+Yt+mr+sr+ku+m+p+r+n+o+e,1,i+f+ea+" +k=1"+Yc+p+_+U+o+e,1,i+f+cl+" +k=1"+rc+p+_+U+o+e,1,i+f+Za+" +k=1"+Su+p+_+U+o+e,1,i+f+Fp+" +k=1"+ic+p+_+U+o+e,1,i+f+Wh+" +k=1"+aa+p+_+U+o+e,1,i+f+Up+" +k=1"+Bs+p+_+U+o+e,1,i+f+eu+" +k=1"+Ia+p+_+U+o+e,1,i+f+cl+pt+m+p+r+n+o+e,2,u+Yl+vt+he+Mg+o+e,1,u+Ml+_+Nf+o+e,1,u+Lc+_+Nf+o+e,2,u+wa+em+Ps+o+e,1,u+Us+em+Ps+o+e,2,i+Re+jn+x+mi+p+r+n+W+e,1,i+Re+Nn+x+mi+p+r+n+W+e,1,i+Re+Ll+re+mi+p+r+n+W+e,1,l+gr+xu+X+Gs+Et+nt+r+n+h+e,1,l+yr+_r+$+Gs+Et+nt+r+n+h+e,1,l+Ut+vr+mf+lt+Et+nt+r+n+h+e,1,l+Vh+zm+br+gf+Et+nt+r+n+h+e,1,l+wr+xr+yf+Cl+Et+nt+r+n+h+e,1,l+kr+Sr+Mr+Il+Et+nt+r+n+h+e,1,l+Mi+Ai+X+ke+Ze+an+r+n+h+e,1,l+Qh+Kh+bn+ke+Ze+an+r+n+h+e,1,l+Ut+Ar+L+ke+Ze+an+r+n+h+e,1,l+Er+_f+Cr+Mu+Ic+Rc+r+n+h+e,1,i+Tn+Bn+vf+rt+p+r+n+h+e,1,i+Gt+dn+Bt+rt+p+r+n+h+e,1,i+Gt+ep+Bt+rt+p+r+n+h+e,1,l+Yh+Tr+Hm+Xh+E+p+r+n+h+e,1,i+Es+Dn+x+rt+p+r+n+h+e,1,i+Es+Fn+x+ln+p+r+n+h+e,1,i+z+Un+se+rt+p+r+n+h+e,1,i+z+hu+se+it+p+r+n+h+e,1,i+z+Rl+re+jc+p+r+n+h+e,3,l+Yt+mr+sr+ku+it+p+r+n+h+e,1,l+Ei+Ci+tt+gi+it+nt+r+n+h+e,1,l+Xc+Ed+$+lc+Nc+p+r+n+h+e,1,l+Ti+Or+Al+Vo+rt+pf+r+n+h+e,1,l+Oi+Pi+Al+Ya+it+p+r+n+h+e,1,l+Li+Ii+Ri+gu+Bc+p+r+n+W+e,1,l+Cd+ji+Ni+ee+Dc+p+r+n+W+e,1,l+Fe+Td+Po+ee+Vd+p+r+n+W+e,1,i+xa+Gn+cn+ne+p+r+n+h+e,1,i+xa+We+cn+ln+p+r+n+h+e,1,l+Zh+Lg+Jc+rl+cr+p+r+n+W+e,1,i+Re+zn+Ma+Od+p+r+n+h+e,1,i+Re+jl+x+it+p+r+n+h+e,1,i+Re+Hn+Nl+Fc+p+r+n+h+e,1,i+Xt+Os+x+Ne+p+r+n+h+e,1,i+jo+qn+Ct+Uc+p+r+n+h+e,1,i+jo+Zn+Ct+Gc+p+r+n+h+e,1,l+Pr+Lr+Jt+np+ne+p+r+n+h+e,1,l+Bi+Di+Jh+Jf+A+p+r+n+h+e,1,l+ie+Fi+fl+yi+cr+p+r+n+W+e,1,l+Ui+Gi+Ee+yi+cr+p+r+n+W+e,1,l+Ir+zi+qm+Co+E+p+r+n+h+e,1,l+Hi+qi+Rr+Co+E+p+r+n+h+e,1,l+Gp+wn+ut+lt+Wu+p+r+n+W+e,1,l+zp+xn+z+lt+Vu+p+r+n+W+e,1,l+$c+Zi+Jt+_i+E+p+r+n+h+e,1,l+jr+Nr+X+_i+E+p+r+n+h+e,1,l+Wi+Pd+Br+dn+Ld+p+r+n+W+e,1,l+Vi+tf+$t+Vc+E+p+r+n+h+e,1,l+Qi+ef+Zm+Au+rt+un+r+n+h+e,1,l+Ki+Yi+Dr+yn+E+Ls+r+n+h+e,1,l+Xi+Ji+kn+Pt+ln+Io+r+n+h+e,1,l+$i+to+Fr+yu+E+sd+r+n+h+e,1,l+Je+$e+Sn+yn+ne+ad+r+n+h+e,1,l+kt+tn+Ue+oe+_s+bm+r+n+W+e,1,l+zl+en+mt+oe+_s+Wg+r+n+W+e,1,l+Hl+nn+L+oe+_s+Vg+r+n+W+e,1,l+Id+eo+$+Qo+Is+Ls+r+n+h+e,1,l+Yt+Ur+tt+Qo+Is+un+r+n+h+e,1,l+ie+Rd+fl+Wn+it+p+r+n+h+e,1,l+no+ro+Gr+lt+it+p+r+n+h+e,1,l+io+oo+zr+He+E+p+r+n+h+e,1,l+cu+nf+ht+He+E+p+r+n+h+e,1,l+so+ao+Hp+He+E+p+r+n+h+e,1,us+" +lat_0=47.25"+sg+Fy+pi+Tl+em+Ps+o+e,4,i+f+Dg+x+ur+p+em+Ps+o+e,1,i+f+Fg+x+Si+p+em+Ps+o+e,13,i+f+" +lon_0=109"+pt+m+jt+M+Pn+o+e,1,i+f+" +lon_0=116"+pt+m+jt+v+o+e,1,i+f+xl+pt+m+jt+v+o+e,1,i+f+bS+pt+m+p+v+o+e,1,u+Bu+T+o+e,1,u+Bu+T+o+e,1,Ln+iw+Fv+" +x_0=86501.46392052001"+xM+xi+ki+Vl+zc+e,1,u+wa+G+_+Ge+o+e,1,u+Us+G+_+Ge+o+e,1,l+" +lat_1=9 +lat_2=3 +lat_0=6"+nm+xe+st+_+xt+o+e,1,l+" +lat_1=17 +lat_2=33 +lat_0=25.08951"+Ny+Z+p+_+Rn+o+e,1,i+f+ea+" +k=1"+m+p+_+U+o+e,1,i+f+cl+" +k=1"+m+p+_+U+o+e,1,i+f+Za+" +k=1"+m+p+_+U+o+e,1,i+f+Fp+" +k=1"+m+p+_+U+o+e,1,i+f+Wh+" +k=1"+m+p+_+U+o+e,1,i+f+Up+" +k=1"+m+p+_+U+o+e,1,i+f+eu+" +k=1"+m+p+_+U+o+e,1,i+ow+sw+" +k=1 +x_0=836694.05 +y_0=819069.8"+_+mu+o+e,1,i+f+na+" +k=1"+aa+p+Ht+O+o+e,1,i+f+ra+" +k=1"+Bs+p+Ht+O+o+e,1,i+f+ga+" +k=1"+Ia+p+Ht+O+o+e,1,i+f+ia+" +k=1"+Ra+p+Ht+O+o+e,1,i+f+oa+" +k=1"+Ol+p+Ht+O+o+e,1,i+f+oi+" +k=1"+Pa+p+Ht+O+o+e,1,i+f+Go+" +k=1"+La+p+Ht+O+o+e,1,i+f+To+" +k=1"+la+p+Ht+O+o+e,1,i+f+Ro+" +k=1"+ja+p+Ht+O+o+e,1,i+f+wi+" +k=1"+ua+p+Ht+O+o+e,1,i+f+Oo+" +k=1"+Na+p+Ht+O+o+e,1,i+f+na+" +k=1"+m+p+Ht+O+o+e,1,i+f+ra+" +k=1"+m+p+Ht+O+o+e,1,i+f+ga+" +k=1"+m+p+Ht+O+o+e,1,i+f+ia+" +k=1"+m+p+Ht+O+o+e,1,i+f+oa+" +k=1"+m+p+Ht+O+o+e,1,i+f+oi+" +k=1"+m+p+Ht+O+o+e,1,i+f+Go+" +k=1"+m+p+Ht+O+o+e,1,i+f+To+" +k=1"+m+p+Ht+O+o+e,1,i+f+Ro+" +k=1"+m+p+Ht+O+o+e,1,i+f+wi+" +k=1"+m+p+Ht+O+o+e,1,i+f+Oo+" +k=1"+m+p+Ht+O+o+e,1,i+f+na+" +k=1"+Ba+p+Ht+O+o+e,1,i+f+Sc+" +k=1"+Da+p+Ht+O+o+e,1,i+f+ra+" +k=1"+Fa+p+Ht+O+o+e,1,i+f+hd+" +k=1"+Ua+p+Ht+O+o+e,1,i+f+ga+" +k=1"+Ds+p+Ht+O+o+e,1,i+f+Ta+" +k=1"+il+p+Ht+O+o+e,1,i+f+ia+" +k=1"+ys+p+Ht+O+o+e,1,i+f+df+" +k=1"+ol+p+Ht+O+o+e,1,i+f+oa+" +k=1"+Pl+p+Ht+O+o+e,1,i+f+_u+" +k=1"+Sf+p+Ht+O+o+e,1,i+f+oi+" +k=1"+Mf+p+Ht+O+o+e,1,i+f+uc+" +k=1"+Af+p+Ht+O+o+e,1,i+f+Go+" +k=1"+Ef+p+Ht+O+o+e,1,i+f+kl+" +k=1"+Cf+p+Ht+O+o+e,1,i+f+To+" +k=1"+Tf+p+Ht+O+o+e,1,i+f+Uu+" +k=1"+Of+p+Ht+O+o+e,1,i+f+Ro+" +k=1"+Pf+p+Ht+O+o+e,1,i+f+vu+" +k=1"+ap+p+Ht+O+o+e,1,i+f+wi+" +k=1"+Lf+p+Ht+O+o+e,1,i+f+xl+" +k=1"+lp+p+Ht+O+o+e,1,i+f+Oo+" +k=1"+If+p+Ht+O+o+e,1,i+f+na+" +k=1"+m+p+Ht+O+o+e,1,i+f+Sc+" +k=1"+m+p+Ht+O+o+e,1,i+f+ra+" +k=1"+m+p+Ht+O+o+e,1,i+f+hd+" +k=1"+m+p+Ht+O+o+e,1,i+f+ga+" +k=1"+m+p+Ht+O+o+e,1,i+f+Ta+" +k=1"+m+p+Ht+O+o+e,1,i+f+ia+" +k=1"+m+p+Ht+O+o+e,1,i+f+df+" +k=1"+m+p+Ht+O+o+e,1,i+f+oa+" +k=1"+m+p+Ht+O+o+e,1,i+f+_u+" +k=1"+m+p+Ht+O+o+e,1,i+f+oi+" +k=1"+m+p+Ht+O+o+e,1,i+f+uc+" +k=1"+m+p+Ht+O+o+e,1,i+f+Go+" +k=1"+m+p+Ht+O+o+e,1,i+f+kl+" +k=1"+m+p+Ht+O+o+e,1,i+f+To+" +k=1"+m+p+Ht+O+o+e,1,i+f+Uu+" +k=1"+m+p+Ht+O+o+e,1,i+f+Ro+" +k=1"+m+p+Ht+O+o+e,1,i+f+vu+" +k=1"+m+p+Ht+O+o+e,1,i+f+wi+" +k=1"+m+p+Ht+O+o+e,1,i+f+xl+" +k=1"+m+p+Ht+O+o+e,1,i+f+Oo+" +k=1"+m+p+Ht+O+o+e,1,i+f+As+" +k=1"+bt+p+_+qt+o+e,1,i+f+Va+" +k=1"+On+p+_+qt+o+e,1,i+f+ea+" +k=1"+Be+p+_+qt+o+e,1,i+f+cl+" +k=1"+ur+p+_+qt+o+e,1,i+f+eu+" +k=1"+Kc+p+d+Uf+o+e,1,i+f+qp+" +k=1"+Yc+p+d+Uf+o+e,1,i+f+Nu+" +k=1"+Be+p+d+zt+o+e,1,i+f+Wa+" +k=1"+ur+p+d+zt+o+e,1,i+f+Ss+" +k=1"+Si+p+d+zt+o+e,2,i+f+na+" +k=1"+Ba+p+d+w+o+e,1,i+f+Sc+" +k=1"+Da+p+d+w+o+e,1,i+f+ra+" +k=1"+Fa+p+d+w+o+e,1,i+f+hd+" +k=1"+Ua+p+d+w+o+e,1,i+f+ga+" +k=1"+Ds+p+d+w+o+e,1,i+f+Ta+" +k=1"+il+p+d+w+o+e,1,i+f+ia+" +k=1"+ys+p+d+w+o+e,1,i+f+df+" +k=1"+ol+p+d+w+o+e,1,i+f+oa+" +k=1"+Pl+p+d+w+o+e,1,i+f+_u+" +k=1"+Sf+p+d+w+o+e,1,i+f+oi+" +k=1"+Mf+p+d+w+o+e,1,i+f+uc+" +k=1"+Af+p+d+w+o+e,1,i+f+Go+" +k=1"+Ef+p+d+w+o+e,1,i+f+kl+" +k=1"+Cf+p+d+w+o+e,1,i+f+To+" +k=1"+Tf+p+d+w+o+e,1,i+f+Uu+" +k=1"+Of+p+d+w+o+e,1,i+f+Ro+" +k=1"+Pf+p+d+w+o+e,1,i+f+vu+" +k=1"+ap+p+d+w+o+e,1,i+f+wi+" +k=1"+Lf+p+d+w+o+e,1,i+f+xl+" +k=1"+lp+p+d+w+o+e,1,i+f+Oo+" +k=1"+If+p+d+w+o+e,1,i+f+na+" +k=1"+m+p+d+w+o+e,1,i+f+Sc+" +k=1"+m+p+d+w+o+e,1,i+f+ra+" +k=1"+m+p+d+w+o+e,1,i+f+hd+" +k=1"+m+p+d+w+o+e,1,i+f+ga+" +k=1"+m+p+d+w+o+e,1,i+f+Ta+" +k=1"+m+p+d+w+o+e,1,i+f+ia+" +k=1"+m+p+d+w+o+e,1,i+f+df+" +k=1"+m+p+d+w+o+e,1,i+f+oa+" +k=1"+m+p+d+w+o+e,1,i+f+_u+" +k=1"+m+p+d+w+o+e,1,i+f+oi+" +k=1"+m+p+d+w+o+e,1,i+f+uc+" +k=1"+m+p+d+w+o+e,1,i+f+Go+" +k=1"+m+p+d+w+o+e,1,i+f+kl+" +k=1"+m+p+d+w+o+e,1,i+f+To+" +k=1"+m+p+d+w+o+e,1,i+f+Uu+" +k=1"+m+p+d+w+o+e,1,i+f+Ro+" +k=1"+m+p+d+w+o+e,1,i+f+vu+" +k=1"+m+p+d+w+o+e,1,i+f+wi+" +k=1"+m+p+d+w+o+e,1,i+f+xl+" +k=1"+m+p+d+w+o+e,1,i+f+Oo+" +k=1"+m+p+d+w+o+e,1,i+Zp+rM+x+Z+p+r+n+o+e,1,i+Zp+$f+x+Z+p+r+n+o+e,1,i+es+kp+x+Z+p+r+n+o+e,1,i+Zp+tv+x+Z+p+r+n+o+e,1,i+es+Sp+x+Z+p+r+n+o+e,1,i+es+gy+x+Z+p+r+n+o+e,1,i+es+Mp+x+Z+p+r+n+o+e,1,i+es+iM+x+Z+p+r+n+o+e,1,i+es+Ap+x+Z+p+r+n+o+e,1,i+jo+Ep+x+Z+p+r+n+o+e,1,i+hl+dS+x+Z+p+r+n+o+e,1,i+hl+pS+x+Z+p+r+n+o+e,1,i+hl+mS+x+Z+p+r+n+o+e,1,i+el+" +lon_0=142"+x+Z+p+r+n+o+e,1,i+el+am+x+Z+p+r+n+o+e,1,i+el+" +lon_0=124"+x+Z+p+r+n+o+e,1,i+el+$f+x+Z+p+r+n+o+e,1,i+" +lat_0=20"+gy+x+Z+p+r+n+o+e,1,i+el+kS+x+Z+p+r+n+o+e,1,i+f+As+" +k=1"+ur+p+d+o+e,1,i+f+As+" +k=1"+m+p+d+a+o+e,1,i+f+ea+" +k=1"+m+p+d+a+o+e,1,i+f+Za+" +k=1"+m+p+d+a+o+e,1,i+f+Wh+" +k=1"+m+p+d+a+o+e,1,i+f+eu+" +k=1"+m+p+d+a+o+e,1,i+f+qp+" +k=1"+m+p+d+a+o+e,1,i+f+Ig+" +k=1"+m+p+d+a+o+e,1,i+f+Wm+" +k=1"+m+p+d+a+o+e,1,i+f+Rg+" +k=1"+m+p+d+a+o+e,1,i+f+na+" +k=1"+m+p+d+a+o+e,1,i+f+ra+" +k=1"+m+p+d+a+o+e,1,i+f+ga+" +k=1"+m+p+d+a+o+e,1,i+f+ia+" +k=1"+m+p+d+a+o+e,1,i+f+oa+" +k=1"+m+p+d+a+o+e,1,i+f+oi+" +k=1"+m+p+d+a+o+e,1,i+f+Go+" +k=1"+m+p+d+a+o+e,1,i+f+To+" +k=1"+m+p+d+a+o+e,1,i+f+Ro+" +k=1"+m+p+d+a+o+e,1,i+f+wi+" +k=1"+m+p+d+a+o+e,1,i+f+Oo+" +k=1"+m+p+d+a+o+e,1,i+f+rm+" +k=1"+m+p+d+a+o+e,1,i+f+rp+" +k=1"+m+p+d+a+o+e,1,i+f+td+" +k=1"+m+p+d+a+o+e,1,i+f+im+" +k=1"+m+p+d+a+o+e,1,i+f+ed+" +k=1"+m+p+d+a+o+e,1,i+f+hc+" +k=1"+m+p+d+a+o+e,1,i+f+Gu+" +k=1"+m+p+d+a+o+e,1,i+f+zu+" +k=1"+m+p+d+a+o+e,1,i+f+fc+" +k=1"+m+p+d+a+o+e,3,i+f+As+" +k=1"+m+p+d+s+o+e,1,i+f+ea+" +k=1"+m+p+d+s+o+e,1,i+f+Za+" +k=1"+m+p+d+s+o+e,1,i+f+Wh+" +k=1"+m+p+d+s+o+e,1,i+f+eu+" +k=1"+m+p+d+s+o+e,1,i+f+qp+" +k=1"+m+p+d+s+o+e,1,i+f+Ig+" +k=1"+m+p+d+s+o+e,1,i+f+Wm+" +k=1"+m+p+d+s+o+e,1,i+f+Rg+" +k=1"+m+p+d+s+o+e,1,i+f+na+" +k=1"+m+p+d+s+o+e,1,i+f+ra+" +k=1"+m+p+d+s+o+e,1,i+f+ga+" +k=1"+m+p+d+s+o+e,1,i+f+ia+" +k=1"+m+p+d+s+o+e,1,i+f+oa+" +k=1"+m+p+d+s+o+e,1,i+f+oi+" +k=1"+m+p+d+s+o+e,1,i+f+Go+" +k=1"+m+p+d+s+o+e,1,i+f+To+" +k=1"+m+p+d+s+o+e,1,i+f+Ro+" +k=1"+m+p+d+s+o+e,1,i+f+wi+" +k=1"+m+p+d+s+o+e,1,i+f+Oo+" +k=1"+m+p+d+s+o+e,1,i+f+rm+" +k=1"+m+p+d+s+o+e,1,i+f+rp+" +k=1"+m+p+d+s+o+e,1,i+f+td+" +k=1"+m+p+d+s+o+e,1,i+f+im+" +k=1"+m+p+d+s+o+e,1,i+f+ed+" +k=1"+m+p+d+s+o+e,1,i+f+hc+" +k=1"+m+p+d+s+o+e,1,i+f+Gu+" +k=1"+m+p+d+s+o+e,1,i+f+zu+" +k=1"+m+p+d+s+o+e,1,i+f+fc+" +k=1"+m+p+d+s+o+e,1,i+f+As+" +k=1"+Xa+p+d+s+o+e,1,i+f+Va+" +k=1"+Kc+p+d+s+o+e,1,i+f+ea+" +k=1"+Yc+p+d+s+o+e,1,i+f+cl+" +k=1"+rc+p+d+s+o+e,1,i+f+Za+" +k=1"+Su+p+d+s+o+e,1,i+f+Fp+" +k=1"+ic+p+d+s+o+e,1,i+f+Wh+" +k=1"+aa+p+d+s+o+e,1,i+f+Up+" +k=1"+Bs+p+d+s+o+e,1,i+f+eu+" +k=1"+Ia+p+d+s+o+e,1,i+f+Ny+" +k=1"+Ra+p+d+s+o+e,1,i+f+qp+" +k=1"+Ol+p+d+s+o+e,1,i+f+By+" +k=1"+Pa+p+d+s+o+e,1,i+f+Ig+" +k=1"+La+p+d+s+o+e,1,i+f+" +lon_0=60 +k=1"+la+p+d+s+o+e,1,i+f+Wm+" +k=1"+ja+p+d+s+o+e,1,i+f+kv+" +k=1"+ua+p+d+s+o+e,1,i+f+Rg+" +k=1"+Na+p+d+s+o+e,1,i+f+$k+" +k=1"+oc+p+d+s+o+e,1,i+f+na+" +k=1"+Ba+p+d+s+o+e,1,i+f+Sc+" +k=1"+Da+p+d+s+o+e,1,i+f+ra+" +k=1"+Fa+p+d+s+o+e,1,i+f+hd+" +k=1"+Ua+p+d+s+o+e,1,i+f+ga+" +k=1"+Ds+p+d+s+o+e,1,i+f+Ta+" +k=1"+il+p+d+s+o+e,1,i+f+ia+" +k=1"+ys+p+d+s+o+e,1,i+f+df+" +k=1"+ol+p+d+s+o+e,1,i+f+oa+" +k=1"+Pl+p+d+s+o+e,2,i+f+_u+" +k=1"+Sf+p+d+s+o+e,1,i+f+oi+" +k=1"+Mf+p+d+s+o+e,1,i+f+uc+" +k=1"+Af+p+d+s+o+e,1,i+f+Go+" +k=1"+Ef+p+d+s+o+e,1,i+f+kl+" +k=1"+Cf+p+d+s+o+e,1,i+f+To+" +k=1"+Tf+p+d+s+o+e,1,i+f+Uu+" +k=1"+Of+p+d+s+o+e,1,i+f+Ro+" +k=1"+Pf+p+d+s+o+e,1,i+f+vu+" +k=1"+ap+p+d+s+o+e,1,i+f+wi+" +k=1"+Lf+p+d+s+o+e,1,i+f+xl+" +k=1"+lp+p+d+s+o+e,1,i+f+Oo+" +k=1"+If+p+d+s+o+e,1,i+f+yy+" +k=1 +x_0=46500000"+p+d+s+o+e,1,i+f+rm+" +k=1"+gS+p+d+s+o+e,1,i+f+Tv+" +k=1 +x_0=48500000"+p+d+s+o+e,1,i+f+rp+" +k=1 +x_0=49500000"+p+d+s+o+e,1,i+f+ip+" +k=1 +x_0=50500000"+p+d+s+o+e,1,i+f+td+" +k=1 +x_0=51500000"+p+d+s+o+e,1,i+f+SS+" +k=1 +x_0=52500000"+p+d+s+o+e,1,i+f+im+" +k=1 +x_0=53500000"+p+d+s+o+e,1,i+f+ag+" +k=1 +x_0=54500000"+p+d+s+o+e,1,i+f+ed+" +k=1 +x_0=55500000"+p+d+s+o+e,1,i+f+Ov+" +k=1 +x_0=56500000"+p+d+s+o+e,1,i+f+hc+" +k=1 +x_0=57500000"+p+d+s+o+e,1,i+f+Pv+" +k=1 +x_0=58500000"+p+d+s+o+e,1,i+f+Gu+" +k=1 +x_0=59500000"+p+d+s+o+e,2,i+f+zu+" +k=1 +x_0=61500000"+p+d+s+o+e,1,i+f+Uy+" +k=1 +x_0=62500000"+p+d+s+o+e,1,i+f+fc+" +k=1 +x_0=63500000"+p+d+s+o+e,1,i+f+Gy+" +k=1 +x_0=64500000"+p+d+s+o+e,1,i+f+As+" +k=1"+m+p+d+s+o+e,1,i+f+Va+" +k=1"+m+p+d+s+o+e,1,i+f+ea+" +k=1"+m+p+d+s+o+e,1,i+f+cl+" +k=1"+m+p+d+s+o+e,1,i+f+Za+" +k=1"+m+p+d+s+o+e,1,i+f+Fp+" +k=1"+m+p+d+s+o+e,1,i+f+Wh+" +k=1"+m+p+d+s+o+e,1,i+f+Up+" +k=1"+m+p+d+s+o+e,1,i+f+eu+" +k=1"+m+p+d+s+o+e,1,i+f+Ny+" +k=1"+m+p+d+s+o+e,1,i+f+qp+" +k=1"+m+p+d+s+o+e,1,i+f+By+" +k=1"+m+p+d+s+o+e,1,i+f+Ig+" +k=1"+m+p+d+s+o+e,1,i+f+" +lon_0=60 +k=1"+m+p+d+s+o+e,1,i+f+Wm+" +k=1"+m+p+d+s+o+e,1,i+f+kv+" +k=1"+m+p+d+s+o+e,1,i+f+Rg+" +k=1"+m+p+d+s+o+e,1,i+f+$k+" +k=1"+m+p+d+s+o+e,2,i+f+na+" +k=1"+m+p+d+s+o+e,1,i+f+Sc+" +k=1"+m+p+d+s+o+e,1,i+f+ra+" +k=1"+m+p+d+s+o+e,1,i+f+hd+" +k=1"+m+p+d+s+o+e,1,i+f+ga+" +k=1"+m+p+d+s+o+e,1,i+f+Ta+" +k=1"+m+p+d+s+o+e,1,i+f+ia+" +k=1"+m+p+d+s+o+e,1,i+f+df+" +k=1"+m+p+d+s+o+e,1,i+f+oa+" +k=1"+m+p+d+s+o+e,1,i+f+_u+" +k=1"+m+p+d+s+o+e,1,i+f+oi+" +k=1"+m+p+d+s+o+e,1,i+f+uc+" +k=1"+m+p+d+s+o+e,1,i+f+Go+" +k=1"+m+p+d+s+o+e,1,i+f+kl+" +k=1"+m+p+d+s+o+e,1,i+f+To+" +k=1"+m+p+d+s+o+e,1,i+f+Uu+" +k=1"+m+p+d+s+o+e,1,i+f+Ro+" +k=1"+m+p+d+s+o+e,1,i+f+vu+" +k=1"+m+p+d+s+o+e,1,i+f+wi+" +k=1"+m+p+d+s+o+e,1,i+f+xl+" +k=1"+m+p+d+s+o+e,1,i+f+Oo+" +k=1"+m+p+d+s+o+e,1,i+f+yy+" +k=1"+m+p+d+s+o+e,1,i+f+rm+" +k=1"+m+p+d+s+o+e,1,i+f+Tv+" +k=1"+m+p+d+s+o+e,1,i+f+rp+" +k=1"+m+p+d+s+o+e,1,i+f+ip+" +k=1"+m+p+d+s+o+e,1,i+f+td+" +k=1"+m+p+d+s+o+e,1,i+f+SS+" +k=1"+m+p+d+s+o+e,1,i+f+im+" +k=1"+m+p+d+s+o+e,1,i+f+ag+" +k=1"+m+p+d+s+o+e,1,i+f+ed+" +k=1"+m+p+d+s+o+e,1,i+f+Ov+" +k=1"+m+p+d+s+o+e,1,i+f+hc+" +k=1"+m+p+d+s+o+e,1,i+f+Pv+" +k=1"+m+p+d+s+o+e,1,i+f+Gu+" +k=1"+m+p+d+s+o+e,1,i+f+_y+" +k=1"+m+p+d+s+o+e,1,i+f+zu+" +k=1"+m+p+d+s+o+e,1,i+f+Uy+" +k=1"+m+p+d+s+o+e,1,i+f+fc+" +k=1"+m+p+d+s+o+e,1,i+f+Gy+" +k=1"+m+p+d+s+o+e,1,i+f+As+" +k=1"+Xa+p+d+a+o+e,1,i+f+Va+" +k=1"+Kc+p+d+a+o+e,1,i+f+ea+" +k=1"+Yc+p+d+a+o+e,1,i+f+cl+" +k=1"+rc+p+d+a+o+e,1,i+f+Za+" +k=1"+Su+p+d+a+o+e,1,i+f+Fp+" +k=1"+ic+p+d+a+o+e,1,i+f+Wh+" +k=1"+aa+p+d+a+o+e,1,i+f+Up+" +k=1"+Bs+p+d+a+o+e,1,i+f+eu+" +k=1"+Ia+p+d+a+o+e,1,i+f+Ny+" +k=1"+Ra+p+d+a+o+e,1,i+f+qp+" +k=1"+Ol+p+d+a+o+e,1,i+f+By+" +k=1"+Pa+p+d+a+o+e,1,i+f+Ig+" +k=1"+La+p+d+a+o+e,1,i+f+" +lon_0=60 +k=1"+la+p+d+a+o+e,1,i+f+Wm+" +k=1"+ja+p+d+a+o+e,1,i+f+kv+" +k=1"+ua+p+d+a+o+e,1,i+f+Rg+" +k=1"+Na+p+d+a+o+e,1,i+f+$k+" +k=1"+oc+p+d+a+o+e,1,i+f+na+" +k=1"+Ba+p+d+a+o+e,1,i+f+Sc+" +k=1"+Da+p+d+a+o+e,1,i+f+ra+" +k=1"+Fa+p+d+a+o+e,1,i+f+hd+" +k=1"+Ua+p+d+a+o+e,1,i+f+ga+" +k=1"+Ds+p+d+a+o+e,1,i+f+Ta+" +k=1"+il+p+d+a+o+e,1,i+f+ia+" +k=1"+ys+p+d+a+o+e,1,i+f+df+" +k=1"+ol+p+d+a+o+e,1,i+f+oa+" +k=1"+Pl+p+d+a+o+e,1,i+f+_u+" +k=1"+Sf+p+d+a+o+e,1,i+f+oi+" +k=1"+Mf+p+d+a+o+e,1,i+f+uc+" +k=1"+Af+p+d+a+o+e,1,i+f+Go+" +k=1"+Ef+p+d+a+o+e,1,i+f+kl+" +k=1"+Cf+p+d+a+o+e,1,i+f+To+" +k=1"+Tf+p+d+a+o+e,1,i+f+Uu+" +k=1"+Of+p+d+a+o+e,1,i+f+Ro+" +k=1"+Pf+p+d+a+o+e,1,i+f+vu+" +k=1"+ap+p+d+a+o+e,1,i+f+wi+" +k=1"+Lf+p+d+a+o+e,1,i+f+xl+" +k=1"+lp+p+d+a+o+e,1,i+f+Oo+" +k=1"+If+p+d+a+o+e,1,i+f+yy+" +k=1 +x_0=46500000"+p+d+a+o+e,1,i+f+rm+" +k=1"+gS+p+d+a+o+e,1,i+f+Tv+" +k=1 +x_0=48500000"+p+d+a+o+e,1,i+f+rp+" +k=1 +x_0=49500000"+p+d+a+o+e,1,i+f+ip+" +k=1 +x_0=50500000"+p+d+a+o+e,1,i+f+td+" +k=1 +x_0=51500000"+p+d+a+o+e,1,i+f+SS+" +k=1 +x_0=52500000"+p+d+a+o+e,1,i+f+im+" +k=1 +x_0=53500000"+p+d+a+o+e,1,i+f+ag+" +k=1 +x_0=54500000"+p+d+a+o+e,1,i+f+ed+" +k=1 +x_0=55500000"+p+d+a+o+e,1,i+f+Ov+" +k=1 +x_0=56500000"+p+d+a+o+e,1,i+f+hc+" +k=1 +x_0=57500000"+p+d+a+o+e,1,i+f+Pv+" +k=1 +x_0=58500000"+p+d+a+o+e,1,i+f+Gu+" +k=1 +x_0=59500000"+p+d+a+o+e,2,i+f+zu+" +k=1 +x_0=61500000"+p+d+a+o+e,1,i+f+Uy+" +k=1 +x_0=62500000"+p+d+a+o+e,1,i+f+fc+" +k=1 +x_0=63500000"+p+d+a+o+e,1,i+f+Gy+" +k=1 +x_0=64500000"+p+d+a+o+e,1,i+f+As+" +k=1"+m+p+d+a+o+e,1,i+f+Va+" +k=1"+m+p+d+a+o+e,1,i+f+ea+" +k=1"+m+p+d+a+o+e,1,i+f+cl+" +k=1"+m+p+d+a+o+e,1,i+f+Za+" +k=1"+m+p+d+a+o+e,1,i+f+Fp+" +k=1"+m+p+d+a+o+e,1,i+f+Wh+" +k=1"+m+p+d+a+o+e,1,i+f+Up+" +k=1"+m+p+d+a+o+e,1,i+f+eu+" +k=1"+m+p+d+a+o+e,1,i+f+Ny+" +k=1"+m+p+d+a+o+e,1,i+f+qp+" +k=1"+m+p+d+a+o+e,1,i+f+By+" +k=1"+m+p+d+a+o+e,1,i+f+Ig+" +k=1"+m+p+d+a+o+e,1,i+f+" +lon_0=60 +k=1"+m+p+d+a+o+e,1,i+f+Wm+" +k=1"+m+p+d+a+o+e,1,i+f+kv+" +k=1"+m+p+d+a+o+e,1,i+f+Rg+" +k=1"+m+p+d+a+o+e,1,i+f+$k+" +k=1"+m+p+d+a+o+e,1,i+f+na+" +k=1"+m+p+d+a+o+e,1,i+f+Sc+" +k=1"+m+p+d+a+o+e,1,i+f+ra+" +k=1"+m+p+d+a+o+e,1,i+f+hd+" +k=1"+m+p+d+a+o+e,1,i+f+ga+" +k=1"+m+p+d+a+o+e,1,i+f+Ta+" +k=1"+m+p+d+a+o+e,1,i+f+ia+" +k=1"+m+p+d+a+o+e,1,i+f+df+" +k=1"+m+p+d+a+o+e,1,i+f+oa+" +k=1"+m+p+d+a+o+e,1,i+f+_u+" +k=1"+m+p+d+a+o+e,1,i+f+oi+" +k=1"+m+p+d+a+o+e,1,i+f+uc+" +k=1"+m+p+d+a+o+e,1,i+f+Go+" +k=1"+m+p+d+a+o+e,1,i+f+kl+" +k=1"+m+p+d+a+o+e,1,i+f+To+" +k=1"+m+p+d+a+o+e,1,i+f+Uu+" +k=1"+m+p+d+a+o+e,1,i+f+Ro+" +k=1"+m+p+d+a+o+e,1,i+f+vu+" +k=1"+m+p+d+a+o+e,1,i+f+wi+" +k=1"+m+p+d+a+o+e,1,u+uf+G+j+Ws+o+e,1,u+Du+G+j+Ws+o+e,1,i+f+xl+" +k=1"+m+p+d+a+o+e,1,i+f+Oo+" +k=1"+m+p+d+a+o+e,1,i+f+yy+" +k=1"+m+p+d+a+o+e,1,i+f+rm+" +k=1"+m+p+d+a+o+e,1,i+f+Tv+" +k=1"+m+p+d+a+o+e,1,i+f+rp+" +k=1"+m+p+d+a+o+e,1,i+f+ip+" +k=1"+m+p+d+a+o+e,1,i+f+td+" +k=1"+m+p+d+a+o+e,1,i+f+SS+" +k=1"+m+p+d+a+o+e,1,i+f+im+" +k=1"+m+p+d+a+o+e,1,i+f+ag+" +k=1"+m+p+d+a+o+e,1,i+f+ed+" +k=1"+m+p+d+a+o+e,1,i+f+Ov+" +k=1"+m+p+d+a+o+e,1,i+f+hc+" +k=1"+m+p+d+a+o+e,1,i+f+Pv+" +k=1"+m+p+d+a+o+e,1,i+f+Gu+" +k=1"+m+p+d+a+o+e,1,i+f+_y+" +k=1"+m+p+d+a+o+e,1,i+f+zu+" +k=1"+m+p+d+a+o+e,1,i+f+Uy+" +k=1"+m+p+d+a+o+e,1,i+f+fc+" +k=1"+m+p+d+a+o+e,1,i+f+Gy+" +k=1"+m+p+d+a+o+e,1,i+ul+sl+tm+R+p+r+n+o+e,1,i+Es+Wd+re+E+p+r+n+o+e,1,i+Re+jn+x+mi+p+r+n+o+e,1,i+Re+Nn+x+mi+p+r+n+o+e,1,i+Re+Ll+re+mi+p+r+n+o+e,1,l+Hr+qr+$t+qa+V+p+r+n+o+e,1,l+Zr+bf+Wr+qa+V+Tl+r+n+o+e,1,l+gr+xu+X+Gs+Ae+Tt+r+n+o+e,1,l+yr+_r+$+Gs+Ae+Tt+r+n+o+e,1,l+Ut+vr+mf+lt+Ae+Tt+r+n+o+e,1,l+Vh+zm+br+gf+Ae+Tt+r+n+o+e,1,l+wr+xr+yf+Cl+Ae+Tt+r+n+o+e,1,l+kr+Sr+Mr+Il+Ae+Tt+r+n+o+e,1,l+Mi+Ai+X+ke+Fo+Uo+r+n+o+e,1,l+Qh+Kh+bn+ke+Fo+Uo+r+n+o+e,1,l+Ut+Ar+L+ke+Fo+Uo+r+n+o+e,1,l+Er+_f+Cr+Mu+Om+Pm+r+n+o+e,1,i+Tn+Bn+vf+R+p+r+n+o+e,1,i+Gt+dn+Bt+R+p+r+n+o+e,1,i+Gt+ep+Bt+R+p+r+n+o+e,1,l+Yh+Tr+Hm+Xh+E+p+r+n+o+e,1,i+Es+Dn+x+R+p+r+n+o+e,1,i+Es+Fn+x+pi+p+r+n+o+e,1,i+bh+Xy+dt+m+p+r+n+o+e,1,i+wh+Ku+dt+m+p+r+n+o+e,1,i+hs+Hu+bu+m+p+r+n+o+e,1,i+xh+Jy+bu+m+p+r+n+o+e,1,i+kh+Yu+" +k=1"+m+p+r+n+o+e,1,i+z+Un+se+R+p+r+n+o+e,1,i+z+hu+se+m+p+r+n+o+e,1,i+z+Rl+re+vn+p+r+n+o+e,1,i+L+Vn+li+at+p+r+n+o+e,1,i+L+Qn+Bt+pi+p+r+n+o+e,1,i+sr+Kn+dt+ye+qu+r+n+o+e,1,i+sr+Yn+dt+sa+qu+r+n+o+e,1,l+Vr+Qr+Po+Ko+bt+st+r+n+o+e,1,l+kt+Kr+jo+Ko+m+p+r+n+o+e,1,l+Yr+Xr+mt+Co+V+p+r+n+o+e,1,l+Jr+$r+L+yn+V+Tl+r+n+o+e,1,l+Yt+mr+sr+ku+m+p+r+n+o+e,1,l+Ei+Ci+tt+gi+m+Tt+r+n+o+e,1,l+lo+uo+ul+va+xe+p+r+n+o+e,1,l+jd+Nd+Bd+Pe+xe+p+r+n+o+e,1,i+ut+Ys+x+at+p+r+n+o+e,1,i+te+Xn+dt+sa+p+r+n+o+e,1,l+Xc+Ed+$+lc+V+p+r+n+o+e,1,l+Ti+Or+Al+Vo+R+pf+r+n+o+e,1,l+Oi+Pi+Al+Ya+m+p+r+n+o+e,1,l+Li+Ii+Ri+gu+ev+p+r+n+o+e,1,l+Cd+ji+Ni+ee+lm+p+r+n+o+e,1,l+Fe+Td+Po+ee+$h+p+r+n+o+e,1,l+ho+co+El+Jn+vn+ni+r+n+o+e,1,l+rf+fo+tl+Eu+vn+ni+r+n+o+e,1,l+po+mo+cd+nd+vn+ni+r+n+o+e,1,i+xa+Gn+cn+at+p+r+n+o+e,1,i+xa+We+cn+pi+p+r+n+o+e,1,i+Mn+Ug+re+qe+p+r+n+o+e,1,i+Mn+va+re+m+p+r+n+o+e,1,i+pl+Gg+Bt+hk+p+r+n+o+e,1,l+Zh+Lg+Jc+rl+E+p+r+n+o+e,1,l+nu+xu+go+pn+m+p+r+n+o+e,1,i+fn+$n+x+R+nv+r+n+o+e,1,i+fn+tr+x+m+ba+r+n+o+e,1,i+fn+er+x+vn+tc+r+n+o+e,1,i+Lo+nr+dt+at+p+r+n+o+e,1,i+Xt+Os+x+Ne+p+r+n+o+e,1,i+Re+zn+Ma+Od+p+r+n+o+e,1,i+Re+jl+x+m+p+r+n+o+e,1,i+Re+Hn+Nl+ck+p+r+n+o+e,1,i+Xt+Os+x+Ne+p+r+n+o+e,1,i+jo+qn+Ct+qe+p+r+n+o+e,1,i+jo+Zn+Ct+hg+p+r+n+o+e,1,l+Pr+Lr+Jt+np+at+p+r+n+o+e,1,l+ie+Fi+fl+yi+E+p+r+n+o+e,1,l+Ui+Gi+Ee+yi+E+p+r+n+o+e,1,l+Dd+yo+we+ci+E+p+r+n+o+e,1,l+_o+vo+Tn+ci+E+p+r+n+o+e,1,l+Ir+zi+qm+Co+E+p+r+n+o+e,1,l+Hi+qi+Rr+Co+E+p+r+n+o+e,1,l+Gp+wn+ut+lt+On+p+r+n+o+e,1,l+zp+xn+z+lt+bt+p+r+n+o+e,1,i+ti+Vo+sc+ye+p+r+n+o+e,1,l+bo+wo+ht+pn+E+p+r+n+o+e,1,l+Fd+xo+ei+Pt+E+p+r+n+o+e,1,l+Vi+tf+$t+Vc+E+p+r+n+o+e,1,l+Qi+ef+Zm+Au+R+st+r+n+o+e,1,l+Ki+Yi+Dr+yn+E+In+r+n+o+e,1,l+Xi+Ji+kn+Pt+pi+Io+r+n+o+e,1,l+$i+to+Fr+yu+E+tc+r+n+o+e,1,l+Je+$e+Sn+yn+at+Tu+r+n+o+e,1,l+kt+tn+Ue+oe+m+st+r+n+o+e,1,l+zl+en+mt+oe+m+In+r+n+o+e,1,l+Hl+nn+L+oe+m+Io+r+n+o+e,1,i+Lo+ec+Bl+m+p+r+n+o+e,1,l+Id+eo+$+Qo+Be+In+r+n+o+e,1,l+Yt+Ur+tt+Qo+Be+st+r+n+o+e,1,l+ie+Rd+fl+Wn+m+p+r+n+o+e,1,l+no+ro+Gr+lt+m+p+r+n+o+e,1,l+of+jg+wf+ms+E+p+r+n+o+e,1,l+ko+So+Vm+dn+E+p+r+n+o+e,1,l+io+oo+zr+He+E+p+r+n+o+e,1,l+cu+nf+ht+He+E+p+r+n+o+e,1,l+so+ao+Hp+He+E+p+r+n+o+e,1,i+Ke+rr+Ct+R+p+r+n+o+e,1,i+Ke+ir+Ct+V+ni+r+n+o+e,1,i+Ke+Dl+Ct+E+p+r+n+o+e,1,i+Ke+or+Ct+vn+ni+r+n+o+e,1,l+cs+fs+ds+Ho+R+Ka+r+n+o+e,1,i+Re+jn+x+mi+p+r+n+W+e,1,i+Re+Nn+x+mi+p+r+n+W+e,1,i+Re+Ll+re+mi+p+r+n+W+e,1,l+gr+xu+X+Gs+Et+nt+r+n+h+e,1,l+yr+_r+$+Gs+Et+nt+r+n+h+e,1,l+Ut+vr+mf+lt+Et+nt+r+n+h+e,1,l+Vh+zm+br+gf+Et+nt+r+n+h+e,1,l+wr+xr+yf+Cl+Et+nt+r+n+h+e,1,l+kr+Sr+Mr+Il+Et+nt+r+n+h+e,1,l+Mi+Ai+X+ke+Ze+an+r+n+h+e,1,l+Qh+Kh+bn+ke+Ze+an+r+n+h+e,1,l+Ut+Ar+L+ke+Ze+an+r+n+h+e,1,l+Er+_f+Cr+Mu+Ic+Rc+r+n+h+e,1,i+Tn+Bn+vf+rt+p+r+n+h+e,1,i+Gt+dn+Bt+rt+p+r+n+h+e,1,i+Gt+ep+Bt+rt+p+r+n+h+e,1,l+Yh+Tr+Hm+Xh+E+p+r+n+h+e,1,i+Es+Dn+x+rt+p+r+n+h+e,1,i+Es+Fn+x+ln+p+r+n+h+e,1,i+z+Un+se+rt+p+r+n+h+e,1,i+z+hu+se+it+p+r+n+h+e,1,i+z+Rl+re+jc+p+r+n+h+e,3,l+Yt+mr+sr+ku+it+p+r+n+h+e,1,l+Ei+Ci+tt+gi+it+nt+r+n+h+e,1,l+Xc+Ed+$+lc+Nc+p+r+n+h+e,1,l+Ti+Or+Al+Vo+rt+pf+r+n+h+e,1,l+Oi+Pi+Al+Ya+it+p+r+n+h+e,1,l+Li+Ii+Ri+gu+Bc+p+r+n+W+e,1,l+Cd+ji+Ni+ee+Dc+p+r+n+W+e,1,l+Fe+Td+Po+ee+Vd+p+r+n+W+e,1,i+xa+Gn+cn+ne+p+r+n+h+e,1,i+xa+We+cn+ln+p+r+n+h+e,1,l+Zh+Lg+Jc+rl+cr+p+r+n+W+e,1,i+Re+zn+Ma+Od+p+r+n+h+e,1,i+Re+jl+x+it+p+r+n+h+e,1,i+Re+Hn+Nl+Fc+p+r+n+h+e,1,i+Xt+Os+x+Ne+p+r+n+h+e,1,i+jo+qn+Ct+Uc+p+r+n+h+e,1,i+jo+Zn+Ct+Gc+p+r+n+h+e,1,l+Pr+Lr+Jt+np+ne+p+r+n+h+e,1,l+ie+Fi+fl+yi+cr+p+r+n+W+e,1,l+Ui+Gi+Ee+yi+cr+p+r+n+W+e,1,l+Ir+zi+qm+Co+E+p+r+n+h+e,1,l+Hi+qi+Rr+Co+E+p+r+n+h+e,1,l+Gp+wn+ut+lt+Wu+p+r+n+W+e,1,l+zp+xn+z+lt+Vu+p+r+n+W+e,1,l+Vi+tf+$t+Vc+E+p+r+n+h+e,1,l+Qi+ef+Zm+Au+rt+un+r+n+h+e,1,l+Ki+Yi+Dr+yn+E+Ls+r+n+h+e,1,l+Xi+Ji+kn+Pt+ln+Io+r+n+h+e,1,l+$i+to+Fr+yu+E+sd+r+n+h+e,1,l+Je+$e+Sn+yn+ne+ad+r+n+h+e,1,l+kt+tn+Ue+oe+_s+bm+r+n+W+e,1,l+zl+en+mt+oe+_s+Wg+r+n+W+e,1,l+Hl+nn+L+oe+_s+Vg+r+n+W+e,1,l+Id+eo+$+Qo+Is+Ls+r+n+h+e,1,l+Yt+Ur+tt+Qo+Is+un+r+n+h+e,1,l+ie+Rd+fl+Wn+it+p+r+n+h+e,1,l+no+ro+Gr+lt+it+p+r+n+h+e,1,l+io+oo+zr+He+E+p+r+n+h+e,1,l+cu+nf+ht+He+E+p+r+n+h+e,1,l+so+ao+Hp+He+E+p+r+n+h+e,1,i+f+" +lon_0=13"+pt+m+p+vt+he+g_+o+e,1,i+" +lat_0=24.45"+aw+bu+R+ka+_+Iu+o+e,1,u+Qf+G+M+_a+o+e,2,i+Xu+" +lon_0=41.53333333333333 +k=1 +x_0=1300000"+p+d+s+o+e,1,i+Xu+" +lon_0=44.53333333333333 +k=1"+oM+p+d+s+o+e,1,i+Xu+" +lon_0=47.53333333333333 +k=1"+sM+p+d+s+o+e,1,i+Xu+" +lon_0=50.53333333333333 +k=1"+aM+p+d+s+o+e,1,i+cp+" +lon_0=50.76666666666667 +k=1"+oM+p+d+s+o+e,1,i+cp+" +lon_0=53.76666666666667 +k=1"+sM+p+d+s+o+e,1,i+cp+" +lon_0=56.76666666666667 +k=1"+aM+p+d+s+o+e,1,u+uu+_+Sy+o+e,1,u+uu+_+y_+o+e,2,i+f+K_+x+At+p+r+n+o+e,1,i+f+Dg+x+At+p+r+n+o+e,1,i+f+Fg+x+At+p+r+n+o+e,1,i+f+Y_+x+At+p+r+n+o+e,1,i+f+Ya+x+At+p+r+n+o+e,1,i+f+X_+x+At+p+r+n+o+e,1,i+f+J_+x+At+p+r+n+o+e,1,i+f+ms+x+At+p+r+n+o+e,1,us+El+nM+Fy+On+lM+r+n+o+e,1,us+" +lat_0=47.25"+sg+Fy+V+hn+r+n+o+e,1,u+bd+r+n+o+e,1,u+wd+r+n+o+e,1,u+xd+r+n+o+e,1,u+wl+r+n+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,u+Us+r+n+o+e,1,u+za+r+n+o+e,2,dr+" +lat_1=55"+Qm+tS+xf+Z+p+S+h+e,1,i+sr+Kn+dt+Hc+Xo+r+n+h+e,1,i+sr+Yn+dt+sa+Xo+r+n+h+e,1,i+sr+Kn+dt+Hc+Xo+r+n+h+e,1,i+sr+Yn+dt+sa+Xo+r+n+h+e,1,u+Us+_+__+o+e,1,u+Us+_+My+o+e,1,u+Ml+_+Bf+o+e,1,u+Ml+r+n+o+e,1,u+Us+_+L_+o+e,2,u+lf+G+r+n+o+e,1,u+ly+G+_+I_+o+e,1,u+Cg+G+_+xc+o+e,1,u+Tg+G+_+vv+o+e,2,u+lu+G+_+Ay+o+e,1,u+Pc+G+_+Nm+o+e,6,u+za+j+H_+o+e,1,u+Oy+G+_+Ey+o+e,3,l+nu+Sa+Yo+lt+V+p+r+n+o+e,1,l+nu+Sa+Yo+lt+ac+p+r+n+W+e,1,l+nu+Sa+Yo+lt+V+p+r+n+o+e,1,l+nu+Sa+Yo+lt+ac+p+r+n+W+e,1,u+Pc+G+_+pu+o+e,1,u+Pc+G+_+v_+o+e,1,u+Pc+G+_+ch+o+e,1,u+Pc+G+_+Qs+o+e,1,u+lu+G+_+Cy+o+e,1,ru+" +lon_0=110"+wS+um+cg+M+_a+o+e,1,ru+" +lon_0=110"+wS+um+cg+M+Pn+o+e,1,ru+" +lon_0=110"+wS+um+cg+M+fa+o+e,1,i+f+Nu+pt+bt+p+_+sn+o+e,1,i+f+Ss+pt+" +x_0=2520000"+p+_+sn+o+e,1,dr+eS+" +lat_2=58.5"+tl+" +lon_0=-126"+xe+p+r+n+o+e,1,u+Bu+r+n+o+e,1,i+f+Wa+" +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=13.5 +k=1"+Ne+p+r+n+o+e,1,i+f+Ss+" +k=1"+Ne+p+r+n+o+e,1,i+f+fk+" +k=1"+Ne+p+r+n+o+e,1,i+f+Gm+" +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=14.25 +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=15.75 +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=17.25 +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=18.75 +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=20.25 +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=21.75 +k=1"+Ne+p+r+n+o+e,1,i+f+" +lon_0=23.25 +k=1"+Ne+p+r+n+o+e,1,i+f+lw+" +k=1"+bt+p+M+ve+o+e,1,i+f+uw+" +k=1"+bt+p+M+ve+o+e,1,i+f+hw+" +k=1"+bt+p+M+ve+o+e,1,i+f+cw+" +k=1"+bt+p+M+ve+o+e,1,i+f+fw+" +k=1"+bt+p+M+ve+o+e,1,i+f+dw+" +k=1"+bt+p+M+ve+o+e,1,i+f+lw+" +k=1"+bt+p+M+o+e,1,i+f+uw+" +k=1"+bt+p+M+o+e,1,i+f+hw+" +k=1"+bt+p+M+o+e,1,i+f+cw+" +k=1"+bt+p+M+o+e,1,i+f+fw+" +k=1"+bt+p+M+o+e,1,i+f+dw+" +k=1"+bt+p+M+o+e,1,fe+F+" +lat_ts=-71"+ta+" +k=1"+Z+p+v+o+e,1,fe+F+" +lat_ts=-71 +lon_0=70 +k=1"+lm+ba+v+o+e,1,l+" +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70"+lm+ba+v+o+e,1,l+nS+Qm+Wp+Mc+$h+zg+r+n+o+e,1,ya+Wp+Mc+Hg+qg+r+n+o+e,1,u+uf+G+N+Ju+o+e,1,u+Du+G+N+Ju+o+e,3,u+uu+r+n+o+e,1,u+ju+r+n+o+e,1,u+gp+r+n+o+e,1,u+Em+r+n+o+e,1,u+Yl+r+n+o+e,1,u+Bu+r+n+o+e,1,u+Vf+r+n+o+e,1,u+mh+r+n+o+e,1,u+uf+r+n+o+e,1,u+Du+r+n+o+e,5,u+_p+_+fu+o+e,1,u+Py+_+fu+o+e,1,u+uu+_+fu+o+e,1,l+" +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19"+m+Tt+r+n+o+e,1,i+f+" +lon_0=-8.5 +k=1"+wu+" +y_0=-7800000"+_+Ru+o+e,1,i+f+Va+pt+m+" +y_0=-6000000"+r+n+o+e,1,u+Pc+G+_+Jm+o+e,1,u+uu+_+Rp+o+e,1,u+_p+_+ym+o+e,1,u+_p+_+Jp+o+e,1,u+Yl+N+n+o+e,1,u+Bu+N+n+o+e,1,i+f+" +lon_0=37"+xv+m+yS+_+U+o+e,1,u+mh+r+n+o+e,1,Ln+" +lat_0=52.41864827777778 +lon_0=13.62720366666667"+op+" +y_0=10000"+M+et+o+e,1,i+f+He+pt+m+" +y_0=-4500000"+S+o+e,1,i+f+He+pt+dk+$y+r+n+o+e,1,i+f+He+pt+dk+$y+r+n+o+e,1,i+ht+$g+Gl+pi+p+r+n+o+e,2,i+te+ty+Gl+at+p+r+n+o+e,1,i+ht+$g+Gl+pi+p+r+n+o+e,2,i+te+ty+Gl+at+p+r+n+o+e,1,gn+Sh+" +lonc=-86"+Lm+pt+Im+Yp+Fu+Rm+r+n+o+e,1,gn+Sh+" +lonc=-86"+Lm+pt+Im+Yp+Fu+Rm+r+n+o+e,1,l+pw+mw+gw+pn+" +x_0=914400 +y_0=914400"+S+W+e,1,l+pw+mw+gw+pn+xe+st+r+n+o+e,1,l+Ud+Ng+Xd+pn+bt+Tu+r+n+o+e,1,dr+Ud+Ng+Xd+pn+bt+ba+r+n+o+e,1,l+Ud+Ng+Xd+pn+bt+Tu+r+n+o+e,1,dr+Ud+Ng+Xd+pn+bt+ba+r+n+o+e,1,dr+" +lat_1=24"+pk+" +lat_0=24"+Xf+V+p+r+n+o+e,1,dr+" +lat_1=24"+pk+" +lat_0=24"+Xf+V+p+r+n+o+e,1,l+Mo+Ao+tt+gi+bt+st+r+n+o+e,1,l+Mo+Ao+tt+gi+bt+un+r+n+h+e,1,l+Mo+Ao+tt+gi+bt+st+r+n+o+e,1,l+Mo+Ao+tt+gi+bt+un+r+n+h+e,1,u+hf+M+I+o+e,1,u+Kf+M+I+o+e,1,u+vp+M+I+o+e,1,u+kd+M+I+o+e,1,u+Dp+M+I+o+e,1,u+hf+r+n+o+e,1,u+Kf+r+n+o+e,1,u+vp+r+n+o+e,1,u+kd+r+n+o+e,1,u+Dp+r+n+o+e,1,l+" +lat_1=-14.26666666666667 +lat_0=-14.26666666666667"+zy+" +k_0=1"+P+" +y_0=95169.31165862332"+j+b_+h+e,4,i+f+Ta+pt+m+p+Ve+Kt+Eg+o+e,1,l+" +lat_1=-28"+MS+" +lat_0=-32"+Oo+xe+In+r+n+o+e,1,i+Dy+" +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000"+vy+r+n+o+e,1,i+" +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001"+op+" +y_0=70000"+r+n+o+e,1,l+" +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145"+On+gs+Y+q+o+e,1,l+" +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145"+On+ql+r+n+o+e,1,l+" +lat_1=-18"+MS+f+" +lon_0=134"+Z+p+r+n+o+e,1,i+" +lat_0=-28"+td+bu+wu+ni+r+n+o+e,1,i+ml+" +lon_0=-80.07750791666666 +k=1"+xe+st+r+n+o+e,1,i+ml+" +lon_0=-77.07750791666666 +k=1"+xe+st+r+n+o+e,1,i+ml+" +lon_0=-74.07750791666666 +k=1"+xe+st+r+n+o+e,1,i+ml+" +lon_0=-71.07750791666666 +k=1"+xe+st+r+n+o+e,1,i+ml+" +lon_0=-68.07750791666666 +k=1"+xe+st+r+n+o+e,1,i+f+mk+" +k=0.999"+xe+st+_+tg+o+e,1,us+" +lat_0=50.625 +lon_0=21.08333333333333"+xv+" +x_0=4637000 +y_0=5467000"+d+C+o+e,1,i+f+To+cn+m+p+j+be+o+e,1,i+f+AS+cn+m+p+j+be+o+e,1,i+f+ES+cn+m+p+j+be+o+e,1,i+f+Ro+cn+m+p+j+be+o+e,1,i+f+py+cn+m+p+j+be+o+e,1,i+f+Og+" +k=1"+m+p+r+n+o+e,1,i+f+Sv+" +k=1"+m+p+r+n+o+e,1,i+f+As+" +k=1"+m+p+r+n+o+e,1,i+f+rS+" +k=1"+m+p+r+n+o+e,1,i+f+jy+" +k=1"+m+p+r+n+o+e,1,i+f+Va+" +k=1"+m+p+r+n+o+e,1,i+f+Pg+" +k=1"+m+p+r+n+o+e,1,i+f+Mv+" +k=1"+m+p+r+n+o+e,1,i+f+ea+" +k=1"+m+p+r+n+o+e,1,i+f+Bg+" +k=1"+m+p+r+n+o+e,1,i+f+" +lon_0=29 +k=1"+m+p+r+n+o+e,1,i+f+cl+" +k=1"+m+p+r+n+o+e,1,i+f+Um+" +k=1"+m+p+r+n+o+e,2,Ln+" +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272"+Dv+Wk+dd+" +to_meter=0.201168"+e,1,u+Bp+G+_+Ul+o+e,1,u+Oy+G+_+Ul+o+e,6,u+cf+Ve+Kt+Jl+o+e,1,u+ff+Ve+Kt+Jl+o+e,3,i+f+" +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836"+r+n+o+e,1,dr+eS+" +lat_2=58.5"+tl+" +lon_0=-126"+xe+p+r+n+o+e,1,u+Tg+r+n+o+e,1,u+U_+r+n+o+e,1,u+G_+r+n+o+e,1,u+Cm+r+n+o+e,1,u+Sd+r+n+o+e,1,u+Zf+r+n+o+e,1,u+Wf+r+n+o+e,1,l+gk+" +lat_2=53.5"+f+by+" +x_0=930000 +y_0=6430000"+r+n+o+e,1,l+gk+" +lat_2=53.5"+f+by+" +x_0=930000 +y_0=6430000"+r+n+o+e,1,l+" +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5"+CS+V+ka+r+n+o+e,1,u+Pc+G+N+Mm+o+e,1,l+" +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02"+_+Qs+o+e,1,l+" +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354"+_+Qs+o+e,1,gn+ig+uM+kM+om+op+p+Fu+ps+Vk+wg+" +to_meter=20.116756"+e,1,gn+ig+uM+kM+om+" +x_0=804670.24"+p+Fu+ps+Vk+wg+o+e,1,u+Ly+G+r+n+o+e,1,u+Pc+G+r+n+o+e,1,u+_d+G+r+n+o+e,1,u+_d+G+_+pu+o+e,2,dr+" +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955"+xe+st+r+n+o+e,1,dr+" +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627"+xe+st+r+n+o+e,1,i+f+xS+pt+m+p+Ve+Kt+Jl+o+e,1,i+f+bv+" +k=0.9965000000000001"+xe+p+_+K+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,u+Us+r+n+o+e,1,u+za+r+n+o+e,1,u+Ml+r+n+o+e,1,u+Lc+r+n+o+e,1,u+Md+r+n+o+e,1,u+vd+r+n+o+e,1,u+_p+r+n+o+e,1,u+Py+r+n+o+e,1,u+uu+r+n+o+e,1,u+ju+r+n+o+e,1,i+f+Nu+cn+R+p+_+K+o+e,1,i+f+" +lon_0=11"+cn+R+p+_+K+o+e,1,i+f+" +lon_0=13"+cn+R+p+_+K+o+e,1,i+f+Ss+cn+R+p+_+K+o+e,1,i+f+bv+cn+R+p+_+K+o+e,1,i+f+Og+cn+R+p+_+K+o+e,1,i+f+As+cn+R+p+_+K+o+e,1,i+f+jy+cn+R+p+_+K+o+e,1,i+f+Pg+cn+R+p+_+K+o+e,1,u+Yl+_+K+o+e,1,l+fg+dc+eu+Xp+bt+hM+T+Am+o+e,1,u+Bu+_+K+o+e,1,u+Vf+_+K+o+e,1,u+mh+_+K+o+e,1,l+fp+dp+F+nm+Z+p+v+o+e,1,l+fp+dp+F+rd+Z+p+v+o+e,1,l+fp+dp+F+" +lon_0=-42"+Z+p+v+o+e,1,l+de+pe+F+Uy+Z+p+v+o+e,1,l+de+pe+F+nm+Z+p+v+o+e,1,l+de+pe+F+rd+Z+p+v+o+e,1,l+de+pe+F+Up+Z+p+v+o+e,1,l+de+pe+F+By+Z+p+v+o+e,1,l+de+pe+F+kv+Z+p+v+o+e,1,l+de+pe+F+Sc+Z+p+v+o+e,1,l+de+pe+F+Ta+Z+p+v+o+e,1,l+de+pe+F+_u+Z+p+v+o+e,1,l+de+pe+F+kl+Z+p+v+o+e,1,l+de+pe+F+vu+Z+p+v+o+e,1,l+de+pe+F+yy+Z+p+v+o+e,1,l+de+pe+F+ip+Z+p+v+o+e,1,l+de+pe+F+ag+Z+p+v+o+e,1,l+ct+ft+F+" +lon_0=-102"+Z+p+v+o+e,1,l+ct+ft+F+He+Z+p+v+o+e,1,l+ct+ft+F+" +lon_0=-78"+Z+p+v+o+e,1,l+ct+ft+F+nm+Z+p+v+o+e,1,l+ct+ft+F+" +lon_0=-18"+Z+p+v+o+e,1,l+ct+ft+F+" +lon_0=-6"+Z+p+v+o+e,1,l+ct+ft+F+bS+Z+p+v+o+e,1,l+ct+ft+F+Gm+Z+p+v+o+e,1,l+ct+ft+F+cl+Z+p+v+o+e,1,l+ct+ft+F+Up+Z+p+v+o+e,1,l+ct+ft+F+By+Z+p+v+o+e,1,l+ct+ft+F+kv+Z+p+v+o+e,1,l+ct+ft+F+Sc+Z+p+v+o+e,1,l+ct+ft+F+Ta+Z+p+v+o+e,1,l+ct+ft+F+_u+Z+p+v+o+e,1,l+ct+ft+F+kl+Z+p+v+o+e,1,l+ct+ft+F+vu+Z+p+v+o+e,1,l+ct+ft+F+yy+Z+p+v+o+e,1,l+ct+ft+F+ip+Z+p+v+o+e,1,l+ct+ft+F+ag+Z+p+v+o+e,1,l+ct+ft+F+Pv+Z+p+v+o+e,1,l+Lt+St+F+yk+Z+p+v+o+e,1,l+Lt+St+F+_k+Z+p+v+o+e,1,l+Lt+St+F+pc+Z+p+v+o+e,1,l+Lt+St+F+yu+Z+p+v+o+e,1,l+Lt+St+F+dn+Z+p+v+o+e,1,l+Lt+St+F+sg+Z+p+v+o+e,1,l+Lt+St+F+" +lon_0=-27"+Z+p+v+o+e,1,l+Lt+St+F+" +lon_0=-9"+Z+p+v+o+e,1,l+Lt+St+F+Nu+Z+p+v+o+e,1,l+Lt+St+F+ea+Z+p+v+o+e,1,l+Lt+St+F+eu+Z+p+v+o+e,1,l+Lt+St+F+Wm+Z+p+v+o+e,1,l+Lt+St+F+ra+Z+p+v+o+e,1,l+Lt+St+F+oa+Z+p+v+o+e,1,l+Lt+St+F+To+Z+p+v+o+e,1,l+Lt+St+F+Oo+Z+p+v+o+e,1,l+Lt+St+F+td+Z+p+v+o+e,1,l+Lt+St+F+hc+Z+p+v+o+e,1,l+It+Rt+F+Gy+Z+p+v+o+e,1,l+It+Rt+F+" +lon_0=-144"+Z+p+v+o+e,1,l+It+Rt+F+kf+Z+p+v+o+e,1,l+It+Rt+F+$d+Z+p+v+o+e,1,l+It+Rt+F+Lv+Z+p+v+o+e,1,l+It+Rt+F+" +lon_0=-48"+Z+p+v+o+e,1,l+It+Rt+F+" +lon_0=-24"+Z+p+v+o+e,1,l+It+Rt+F+ta+Z+p+v+o+e,1,l+It+Rt+F+Va+Z+p+v+o+e,1,l+It+Rt+F+Ny+Z+p+v+o+e,1,l+It+Rt+F+$k+Z+p+v+o+e,1,l+It+Rt+F+df+Z+p+v+o+e,1,l+It+Rt+F+Uu+Z+p+v+o+e,1,l+It+Rt+F+Tv+Z+p+v+o+e,1,l+It+Rt+F+Ov+Z+p+v+o+e,1,fe+F+wt+Hy+" +k=1"+Z+p+v+o+e,1,fe+F+wt+_k+" +k=1"+Z+p+v+o+e,1,fe+F+wt+" +lon_0=-105 +k=1"+Z+p+v+o+e,1,fe+F+wt+Iv+" +k=1"+Z+p+v+o+e,1,fe+F+wt+" +lon_0=-45 +k=1"+Z+p+v+o+e,1,fe+F+wt+" +lon_0=-15 +k=1"+Z+p+v+o+e,1,fe+F+wt+Ss+" +k=1"+Z+p+v+o+e,1,fe+F+wt+eu+" +k=1"+Z+p+v+o+e,1,fe+F+wt+na+" +k=1"+Z+p+v+o+e,1,fe+F+wt+oi+" +k=1"+Z+p+v+o+e,1,fe+F+wt+Oo+" +k=1"+Z+p+v+o+e,1,fe+F+wt+ed+" +k=1"+Z+p+v+o+e,1,fe+F+wt+Gd+" +k=1"+Z+p+v+o+e,1,fe+F+wt+He+" +k=1"+Z+p+v+o+e,1,fe+F+wt+" +lon_0=-30 +k=1"+Z+p+v+o+e,1,fe+F+wt+cl+" +k=1"+Z+p+v+o+e,1,fe+F+wt+Ta+" +k=1"+Z+p+v+o+e,1,fe+F+wt+ip+" +k=1"+Z+p+v+o+e,1,fe+F+wt+ta+" +k=1"+Z+p+v+o+e,1,l+It+Rt+" +lat_0=-78"+ag+Z+p+v+o+e,2,u+Cg+G+r+je+o+e,1,u+ly+G+r+je+o+e,1,u+Tg+G+r+je+o+e,1,u+U_+G+r+je+o+e,1,l+yw+" +lat_2=58"+_w+Va+m+" +y_0=6375000"+r+Ec+o+e,1,l+yw+" +lat_2=58"+_w+Va+m+" +y_0=6375000"+r+n+o+e,1,u+Tg+G+_+wc+o+e,1,u+Tg+G+_+uh+o+e,1,u+ly+G+_+dh+o+e,1,u+ly+G+_+ph+o+e,1,u+Cg+G+_+Bm+o+e,1,u+Kl+N+w_+o+e,1,l+" +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25"+rp+" +x_0=9300000"+gs+r+n+o+e,1,dr+iS+qy+f+kf+Z+Km+S+o+e,1,dr+iS+qy+f+kf+Z+Km+r+n+o+e,1,dr+iS+qy+f+kf+Z+Km+r+n+o+e,1,u+za+_+Bf+o+e,1,u+za+r+n+o+e,3,i+f+rS+x+m+jt+T+o+e,1,i+f+Va+x+m+jt+T+o+e,1,i+f+Wa+x+m+jt+T+o+e,1,i+f+" +lon_0=14"+x+m+jt+T+o+e,1,i+f+" +lon_0=16"+x+m+jt+T+o+e,1,i+f+Gm+x+m+jt+T+o+e,1,i+f+Sv+x+m+jt+T+o+e,1,i+f+rS+x+m+jt+T+o+e,1,i+f+Va+x+m+jt+T+o+e,1,i+f+Mv+x+m+jt+T+o+e,1,i+f+Bg+x+m+jt+T+o+e,1,i+f+cl+x+m+jt+T+o+e,1,us+" +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714"+m+Tt+d+C+o+e,1,i+f+Ss+" +k=1"+Si+p+d+C+o+e,1,i+f+Gm+" +k=1"+Cu+p+d+C+o+e,1,i+f+As+" +k=1"+Xa+p+d+C+o+e,1,i+f+Va+" +k=1"+Kc+p+d+C+o+e,1,i+f+Ss+" +k=1"+Be+p+d+C+o+e,1,i+f+As+" +k=1"+ur+p+d+C+o+e,1,i+f+ea+" +k=1"+Si+p+d+C+o+e,1,u+Yg+G+_+x_+o+e,1,l+" +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1"+xe+st+T+eg+o+e,1,dr+" +lat_1=55"+Qm+tS+xf+Z+p+r+n+o+e,1,i+f+Wa+x+m+jt+T+ns+o+e,1,i+f+" +lon_0=14"+x+m+jt+T+ns+o+e,1,i+f+" +lon_0=16"+x+m+jt+T+ns+o+e,1,u+Bu+G+T+ns+o+e,1,u+uu+r+n+o+e,1,u+ju+r+n+o+e,1,u+gp+r+n+o+e,1,i+f+Va+xv+m+p+r+n+o+e,1,l+Zh+Qa+" +lat_0=63.390675"+Uv+" +x_0=6200000"+Io+r+n+o+e,1,l+Zh+Qa+" +lat_0=63.390675"+Uv+" +x_0=6200000"+Io+r+n+o+e,2,i+" +lat_0=0.1 +lon_0=21.95 +k=1"+qe+p+d+s+o+e,1,i+" +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000"+p+d+s+o+e,1,i+" +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000"+p+d+s+o+e,1,u+Yl+G+_+o+e,1,u+Yl+G+_+o+e,1,i+Es+Um+" +k=1 +x_0=615000 +y_0=810000"+Cs+ng+o+e,3,l+Bi+Di+Jh+Jf+ey+p+r+n+o+e,2,l+Wi+Pd+Br+dn+Ld+p+r+n+o+e,1,l+Wi+Pd+Br+dn+Ld+p+r+n+W+e,1,l+$c+Zi+Jt+_i+E+p+r+n+o+e,1,l+$c+Zi+Jt+_i+E+p+r+n+h+e,1,l+jr+Nr+X+_i+E+p+r+n+o+e,1,l+jr+Nr+X+_i+E+p+r+n+h+e,2,u+uu+T+o+e,1,u+ju+T+o+e,1,u+gp+T+o+e,1,u+_d+S+o+e,1,u+Bp+S+o+e,1,u+_d+r+n+o+e,1,u+Bp+r+n+o+e,1,u+ju+_+o+e,1,gn+ig+uM+" +alpha=323.0257964666666"+om+" +x_0=804671"+p+Fu+ps+r+o+e,1,gn+ig+oS+SM+om+Z+p+Fu+gl+r+o+e,1,Ln+" +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32"+r+o+e,1,Ln+" +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573"+r+o+e,1,Ln+" +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858"+r+o+e,1,Ln+" +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049"+r+o+e,1,Ln+" +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895"+r+o+e,1,Ln+" +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283"+r+o+e,1,Ln+" +lat_0=5.964672713888889 +lon_0=100.6363711111111"+Z+p+r+o+e,1,Ln+" +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779"+r+o+e,1,Ln+" +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894"+r+o+e,1,i+f+Gm+" +k=1"+m+p+_+qt+o+e,1,i+f+Za+" +k=1"+Si+p+_+qt+o+e,1,ru+qp+" +lat_ts=42"+Z+p+d+s+o+e,1,i+f+_y+" +k=1 +x_0=60500000"+p+d+s+o+e,1,i+f+_y+" +k=1 +x_0=60500000"+p+d+a+o+e,1,u+Du+T+fi+o+e,1,u+lu+T+fi+o+e,1,u+Kl+T+fi+o+e,1,l+fg+dc+eu+Xp+bt+hM+T+o+e,1,ru+ta+" +k=1"+Z+p+v+o+e,1,i+f+Nu+" +k=1"+Be+p+M+o+e,1,i+f+Wa+" +k=1"+ur+p+M+o+e,1,i+f+Wa+" +k=1"+ur+p+M+o+e,1,i+f+Ss+" +k=1"+Si+p+M+o+e,1,i+f+Zy+" +k=0.9992"+m+p+r+n+o+e,1,i+f+Zy+" +k=0.9992"+Z+p+r+n+o+e,1,i+f+Zy+" +k=0.9992"+m+p+r+n+o+e,1,i+f+Zy+" +k=0.9992"+Z+p+r+n+o+e,1,l+Bi+Di+Jh+Jf+A+p+r+n+h+e,1,u+cf+N+Bo+o+e,1,u+ff+N+Bo+o+e,1,Ln+ow+sw+" +x_0=40243.57775604237 +y_0=19069.93351512578"+xi+ki+zc+e,1,ya+Oa+ta+Z+p+TS+OS+o+e,1,ya+F+ta+Z+p+TS+OS+o+e,1,"+proj=cea"+ta+" +lat_ts=30"+Z+p+TS+OS+o+e,1,fe+Oa+" +lat_ts=70 +lon_0=-45 +k=1"+Z+p+PS+ny+o+e,1,fe+F+" +lat_ts=-70"+ta+" +k=1"+Z+p+PS+ny+o+e,1,fe+Oa+" +lat_ts=70 +lon_0=-45 +k=1"+Z+p+v+o+e,1,i+" +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572"+N+o+e,1,l+" +lat_1=18 +lat_2=24 +lat_0=21"+kl+m+Tt+b+y+o+e,1,l+Zh+ud+" +lat_0=47.5"+yl+V+Tl+r+n+o+e,1,l+Vr+Qr+Po+Ko+bt+Jo+r+n+h+e,1,l+kt+Kr+jo+Ko+ot+p+r+n+h+e,1,l+Yr+Xr+mt+Co+Zt+p+r+n+h+e,1,l+Jr+$r+L+yn+Zt+Rs+r+n+h+e,1,i+fn+$n+x+js+qc+r+n+h+e,1,i+fn+tr+x+ot+ba+r+n+h+e,1,i+fn+er+x+Dt+Rf+r+n+h+e,1,i+Xt+Os+x+Ne+p+r+n+h+e,1,l+Vr+Qr+Po+Ko+bt+Jo+r+n+h+e,1,l+kt+Kr+jo+Ko+ot+p+r+n+h+e,1,l+Yr+Xr+mt+Co+Zt+p+r+n+h+e,1,l+Jr+$r+L+yn+Zt+Rs+r+n+h+e,1,i+fn+$n+x+js+qc+r+n+h+e,1,i+fn+tr+x+ot+ba+r+n+h+e,1,i+fn+er+x+Dt+Rf+r+n+h+e,1,i+Xt+Os+x+Ne+p+r+n+h+e,1,l+Hr+qr+$t+qa+Zt+p+r+n+h+e,1,l+Zr+bf+Wr+qa+Zt+Rs+r+n+h+e,1,i+L+Vn+li+ne+p+r+n+h+e,1,i+L+Qn+Bt+Zc+p+r+n+h+e,1,i+Lo+nr+dt+ne+p+r+n+h+e,1,i+ti+Vo+sc+iu+p+r+n+h+e,1,u+Kl+T+ws+o+e,1,u+lf+T+ws+o+e,1,l+Hr+qr+$t+qa+Zt+p+r+n+h+e,1,l+Zr+bf+Wr+qa+Zt+Rs+r+n+h+e,1,i+L+Vn+li+ne+p+r+n+h+e,1,i+L+Qn+Bt+Zc+p+r+n+h+e,1,i+Lo+nr+dt+ne+p+r+n+h+e,1,i+ti+Vo+sc+iu+p+r+n+h+e,1,l+Mh+Ah+" +lat_0=50.797815"+vw+" +x_0=150328 +y_0=166262"+r+n+o+e,1,l+" +lat_1=18"+Xd+lc+" +k_0=1"+vk+" +y_0=650000"+N+n+o+e,1,u+wl+N+n+o+e,1,u+Ga+N+n+o+e,1,l+lo+uo+ul+va+vi+p+r+n+h+e,1,l+jd+Nd+Bd+Pe+vi+p+r+n+h+e,1,l+Je+$e+" +lat_0=25.5"+Pe+vi+p+r+n+h+e,2,l+Fd+xo+ei+Pt+E+p+r+n+h+e,1,l+lo+uo+ul+va+vi+p+r+n+h+e,1,l+jd+Nd+Bd+Pe+vi+p+r+n+h+e,1,l+bo+wo+ht+pn+E+p+r+n+h+e,1,l+Fd+xo+ei+Pt+E+p+r+n+h+e,1,i+" +lat_0=-17 +lon_0=178.75 +k=0.99985"+Ae+tc+b+g+o+e,1,u+uu+vt+he+pd+o+e,1,u+ju+vt+he+pd+o+e,1,i+bk+ry+Gl+m+p+r+n+o+e,1,i+bk+ry+Gl+m+p+r+n+o+e,1,i+ul+sl+tm+R+p+r+n+o+e,1,i+Es+Wd+re+E+p+r+n+o+e,1,dr+" +lat_1=55"+Qm+tS+xf+Z+p+r+n+o+e,1,gn+" +lat_0=57"+Eh+Ch+x+nc+si+Fu+ps+r+n+o+e,1,i+No+wk+x+m+p+r+n+o+e,1,i+No+xk+x+m+p+r+n+o+e,1,i+No+Gd+x+m+p+r+n+o+e,1,i+No+xf+x+m+p+r+n+o+e,1,i+No+Hu+x+m+p+r+n+o+e,1,i+No+kk+x+m+p+r+n+o+e,1,i+No+Sk+x+m+p+r+n+o+e,1,i+No+zy+x+m+p+r+n+o+e,1,l+Th+Oh+Av+Mk+xe+p+r+n+o+e,1,i+Re+Nn+x+mi+p+r+n+o+e,1,i+Re+Nn+x+mi+p+r+n+W+e,1,i+Re+jn+x+mi+p+r+n+o+e,1,i+Re+jn+x+mi+p+r+n+W+e,1,i+Re+Ll+re+mi+p+r+n+o+e,1,i+Re+Ll+re+mi+p+r+n+W+e,1,l+Hr+qr+$t+qa+V+p+r+n+o+e,1,l+Hr+qr+$t+qa+Zt+p+r+n+h+e,1,l+Zr+bf+Wr+qa+V+Tl+r+n+o+e,1,l+Zr+bf+Wr+qa+Zt+Rs+r+n+h+e,1,dr+iS+qy+f+kf+Z+Km+r+n+o+e,1,l+gr+xu+X+Gs+Ae+Tt+r+n+o+e,1,l+gr+xu+X+Gs+Et+nt+r+n+h+e,1,l+yr+_r+$+Gs+Ae+Tt+r+n+o+e,1,l+yr+_r+$+Gs+Et+nt+r+n+h+e,1,l+Ut+vr+mf+lt+Ae+Tt+r+n+o+e,1,l+Ut+vr+mf+lt+Et+nt+r+n+h+e,1,l+Vh+zm+br+gf+Ae+Tt+r+n+o+e,1,l+Vh+zm+br+gf+Et+nt+r+n+h+e,1,l+wr+xr+yf+Cl+Ae+Tt+r+n+o+e,1,l+wr+xr+yf+Cl+Et+nt+r+n+h+e,1,l+kr+Sr+Mr+Il+Ae+Tt+r+n+o+e,1,l+kr+Sr+Mr+Il+Et+nt+r+n+h+e,1,l+Qh+Kh+bn+ke+Fo+Uo+r+n+o+e,1,l+Qh+Kh+bn+ke+Ze+an+r+n+h+e,1,l+Mi+Ai+X+ke+Fo+Uo+r+n+o+e,1,l+Mi+Ai+X+ke+Ze+an+r+n+h+e,1,l+Ut+Ar+L+ke+Fo+Uo+r+n+o+e,1,l+Ut+Ar+L+ke+Ze+an+r+n+h+e,1,l+Er+_f+Cr+Mu+Om+Pm+r+n+o+e,1,l+Er+_f+Cr+Mu+Ic+Rc+r+n+h+e,1,i+Tn+Bn+vf+R+p+r+n+o+e,1,i+Tn+Bn+vf+rt+p+r+n+h+e,1,i+Gt+dn+Bt+R+p+r+n+o+e,1,i+Gt+dn+Bt+rt+p+r+n+h+e,1,dr+" +lat_1=24"+pk+" +lat_0=24"+Xf+V+p+r+n+o+e,1,l+Yh+Tr+Hm+Xh+E+p+r+n+o+e,1,l+Yh+Tr+Hm+Xh+E+p+r+n+h+e,1,i+Gt+ep+Bt+R+p+r+n+o+e,1,i+Gt+ep+Bt+rt+p+r+n+h+e,1,i+Es+Dn+x+R+p+r+n+o+e,1,i+Es+Dn+x+rt+p+r+n+h+e,1,i+Es+Fn+x+pi+p+r+n+o+e,1,i+Es+Fn+x+ln+p+r+n+h+e,1,i+z+hu+se+m+p+r+n+o+e,1,i+z+hu+se+it+p+r+n+h+e,1,i+z+Un+se+R+p+r+n+o+e,1,i+z+Un+se+rt+p+r+n+h+e,1,i+z+Rl+re+vn+p+r+n+o+e,1,i+z+Rl+re+jc+p+r+n+h+e,1,i+L+Vn+li+at+p+r+n+o+e,1,i+L+Vn+li+ne+p+r+n+h+e,1,i+L+Qn+Bt+pi+p+r+n+o+e,1,i+L+Qn+Bt+Zc+p+r+n+h+e,1,i+sr+Kn+dt+ye+qu+r+n+o+e,1,i+sr+Kn+dt+Hc+Xo+r+n+h+e,1,i+sr+Yn+dt+sa+qu+r+n+o+e,1,i+sr+Yn+dt+sa+Xo+r+n+h+e,1,l+Vr+Qr+Po+Ko+bt+st+r+n+o+e,1,l+Vr+Qr+Po+Ko+bt+Jo+r+n+h+e,1,l+kt+Kr+jo+Ko+m+p+r+n+o+e,1,l+kt+Kr+jo+Ko+ot+p+r+n+h+e,1,l+Yr+Xr+mt+Co+V+p+r+n+o+e,1,l+Yr+Xr+mt+Co+Zt+p+r+n+h+e,1,l+Jr+$r+L+yn+V+Tl+r+n+o+e,1,l+Jr+$r+L+yn+Zt+Rs+r+n+h+e,1,l+Yt+mr+sr+ku+m+p+r+n+o+e,1,l+Yt+mr+sr+ku+it+p+r+n+h+e,1,l+Mo+Ao+tt+gi+bt+st+r+n+o+e,1,l+Mo+Ao+tt+gi+bt+un+r+n+h+e,1,l+Ei+Ci+tt+gi+m+Tt+r+n+o+e,1,l+Ei+Ci+tt+gi+it+nt+r+n+h+e,1,l+lo+uo+ul+va+xe+p+r+n+o+e,1,l+lo+uo+ul+va+vi+p+r+n+h+e,1,l+jd+Nd+Bd+Pe+xe+p+r+n+o+e,1,l+jd+Nd+Bd+Pe+vi+p+r+n+h+e,1,i+bk+ry+Gl+m+p+r+n+o+e,1,i+ht+$g+Gl+pi+p+r+n+o+e,1,i+te+ty+Gl+at+p+r+n+o+e,1,i+ut+Ys+x+at+p+r+n+o+e,1,i+te+Xn+dt+sa+p+r+n+o+e,1,l+Xc+Ed+$+lc+V+p+r+n+o+e,1,l+kt+tn+Ue+oe+ot+Jo+r+n+h+e,1,i+bh+Xy+dt+P+p+j+qo+h+e,1,i+wh+Ku+dt+P+p+j+qo+h+e,1,i+hs+Hu+bu+P+p+j+qo+h+e,1,i+xh+Jy+bu+P+p+j+qo+h+e,1,i+kh+Yu+" +k=1"+P+p+j+qo+h+e,1,l+zl+en+mt+oe+ot+jf+r+n+h+e,1,l+Hl+nn+L+oe+ot+Io+r+n+h+e,1,l+kt+tn+Ue+oe+ot+Jo+r+n+h+e,1,l+zl+en+mt+oe+ot+jf+r+n+h+e,1,l+Hl+nn+L+oe+ot+Io+r+n+h+e,1,ya+Oa+_y+Z+p+v+o+e,1,ya+Oa+Gd+Z+p+v+o+e,1,ya+Oa+pn+Z+p+v+o+e,1,ya+Oa+" +lon_0=-40"+Z+p+v+o+e,1,ya+Oa+Mc+Z+p+v+o+e,1,ya+Oa+Ta+Z+p+v+o+e,1,dr+" +lat_1=-18"+MS+f+xl+Z+p+r+n+o+e,1,dr+bw+" +lat_2=68 +lat_0=59 +lon_0=-132.5"+m+Tt+r+n+o+e,1,dr+bw+" +lat_2=68 +lat_0=59 +lon_0=-132.5"+m+Tt+r+n+o+e,1,l+" +lat_1=62 +lat_2=70"+f+" +lon_0=-112"+Z+p+r+n+o+e,1,l+" +lat_1=62 +lat_2=70"+f+" +lon_0=-112"+Z+p+r+n+o+e,1,l+Xc+Ed+$+lc+Nc+p+r+n+h+e,1,l+Oi+Pi+Al+Ya+m+p+r+n+o+e,1,l+Oi+Pi+Al+Ya+it+p+r+n+h+e,1,l+Ti+Or+Al+Vo+R+pf+r+n+o+e,1,l+Ti+Or+Al+Vo+rt+pf+r+n+h+e,1,l+Cd+ji+Ni+ee+lm+p+r+n+o+e,1,l+Cd+ji+Ni+ee+Dc+p+r+n+W+e,1,l+Li+Ii+Ri+gu+ev+p+r+n+o+e,1,l+Li+Ii+Ri+gu+Bc+p+r+n+W+e,1,gn+Sh+" +lonc=-86"+Lm+pt+Im+Yp+Fu+Rm+r+n+o+e,1,l+Fe+Td+Po+ee+$h+p+r+n+o+e,1,l+Fe+Td+Po+ee+Vd+p+r+n+W+e,1,l+rf+fo+tl+Eu+vn+ni+r+n+o+e,1,l+ho+co+El+Jn+vn+ni+r+n+o+e,1,l+po+mo+cd+nd+vn+ni+r+n+o+e,1,i+xa+Gn+cn+at+p+r+n+o+e,1,i+xa+Gn+cn+ne+p+r+n+h+e,1,i+xa+We+cn+pi+p+r+n+o+e,1,i+xa+We+cn+ln+p+r+n+h+e,1,i+Mn+va+re+m+p+r+n+o+e,1,i+Mn+Ug+re+qe+p+r+n+o+e,1,i+pl+Gg+Bt+hk+p+r+n+o+e,1,l+Zh+Lg+Jc+rl+E+p+r+n+o+e,1,l+Zh+Lg+Jc+rl+cr+p+r+n+W+e,1,l+nu+xu+go+pn+m+p+r+n+o+e,1,i+fn+tr+x+m+ba+r+n+o+e,1,i+fn+tr+x+ot+ba+r+n+h+e,1,i+fn+$n+x+R+nv+r+n+o+e,1,i+fn+$n+x+js+qc+r+n+h+e,1,i+fn+er+x+vn+tc+r+n+o+e,1,i+fn+er+x+Dt+Rf+r+n+h+e,1,i+Lo+nr+dt+at+p+r+n+o+e,1,i+Lo+nr+dt+ne+p+r+n+h+e,1,i+Xt+Os+x+Ne+p+r+n+o+e,1,i+Xt+Os+x+Ne+p+r+n+h+e,1,i+Re+jl+x+m+p+r+n+o+e,1,i+Re+jl+x+it+p+r+n+h+e,1,i+Re+zn+Ma+Od+p+r+n+o+e,1,i+Re+zn+Ma+Od+p+r+n+h+e,1,i+Re+Hn+Nl+ck+p+r+n+o+e,1,i+Re+Hn+Nl+Fc+p+r+n+h+e,1,i+jo+qn+Ct+qe+p+r+n+o+e,1,i+jo+qn+Ct+Uc+p+r+n+h+e,1,i+Xt+Os+x+Ne+p+r+n+o+e,1,i+Xt+Os+x+Ne+p+r+n+h+e,1,l+Pr+Lr+Jt+np+at+p+r+n+o+e,1,l+Pr+Lr+Jt+np+ne+p+r+n+h+e,1,i+jo+Zn+Ct+hg+p+r+n+o+e,1,i+jo+Zn+Ct+Gc+p+r+n+h+e,1,l+Bi+Di+Jh+Jf+ey+p+r+n+o+e,1,l+Bi+Di+Jh+Jf+A+p+r+n+h+e,1,l+ie+Fi+fl+yi+E+p+r+n+o+e,1,l+ie+Fi+fl+yi+cr+p+r+n+W+e,1,l+Ui+Gi+Ee+yi+E+p+r+n+o+e,1,l+Ui+Gi+Ee+yi+cr+p+r+n+W+e,1,l+Dd+yo+we+ci+E+p+r+n+o+e,1,l+_o+vo+Tn+ci+E+p+r+n+o+e,1,l+Ir+zi+qm+Co+E+p+r+n+o+e,1,l+Ir+zi+qm+Co+E+p+r+n+h+e,1,l+Hi+qi+Rr+Co+E+p+r+n+o+e,1,l+Hi+qi+Rr+Co+E+p+r+n+h+e,1,l+nu+Sa+Yo+lt+V+p+r+n+o+e,1,l+nu+Sa+Yo+lt+ac+p+r+n+W+e,1,l+Gp+wn+ut+lt+On+p+r+n+o+e,1,l+Gp+wn+ut+lt+Wu+p+r+n+W+e,1,l+zp+xn+z+lt+bt+p+r+n+o+e,1,l+zp+xn+z+lt+Vu+p+r+n+W+e,1,l+$c+Zi+Jt+_i+E+p+r+n+o+e,1,l+$c+Zi+Jt+_i+E+p+r+n+h+e,1,l+jr+Nr+X+_i+E+p+r+n+o+e,1,l+jr+Nr+X+_i+E+p+r+n+h+e,1,i+ti+Vo+sc+ye+p+r+n+o+e,1,i+ti+Vo+sc+iu+p+r+n+h+e,1,l+Wi+Pd+Br+dn+Ld+p+r+n+o+e,1,l+Wi+Pd+Br+dn+Ld+p+r+n+W+e,1,l+bo+wo+ht+pn+E+p+r+n+o+e,1,l+bo+wo+ht+pn+E+p+r+n+h+e,1,l+Fd+xo+ei+Pt+E+p+r+n+o+e,1,l+Fd+xo+ei+Pt+E+p+r+n+h+e,1,l+Vi+tf+$t+Vc+E+p+r+n+o+e,1,l+Vi+tf+$t+Vc+E+p+r+n+h+e,1,l+Xi+Ji+kn+Pt+pi+Io+r+n+o+e,1,l+Xi+Ji+kn+Pt+ln+Io+r+n+h+e,1,dr+Ud+Ng+Xd+pn+bt+ba+r+n+o+e,1,l+Ud+Ng+Xd+pn+bt+Tu+r+n+o+e,1,l+Qi+ef+Zm+Au+R+st+r+n+o+e,1,l+Qi+ef+Zm+Au+rt+un+r+n+h+e,1,l+Ki+Yi+Dr+yn+E+In+r+n+o+e,1,l+Ki+Yi+Dr+yn+E+Ls+r+n+h+e,1,l+Je+$e+Sn+yn+at+Tu+r+n+o+e,1,l+Je+$e+Sn+yn+ne+ad+r+n+h+e,1,l+$i+to+Fr+yu+E+tc+r+n+o+e,1,l+$i+to+Fr+yu+E+sd+r+n+h+e,1,l+zl+en+mt+oe+m+In+r+n+o+e,1,l+zl+en+mt+oe+_s+Wg+r+n+W+e,1,l+zl+en+mt+oe+ot+jf+r+n+h+e,1,l+kt+tn+Ue+oe+m+st+r+n+o+e,1,l+kt+tn+Ue+oe+_s+bm+r+n+W+e,1,l+kt+tn+Ue+oe+ot+Jo+r+n+h+e,1,l+Hl+nn+L+oe+m+Io+r+n+o+e,1,l+Hl+nn+L+oe+_s+Vg+r+n+W+e,1,l+Hl+nn+L+oe+ot+Io+r+n+h+e,1,i+Lo+ec+Bl+m+p+r+n+o+e,1,l+Id+eo+$+Qo+Be+In+r+n+o+e,1,l+Id+eo+$+Qo+Is+Ls+r+n+h+e,1,l+Yt+Ur+tt+Qo+Be+st+r+n+o+e,1,l+Yt+Ur+tt+Qo+Is+un+r+n+h+e,1,l+ie+Rd+fl+Wn+m+p+r+n+o+e,1,l+ie+Rd+fl+Wn+it+p+r+n+h+e,1,l+no+ro+Gr+lt+m+p+r+n+o+e,1,l+no+ro+Gr+lt+it+p+r+n+h+e,1,l+of+jg+wf+ms+E+p+r+n+o+e,1,l+ko+So+Vm+dn+E+p+r+n+o+e,1,l+cu+nf+ht+He+E+p+r+n+o+e,1,l+cu+nf+ht+He+E+p+r+n+h+e,1,l+io+oo+zr+He+E+p+r+n+o+e,1,l+io+oo+zr+He+E+p+r+n+h+e,1,l+so+ao+Hp+He+E+p+r+n+o+e,1,l+so+ao+Hp+He+E+p+r+n+h+e,1,i+f+He+pt+dk+$y+r+n+o+e,1,i+Ke+rr+Ct+R+p+r+n+o+e,1,i+Ke+ir+Ct+V+ni+r+n+o+e,1,i+Ke+Dl+Ct+E+p+r+n+o+e,1,i+Ke+or+Ct+vn+ni+r+n+o+e,1,u+_d+r+n+o+e,1,u+Bp+r+n+o+e,1,u+Oy+r+n+o+e,1,u+F_+r+n+o+e,1,u+ak+r+n+o+e,1,u+z_+r+n+o+e,1,u+Cg+r+n+o+e,1,u+ly+r+n+o+e,1,u+Tg+r+n+o+e,1,u+U_+r+n+o+e,1,u+G_+r+n+o+e,1,u+Cm+r+n+o+e,1,u+bd+r+n+o+e,1,u+wd+r+n+o+e,1,u+xd+r+n+o+e,1,u+Sd+r+n+o+e,1,u+Zf+r+n+o+e,1,u+Wf+r+n+o+e,1,u+wl+r+n+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,i+" +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000"+vy+_+Ty+o+e,1,l+Dd+yo+we+ci+E+p+r+n+h+e,1,l+_o+vo+Tn+ci+E+p+r+n+h+e,1,i+Ke+rr+Ct+js+p+r+n+h+e,1,i+Ke+ir+Ct+Zt+Ft+r+n+h+e,1,i+Ke+Dl+Ct+E+p+r+n+h+e,1,i+Ke+or+Ct+Dt+Ft+r+n+h+e,1,l+Dd+yo+we+ci+E+p+r+n+h+e,1,l+_o+vo+Tn+ci+E+p+r+n+h+e,1,i+Ke+rr+Ct+js+p+r+n+h+e,1,i+Ke+ir+Ct+Zt+Ft+r+n+h+e,1,i+Ke+Dl+Ct+E+p+r+n+h+e,1,i+Ke+or+Ct+Dt+Ft+r+n+h+e,1,u+Cm+r+n+o+e,1,u+bd+r+n+o+e,1,u+wd+r+n+o+e,1,u+xd+r+n+o+e,1,u+Sd+r+n+o+e,1,u+Zf+r+n+o+e,1,u+Wf+r+n+o+e,1,u+wl+r+n+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,u+z_+r+n+o+e,1,u+Cg+r+n+o+e,2,l+Dd+yo+we+ci+E+p+r+n+h+e,1,l+_o+vo+Tn+ci+E+p+r+n+h+e,1,i+Ke+rr+Ct+js+p+r+n+h+e,1,i+Ke+ir+Ct+Zt+Ft+r+n+h+e,1,i+Ke+Dl+Ct+E+p+r+n+h+e,1,i+Ke+or+Ct+Dt+Ft+r+n+h+e,1,i+hs+Hu+bu+ot+p+r+n+h+e,1,i+hs+Hu+bu+ot+p+r+n+h+e,1,u+Ml+r+n+o+e,1,l+" +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37"+Z+p+v+o+e,1,i+" +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1"+Z+p+r+n+o+e,1,i+LS+t_+" +k=1"+V+hn+r+n+o+e,1,i+f+fk+x+m+p+r+n+o+e,1,l+" +lat_1=45.91666666666666 +lat_2=43.08333333333334"+f+fk+Z+p+r+n+o+e,1,u+Bu+r+n+o+e,1,u+Vf+r+n+o+e,1,u+Us+j+R_+o+e,1,i+" +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000"+ni+N+n+o+e,1,i+f+Zu+x+Z+p+S+o+e,1,i+f+hu+x+Z+p+S+o+e,1,i+f+pc+x+Z+p+S+o+e,2,i+f+Zu+x+Z+p+r+n+o+e,1,i+f+hu+x+Z+p+r+n+o+e,1,i+f+pc+x+Z+p+r+n+o+e,2,i+f+Zu+x+Z+p+r+n+o+e,1,i+f+hu+x+Z+p+r+n+o+e,1,i+f+pc+x+Z+p+r+n+o+e,2,i+" +lat_0=-25.06855261111111 +lon_0=-130.1129671111111 +k=1 +x_0=14200 +y_0=15500"+N+n+o+e,1,u+G_+G+_+q_+o+e,4,i+f+CS+" +k=1"+Be+jt+r+n+o+e,1,i+f+" +lon_0=169 +k=1"+Be+jt+r+n+o+e,1,i+f+" +lon_0=179 +k=1"+Be+jt+r+n+o+e,1,i+f+" +lon_0=-178 +k=1"+Be+jt+r+n+o+e,2,i+f+t_+" +k=1"+Be+jt+r+n+o+e,1,i+f+Ss+x+m+si+r+n+o+e,1,l+" +lat_1=23 +lat_2=21.7 +lat_0=22.35"+dn+m+" +y_0=280296.016"+S+o+e,1,l+" +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20.71666666666667 +lon_0=-76.83333333333333"+m+" +y_0=229126.939"+S+o+e,1,l+eS+ud+hl+" +lon_0=-70"+vn+p+S+o+e,1,l+eS+ud+hl+" +lon_0=-70"+vn+p+r+n+o+e,1,l+eS+ud+hl+" +lon_0=-70"+vn+p+r+n+o+e,1,i+f+kf+x+Z+p+S+o+e,1,i+f+kf+x+Z+p+r+n+o+e,1,i+f+kf+x+Z+p+r+n+o+e,10,l+Mh+Ah+" +lat_0=50.797815"+vw+" +x_0=649328 +y_0=665262"+r+n+o+e,2,i+dc+e_+rv+m+hm+r+n+o+e,1,i+dc+e_+rv+m+hm+r+n+o+e,1,i+dc+e_+rv+m+hm+r+n+o+e,3,c+M+" +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408"+e,2,c+Y+e,3,c+r+n+e,1,i+f+AS+x+qe+p+r+n+o+e,1,i+f+ES+x+qe+p+r+n+o+e,1,i+f+AS+x+qe+p+Y+o+e,1,i+f+ES+x+qe+p+Y+o+e,1,u+hf+_+hy+o+e,3,ru+ip+" +k=1"+Z+p+v+o+e,1,i+f+Nu+" +k=1"+On+p+d+C+o+e,1,i+f+Nu+" +k=1"+On+p+d+zt+o+e,1,i+f+Ss+" +k=1"+Be+p+d+zt+o+e,1,i+f+As+" +k=1"+ur+p+d+zt+o+e,1,i+f+Nu+" +k=1"+Be+p+d+C+o+e,1,i+f+Wa+" +k=1"+ur+p+d+C+o+e,1,i+f+ea+" +k=1"+Yc+p+d+C+o+e,1,i+f+cl+" +k=1"+rc+p+d+C+o+e,1,i+f+Gm+" +k=1"+Cu+p+d+zt+o+e,3,us+" +lat_0=46"+Pg+my+m+Tt+d+C+o+e,1,i+f+" +lon_0=11.30625 +k=1.000006 +x_0=1500025.141 +y_0=-667.282"+r+n+o+e,1,i+f+" +lon_0=13.55626666666667 +k=1.0000058 +x_0=1500044.695 +y_0=-667.13"+r+n+o+e,1,i+f+" +lon_0=15.80628452944445 +k=1.00000561024 +x_0=1500064.274 +y_0=-667.711"+r+n+o+e,1,i+f+" +lon_0=18.0563 +k=1.0000054 +x_0=1500083.521 +y_0=-668.8440000000001"+r+n+o+e,1,i+f+" +lon_0=20.30631666666667 +k=1.0000052 +x_0=1500102.765 +y_0=-670.706"+r+n+o+e,1,i+f+" +lon_0=22.55633333333333 +k=1.0000049 +x_0=1500121.846 +y_0=-672.557"+r+n+o+e,1,l+" +lat_1=-37.5 +lat_2=-44.5 +lat_0=-41 +lon_0=173"+cM+" +y_0=7000000"+r+n+o+e,1,l+It+Rt+F+" +lon_0=157"+m+p+r+n+o+e,2,i+f+" +lon_0=18.05787 +k=0.99999506 +x_0=100182.7406 +y_0=-6500620.1207"+r+n+o+e,3,ru+" +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0"+p+" +k=1.0"+o+" +nadgrids=@null +wktext "+e,16,i+f+Og+" +k=1"+La+p+r+n+o+e,1,i+f+Sv+" +k=1"+la+p+r+n+o+e,1,i+f+As+" +k=1"+ja+p+r+n+o+e,1,i+f+rS+" +k=1"+ua+p+r+n+o+e,1,i+f+jy+" +k=1"+Na+p+r+n+o+e,1,i+f+Va+" +k=1"+oc+p+r+n+o+e,1,i+f+Pg+" +k=1"+Ba+p+r+n+o+e,1,i+f+Mv+" +k=1"+Da+p+r+n+o+e,1,i+f+ea+" +k=1"+Fa+p+r+n+o+e,1,i+f+Bg+" +k=1"+Ua+p+r+n+o+e,1,i+f+" +lon_0=29 +k=1"+Ds+p+r+n+o+e,1,i+f+cl+" +k=1"+il+p+r+n+o+e,1,i+f+Um+" +k=1"+ys+p+r+n+o+e,4,c+r+n+e,1,u+Du+r+n+o+e,1,u+lu+r+n+o+e,1,u+Kl+r+n+o+e,1,i+ww+" +lon_0=46.5 +k=0.9994"+vn+p+_+U+o+e,13,c+M+Vt+e,6,i+f+Ss+x+m+si+M+Vt+o+e,8,u+Us+j+du+o+e,22,l+" +lat_1=41.25 +lat_2=42.75"+Hp+yp+Ou+$_+r+n+o+e,1,l+" +lat_1=42.25 +lat_2=43.75"+cd+yp+Ou+" +y_0=2200000"+r+n+o+e,1,l+" +lat_1=43.25 +lat_2=44.75"+hl+yp+Ou+" +y_0=3200000"+r+n+o+e,1,l+" +lat_1=44.25 +lat_2=45.75"+tl+yp+Ou+" +y_0=4200000"+r+n+o+e,1,l+" +lat_1=45.25 +lat_2=46.75 +lat_0=46"+yp+Ou+" +y_0=5200000"+r+n+o+e,1,l+fM+" +lat_2=47.75"+fl+yp+Ou+" +y_0=6200000"+r+n+o+e,1,l+" +lat_1=47.25 +lat_2=48.75 +lat_0=48"+yp+Ou+" +y_0=7200000"+r+n+o+e,1,l+" +lat_1=48.25 +lat_2=49.75 +lat_0=49"+yp+Ou+" +y_0=8200000"+r+n+o+e,1,l+" +lat_1=49.25 +lat_2=50.75"+tS+yp+Ou+" +y_0=9200000"+r+n+o+e,18,l+" +lat_1=37"+Ak+es+ms+Z+p+r+n+o+e,1,l+" +lat_1=37"+Ak+es+ms+Z+p+r+n+o+e,1,l+" +lat_1=37"+Ak+es+ms+Z+p+r+n+o+e,6,fe+F+" +lat_ts=-70"+ta+" +k=1"+Z+p+v+o+e,2,l+Zh+Qa+" +lat_0=49 +lon_0=-95"+Z+p+r+n+o+e,1,l+Zh+Qa+" +lat_0=49 +lon_0=-95"+Z+p+r+n+o+e,7,i+sS+cl+" +k=1"+R+Tt+j+_n+o+e,1,i+sS+Bg+" +k=1"+R+Tt+j+_n+o+e,1,i+sS+Mv+" +k=1"+R+Tt+j+_n+o+e,1,i+sS+Va+" +k=1"+R+Tt+j+_n+o+e,2,l+cs+fs+ds+Ho+P+p+j+du+h+e,1,l+cs+fs+ds+Ho+P+vm+j+du+h+e,2,ru+" +lon_0=100 +lat_ts=-41"+Z+p+v+o+e,1,fe+Oa+" +lat_ts=71"+ta+" +k=1"+Z+p+v+o+e,1,fe+Oa+" +lat_ts=75"+ta+" +k=1"+Z+p+v+o+e,1,i+f+" +lon_0=55.33333333333334 +k=1"+m+p+v+o+e,4,c+Vp+e,1,c+hp+e,1,c+Y+e,1,c+M+e,1,c+Aa+ri+e,1,c+zs+e,1,c+xi+ki+e,1,c+j+e,2,c+id+od+e,1,c+vt+he+e,1,c+T+e,1,c+Me+me+e,1,c+vt+" +b=6356514.996941779"+e,1,c+Ve+Kt+e,1,c+vc+e,2,c+ts+Qe+e,1,c+r+e,1,c+Cs+e,1,c+nl+Oe+e,1,c+_+e,1,c+r+n+e,0,c+r+n+e,1,c+d+e,1,c+dM+e,1,i+f+" +lon_0=28.4 +k=0.9999400000000001"+R+si+r+n+o+e,1,c+" +a=6376523"+xg+e,1,c+eM+bg+e,1,c+og+Ea+e,1,c+N+e,1,c+N+e,1,c+" +a=6378136.2 +b=6356751.516927429"+e,1,c+" +a=6378136.3 +b=6356751.616592146"+e,1,c+kg+Sg+e,2,c+pM+e,1,u+mh+v+o+e,1,u+uf+v+o+e,3,c+em+Ps+e,1,c+Xs+Ns+e,1,c+b+e,1,c+bc+Ca+e,1,c+Ts+mn+e,1,c+r+n+e,1,c+" +a=6371007 +b=6371007"+e,1,i+f+Wa+x+m+jt+r+n+o+e,1,i+f+" +lon_0=14"+x+m+jt+r+n+o+e,1,i+f+" +lon_0=16"+x+m+jt+r+n+o+e,1,i+f+Gm+x+m+jt+r+n+o+e,1,c+" +a=6370997 +b=6370997"+e,1,c+TS+OS+e,1,c+PS+ny+e,2,i+f+Sv+x+m+jt+r+n+o+e,1,i+f+rS+x+m+jt+r+n+o+e,1,i+f+Va+x+m+jt+r+n+o+e,1,i+f+Mv+x+m+jt+r+n+o+e,1,i+f+Bg+x+m+jt+r+n+o+e,1,u+Bu+G+r+n+o+e,1,u+Vf+G+r+n+o+e,1,u+mh+G+r+n+o+e,8,u+Lc+G+_+k_+o+e,4,c+r+n+e,6,c+r+n+e,1,u+Py+r+n+o+e,1,u+uu+r+n+o+e,4,"+proj=eqc +lat_ts=0"+f+ta+Z+p+v+o+e,1,"+proj=eqc +lat_ts=0"+f+ta+Z+p+" +a=6371007 +b=6371007"+o+e,5,i+f+Nu+Gl+R+si+r+n+o+e,1,i+f+Mc+Gl+V+si+r+n+o+e,1,i+f+" +lon_0=11.75"+Gl+E+si+r+n+o+e,1,i+f+Ss+" +k=1"+vn+si+r+n+o+e,24,c+M+e,1,c+r+Xm+e,1,c+em+Ps+e,1,c+_+qt+e,1,c+M+ve+e,3,c+j+Ws+e,1,c+j+e,1,c+j+e,1,c+N+Ju+e,1,c+Ve+Kt+Jl+e,1,c+T+Am+e,1,c+r+Ec+e,1,c+T+ws+e,1,c+j+qo+e,1,c+j+e,1,c+j+e,1,c+j+e,1,c+j+du+e,2,c+r+_v+e,1,c+T+Xl+e,1,c+T+Ha+e,1,c+Ve+Kt+$l+e,1,c+bc+Ca+os+e,1,c+Ts+mn+ge+e,1,c+d+Vs+e,1,c+N+n+e,1,c+M+bs+e,1,c+M+xm+e,1,c+r+n+e,1,c+r+n+e,1,c+_+km+e,1,c+_+Fs+e,1,c+vt+he+pd+e,1,c+M+xs+e,1,c+xi+ki+e,1,c+_+Sm+e,1,c+_+Q+e,1,c+_+e,1,c+_+ky+e,1,c+M+e,1,c+N+n+e,1,c+d+Uf+e,1,c+_+O_+e,1,c+N+n+e,1,c+r+n+e,1,c+og+Ea+Df+e,1,c+j+b_+e,1,c+r+n+e,1,c+r+n+e,2,c+r+n+e,1,c+og+Ea+e,1,c+T+Yd+e,1,c+r+n+e,2,c+d+zt+e,1,c+d+C+e,1,c+r+n+e,1,c+_+Lu+e,1,c+_+p_+e,1,c+_+m_+e,1,c+_+P_+e,4,c+Vp+Se+e,1,c+r+n+e,1,c+r+n+e,1,c+d+e,1,c+_+tg+e,1,c+vt+he+Mg+e,1,c+_+Nf+e,1,c+_+" +towgs84=105,326,-102.5,0,0,0.814,-0.6"+e,1,c+_+" +towgs84=-45,417,-3.5,0,0,0.814,-0.6"+e,1,c+T+e,1,c+T+e,1,c+_+e,1,c+d+a+e,1,c+T+ha+e,1,c+Y+q+e,1,c+Y+Ye+e,1,c+_+Rn+e,1,c+d+Gf+e,1,c+vt+he+e,1,c+_+di+e,1,c+_+bi+e,1,c+Me+me+Sl+e,1,c+T+ui+e,1,c+M+Pn+e,1,c+T+Pu+e,1,c+vt+he+g_+e,1,c+d+w+e,1,c+_+e,1,c+j+R_+e,1,i+f+hc+pt+B+p+r+n+h+e,0,i+f+hc+pt+B+p+r+n+h+e,1,c+_+hi+e,1,c+M+" +towgs84=-384,664,-48,0,0,0,0"+e,1,c+T+rs+e,1,c+_+Ge+e,1,c+Me+me+Qt+e,1,c+vt+he+ks+e,1,c+_+k_+e,1,c+_+ss+e,2,c+vt+he+Ks+e,2,c+Cs+ca+e,1,c+_+U+e,1,c+_+" +towgs84=-83.11,-97.38,-117.22,0.00569291,-0.0446976,0.0442851,0.1218"+e,1,c+T+zf+e,4,c+_+hy+e,1,c+pM+Ag+e,1,c+nl+Oe+Wt+e,1,c+Ve+Kt+tu+e,1,c+Ve+Kt+Hf+e,1,c+kg+Sg+e,1,c+j+S_+e,1,c+Xs+Ns+e,1,c+Ve+Kt+Z_+e,1,c+ts+Qe+_e+e,1,c+T+rg+e,1,c+_+ma+e,1,c+_+xt+e,1,c+_+e,1,c+T+j_+e,1,c+T+" +towgs84=-90,40,88,0,0,0,0"+e,1,c+vt+he+e,1,c+j+Zo+e,1,c+_+Kd+e,1,c+_+" +towgs84=-333,-222,114,0,0,0,0"+e,1,c+T+" +towgs84=41,-220,-134,0,0,0,0"+e,1,c+M+fa+e,1,c+r+n+e,1,c+_+$m+e,2,c+vt+he+$a+e,1,c+M+W_+e,1,c+T+as+e,2,c+_+sn+e,1,c+vt+he+qf+e,1,c+S+e,2,c+r+n+e,1,c+T+lr+e,1,c+_+N_+e,1,c+_+k+e,1,c+Aa+ri+Mt+e,1,c+_+Ql+e,1,c+vt+he+Ie+e,1,c+dM+e,1,c+Vp+Cc+e,1,c+Vp+e,1,c+Vp+e,1,c+M+e,1,c+id+od+fr+e,1,c+vt+he+M_+e,1,c+r+n+e,1,c+d+s+e,1,c+_+Dm+e,1,c+Cs+e,2,c+_+e,1,c+M+Do+e,3,c+_+md+e,1,c+zs+ze+e,2,c+M+e,2,c+_+qs+e,1,c+vc+Wo+e,1,c+hp+Se+e,1,c+hp+Se+e,1,c+M+I+e,1,c+xi+ki+Vl+e,1,c+Cs+e,1,c+vt+he+Fl+e,2,c+M+e,1,c+T+Ot+e,1,c+M+e,1,c+_+" +towgs84=-155,171,37,0,0,0,0"+e,1,c+vt+he+e,1,c+_+Zs+e,1,c+M+J+e,1,c+_+is+e,1,c+M+et+e,1,c+vt+he+gd+e,1,c+_+Fm+e,2,c+N+Qc+e,1,c+r+cy+e,3,c+b+g+e,2,c+b+y+e,2,c+v+e,64,Ln+" +lat_0=2.042583333333333 +lon_0=103.5627583333333"+Z+p+ts+Qe+_e+o+e,1,Ln+" +lat_0=2.712283333333334 +lon_0=101.9411666666667 +x_0=-242.005 +y_0=-948.547"+ts+Qe+_e+o+e,1,Ln+" +lat_0=3.710972222222222 +lon_0=102.4361777777778"+Z+p+ts+Qe+_e+o+e,1,Ln+" +lat_0=3.680344444444444 +lon_0=101.5082444444444 +x_0=-21759.438 +y_0=55960.906"+ts+Qe+_e+o+e,1,Ln+" +lat_0=4.946141666666667 +lon_0=102.8952083333333"+Z+p+ts+Qe+_e+o+e,1,Ln+" +lat_0=5.421325 +lon_0=100.3458694444444"+Z+p+ts+Qe+_e+o+e,1,Ln+" +lat_0=5.965147222222223 +lon_0=100.6375944444444"+Z+p+ts+Qe+_e+o+e,1,Ln+" +lat_0=4.859380555555555 +lon_0=100.8167666666667"+Z+" +y_0=133453.669"+ts+Qe+_e+o+e,1,Ln+" +lat_0=5.893922222222222 +lon_0=102.1772916666667"+Z+p+ts+Qe+_e+o+e,1,i+f+hc+pt+B+p+S+h+e,1,i+f+Gu+pt+B+p+S+h+e,1,i+f+zu+pt+B+p+S+h+e,1,i+f+fc+pt+B+p+S+h+e,1,i+f+Hy+pt+B+p+S+h+e,1,i+f+" +lon_0=-159"+pt+B+p+S+h+e,0,i+f+" +lon_0=-159"+pt+B+p+S+h+e,1,i+f+yk+pt+B+p+S+h+e,1,i+f+dg+pt+B+p+S+h+e,1,i+f+" +lon_0=-141"+pt+B+p+S+h+e,1,i+f+_k+pt+B+p+S+h+e,1,i+f+Ek+pt+B+p+S+h+e,1,i+f+" +lon_0=-123"+pt+B+p+S+h+e,1,i+f+pc+pt+B+p+S+h+e,1,i+f+Zu+pt+B+p+S+h+e,1,i+f+" +lon_0=-105"+pt+B+p+S+h+e,1,i+" +lat_0=13.5 +lon_0=144.75 +k=1"+ye+Ka+r+n+o+e,1,l+" +lat_1=-6.5 +lat_2=-11.5"+sS+Mv+m+Tt+j+_n+o+e,2,i+f+As+" +k=1"+Xa+p+d+zt+o+e,1,i+f+Iv+pt+B+p+S+h+e,1,i+f+Wc+pt+B+p+S+h+e,1,i+f+Gu+pt+B+p+r+n+h+e,1,i+f+zu+pt+B+p+r+n+h+e,1,i+f+fc+pt+B+p+r+n+h+e,1,i+f+Hy+pt+B+p+r+n+h+e,1,i+f+" +lon_0=-159"+pt+B+p+r+n+h+e,1,i+f+yk+pt+B+p+r+n+h+e,1,i+f+dg+pt+B+p+r+n+h+e,1,i+f+" +lon_0=-141"+pt+B+p+r+n+h+e,1,i+f+_k+pt+B+p+r+n+h+e,1,i+f+Ek+pt+B+p+r+n+h+e,1,i+f+" +lon_0=-123"+pt+B+p+r+n+h+e,1,i+f+pc+pt+B+p+r+n+h+e,1,i+f+Zu+pt+B+p+r+n+h+e,1,i+f+" +lon_0=-105"+pt+B+p+r+n+h+e,1,i+f+Va+" +k=1"+Kc+p+d+zt+o+e,3,l+cs+fs+ds+Ho+R+Ka+r+n+o+e,1,i+f+Iv+pt+B+p+r+n+h+e,1,i+f+Wc+pt+B+p+r+n+h+e,16,l+jr+Nr+X+_i+A+p+S+h+e,1,l+Pr+Lr+Ke+np+A+vm+S+h+e,1,l+bo+wo+ht+pn+E+p+r+n+h+e,5,l+" +lat_1=-18"+MS+" +lat_0=-27"+xl+Z+p+v+o+e,1,c+r+n+e,4,u+za+r+n+o+e,3,c+r+n+e,1,u+lu+G+r+n+o+e,4,c+_+jp+e,8,c+r+n+e,1,u+bd+r+n+o+e,1,u+wd+r+n+o+e,1,u+xd+r+n+o+e,1,u+Sd+r+n+o+e,1,u+Zf+r+n+o+e,1,u+Wf+r+n+o+e,1,c+r+e,1,i+f+na+" +k=1"+aa+p+r+o+e,1,i+f+ra+" +k=1"+Bs+p+r+o+e,1,i+f+ga+" +k=1"+Ia+p+r+o+e,1,i+f+ia+" +k=1"+Ra+p+r+o+e,1,i+f+oa+" +k=1"+Ol+p+r+o+e,1,i+f+oi+" +k=1"+Pa+p+r+o+e,1,i+f+Go+" +k=1"+La+p+r+o+e,1,i+f+To+" +k=1"+la+p+r+o+e,1,i+f+Ro+" +k=1"+ja+p+r+o+e,1,i+f+wi+" +k=1"+ua+p+r+o+e,1,i+f+Oo+" +k=1"+Na+p+r+o+e,1,i+f+na+" +k=1"+m+p+r+o+e,1,i+f+ra+" +k=1"+m+p+r+o+e,1,i+f+ga+" +k=1"+m+p+r+o+e,1,i+f+ia+" +k=1"+m+p+r+o+e,1,i+f+oa+" +k=1"+m+p+r+o+e,1,i+f+oi+" +k=1"+m+p+r+o+e,1,i+f+Go+" +k=1"+m+p+r+o+e,1,i+f+To+" +k=1"+m+p+r+o+e,1,i+f+Ro+" +k=1"+m+p+r+o+e,1,i+f+wi+" +k=1"+m+p+r+o+e,1,i+f+Oo+" +k=1"+m+p+r+o+e,1,i+f+na+" +k=1"+Ba+p+r+o+e,1,i+f+Sc+" +k=1"+Da+p+r+o+e,1,i+f+ra+" +k=1"+Fa+p+r+o+e,1,i+f+hd+" +k=1"+Ua+p+r+o+e,1,i+f+ga+" +k=1"+Ds+p+r+o+e,1,i+f+Ta+" +k=1"+il+p+r+o+e,1,i+f+ia+" +k=1"+ys+p+r+o+e,1,i+f+df+" +k=1"+ol+p+r+o+e,1,i+f+oa+" +k=1"+Pl+p+r+o+e,1,i+f+_u+" +k=1"+Sf+p+r+o+e,1,i+f+oi+" +k=1"+Mf+p+r+o+e,1,i+f+uc+" +k=1"+Af+p+r+o+e,1,i+f+Go+" +k=1"+Ef+p+r+o+e,1,i+f+kl+" +k=1"+Cf+p+r+o+e,1,i+f+To+" +k=1"+Tf+p+r+o+e,1,i+f+Uu+" +k=1"+Of+p+r+o+e,1,i+f+Ro+" +k=1"+Pf+p+r+o+e,1,i+f+vu+" +k=1"+ap+p+r+o+e,1,i+f+wi+" +k=1"+Lf+p+r+o+e,1,i+f+xl+" +k=1"+lp+p+r+o+e,1,i+f+Oo+" +k=1"+If+p+r+o+e,1,i+f+na+" +k=1"+m+p+r+o+e,1,i+f+Sc+" +k=1"+m+p+r+o+e,1,i+f+ra+" +k=1"+m+p+r+o+e,1,i+f+hd+" +k=1"+m+p+r+o+e,1,i+f+ga+" +k=1"+m+p+r+o+e,1,i+f+Ta+" +k=1"+m+p+r+o+e,1,i+f+ia+" +k=1"+m+p+r+o+e,1,i+f+df+" +k=1"+m+p+r+o+e,1,i+f+oa+" +k=1"+m+p+r+o+e,1,i+f+_u+" +k=1"+m+p+r+o+e,1,i+f+oi+" +k=1"+m+p+r+o+e,1,i+f+uc+" +k=1"+m+p+r+o+e,1,i+f+Go+" +k=1"+m+p+r+o+e,1,i+f+kl+" +k=1"+m+p+r+o+e,1,i+f+To+" +k=1"+m+p+r+o+e,1,i+f+Uu+" +k=1"+m+p+r+o+e,1,i+f+Ro+" +k=1"+m+p+r+o+e,1,i+f+vu+" +k=1"+m+p+r+o+e,1,i+f+wi+" +k=1"+m+p+r+o+e,1,i+f+xl+" +k=1"+m+p+r+o+e,1,i+f+Oo+" +k=1"+m+p+r+o+e,1,c+d+e,3,c+r+n+e,1,u+Us+r+n+o+e,9,i+f+na+" +k=1"+aa+p+d+o+e,1,i+f+ra+" +k=1"+Bs+p+d+o+e,1,i+f+ga+" +k=1"+Ia+p+d+o+e,1,i+f+ia+" +k=1"+Ra+p+d+o+e,1,i+f+oa+" +k=1"+Ol+p+d+o+e,1,i+f+oi+" +k=1"+Pa+p+d+o+e,1,i+f+Go+" +k=1"+La+p+d+o+e,1,i+f+To+" +k=1"+la+p+d+o+e,1,i+f+Ro+" +k=1"+ja+p+d+o+e,1,i+f+wi+" +k=1"+ua+p+d+o+e,1,i+f+Oo+" +k=1"+Na+p+d+o+e,1,i+f+na+" +k=1"+m+p+d+o+e,1,i+f+ra+" +k=1"+m+p+d+o+e,1,i+f+ga+" +k=1"+m+p+d+o+e,1,i+f+ia+" +k=1"+m+p+d+o+e,1,i+f+oa+" +k=1"+m+p+d+o+e,1,i+f+oi+" +k=1"+m+p+d+o+e,1,i+f+Go+" +k=1"+m+p+d+o+e,1,i+f+To+" +k=1"+m+p+d+o+e,1,i+f+Ro+" +k=1"+m+p+d+o+e,1,i+f+wi+" +k=1"+m+p+d+o+e,1,i+f+Oo+" +k=1"+m+p+d+o+e,11,c+T+e,1,c+T+A_+e,1,c+T+E_+e,1,c+T+C_+e,1,c+T+T_+e,1,c+T+yv+e,1,c+T+d_+e,1,c+T+gm+e,1,c+j+e,1,c+j+e,1,c+Ht+O+e,1,c+_+mu+e,1,c+r+n+e,1,c+M+_a+e,1,c+_+Iu+e,1,c+_+Sy+e,1,c+_+y_+e,1,c+r+n+e,1,c+Y+Nt+e,1,c+r+n+e,1,c+T+" +towgs84=-106,-129,165,0,0,0,0"+e,1,c+_+__+e,1,c+_+My+e,1,c+_+Bf+e,1,c+r+n+e,1,c+_+L_+e,1,c+_+Ty+e,1,c+r+n+e,1,c+_+I_+e,1,c+_+xc+e,1,c+_+vv+e,2,c+_+Ay+e,1,c+_+Nm+e,3,c+_+" +towgs84=365,194,166,0,0,0,0"+e,1,c+_+" +towgs84=325,154,172,0,0,0,0"+e,1,c+j+H_+e,1,c+_+Ey+e,2,c+_+pu+e,1,c+_+v_+e,1,c+_+ch+e,1,c+_+Qs+e,2,c+_+Cy+e,1,i+f+Nu+pt+ol+p+r+n+o+e,5,i+f+na+" +k=1"+Ba+p+d+o+e,1,i+f+Sc+" +k=1"+Da+p+d+o+e,1,i+f+ra+" +k=1"+Fa+p+d+o+e,1,i+f+hd+" +k=1"+Ua+p+d+o+e,1,i+f+ga+" +k=1"+Ds+p+d+o+e,1,c+" +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0"+e,1,c+_+fu+e,1,c+r+n+e,1,c+_+Ru+e,1,c+r+n+e,1,c+_+Jm+e,1,c+_+Rp+e,1,c+_+ym+e,1,c+_+Jp+e,1,c+M+$p+e,1,c+N+n+e,1,c+_+" +towgs84=-86,-98,-119,0,0,0,0"+e,1,c+r+n+e,1,c+N+n+e,1,c+vt+he+e,1,c+_+B_+e,1,c+_+yd+e,1,c+r+n+e,1,c+j+" +towgs84=-100,-248,259,0,0,0,0"+e,1,c+d+e,1,c+d+e,1,c+d+" +towgs84=44.585,-131.212,-39.544,0,0,0,0"+e,1,c+T+" +towgs84=-80.01,253.26,291.19,0,0,0,0"+e,1,c+T+" +towgs84=124.5,-63.5,-281,0,0,0,0"+e,2,c+Ve+Kt+Eg+e,1,c+j+be+e,1,c+_+" +towgs84=-133,-321,50,0,0,0,0"+e,2,c+r+n+e,1,c+r+je+e,1,c+_+uh+e,1,c+_+wc+e,1,c+_+dh+e,1,c+_+ph+e,1,c+_+Bm+e,1,c+N+w_+e,1,c+N+n+e,1,c+j+_n+e,1,c+T+e,1,c+T+e,1,c+_+x_+e,1,c+T+eg+e,1,c+T+e,1,c+T+ns+e,1,c+r+n+e,1,c+T+e,1,c+_+e,1,c+_+e,1,c+Cs+ng+e,1,c+_+" +towgs84=114,-116,-333,0,0,0,0"+e,1,c+Y+" +towgs84=-491,-22,435,0,0,0,0"+e,1,c+_+" +towgs84=145,75,-272,0,0,0,0"+e,1,c+_+" +towgs84=-320,550,-494,0,0,0,0"+e,1,c+_+" +towgs84=124,-234,-25,0,0,0,0"+e,1,c+_+" +towgs84=-205,107,53,0,0,0,0"+e,1,c+T+" +towgs84=-79,-129,145,0,0,0,0"+e,1,c+_+" +towgs84=-127,-769,472,0,0,0,0"+e,1,c+_+" +towgs84=-104,-129,239,0,0,0,0"+e,1,c+_+" +towgs84=298,-304,-375,0,0,0,0"+e,1,c+j+" +towgs84=-2,151,181,0,0,0,0"+e,1,c+_+" +towgs84=230,-199,-752,0,0,0,0"+e,1,c+_+" +towgs84=211,147,111,0,0,0,0"+e,1,c+b+g+e,1,c+_+Ul+e,1,c+_+" +towgs84=-794,119,-298,0,0,0,0"+e,1,c+j+cc+e,1,c+_+" +towgs84=208,-435,-229,0,0,0,0"+e,1,c+_+" +towgs84=189,-79,-202,0,0,0,0"+e,1,c+j+Tc+e,1,c+_+" +towgs84=403,-81,277,0,0,0,0"+e,1,c+_+" +towgs84=-307,-92,127,0,0,0,0"+e,1,c+_+q_+e,1,c+_+" +towgs84=170,42,84,0,0,0,0"+e,2,c+" +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0"+e,1,c+_+" +towgs84=276,-57,149,0,0,0,0"+e,1,c+_+" +towgs84=-632,438,-609,0,0,0,0"+e,1,c+_+" +towgs84=647,1777,-1124,0,0,0,0"+e,1,c+T+" +towgs84=260,12,-147,0,0,0,0"+e,1,c+r+n+e,1,c+xi+ki+e,1,c+_+" +towgs84=-156,-271,-189,0,0,0,0"+e,1,c+" +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0"+e,1,c+_+e,1,c+r+e,1,c+T+fi+e,1,c+T+e,1,c+M+e,1,c+M+e,1,c+r+n+e,1,c+Dv+Wk+dd+e,1,c+r+n+e,1,c+N+Mm+e,1,c+Vk+wg+e,1,c+Dv+Wk+dd+e,1,c+_+e,1,c+_+K+e,1,c+N+n+e,1,c+N+Bo+e,1,c+N+e,1,c+N+n+e,1,c+r+n+e,1,c+dM+e,1,c+r+n+e,1,c+N+n+e,1,c+N+n+e,1,c+r+n+e,1,c+r+n+e,1,i+f+Ta+" +k=1"+il+p+d+o+e,1,i+f+ia+" +k=1"+ys+p+d+o+e,1,i+f+df+" +k=1"+ol+p+d+o+e,1,i+f+oa+" +k=1"+Pl+p+d+o+e,1,i+f+_u+" +k=1"+Sf+p+d+o+e,1,i+f+oi+" +k=1"+Mf+p+d+o+e,1,i+f+uc+" +k=1"+Af+p+d+o+e,1,i+f+Go+" +k=1"+Ef+p+d+o+e,1,i+f+kl+" +k=1"+Cf+p+d+o+e,1,i+f+To+" +k=1"+Tf+p+d+o+e,1,i+f+Uu+" +k=1"+Of+p+d+o+e,1,i+f+Ro+" +k=1"+Pf+p+d+o+e,1,i+f+vu+" +k=1"+ap+p+d+o+e,1,i+f+wi+" +k=1"+Lf+p+d+o+e,1,i+f+xl+" +k=1"+lp+p+d+o+e,1,i+f+Oo+" +k=1"+If+p+d+o+e,1,i+f+na+" +k=1"+m+p+d+o+e,1,i+f+Sc+" +k=1"+m+p+d+o+e,1,i+f+ra+" +k=1"+m+p+d+o+e,1,i+f+hd+" +k=1"+m+p+d+o+e,1,i+f+ga+" +k=1"+m+p+d+o+e,1,i+f+Ta+" +k=1"+m+p+d+o+e,1,i+f+ia+" +k=1"+m+p+d+o+e,1,i+f+df+" +k=1"+m+p+d+o+e,1,i+f+oa+" +k=1"+m+p+d+o+e,1,i+f+_u+" +k=1"+m+p+d+o+e,1,i+f+oi+" +k=1"+m+p+d+o+e,1,i+f+uc+" +k=1"+m+p+d+o+e,1,i+f+Go+" +k=1"+m+p+d+o+e,1,i+f+kl+" +k=1"+m+p+d+o+e,1,i+f+To+" +k=1"+m+p+d+o+e,1,i+f+Uu+" +k=1"+m+p+d+o+e,1,i+f+Ro+" +k=1"+m+p+d+o+e,1,i+f+vu+" +k=1"+m+p+d+o+e,1,i+f+wi+" +k=1"+m+p+d+o+e,1,c+M+bs+" +pm=bern"+e,1,c+_+hi+" +pm=bogota"+e,1,c+_+di+IS+e,1,c+M+fa+Qp+e,1,c+M+Vt+kc+e,1,c+_+sn+" +pm=rome"+e,1,c+vt+he+Ie+Ac+e,1,c+M+Qp+e,1,c+_+" +pm=brussels"+e,1,c+_+qs+Ac+e,1,c+vt+he+Fl+Ac+e,1,i+f+xl+" +k=1"+m+p+d+o+e,0,i+f+xl+" +k=1"+m+p+d+o+e,1,c+M+Pn+Qp+e,1,c+M+" +pm=stockholm"+e,1,c+M+" +pm=athens"+e,1,c+vt+he+ks+Ac+e,1,c+Aa+ri+Mt+Iy+e,1,c+M+xs+kc+e,2,c+M+_a+Qp+e,1,c+vt+he+Ac+e,1,i+f+Oo+" +k=1"+m+p+d+o+e,1,c+_+e,1,c+_+e,2,l+" +lat_1=15 +lat_2=16.66666666666667 +lat_0=15.83333333333333 +lon_0=-24 +x_0=161587.83 +y_0=128511.202"+v+o+e,13,l+xw+kw+Av+mk+Z+p+r+n+o+e,62,c+" +a=6376523"+xg+_S+e,2,c+eM+bg+" +pm=madrid"+e,1,c+M+$p+IS+e,109,c+r+n+e,1,u+vd+r+n+o+e,1,u+_p+r+n+o+e,1,u+uu+r+n+o+e,2,i+we+Gv+" +k=1"+Z+p+_+di+o+e,23,fe+Oa+lg+ta+Xg+Ae+In+v+o+e,1,fe+F+" +lat_ts=-90"+ta+Xg+Ae+In+v+o+e,6,u+mh+r+n+o+e,21,dr+Wy+Sa+aS+$d+Z+p+S+o+e,1,dr+Wy+Sa+aS+$d+Z+p+r+n+o+e,1,dr+Wy+Sa+aS+$d+Z+p+r+n+o+e,1,dr+Wy+Sa+aS+$d+Z+p+r+n+o+e,33,i+Eo+" +lon_0=5.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=6.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=7.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=8.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=9.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+mk+" +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=11.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=12.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=13.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=14.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=15.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+fk+" +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=17.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=18.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=19.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=20.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=21.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=22.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=23.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=24.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=25.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=26.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=27.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=28.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=29.5 +k=1"+ye+st+r+n+o+e,1,i+Eo+" +lon_0=30.5 +k=1"+ye+st+r+n+o+e,2,c+M+e,35,i+Tn+$f+" +k=1"+R+Tt+M+o+e,1,i+Tn+dy+" +k=1"+R+" +y_0=550000"+M+o+e,1,i+Tn+py+" +k=1"+R+Tt+M+o+e,1,i+Tn+dy+" +k=1"+R+Tt+M+o+e,1,i+Tn+wi+" +k=1"+R+Tt+M+o+e,1,i+Tn+$f+" +k=1"+R+Tt+M+o+e,1,i+Tn+" +lon_0=125.0028902777778 +k=1"+R+Tt+M+o+e,1,i+Tn+Sw+" +k=1"+R+Tt+M+o+e,1,i+Tn+Sw+" +k=1"+R+" +y_0=550000"+M+o+e,1,i+Tn+" +lon_0=129.0028902777778 +k=1"+R+Tt+M+o+e,1,i+Tn+" +lon_0=131.0028902777778 +k=1"+R+Tt+M+o+e,1,i+Tn+am+pt+xe+In+M+o+e,1,i+Tn+am+pt+xe+In+r+n+o+e,1,i+Tn+py+" +k=1"+R+Tt+r+n+o+e,1,i+Tn+dy+" +k=1"+R+Tt+r+n+o+e,1,i+Tn+dy+" +k=1"+R+" +y_0=550000"+r+n+o+e,1,i+Tn+wi+" +k=1"+R+Tt+r+n+o+e,1,i+Tn+$f+" +k=1"+R+Tt+r+n+o+e,1,i+Tn+py+" +k=1"+R+ug+r+n+o+e,1,i+Tn+dy+" +k=1"+R+ug+r+n+o+e,1,i+Tn+wi+" +k=1"+R+ug+r+n+o+e,1,i+Tn+$f+" +k=1"+R+ug+r+n+o+e,33,uy+Dy+" +lon_0=42.5"+yh+x+Z+p+M+xs+kc+o+e,2,i+f+Wa+pt+m+Tt+v+o+e,5,c+M+Oc+e,1,c+M+Oc+kc+e,4,c+Ve+Kt+fh+e,1,i+" +lat_0=7.000480277777778 +lon_0=80.77171111111112 +k=0.9999238418"+R+Ka+Ve+Kt+Z_+o+e,1,i+" +lat_0=7.000471527777778 +lon_0=80.77171308333334 +k=0.9999238418"+m+Tt+Ve+Kt+fh+o+e,8,l+xw+kw+Av+mk+Z+p+r+n+o+e,3,c+r+e,1,gn+ig+oS+SM+om+Z+p+Fu+gl+r+o+e,5,c+r+n+e,1,i+f+ea+" +k=1"+m+p+r+n+o+e,1,i+f+cl+" +k=1"+m+p+r+n+o+e,1,i+f+Za+" +k=1"+m+p+r+n+o+e,1,i+f+Fp+" +k=1"+m+p+r+n+o+e,1,i+f+Wh+" +k=1"+m+p+r+n+o+e,1,i+f+Up+" +k=1"+m+p+r+n+o+e,1,i+f+eu+" +k=1"+m+p+r+n+o+e,5,c+r+n+e,2,i+f+Ta+" +k=1"+qe+p+r+n+o+e,3,i+f+ea+" +k=1"+Yc+p+r+n+o+e,1,i+f+cl+" +k=1"+rc+p+r+n+o+e,1,i+f+Za+" +k=1"+Su+p+r+n+o+e,1,i+f+Fp+" +k=1"+ic+p+r+n+o+e,1,i+f+Wh+" +k=1"+aa+p+r+n+o+e,1,i+f+Up+" +k=1"+Bs+p+r+n+o+e,1,i+f+eu+" +k=1"+Ia+p+r+n+o+e,17,i+f+" +lon_0=90.73333333333333 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=89.55 +k=1"+qe+pr+r+n+o+e,1,i+f+Mw+" +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=90.03333333333333 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=90.15000000000001 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=91.13333333333334 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=91.23333333333333 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=89.34999999999999 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=91.34999999999999 +k=1"+qe+pr+r+n+o+e,1,i+f+Mw+" +k=1"+qe+pr+r+n+o+e,1,i+f+Aw+" +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=89.06666666666666 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=90.26666666666667 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=89.55 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=91.75 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=90.5 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=90.16666666666667 +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=90.11666666666666 +k=1"+qe+pr+r+n+o+e,1,i+f+Aw+" +k=1"+qe+pr+r+n+o+e,1,i+f+" +lon_0=90.86666666666666 +k=1"+qe+pr+r+n+o+e,5,i+f+" +lon_0=-7 +k=0.999997"+R+" +y_0=-6000000"+r+n+o+e,4,l+gk+" +lat_2=54.5"+f+Xf+xe+p+r+n+o+e,1,l+gk+" +lat_2=54.5"+f+Xf+xe+p+r+n+o+e,3,c+r+n+e,1,l+" +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19"+Ou+ka+r+n+o+e,4,ru+Cp+wS+um+cg+M+_a+Qp+o+e,1,ru+Cp+wS+um+cg+M+Pn+Qp+o+e,1,ru+Cp+wS+um+cg+M+fa+Qp+o+e,6,u+vd+G+_+bi+o+e,3,c+r+n+e,3,i+F+Lv+" +k=1"+bt+p+r+n+o+e,1,i+F+Wc+" +k=1"+On+p+r+n+o+e,1,i+F+nm+" +k=1"+Be+p+r+n+o+e,1,i+F+sg+" +k=1"+ur+p+r+n+o+e,1,i+F+Rv+" +k=1"+Si+p+r+n+o+e,1,i+F+RS+" +k=1"+Cu+p+r+n+o+e,1,i+F+rd+" +k=1"+Xa+p+r+n+o+e,5,c+r+n+e,1,u+Us+G+r+n+o+e,1,u+wa+G+r+n+o+e,1,u+za+G+r+n+o+e,3,c+r+n+e,1,u+wa+G+r+n+o+e,1,u+Ga+G+r+n+o+e,3,c+N+n+e,2,i+f+Xf+x+m+p+N+n+o+e,4,c+r+n+e,2,c+r+n+e,8,c+N+n+e,1,u+za+G+N+n+o+e,1,u+Ml+G+N+n+o+e,4,u+Ga+G+r+n+o+e,2,u+wa+G+r+n+o+e,4,c+r+n+e,3,u+_p+G+r+n+o+e,55,c+j+De+e,5,l+" +lat_1=10.46666666666667 +lat_0=10.46666666666667 +lon_0=-84.33333333333333 +k_0=0.99995696"+m+" +y_0=271820.522"+j+De+o+e,1,l+" +lat_1=9 +lat_0=9"+zv+" +k_0=0.99995696"+m+" +y_0=327987.436"+j+De+o+e,2,l+" +lat_1=14.9 +lat_0=14.9"+We+" +k_0=0.99989906"+m+" +y_0=325992.681"+j+De+o+e,1,l+" +lat_1=13.78333333333333 +lat_0=13.78333333333333 +lon_0=-89 +k_0=0.99996704"+m+" +y_0=295809.184"+j+De+o+e,1,l+" +lat_1=13.86666666666667 +lat_0=13.86666666666667"+iv+" +k_0=0.99990314"+m+" +y_0=359891.816"+j+De+o+e,1,l+" +lat_1=11.73333333333333 +lat_0=11.73333333333333"+iv+" +k_0=0.9999222800000001"+m+" +y_0=288876.327"+j+De+o+e,1,u+wl+Y+Nt+o+e,1,c+xi+ki+e,3,c+j+e,2,l+" +lat_1=8.416666666666666 +lat_0=8.416666666666666 +lon_0=-80 +k_0=0.99989909"+m+" +y_0=294865.303"+j+o+e,3,Nv+" +lat_0=8.25"+dn+" +x_0=914391.7962 +y_0=999404.7217154861"+j+" +to_meter=0.9143917962"+e,7,l+It+Rt+" +lat_0=-78 +lon_0=163"+ov+Tu+r+n+o+e,1,l+" +lat_1=-73.66666666666667"+St+" +lat_0=-74.5"+ed+nc+Io+r+n+o+e,1,l+" +lat_1=-70.66666666666667 +lat_2=-72.33333333333333 +lat_0=-71.5"+CS+cM+st+r+n+o+e,1,fe+F+" +lat_ts=-90"+_y+Xg+nc+st+r+n+o+e,7,c+r+n+e,1,u+Us+r+n+o+e,23,uy+Dy+Ew+yh+x+Z+p+M+xs+o+e,1,uy+Dy+Ew+yh+x+Z+p+M+xs+o+e,4,i+LS+t_+" +k=1"+hg+" +y_0=650000"+_+B_+o+e,1,i+LS+t_+" +k=1"+hg+" +y_0=650000"+_+yd+o+e,1,i+f+yp+" +k=1"+bt+p+M+et+o+e,3,i+f+" +lon_0=11.5"+pt+bt+ii+v+o+e,1,c+_+e,3,c+Y+ae+e,3,Nv+f+rd+nc+jt+Y+ae+o+e,1,u+za+G+Y+ae+o+e,2,u+Lc+G+Y+ae+o+e,1,u+Md+G+Y+ae+o+e,1,u+vd+G+Y+ae+o+e,1,u+za+G+_+o+e,1,u+Ml+G+_+o+e,1,u+Lc+G+_+o+e,1,u+Md+G+_+o+e,7,c+r+n+e,4,u+kd+G+r+n+o+e,1,u+Dp+G+r+n+o+e,1,u+Jg+G+r+n+o+e,7,l+" +lat_1=16.81666666666667 +lat_0=16.81666666666667"+We+" +k_0=0.99992226"+m+" +y_0=292209.579"+j+De+o+e,2,c+d+ce+e,1,i+f+As+" +k=1"+ur+p+d+ce+o+e,1,i+f+ea+" +k=1"+Si+p+d+ce+o+e,1,i+f+Za+" +k=1"+Cu+p+d+ce+o+e,1,i+f+Wh+" +k=1"+Xa+p+d+ce+o+e,1,i+f+As+" +k=1"+m+p+d+ce+o+e,1,i+f+ea+" +k=1"+m+p+d+ce+o+e,1,i+f+Za+" +k=1"+m+p+d+ce+o+e,1,i+f+Wh+" +k=1"+m+p+d+ce+o+e,19,us+El+nM+Fy+At+" +y_0=304800"+S+W+e,1,i+" +lat_0=17.06124194444444 +lon_0=-88.6318575 +k=1 +x_0=66220.02833082761 +y_0=135779.5099885299"+xi+ki+zc+e,4,c+r+n+e,3,i+f+" +lon_0=11.33333333333333 +k=1"+xe+p+r+n+o+e,27,i+Po+zv+" +k=0.999942857"+P+p+S+h+e,1,i+Po+gi+Ma+P+p+S+h+e,1,i+Po+" +lon_0=-88.75"+Ma+P+p+S+h+e,2,i+f+bS+pt+m+p+_+U+o+e,2,u+lu+G+N+Ju+o+e,2,i+f+Nu+" +k=1"+On+p+d+C+o+e,1,l+nS+Qm+Wp+Mc+$h+zg+r+n+o+e,1,ya+Wp+Mc+Hg+qg+r+n+o+e,1,l+nS+Qm+Wp+Mc+$h+zg+r+n+o+e,1,ya+Wp+Mc+Hg+qg+r+n+o+e,1,ya+Wp+Mc+Hg+qg+r+n+o+e,1,l+nS+Qm+Wp+Mc+$h+zg+r+n+o+e,1,ya+Wp+Mc+Hg+qg+r+n+o+e,1,l+nS+Qm+Wp+Mc+$h+zg+r+n+o+e,2,ru+" +lon_0=-43 +lat_ts=-2"+nc+jt+r+n+o+e,2,l+" +lat_1=52.66666666666666 +lat_2=54.33333333333334 +lat_0=48"+Mc+" +x_0=815000"+p+_+U+o+e,1,u+Kl+G+r+n+o+e,2,i+Lo+ec+Bl+ot+p+r+n+h+e,3,i+f+yp+pt+ys+p+r+n+o+e,1,i+f+Ss+pt+Pl+p+r+n+o+e,1,i+f+yp+pt+ys+p+r+n+o+e,1,i+f+Nu+pt+ol+p+r+n+o+e,1,i+f+Ss+pt+Pl+p+r+n+o+e,1,i+Lo+ec+Bl+ot+p+r+n+h+e,1,i+Lo+ec+Bl+ot+p+r+n+h+e,4,i+f+Nu+pt+" +x_0=500053 +y_0=-3999820"+_+sn+o+e,4,i+f+Ss+" +k=1"+Be+p+d+C+o+e,1,i+f+Nu+" +k=1"+On+p+d+zt+o+e,1,i+f+Ss+" +k=1"+Be+p+d+zt+o+e,1,i+f+Nu+" +k=1"+Be+p+M+o+e,1,i+f+Wa+" +k=1"+ur+p+M+o+e,1,i+f+Wa+" +k=1"+ur+p+M+o+e,1,i+f+Ss+" +k=1"+Si+p+M+o+e,1,i+f+Nu+" +k=1"+Be+p+d+C+o+e,1,i+f+Wa+" +k=1"+ur+p+d+C+o+e,1,i+f+Ss+" +k=1"+Si+p+d+C+o+e,1,i+f+Nu+" +k=1"+Be+p+d+zt+o+e,1,i+f+Wa+" +k=1"+ur+p+d+zt+o+e,1,i+f+Ss+" +k=1"+Si+p+d+zt+o+e,1,i+f+bS+" +k=1"+On+p+M+et+o+e,1,i+f+Nu+" +k=1"+Be+p+M+et+o+e,1,i+f+Wa+" +k=1"+ur+p+M+et+o+e,1,i+f+Ss+" +k=1"+Si+p+M+et+o+e,1,i+f+yp+" +k=1"+bt+p+M+et+o+e,1,c+M+e,1,i+f+bS+" +k=1"+On+p+M+o+e,1,i+f+Nu+" +k=1"+Be+p+M+o+e,1,i+f+Wa+" +k=1"+ur+p+M+o+e,1,i+f+Ss+" +k=1"+Si+p+M+o+e,15,u+Oy+G+r+n+o+e,125,i+" +lat_0=-35.31773627777778 +lon_0=149.0092948305555 +k=1.000086"+R+ug+Y+q+o+e,11,u+Du+N+n+o+e,1,u+lf+N+n+o+e,2,u+wl+G+r+n+o+e,3,i+f+Wa+pt+m+jt+v+o+e,2,i+f+cl+x+m+jt+r+n+o+e,14,u+Ml+G+Y+ae+o+e,17,u+Ga+G+Y+ae+o+e,1,u+wa+G+Y+ae+o+e,1,u+Us+G+Y+ae+o+e,2,u+lu+G+_+jp+o+e,1,Nv+f+rd+nc+jt+r+n+o+e,6,c+r+e,1,i+f+zu+pt+bt+Tu+r+o+e,3,fe+Oa+" +lat_ts=70"+Ta+" +k=1"+Z+p+PS+ny+o+e,31,l+lS+Qa+_l+Zu+Z+p+v+o+e,1,l+lS+Qa+_l+jv+Z+p+v+o+e,1,l+lS+Qa+_l+Za+Z+p+v+o+e,1,l+lS+Qa+_l+oi+Z+p+v+o+e,1,l+lS+Qa+_l+Gu+Z+p+v+o+e,1,l+dl+uS+vl+Zu+Z+p+v+o+e,1,l+dl+uS+vl+jv+Z+p+v+o+e,1,l+dl+uS+vl+Za+Z+p+v+o+e,1,l+dl+uS+vl+oi+Z+p+v+o+e,1,l+dl+uS+vl+Gu+Z+p+v+o+e,1,l+hS+cS+bl+Zu+Z+p+v+o+e,1,l+hS+cS+bl+jv+Z+p+v+o+e,1,l+hS+cS+bl+Za+Z+p+v+o+e,1,l+hS+cS+bl+oi+Z+p+v+o+e,1,l+hS+cS+bl+Gu+Z+p+v+o+e,1,fe+Oa+lg+Gd+Xg+Ae+In+v+o+e,1,fe+Oa+lg+pn+Xg+Ae+In+v+o+e,1,fe+Oa+lg+" +lon_0=-33"+Xg+Ae+In+v+o+e,1,fe+Oa+lg+Gm+Xg+Ae+In+v+o+e,1,fe+Oa+lg+oi+Xg+Ae+In+v+o+e,110,l+Ev+da+pa+" +lon_0=-30"+Ba+hr+r+n+o+e,1,l+An+En+Cn+" +lon_0=-52"+Pa+ql+r+n+o+e,1,l+An+En+Cn+" +lon_0=-12"+la+ql+r+n+o+e,1,l+Ce+Qa+Te+Wc+Ds+Ja+r+n+o+e,1,l+Ce+Qa+Te+jv+ys+Ja+r+n+o+e,1,l+Ce+Qa+Te+" +lon_0=-10"+Pl+Ja+r+n+o+e,1,l+dl+le+ue+" +lon_0=-64"+la+gs+r+n+o+e,1,l+dl+le+ue+jv+ua+gs+r+n+o+e,1,l+dl+le+ue+" +lon_0=-14"+oc+gs+r+n+o+e,1,l+gt+yt+_t+Yf+Pf+ii+r+n+o+e,1,l+gt+yt+_t+" +lon_0=-42"+Lf+ii+r+n+o+e,1,l+gt+yt+_t+" +lon_0=-22"+If+ii+r+n+o+e,1,l+rn+Jd+on+jS+Da+Zl+r+n+o+e,1,l+rn+Jd+on+" +lon_0=-38"+Ua+Zl+r+n+o+e,1,l+rn+Jd+on+" +lon_0=-20"+il+Zl+r+n+o+e,1,l+" +lat_1=67"+Cw+Tw+" +lon_0=-51"+Su+lM+r+n+o+e,1,l+" +lat_1=67"+Cw+Tw+" +lon_0=-34"+aa+lM+r+n+o+e,1,l+Ow+Pw+Lw+" +lon_0=-52"+la+" +y_0=8500000"+r+n+o+e,1,l+Ow+Pw+Lw+" +lon_0=-37"+ua+" +y_0=8500000"+r+n+o+e,1,l+An+En+Cn+" +lon_0=16"+ua+ql+r+n+o+e,1,l+Ce+Qa+Te+As+Su+Ja+r+n+o+e,1,l+dl+le+ue+Mc+Da+gs+r+n+o+e,1,l+dl+le+ue+fS+Ua+gs+r+n+o+e,1,l+gt+yt+_t+" +lon_0=14"+Su+ii+r+n+o+e,1,l+gt+yt+_t+fS+aa+ii+r+n+o+e,1,l+An+En+Cn+" +lon_0=53"+oc+ql+v+o+e,1,l+An+En+Cn+ia+Da+ql+v+o+e,1,l+Ce+Qa+Te+" +lon_0=52"+aa+Ja+v+o+e,1,l+Ce+Qa+Te+" +lon_0=83"+Ia+Ja+v+o+e,1,l+Ce+Qa+Te+kl+Ol+Ja+v+o+e,1,l+Ce+Qa+Te+" +lon_0=145"+La+Ja+v+o+e,1,l+dl+le+ue+" +lon_0=58"+il+gs+v+o+e,1,l+dl+le+ue+" +lon_0=82"+ol+gs+v+o+e,1,l+dl+le+ue+xS+Sf+gs+v+o+e,1,l+dl+le+ue+" +lon_0=130"+Af+gs+v+o+e,1,l+dl+le+ue+kS+Cf+gs+v+o+e,1,l+dl+le+ue+" +lon_0=179"+Of+gs+v+o+e,1,l+gt+yt+_t+By+Ia+ii+v+o+e,1,l+gt+yt+_t+" +lon_0=74"+Ol+ii+v+o+e,1,l+gt+yt+_t+" +lon_0=95"+La+ii+v+o+e,1,l+gt+yt+_t+" +lon_0=116"+ja+ii+v+o+e,1,l+gt+yt+_t+" +lon_0=137"+Na+ii+v+o+e,1,l+gt+yt+_t+" +lon_0=158"+Ba+ii+v+o+e,1,l+gt+yt+_t+" +lon_0=179"+Fa+ii+v+o+e,1,l+gt+yt+_t+" +lon_0=-163"+Ds+ii+r+n+o+e,1,l+gt+yt+_t+dg+ys+ii+r+n+o+e,1,l+rn+Jd+on+Hy+Bs+Zl+r+n+o+e,1,l+rn+Jd+on+dg+Ra+Zl+r+n+o+e,1,l+Ev+da+pa+He+Na+hr+r+n+o+e,1,l+An+En+Cn+Zy+Bs+ql+r+n+o+e,1,l+An+En+Cn+Iv+Ra+ql+r+n+o+e,1,l+Ce+Qa+Te+Ek+Ba+Ja+r+n+o+e,1,l+Ce+Qa+Te+yu+Fa+Ja+r+n+o+e,1,l+Ce+Qa+Te+Wc+Ds+Ja+r+n+o+e,1,l+dl+le+ue+Ek+Bs+gs+r+n+o+e,1,l+dl+le+ue+" +lon_0=-104"+Ra+gs+r+n+o+e,1,l+dl+le+ue+Jf+Pa+gs+r+n+o+e,1,l+gt+yt+_t+" +lon_0=-131"+Pl+ii+r+n+o+e,1,l+gt+yt+_t+Zu+Mf+ii+r+n+o+e,1,l+gt+yt+_t+" +lon_0=-91"+Ef+ii+r+n+o+e,1,l+gt+yt+_t+" +lon_0=-71"+Tf+ii+r+n+o+e,1,l+rn+Jd+on+" +lon_0=-132"+Pa+Zl+r+n+o+e,1,l+rn+Jd+on+" +lon_0=-113"+la+Zl+r+n+o+e,1,l+rn+Jd+on+nd+ua+Zl+r+n+o+e,1,l+rn+Jd+on+Iv+oc+Zl+r+n+o+e,1,l+Ev+da+pa+cl+Fa+hr+v+o+e,1,l+Ev+da+pa+Ta+Ds+hr+v+o+e,1,l+Ev+da+pa+ip+ys+hr+v+o+e,1,l+Ev+da+pa+Gd+ja+hr+v+o+e,1,l+An+En+Cn+" +lon_0=133"+Ua+ql+v+o+e,1,l+An+En+Cn+CS+rc+ql+v+o+e,1,l+An+En+Cn+xf+ic+ql+v+o+e,1,l+Ce+Qa+Te+" +lon_0=176"+ja+Ja+v+o+e,1,l+Ce+Qa+Te+yk+Na+Ja+v+o+e,1,l+dl+le+ue+" +lon_0=-155"+ic+gs+v+o+e,1,l+gt+yt+_t+" +lon_0=-5"+gS+ii+r+n+o+e,3,u+wl+j+cc+W+e,1,u+wl+j+Tc+W+e,6,c+r+n+e,69,i+f+As+x+m+p+M+Vt+o+e,3,c+Ve+Kt+" +towgs84=293.17,726.18,245.36,0,0,0,0"+e,3,u+Lc+r+n+o+e,1,u+Md+r+n+o+e,96,l+cs+fs+ds+Ho+R+Ka+r+o+e,4,c+N+hh+e,1,i+f+Za+cn+R+" +y_0=-3500000"+N+hh+o+e,4,i+f+As+x+Xa+p+M+Vt+o+e,2,c+r+e,4,c+r+e,3,c+r+e,3,u+_d+r+o+e,1,u+Bp+r+o+e,1,u+Oy+r+o+e,1,u+F_+r+o+e,1,u+ak+r+o+e,1,u+z_+r+o+e,1,u+Cg+r+o+e,1,u+ly+r+o+e,1,u+Tg+r+o+e,1,u+U_+r+o+e,1,u+G_+r+o+e,1,u+Cm+r+o+e,1,u+bd+r+o+e,1,u+wd+r+o+e,1,u+xd+r+o+e,1,u+Sd+r+o+e,1,u+Zf+r+o+e,1,u+Wf+r+o+e,1,u+wl+r+o+e,1,u+Ga+r+o+e,1,u+wa+r+o+e,2,dr+Wy+Sa+aS+$d+Z+p+r+o+e,1,l+gt+yt+_t+" +lon_0=-163"+Ds+ii+r+o+e,1,l+gt+yt+_t+dg+ys+ii+r+o+e,1,l+rn+Jd+on+Hy+Bs+Zl+r+o+e,1,l+rn+Jd+on+dg+Ra+Zl+r+o+e,1,i+ul+sl+tm+R+p+r+o+e,1,i+Es+Wd+re+E+p+r+o+e,6,l+" +lat_1=17.5 +lat_2=29.5 +lat_0=12 +lon_0=-102"+On+p+r+n+o+e,3,c+r+n+e,1,u+bd+r+n+o+e,1,u+wd+r+n+o+e,1,u+xd+r+n+o+e,1,u+Sd+r+n+o+e,1,u+Zf+r+n+o+e,1,u+Wf+r+n+o+e,1,l+" +lat_1=17.5 +lat_2=29.5 +lat_0=12 +lon_0=-102"+On+p+r+n+o+e,9,i+f+As+" +k=1"+at+p+d+Xe+o+e,1,i+f+Va+" +k=1"+at+p+d+Xe+o+e,1,i+f+ea+" +k=1"+at+p+d+Xe+o+e,1,i+f+cl+" +k=1"+at+p+d+Xe+o+e,1,i+f+Za+" +k=1"+at+p+d+Xe+o+e,1,i+f+Fp+" +k=1"+at+p+d+Xe+o+e,1,i+f+Wh+" +k=1"+at+p+d+Xe+o+e,4,l+" +lat_1=19.33333333333333 +lat_2=19.7 +lat_0=19.33333333333333 +lon_0=-80.56666666666666 +x_0=899160 +y_0=579120"+r+n+W+e,2,dr+" +lat_1=55"+Qm+tS+xf+Z+p+r+o+e,1,gn+" +lat_0=57"+Eh+Ch+x+nc+si+Fu+ps+r+o+e,1,i+No+wk+x+m+p+r+o+e,1,i+No+xk+x+m+p+r+o+e,1,i+No+Gd+x+m+p+r+o+e,1,i+No+xf+x+m+p+r+o+e,1,i+No+Hu+x+m+p+r+o+e,1,i+No+kk+x+m+p+r+o+e,1,i+No+Sk+x+m+p+r+o+e,1,i+No+zy+x+m+p+r+o+e,1,l+Th+Oh+Av+Mk+xe+p+r+o+e,1,i+Re+Nn+x+mi+p+r+o+e,1,i+Re+Nn+x+mi+p+r+W+e,1,i+Re+jn+x+mi+p+r+o+e,1,i+Re+jn+x+mi+p+r+W+e,1,i+Re+Ll+re+mi+p+r+o+e,1,i+Re+Ll+re+mi+p+r+W+e,1,l+Hr+qr+$t+qa+V+p+r+o+e,1,l+Hr+qr+$t+qa+Zt+p+r+h+e,1,l+Zr+bf+Wr+qa+V+Tl+r+o+e,1,l+Zr+bf+Wr+qa+Zt+Rs+r+h+e,1,dr+iS+qy+f+kf+Z+Km+r+o+e,1,l+gr+xu+X+Gs+Ae+Tt+r+o+e,1,l+gr+xu+X+Gs+Et+nt+r+h+e,1,l+yr+_r+$+Gs+Ae+Tt+r+o+e,1,l+yr+_r+$+Gs+Et+nt+r+h+e,1,l+Ut+vr+mf+lt+Ae+Tt+r+o+e,1,l+Ut+vr+mf+lt+Et+nt+r+h+e,1,l+Vh+zm+br+gf+Ae+Tt+r+o+e,1,l+Vh+zm+br+gf+Et+nt+r+h+e,1,l+wr+xr+yf+Cl+Ae+Tt+r+o+e,1,l+wr+xr+yf+Cl+Et+nt+r+h+e,1,l+kr+Sr+Mr+Il+Ae+Tt+r+o+e,1,l+kr+Sr+Mr+Il+Et+nt+r+h+e,1,l+Qh+Kh+bn+ke+Fo+Uo+r+o+e,1,l+Qh+Kh+bn+ke+Ze+an+r+h+e,1,l+Mi+Ai+X+ke+Fo+Uo+r+o+e,1,l+Mi+Ai+X+ke+Ze+an+r+h+e,1,l+Ut+Ar+L+ke+Fo+Uo+r+o+e,1,l+Ut+Ar+L+ke+Ze+an+r+h+e,1,l+Er+_f+Cr+Mu+Om+Pm+r+o+e,1,l+Er+_f+Cr+Mu+Ic+Rc+r+h+e,1,i+Tn+Bn+vf+R+p+r+o+e,1,i+Tn+Bn+vf+rt+p+r+h+e,1,i+Gt+dn+Bt+R+p+r+o+e,1,i+Gt+dn+Bt+rt+p+r+h+e,1,dr+" +lat_1=24"+pk+" +lat_0=24"+Xf+V+p+r+o+e,1,l+Yh+Tr+Hm+Xh+E+p+r+o+e,1,l+Yh+Tr+Hm+Xh+E+p+r+h+e,1,i+Gt+ep+Bt+R+p+r+o+e,1,i+Gt+ep+Bt+rt+p+r+h+e,1,i+Es+Dn+x+R+p+r+o+e,1,i+Es+Dn+x+rt+p+r+h+e,1,i+Es+Fn+x+pi+p+r+o+e,1,i+Es+Fn+x+ln+p+r+h+e,1,i+z+hu+se+m+p+r+o+e,1,i+z+hu+se+it+p+r+h+e,1,i+z+Un+se+R+p+r+o+e,1,i+z+Un+se+rt+p+r+h+e,1,i+z+Rl+re+vn+p+r+o+e,1,i+z+Rl+re+jc+p+r+h+e,1,i+L+Vn+li+at+p+r+o+e,1,i+L+Vn+li+at+p+r+h+e,1,i+L+Qn+Bt+pi+p+r+o+e,1,i+L+Qn+Bt+Zc+p+r+h+e,1,i+sr+Kn+dt+ye+qu+r+o+e,1,i+sr+Kn+dt+Hc+Xo+r+h+e,1,i+sr+Yn+dt+sa+qu+r+o+e,1,i+sr+Yn+dt+sa+Xo+r+h+e,1,l+Vr+Qr+Po+Ko+bt+st+r+o+e,1,l+Vr+Qr+Po+Ko+bt+Jo+r+h+e,1,l+kt+Kr+jo+Ko+m+p+r+o+e,1,l+kt+Kr+jo+Ko+ot+p+r+h+e,1,l+Yr+Xr+mt+Co+V+p+r+o+e,1,l+Yr+Xr+mt+Co+Zt+p+r+h+e,1,l+Jr+$r+L+yn+V+Tl+r+o+e,1,l+Jr+$r+L+yn+Zt+Rs+r+h+e,1,l+Yt+mr+sr+ku+m+p+r+o+e,1,l+Yt+mr+sr+ku+it+p+r+h+e,1,l+Mo+Ao+tt+gi+bt+st+r+o+e,1,l+Mo+Ao+tt+gi+bt+un+r+h+e,1,l+Ei+Ci+tt+gi+m+Tt+r+o+e,1,l+Ei+Ci+tt+gi+it+nt+r+h+e,1,l+lo+uo+ul+va+xe+p+r+o+e,1,l+lo+uo+ul+va+vi+p+r+h+e,1,l+jd+Nd+Bd+Pe+xe+p+r+o+e,1,l+jd+Nd+Bd+Pe+vi+p+r+h+e,1,i+bk+ry+Gl+m+p+r+o+e,1,i+ht+$g+Gl+pi+p+r+o+e,1,i+te+ty+Gl+at+p+r+o+e,1,i+ut+Ys+x+at+p+r+o+e,1,i+ut+Ys+x+at+p+r+h+e,1,i+te+Xn+dt+sa+p+r+o+e,1,i+te+Xn+dt+sa+p+r+h+e,1,l+Xc+Ed+$+lc+V+p+r+o+e,1,l+Xc+Ed+$+lc+Nc+p+r+h+e,1,l+Oi+Pi+Al+Ya+m+p+r+o+e,1,l+Oi+Pi+Al+Ya+it+p+r+h+e,1,l+Ti+Or+Al+Vo+R+pf+r+o+e,1,l+Ti+Or+Al+Vo+rt+pf+r+h+e,1,l+Cd+ji+Ni+ee+lm+p+r+o+e,1,l+Cd+ji+Ni+ee+Dc+p+r+W+e,1,l+Li+Ii+Ri+gu+ev+p+r+o+e,1,l+Li+Ii+Ri+gu+Bc+p+r+W+e,1,gn+Sh+" +lonc=-86"+Lm+pt+Im+Yp+Fu+Rm+r+o+e,1,l+Fe+Td+Po+ee+$h+p+r+o+e,1,l+Fe+Td+Po+ee+Vd+p+r+W+e,1,l+rf+fo+tl+Eu+vn+ni+r+o+e,1,l+rf+fo+tl+Eu+Dt+Ft+r+h+e,1,l+ho+co+El+Jn+vn+ni+r+o+e,1,l+ho+co+El+Jn+Dt+Ft+r+h+e,1,l+po+mo+cd+nd+vn+ni+r+o+e,1,l+po+mo+cd+nd+Dt+Ft+r+h+e,1,i+xa+Gn+cn+at+p+r+o+e,1,i+xa+Gn+cn+at+p+r+h+e,1,i+dc+e_+rv+m+hm+r+o+e,1,i+xa+We+cn+pi+p+r+o+e,1,i+xa+We+cn+ln+p+r+h+e,1,i+Mn+va+re+m+p+r+o+e,1,i+Mn+Ug+re+qe+p+r+o+e,1,i+pl+Gg+Bt+hk+p+r+o+e,1,l+Zh+Lg+Jc+rl+E+p+r+o+e,1,l+Zh+Lg+Jc+rl+cr+p+r+W+e,1,l+nu+xu+go+pn+m+p+r+o+e,2,i+fn+tr+x+m+ba+r+o+e,1,i+fn+tr+x+ot+ba+r+h+e,1,i+fn+$n+x+R+nv+r+o+e,1,i+fn+$n+x+js+qc+r+h+e,1,i+fn+er+x+vn+tc+r+o+e,1,i+fn+er+x+Dt+Rf+r+h+e,1,i+Lo+nr+dt+at+p+r+o+e,1,i+Lo+nr+dt+at+p+r+h+e,1,i+Xt+Os+x+Ne+p+r+o+e,1,i+Xt+Os+x+Ne+p+r+h+e,1,i+Re+jl+x+m+p+r+o+e,1,i+Re+jl+x+it+p+r+h+e,1,i+Re+zn+Ma+Od+p+r+o+e,1,i+Re+zn+Ma+Od+p+r+h+e,1,i+Re+Hn+Nl+ck+p+r+o+e,1,i+Re+Hn+Nl+Fc+p+r+h+e,1,i+jo+qn+Ct+qe+p+r+o+e,1,i+jo+qn+Ct+Uc+p+r+h+e,1,i+Xt+Os+x+Ne+p+r+o+e,1,i+Xt+Os+x+Ne+p+r+h+e,1,l+Pr+Lr+Jt+np+at+p+r+o+e,1,l+Pr+Lr+Jt+np+at+p+r+h+e,1,i+jo+Zn+Ct+hg+p+r+o+e,1,i+jo+Zn+Ct+Gc+p+r+h+e,1,l+Bi+Di+Jh+Jf+ey+p+r+o+e,1,l+Bi+Di+Jh+Jf+A+p+r+h+e,1,l+ie+Fi+fl+yi+E+p+r+o+e,1,l+ie+Fi+fl+yi+cr+p+r+W+e,1,l+Ui+Gi+Ee+yi+E+p+r+o+e,1,l+Ui+Gi+Ee+yi+cr+p+r+W+e,1,l+Dd+yo+we+ci+E+p+r+o+e,1,l+Dd+yo+we+ci+E+p+r+h+e,1,l+_o+vo+Tn+ci+E+p+r+o+e,1,l+_o+vo+Tn+ci+E+p+r+h+e,1,l+Ir+zi+qm+Co+E+p+r+o+e,1,l+Ir+zi+qm+Co+E+p+r+h+e,1,l+Hi+qi+Rr+Co+E+p+r+o+e,1,l+Hi+qi+Rr+Co+E+p+r+h+e,1,l+nu+Sa+Yo+lt+V+p+r+o+e,1,l+nu+Sa+Yo+lt+ac+p+r+W+e,1,l+Gp+wn+ut+lt+On+p+r+o+e,1,l+Gp+wn+ut+lt+Wu+p+r+W+e,1,l+zp+xn+z+lt+bt+p+r+o+e,1,l+zp+xn+z+lt+Vu+p+r+W+e,1,l+$c+Zi+Jt+_i+E+p+r+o+e,1,l+$c+Zi+Jt+_i+E+p+r+h+e,1,l+jr+Nr+X+_i+E+p+r+o+e,1,l+jr+Nr+X+_i+E+p+r+h+e,1,l+cs+fs+ds+Ho+R+Ka+r+o+e,1,i+ti+Vo+sc+ye+p+r+o+e,1,i+ti+Vo+sc+iu+p+r+h+e,1,l+Wi+Pd+Br+dn+Ld+p+r+o+e,1,l+Wi+Pd+Br+dn+Ld+p+r+W+e,1,l+bo+wo+ht+pn+E+p+r+o+e,1,l+bo+wo+ht+pn+E+p+r+h+e,1,l+Fd+xo+ei+Pt+E+p+r+o+e,1,l+Fd+xo+ei+Pt+E+p+r+h+e,1,l+Vi+tf+$t+Vc+E+p+r+o+e,1,l+Vi+tf+$t+Vc+E+p+r+h+e,1,l+Xi+Ji+kn+Pt+pi+Io+r+o+e,1,l+Xi+Ji+kn+Pt+ln+Io+r+h+e,1,dr+Ud+Ng+Xd+pn+bt+ba+r+o+e,1,l+Ud+Ng+Xd+pn+bt+Tu+r+o+e,1,l+Qi+ef+Zm+Au+R+st+r+o+e,1,l+Qi+ef+Zm+Au+rt+un+r+h+e,1,l+Ki+Yi+Dr+yn+E+In+r+o+e,1,l+Ki+Yi+Dr+yn+E+Ls+r+h+e,1,l+Je+$e+Sn+yn+at+Tu+r+o+e,1,l+Je+$e+Sn+yn+at+ad+r+h+e,1,l+$i+to+Fr+yu+E+tc+r+o+e,1,l+$i+to+Fr+yu+E+sd+r+h+e,1,i+Lo+ec+Bl+m+p+r+o+e,1,i+Lo+ec+Bl+ot+p+r+h+e,1,l+" +lat_1=37"+Ak+es+ms+Z+p+r+o+e,1,l+Id+eo+$+Qo+Be+In+r+o+e,1,l+Id+eo+$+Qo+Is+Ls+r+h+e,1,l+Yt+Ur+tt+Qo+Be+st+r+o+e,1,l+Yt+Ur+tt+Qo+Is+un+r+h+e,1,l+ie+Rd+fl+Wn+m+p+r+o+e,1,l+ie+Rd+fl+Wn+it+p+r+h+e,1,l+no+ro+Gr+lt+m+p+r+o+e,1,l+no+ro+Gr+lt+it+p+r+h+e,1,l+of+jg+wf+ms+E+p+r+o+e,1,l+of+jg+wf+ms+E+p+r+h+e,1,l+ko+So+Vm+dn+E+p+r+o+e,1,l+ko+So+Vm+dn+E+p+r+h+e,2,l+cu+nf+ht+He+E+p+r+h+e,1,l+io+oo+zr+He+E+p+r+o+e,1,l+io+oo+zr+He+E+p+r+h+e,1,l+so+ao+Hp+He+E+p+r+o+e,1,l+so+ao+Hp+He+E+p+r+h+e,1,i+f+He+pt+dk+$y+r+o+e,1,i+Ke+rr+Ct+R+p+r+o+e,1,i+Ke+rr+Ct+js+p+r+h+e,1,i+Ke+ir+Ct+V+ni+r+o+e,1,i+Ke+ir+Ct+Zt+Ft+r+h+e,1,i+Ke+or+Ct+vn+ni+r+o+e,1,i+Ke+or+Ct+Dt+Ft+r+h+e,1,i+Ke+Dl+Ct+E+p+r+o+e,1,i+Ke+Dl+Ct+E+p+r+h+e,1,l+zl+en+mt+oe+m+In+r+o+e,1,l+kt+tn+Ue+oe+m+st+r+o+e,1,l+Hl+nn+L+oe+m+Io+r+o+e,1,l+wv+ud+hl+Ys+Z+p+r+n+o+e,1,dr+wv+ud+hl+Ys+Z+p+r+n+o+e,1,dr+wv+ud+hl+Ys+Z+p+r+n+o+e,1,l+zl+en+mt+oe+ot+jf+r+h+e,1,l+kt+tn+Ue+oe+ot+Jo+r+h+e,1,l+Hl+nn+L+oe+ot+Io+r+h+e,1,i+bh+Xy+dt+m+p+r+o+e,1,i+wh+Ku+dt+m+p+r+o+e,1,i+hs+Hu+bu+m+p+r+o+e,1,i+xh+Jy+bu+m+p+r+o+e,1,i+kh+Yu+" +k=1"+m+p+r+o+e,1,i+hs+Hu+bu+ot+p+r+h+e,1,u+z_+r+o+e,1,u+Cg+r+o+e,1,u+F_+G+r+o+e,1,i+" +lat_0=13.5 +lon_0=144.75 +k=1"+ye+Ka+r+o+e,9,i+ww+" +lon_0=46.5 +k=0.9994"+vn+p+Me+vs+fi+o+e,22,c+r+e,1,i+Zp+rM+x+Z+p+r+o+e,1,i+Zp+$f+x+Z+p+r+o+e,1,i+es+kp+x+Z+p+r+o+e,1,i+Zp+tv+x+Z+p+r+o+e,1,i+es+Sp+x+Z+p+r+o+e,1,i+es+gy+x+Z+p+r+o+e,1,i+es+Mp+x+Z+p+r+o+e,1,i+es+iM+x+Z+p+r+o+e,1,i+es+Ap+x+Z+p+r+o+e,1,i+jo+Ep+x+Z+p+r+o+e,1,i+hl+dS+x+Z+p+r+o+e,1,i+hl+pS+x+Z+p+r+o+e,1,i+hl+mS+x+Z+p+r+o+e,1,i+el+" +lon_0=142"+x+Z+p+r+o+e,1,i+el+am+x+Z+p+r+o+e,1,i+el+" +lon_0=124"+x+Z+p+r+o+e,1,i+el+$f+x+Z+p+r+o+e,1,i+" +lat_0=20"+gy+x+Z+p+r+o+e,1,i+el+kS+x+Z+p+r+o+e,1,u+hf+r+o+e,1,u+Kf+r+o+e,1,u+vp+r+o+e,1,u+kd+r+o+e,1,u+Dp+r+o+e,11,i+f+Rv+pt+m+jt+N+n+o+e,3,c+r+n+e,1,u+Yl+r+n+o+e,1,u+Bu+r+n+o+e,1,u+Vf+r+n+o+e,11,i+f+" +lon_0=105.625 +k=1.000024"+wu+hm+N+n+o+e,1,i+f+" +lon_0=105.625 +k=1.00002514"+wu+hm+r+n+o+e,1,i+f+" +lon_0=96.875 +k=1"+wu+" +y_0=1400000"+N+n+o+e,1,i+f+" +lon_0=96.875 +k=0.99999387"+wu+hr+r+n+o+e,13,u+Tm+G+r+n+o+e,1,u+Ad+G+r+n+o+e,1,u+_d+G+r+n+o+e,45,c+r+e,1,i+zd+$u+wy+op+p+r+o+e,1,i+zd+$u+wy+Wl+p+r+W+e,1,i+zd+$u+wy+op+p+r+o+e,1,i+zd+$u+wy+Wl+p+r+W+e,1,i+Yo+iy+" +k=1.0002"+tp+p+r+o+e,1,i+Yo+iy+" +k=1.0002"+Js+p+r+W+e,1,i+Yo+iy+" +k=1.0002"+tp+p+r+o+e,1,i+Yo+iy+" +k=1.0002"+Js+p+r+W+e,1,l+Ph+Lh+oy+sf+tp+" +y_0=130000"+r+o+e,1,l+Ph+Lh+oy+sf+Js+WS+r+W+e,1,l+Ph+Lh+oy+sf+tp+" +y_0=130000"+r+o+e,1,l+Ph+Lh+oy+sf+Js+WS+r+W+e,1,l+Fe+ut+sy+Ck+" +x_0=120000 +y_0=60000"+r+o+e,1,l+Fe+ut+sy+Ck+VS+gM+r+W+e,1,l+Fe+ut+sy+Ck+" +x_0=120000 +y_0=60000"+r+o+e,1,l+Fe+ut+sy+Ck+VS+gM+r+W+e,1,i+Lo+Le+NS+op+p+r+o+e,1,i+Lo+Le+NS+Wl+p+r+W+e,1,i+Lo+Le+NS+op+p+r+o+e,1,i+Lo+Le+NS+Wl+p+r+W+e,1,l+Ih+Ee+lt+n_+Ne+" +y_0=30000"+r+o+e,1,l+Ih+Ee+lt+n_+ld+yM+r+W+e,1,l+Ih+Ee+lt+n_+Ne+" +y_0=30000"+r+o+e,1,l+Ih+Ee+lt+n_+ld+yM+r+W+e,1,gn+Rh+BS+DS+" +k=1"+ov+yS+Fu+FS+r+o+e,1,gn+Rh+BS+DS+" +k=1"+vS+QS+Fu+FS+r+W+e,1,gn+Rh+BS+DS+" +k=1"+ov+yS+Fu+FS+r+o+e,1,gn+Rh+BS+DS+" +k=1"+vS+QS+Fu+FS+r+W+e,1,i+te+Le+Tk+wu+p+r+o+e,1,i+te+Le+Tk+$s+p+r+W+e,1,i+te+Le+Tk+wu+p+r+o+e,1,i+te+Le+Tk+$s+p+r+W+e,1,i+zd+Ok+US+tp+p+r+o+e,1,i+zd+Ok+US+Js+p+r+W+e,1,i+zd+Ok+US+tp+p+r+o+e,1,i+zd+Ok+US+Js+p+r+W+e,1,i+sv+th+mc+wu+p+r+o+e,1,i+sv+th+mc+$s+p+r+W+e,1,i+sv+th+mc+wu+p+r+o+e,1,i+sv+th+mc+$s+p+r+W+e,1,i+Yo+Le+pg+wu+p+r+o+e,1,i+Yo+Le+pg+$s+p+r+W+e,1,i+Yo+Le+pg+wu+p+r+o+e,1,i+Yo+Le+pg+$s+p+r+W+e,1,i+tl+eh+GS+" +x_0=10000"+p+r+o+e,1,i+tl+eh+GS+MM+p+r+W+e,1,i+tl+eh+GS+" +x_0=10000"+p+r+o+e,1,i+tl+eh+GS+MM+p+r+W+e,1,i+tl+Cl+zS+op+p+r+o+e,1,i+tl+Cl+zS+Wl+p+r+W+e,1,i+tl+Cl+zS+op+p+r+o+e,1,i+tl+Cl+zS+Wl+p+r+W+e,1,i+av+pc+" +k=1.0001"+tp+p+r+o+e,1,i+av+pc+" +k=1.0001"+Js+p+r+W+e,1,i+av+pc+" +k=1.0001"+tp+p+r+o+e,1,i+av+pc+" +k=1.0001"+Js+p+r+W+e,1,gn+cm+r_+" +alpha=5 +k=1 +x_0=-300000 +y_0=-4600000"+Fu+" +gamma=5"+r+o+e,1,gn+cm+r_+" +alpha=5 +k=1"+KS+Kk+Fu+" +gamma=5"+r+W+e,1,gn+cm+r_+" +alpha=5 +k=1 +x_0=-300000 +y_0=-4600000"+Fu+" +gamma=5"+r+o+e,1,gn+cm+r_+" +alpha=5 +k=1"+KS+Kk+Fu+" +gamma=5"+r+W+e,1,i+lv+nh+Vy+" +x_0=60000"+p+r+o+e,1,i+lv+nh+Vy+_M+p+r+W+e,1,i+lv+nh+Vy+" +x_0=60000"+p+r+o+e,1,i+lv+nh+Vy+_M+p+r+W+e,1,i+jh+al+Pk+HS+p+r+o+e,1,i+jh+al+Pk+vM+p+r+W+e,1,i+jh+al+Pk+HS+p+r+o+e,1,i+jh+al+Pk+vM+p+r+W+e,1,l+cu+Lk+ay+i_+ye+vy+r+o+e,1,l+cu+Lk+ay+i_+ou+Qg+r+W+e,1,l+cu+Lk+ay+i_+ye+vy+r+o+e,1,l+cu+Lk+ay+i_+ou+Qg+r+W+e,1,i+Nh+rh+qS+wu+p+r+o+e,1,i+Nh+rh+qS+$s+p+r+W+e,1,i+Nh+rh+qS+wu+p+r+o+e,1,i+Nh+rh+qS+$s+p+r+W+e,1,i+Bh+o_+Ik+Z+p+r+o+e,1,i+Bh+o_+Ik+Z+p+r+W+e,1,i+Bh+o_+Ik+Z+p+r+o+e,1,i+Bh+o_+Ik+Z+p+r+W+e,4,l+nu+Sa+Yo+lt+V+p+r+o+e,1,l+nu+Sa+Yo+lt+ac+p+r+W+e,2,i+f+Sv+" +k=1"+m+p+r+n+o+e,5,i+f+Wa+" +k=0.9985000000000001"+ov+p+r+n+o+e,1,i+f+Wa+" +k=1"+cM+p+r+n+o+e,3,l+cu+nf+ht+He+E+p+r+o+e,1,l+nu+xu+go+pn+ot+p+r+h+e,1,c+Me+vs+" +towgs84=-24,-203,268,0,0,0,0"+e,1,c+Me+vs+" +towgs84=-183,-15,273,0,0,0,0"+e,1,c+_+" +towgs84=-235,-110,393,0,0,0,0"+e,1,l+Gp+wn+ut+lt+On+p+r+o+e,1,l+Gp+wn+ut+lt+Wu+p+r+W+e,1,l+zp+xn+z+lt+bt+p+r+o+e,1,l+zp+xn+z+lt+Vu+p+r+W+e,5,c+Me+vs+Np+e,2,c+Me+vs+" +towgs84=-63,176,185,0,0,0,0"+e,21,u+lf+Me+vs+Np+o+e,7,l+Qy+Rk+es+s_+V+p+r+n+o+e,1,l+Qy+Rk+es+s_+Zt+p+r+n+h+e,1,l+Qy+Rk+es+s_+V+p+r+o+e,1,l+Qy+Rk+es+s_+Zt+p+r+h+e,6,ya+Oa+ta+Z+p+N+n+o+e,1,ya+F+ta+Z+p+N+n+o+e,1,"+proj=cea"+ta+" +lat_ts=30"+Z+p+N+n+o+e,29,l+" +lat_1=39 +lat_2=43"+Al+Sv+Z+p+r+n+o+e,21,c+r+e,1,i+bp+wp+tM+Bv+Zk+r+o+e,6,c+r+e,1,i+bp+wp+tM+Bv+Zk+r+o+e,14,u+Du+Me+vs+lr+o+e,1,u+lu+Me+vs+lr+o+e,1,u+Kl+Me+vs+lr+o+e,28,c+r+e,2,c+r+e,2,c+r+e,2,c+r+e,16,l+" +lat_1=43.2 +lat_0=43.2 +lon_0=-95.25 +k_0=1.000052 +x_0=3505207.010414021 +y_0=2926085.852171705"+r+h+e,1,l+" +lat_1=43.16666666666666 +lat_0=43.16666666666666 +lon_0=-92.75 +k_0=1.000043 +x_0=3810007.62001524 +y_0=2987045.974091948"+r+h+e,1,i+af+" +lon_0=-91.2 +k=1.000035 +x_0=4114808.229616459 +y_0=2529845.05969012"+r+h+e,1,l+" +lat_1=42.53333333333333 +lat_0=42.53333333333333 +lon_0=-94.83333333333333 +k_0=1.000045 +x_0=4419608.839217679 +y_0=2621285.242570485"+r+h+e,1,l+" +lat_1=42.65 +lat_0=42.65 +lon_0=-92.25 +k_0=1.000032 +x_0=4724409.448818898 +y_0=2712725.425450851"+r+h+e,1,i+af+" +lon_0=-95.73333333333333 +k=1.000039 +x_0=5029210.058420117 +y_0=2011684.023368047"+r+h+e,1,i+af+" +lon_0=-94.63333333333334"+Vy+" +x_0=5334010.668021336 +y_0=2072644.145288291"+r+h+e,1,i+af+" +lon_0=-93.71666666666667 +k=1.000033 +x_0=5638811.277622555 +y_0=2133604.267208535"+r+h+e,1,i+af+" +lon_0=-92.81666666666666"+Hd+" +x_0=5943611.887223775 +y_0=2194564.389128779"+r+h+e,1,l+" +lat_1=41.83333333333334 +lat_0=41.83333333333334 +lon_0=-91.66666666666667 +k_0=1.00002 +x_0=6248412.496824994 +y_0=2438404.876809754"+r+h+e,1,i+af+" +lon_0=-90.53333333333333"+Hd+" +x_0=6553213.106426213 +y_0=2316484.632969266"+r+h+e,1,l+" +lat_1=40.91666666666666 +lat_0=40.91666666666666 +lon_0=-93.75 +k_0=1.000037 +x_0=6858013.716027432"+Yk+r+h+e,1,i+af+pp+sp+" +x_0=7162814.325628651 +y_0=1950723.901447803"+r+h+e,1,i+af+" +lon_0=-91.25 +k=1.000018 +x_0=7467614.93522987"+Yk+r+h+e,3,c+r+e,1,u+Du+G+r+o+e,1,u+lu+G+r+o+e,1,u+Kl+G+r+o+e,1,u+lf+G+r+o+e,1,u+Kg+G+r+o+e,1,u+Yg+G+r+o+e,1,u+Ry+G+r+o+e,1,u+V_+G+r+o+e,3,c+r+e,2,c+r+e,23,i+mg+a_+wy+Ne+p+r+o+e,1,i+" +lat_0=48"+a_+" +k=1.00019"+ye+p+r+o+e,1,l+jk+mg+Zu+" +k_0=1.000145"+Ne+Ka+r+o+e,1,l+jk+mg+" +lon_0=-108.5"+sf+R+" +y_0=150000"+r+o+e,1,l+Dh+Fh+ke+sf+R+ni+r+o+e,1,l+Dh+Fh+ke+" +k_0=1.00009"+ye+vy+r+o+e,1,i+cm+" +lon_0=-107.75 +k=1.000148"+R+p+r+o+e,1,l+fM+" +lat_0=46.25 +lon_0=-111.25 +k_0=1.000185"+ye+ni+r+o+e,1,l+Iw+Rw+Hv+" +k_0=1.0001515"+R+vy+r+o+e,1,i+jw+qv+" +k=1.00024"+ye+p+r+o+e,1,i+mg+a_+wy+ld+p+r+W+e,1,i+" +lat_0=48"+a_+" +k=1.00019"+ou+p+r+W+e,1,l+jk+mg+Zu+" +k_0=1.000145"+ld+" +y_0=199999.9999992"+r+W+e,1,l+jk+mg+" +lon_0=-108.5"+sf+Qd+" +y_0=150000.00001464"+r+W+e,1,l+Dh+Fh+ke+sf+Qd+Xk+r+W+e,1,l+Dh+Fh+ke+" +k_0=1.00009"+ou+" +y_0=49999.99971024"+r+W+e,1,i+cm+" +lon_0=-107.75 +k=1.000148"+Qd+p+r+W+e,1,l+fM+" +lat_0=46.25 +lon_0=-111.25 +k_0=1.000185"+ou+Xk+r+W+e,1,l+Iw+Rw+Hv+" +k_0=1.0001515"+Qd+Qg+r+W+e,1,i+jw+qv+" +k=1.00024"+iu+p+r+h+e,3,i+fm+" +lon_0=-122.45 +k=1.000007 +x_0=48000 +y_0=24000"+r+o+e,1,i+fm+" +lon_0=-122.45 +k=1.000007 +x_0=48000 +y_0=24000"+r+h+e,1,c+r+e,3,c+N+e,3,c+N+e,3,i+Uh+Gh+" +k=1"+vg+" +y_0=126867.909"+id+od+" +towgs84=-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1"+o+e,115,i+dm+l_+gc+D+H+r+o+e,1,i+dm+l_+gc+D+H+r+h+e,1,i+gg+up+yc+D+H+r+o+e,1,i+gg+up+yc+D+H+r+h+e,1,i+" +lat_0=39"+ih+_c+D+H+r+o+e,1,i+" +lat_0=39"+ih+_c+D+H+r+h+e,1,i+" +lat_0=40.45"+pm+Nk+D+H+r+o+e,1,i+" +lat_0=40.45"+pm+Nk+D+H+r+h+e,1,i+" +lat_0=40.05"+Zv+qd+D+H+r+o+e,1,i+" +lat_0=40.05"+Zv+qd+D+H+r+h+e,1,i+Bk+mm+Zd+D+H+r+o+e,1,i+Bk+mm+Zd+D+H+r+h+e,1,i+" +lat_0=39"+uv+ZS+D+H+r+o+e,1,i+" +lat_0=39"+uv+ZS+D+H+r+h+e,1,i+" +lat_0=40.4"+Wv+_c+D+H+r+o+e,1,i+" +lat_0=40.4"+Wv+_c+D+H+r+h+e,1,i+dm+Vv+yg+D+H+r+o+e,1,i+dm+Vv+yg+D+H+r+h+e,1,i+hv+Qv+" +k=1.000021"+D+H+r+o+e,1,i+hv+Qv+" +k=1.000021"+D+H+r+h+e,1,i+cv+Kv+" +k=1.000024"+D+H+r+o+e,1,i+cv+Kv+" +k=1.000024"+D+H+r+h+e,1,i+" +lat_0=40.15"+Yv+" +k=1.000032"+D+H+r+o+e,1,i+" +lat_0=40.15"+Yv+" +k=1.000032"+D+H+r+h+e,1,i+" +lat_0=38.1"+mm+_g+D+H+r+o+e,1,i+" +lat_0=38.1"+mm+_g+D+H+r+h+e,1,i+" +lat_0=38.45"+oh+" +k=1.000018"+D+H+r+o+e,1,i+" +lat_0=38.45"+oh+" +k=1.000018"+D+H+r+h+e,1,i+" +lat_0=38.65"+Xv+Nk+D+H+r+o+e,1,i+" +lat_0=38.65"+Xv+Nk+D+H+r+h+e,1,i+" +lat_0=39.1"+Jv+Zd+D+H+r+o+e,1,i+" +lat_0=39.1"+Jv+Zd+D+H+r+h+e,1,i+fv+l_+Zd+D+H+r+o+e,1,i+fv+l_+Zd+D+H+r+h+e,1,i+" +lat_0=38.2"+u_+sp+D+H+r+o+e,1,i+" +lat_0=38.2"+u_+sp+D+H+r+h+e,1,i+dv+ih+" +k=1.000033"+D+H+r+o+e,1,i+dv+ih+" +k=1.000033"+D+H+r+h+e,1,i+pv+up+qd+D+H+r+o+e,1,i+pv+up+qd+D+H+r+h+e,1,i+" +lat_0=39.95"+pm+_g+D+H+r+o+e,1,i+" +lat_0=39.95"+pm+_g+D+H+r+h+e,1,i+gg+uv+yc+D+H+r+o+e,1,i+gg+uv+yc+D+H+r+h+e,1,i+hv+$v+Dk+D+H+r+o+e,1,i+hv+$v+Dk+D+H+r+h+e,1,i+mv+" +lon_0=-85.7"+gc+D+H+r+o+e,1,i+mv+" +lon_0=-85.7"+gc+D+H+r+h+e,1,i+" +lat_0=39.9"+Vc+gc+D+H+r+o+e,1,i+" +lat_0=39.9"+Vc+gc+D+H+r+h+e,1,i+" +lat_0=39.65"+gv+Zd+D+H+r+o+e,1,i+" +lat_0=39.65"+gv+Zd+D+H+r+h+e,1,i+" +lat_0=37.95"+Hs+Hd+D+H+r+o+e,1,i+" +lat_0=37.95"+Hs+Hd+D+H+r+h+e,1,i+" +lat_0=39.75"+h_+pg+D+H+r+o+e,1,i+" +lat_0=39.75"+h_+pg+D+H+r+h+e,1,i+mv+Hs+yc+D+H+r+o+e,1,i+mv+Hs+yc+D+H+r+h+e,1,i+dv+iv+gc+D+H+r+o+e,1,i+dv+iv+gc+D+H+r+h+e,1,i+" +lat_0=38.7 +lon_0=-85.95"+Fk+D+H+r+o+e,1,i+" +lat_0=38.7 +lon_0=-85.95"+Fk+D+H+r+h+e,1,i+Uk+oh+Hd+D+H+r+o+e,1,i+Uk+oh+Hd+D+H+r+h+e,1,i+" +lat_0=40.3"+by+qd+D+H+r+o+e,1,i+" +lat_0=40.3"+by+qd+D+H+r+h+e,1,i+" +lat_0=38.55"+tb+yg+D+H+r+o+e,1,i+" +lat_0=38.55"+tb+yg+D+H+r+h+e,1,i+" +lat_0=38.8"+gv+_g+D+H+r+o+e,1,i+" +lat_0=38.8"+gv+_g+D+H+r+h+e,1,i+Gk+Hs+yc+D+H+r+o+e,1,i+Gk+Hs+yc+D+H+r+h+e,1,i+" +lat_0=38.4"+c_+mc+D+H+r+o+e,1,i+" +lat_0=38.4"+c_+mc+D+H+r+h+e,1,i+fv+h_+" +k=1.000037"+D+H+r+o+e,1,i+fv+h_+" +k=1.000037"+D+H+r+h+e,1,i+Uk+eb+_c+D+H+r+o+e,1,i+Uk+eb+_c+D+H+r+h+e,1,i+gg+" +lon_0=-86.75"+Hd+D+H+r+o+e,1,i+gg+" +lon_0=-86.75"+Hd+D+H+r+h+e,1,i+" +lat_0=38.95"+mm+yg+D+H+r+o+e,1,i+" +lat_0=38.95"+mm+yg+D+H+r+h+e,1,i+" +lat_0=39.45"+u_+yc+D+H+r+o+e,1,i+" +lat_0=39.45"+u_+yc+D+H+r+h+e,1,i+cv+sh+_c+D+H+r+o+e,1,i+cv+sh+_c+D+H+r+h+e,1,i+Bk+nb+Fk+D+H+r+o+e,1,i+Bk+nb+Fk+D+H+r+h+e,1,i+zk+" +lon_0=-86.7"+sp+D+H+r+o+e,1,i+zk+" +lon_0=-86.7"+sp+D+H+r+h+e,1,i+" +lat_0=37.85"+pm+mc+D+H+r+o+e,1,i+" +lat_0=37.85"+pm+mc+D+H+r+h+e,1,i+fm+" +lon_0=-87.95"+Dk+D+H+r+o+e,1,i+fm+" +lon_0=-87.95"+Dk+D+H+r+h+e,1,i+" +lat_0=39.7"+up+" +k=1.000044"+D+H+r+o+e,1,i+" +lat_0=39.7"+up+" +k=1.000044"+D+H+r+h+e,1,i+Hk+" +lon_0=-85.3"+qd+D+H+r+o+e,1,i+Hk+" +lon_0=-85.3"+qd+D+H+r+h+e,1,i+Gk+rb+ZS+D+H+r+o+e,1,i+Gk+rb+ZS+D+H+r+h+e,1,i+fm+" +lon_0=-87.05 +k=1.000014"+D+H+r+o+e,1,i+fm+" +lon_0=-87.05 +k=1.000014"+D+H+r+h+e,1,i+Po+by+" +k=1.000041"+D+H+r+o+e,1,i+Po+by+" +k=1.000041"+D+H+r+h+e,1,i+Hk+Wd+" +k=1.000017"+D+H+r+o+e,1,i+Hk+Wd+" +k=1.000017"+D+H+r+h+e,1,i+" +lat_0=40.2"+sh+_c+D+H+r+o+e,1,i+" +lat_0=40.2"+sh+_c+D+H+r+h+e,1,i+zk+f_+mc+D+H+r+o+e,1,i+zk+f_+mc+D+H+r+h+e,1,i+pv+c_+sp+D+H+r+o+e,1,i+pv+c_+sp+D+H+r+h+e,1,i+dm+" +lon_0=-85.25"+gc+D+H+r+o+e,1,i+dm+" +lon_0=-85.25"+gc+D+H+r+h+e,3,c+r+n+e,1,u+Kl+r+n+o+e,1,u+lf+r+n+o+e,1,u+Kg+r+n+o+e,152,i+Nw+He+" +k=1.0000365285 +x_0=147218.6942 +y_0=0.0037"+r+o+e,1,i+Bw+ib+" +k=1.0000495683 +x_0=172821.9461 +y_0=0.0017"+r+o+e,1,i+Dw+ob+" +k=1.0000486665 +x_0=93150 +y_0=0.0029"+r+o+e,1,l+Fw+Uw+sb+" +k_0=1.0000331195 +x_0=228600.4575 +y_0=148551.4837"+r+o+e,1,i+cd+" +lon_0=-88"+sp+" +x_0=31600 +y_0=4600"+r+o+e,1,i+Gw+ab+" +k=1.0000382778 +x_0=175260.3502 +y_0=0.0048"+r+o+e,1,l+zw+Hw+lb+" +k_0=1.0000383841 +x_0=64008.1276 +y_0=59445.9043"+r+o+e,1,i+qw+" +lon_0=-88.5 +k=1.0000286569 +x_0=244754.8893 +y_0=0.0049"+r+o+e,1,l+Zw+Ww+ub+" +k_0=1.0000391127 +x_0=60045.72 +y_0=44091.4346"+r+o+e,1,i+" +lat_0=43.6"+hb+" +k=1.0000463003 +x_0=199949.1989 +y_0=0.0086"+r+o+e,1,l+Vw+Qw+cb+" +k_0=1.00003498 +x_0=169164.3381 +y_0=111569.6134"+r+o+e,1,l+bM+wM+Kw+" +k_0=1.0000349151 +x_0=113690.6274 +y_0=53703.1201"+r+o+e,1,l+YS+XS+fb+" +k_0=1.0000384786 +x_0=247193.2944 +y_0=146591.9896"+r+o+e,1,i+Yw+db+" +k=1.0000346418 +x_0=263347.7263 +y_0=0.0076"+r+o+e,1,i+" +lat_0=44.4"+pb+" +k=1.0000187521 +x_0=158801.1176 +y_0=0.0023"+r+o+e,1,i+Xw+pp+" +k=1.0000385418 +x_0=59131.3183 +y_0=0.0041"+r+o+e,1,i+Jw+mb+" +k=1.0000410324 +x_0=51816.104 +y_0=0.003"+r+o+e,1,l+$w+tx+gb+" +k_0=1.000035079 +x_0=120091.4402 +y_0=91687.92389999999"+r+o+e,1,i+ex+yb+" +k=1.0000552095 +x_0=133502.6683 +y_0=0.0063"+r+o+e,1,i+nx+_b+" +k=1.0000673004 +x_0=275844.5533 +y_0=0.0157"+r+o+e,1,i+rx+" +lon_0=-90.8 +k=1.0000349452 +x_0=242316.4841 +y_0=0.01"+r+o+e,1,l+ix+ox+vb+" +k_0=1.0000390487 +x_0=170078.7403 +y_0=45830.2947"+r+o+e,1,l+sx+ax+ah+" +k_0=1.0000344057 +x_0=150876.3018 +y_0=79170.7795"+r+o+e,1,i+lx+bb+" +k=1.0000394961 +x_0=113081.0261 +y_0=0.0045"+r+o+e,1,i+ux+wb+" +k=1.0000677153 +x_0=220980.4419 +y_0=0.008500000000000001"+r+o+e,1,i+hx+xb+" +k=1.0000353 +x_0=27000 +y_0=25000"+r+o+e,1,i+cx+kb+" +k=1.0000260649 +x_0=185928.3728 +y_0=0.0009"+r+o+e,1,i+fx+f_+" +k=1.0000233704 +x_0=79857.7614 +y_0=0.0012"+r+o+e,1,i+dx+Sb+" +k=1.0000319985 +x_0=130454.6598 +y_0=0.0033"+r+o+e,1,l+px+mx+Mb+" +k_0=1.0000627024 +x_0=198425.197 +y_0=105279.7829"+r+o+e,1,i+gx+Ab+" +k=1.0000599003 +x_0=116129.0323 +y_0=0.0058"+r+o+e,1,l+yx+_x+" +lon_0=-89.77 +k_0=1.000053289 +x_0=74676.1493 +y_0=55049.2669"+r+o+e,1,i+vx+Eb+" +k=1.0000234982 +x_0=238658.8794 +y_0=0.0032"+r+o+e,1,i+bx+Cb+" +k=1.0000362499 +x_0=105461.0121 +y_0=0.0029"+r+o+e,1,l+wx+xx+Tb+" +k_0=1.0000434122 +x_0=204521.209 +y_0=121923.9861"+r+o+e,1,i+kx+Ob+" +k=1.0000236869 +x_0=182880.3676 +y_0=0.0033"+r+o+e,1,l+Sx+Mx+Pb+" +k_0=1.0000686968 +x_0=70104.1401 +y_0=57588.0346"+r+o+e,1,l+Ax+Ex+Lb+" +k_0=1.0000362977 +x_0=167640.3354 +y_0=86033.0876"+r+o+e,1,i+Cx+lh+" +k=1.0000433849 +x_0=141732.2823 +y_0=0.0059"+r+o+e,1,l+Tx+Ox+" +lon_0=-89.5 +k_0=1.000039936 +x_0=56388.1128 +y_0=50022.1874"+r+o+e,1,i+Px+Ib+" +k=1.0000649554 +x_0=227990.8546 +y_0=0.0109"+r+o+e,1,l+JS+$S+Rb+" +k_0=1.0000375653 +x_0=202387.6048 +y_0=134255.4253"+r+o+e,1,i+Lx+jb+" +k=1.0000337311 +x_0=146304.2926 +y_0=0.0068"+r+o+e,1,i+Ix+Nb+" +k=1.0000495976 +x_0=250546.1013 +y_0=0.0234"+r+o+e,1,i+Rx+Bb+" +k=1.0000373868 +x_0=185623.5716 +y_0=0.0051"+r+o+e,1,l+jx+Nx+Db+" +k_0=1.0000573461 +x_0=216713.2336 +y_0=120734.1631"+r+o+e,1,i+zh+Fb+" +k=1.000032144 +x_0=262433.3253 +y_0=0.009599999999999999"+r+o+e,1,i+zh+lh+" +k=1.0000381803 +x_0=165506.7302 +y_0=0.0103"+r+o+e,1,l+Bx+Dx+Ub+" +k_0=1.0000597566 +x_0=187147.5744 +y_0=107746.7522"+r+o+e,1,i+Fx+Gb+" +k=1.0000361538 +x_0=256946.9138 +y_0=0.0041"+r+o+e,1,l+Ux+Gx+zb+" +k_0=1.0000408158 +x_0=222504.4451 +y_0=47532.0602"+r+o+e,1,l+zx+Hx+Hb+" +k_0=1.0000730142 +x_0=134417.0689 +y_0=50337.1092"+r+o+e,1,l+qx+Zx+qb+" +k_0=1.0000367192 +x_0=232562.8651 +y_0=111088.2224"+r+o+e,1,l+Wx+Vx+Zb+" +k_0=1.0000475376 +x_0=234086.8682 +y_0=188358.6058"+r+o+e,1,i+Qx+Wb+" +k=1.00003738 +x_0=120091.4415 +y_0=0.003"+r+o+e,1,i+Kx+Vb+" +k=1.0000346179 +x_0=208788.418 +y_0=0.0034"+r+o+e,1,i+Yx+Qb+" +k=1.0000333645 +x_0=185013.9709 +y_0=0.007"+r+o+e,1,l+Xx+Jx+ah+" +k_0=1.0000392096 +x_0=120091.4402 +y_0=45069.7587"+r+o+e,1,l+$x+tk+He+" +k_0=1.0000421209 +x_0=208483.6173 +y_0=134589.754"+r+o+e,1,i+Nw+He+" +k=1.0000365285 +x_0=147218.6941325883 +y_0=0.00365760731521463"+r+h+e,1,i+Bw+ib+" +k=1.0000495683 +x_0=172821.945948692 +y_0=0.001828803657607315"+r+h+e,1,i+Dw+ob+" +k=1.0000486665 +x_0=93150"+ll+r+h+e,1,l+Fw+Uw+sb+" +k_0=1.0000331195 +x_0=228600.4575057151 +y_0=148551.4835661671"+r+h+e,1,i+cd+" +lon_0=-88"+sp+" +x_0=31599.99989839979 +y_0=4599.999898399797"+r+h+e,1,i+Gw+ab+" +k=1.0000382778 +x_0=175260.3502159004"+Kb+r+h+e,1,l+zw+Hw+lb+" +k_0=1.0000383841 +x_0=64008.12771145543 +y_0=59445.90419100838"+r+h+e,1,i+qw+" +lon_0=-88.5 +k=1.0000286569 +x_0=244754.8892049784"+Kb+r+h+e,1,l+Zw+Ww+ub+" +k_0=1.0000391127 +x_0=60045.72009144018 +y_0=44091.43449326898"+r+h+e,1,i+" +lat_0=43.6"+hb+" +k=1.0000463003 +x_0=199949.198983998"+Yb+r+h+e,1,l+Vw+Qw+cb+" +k_0=1.00003498 +x_0=169164.338023876 +y_0=111569.613512827"+r+h+e,1,l+bM+wM+Kw+" +k_0=1.0000349151 +x_0=113690.6273812548 +y_0=53703.12024384048"+r+h+e,1,l+YS+XS+fb+" +k_0=1.0000384786 +x_0=247193.2943865888 +y_0=146591.9896367793"+r+h+e,1,i+Yw+db+" +k=1.0000346418 +x_0=263347.7263906528 +y_0=0.00762001524003048"+r+h+e,1,i+" +lat_0=44.4"+pb+" +k=1.0000187521 +x_0=158801.1176022352 +y_0=0.002438404876809754"+r+h+e,1,i+Xw+pp+" +k=1.0000385418 +x_0=59131.31826263652"+Xb+r+h+e,1,i+Jw+mb+" +k=1.0000410324 +x_0=51816.10393700787"+ll+r+h+e,1,l+$w+tx+gb+" +k_0=1.000035079"+Jk+" +y_0=91687.92390144781"+r+h+e,1,i+ex+yb+" +k=1.0000552095 +x_0=133502.6682245364 +y_0=0.006400812801625603"+r+h+e,1,i+nx+_b+" +k=1.0000673004 +x_0=275844.5532131065 +y_0=0.0158496316992634"+r+h+e,1,i+rx+" +lon_0=-90.8 +k=1.0000349452 +x_0=242316.484023368 +y_0=0.01005842011684023"+r+h+e,1,l+ix+ox+vb+" +k_0=1.0000390487 +x_0=170078.7401574803 +y_0=45830.29484378968"+r+h+e,1,l+sx+ax+ah+" +k_0=1.0000344057 +x_0=150876.3017526035 +y_0=79170.77937515875"+r+h+e,1,i+lx+bb+" +k=1.0000394961 +x_0=113081.0261620523 +y_0=0.004572009144018288"+r+h+e,1,i+ux+wb+" +k=1.0000677153 +x_0=220980.4419608839"+Yb+r+h+e,1,i+hx+xb+" +k=1.0000353 +x_0=27000 +y_0=24999.99989839979"+r+h+e,1,i+cx+kb+" +k=1.0000260649 +x_0=185928.3727711455 +y_0=0.0009144018288036576"+r+h+e,1,i+fx+f_+" +k=1.0000233704 +x_0=79857.76154432308 +y_0=0.001219202438404877"+r+h+e,1,i+dx+Sb+" +k=1.0000319985 +x_0=130454.6596901194"+mp+r+h+e,1,l+px+mx+Mb+" +k_0=1.0000627024 +x_0=198425.1968503937 +y_0=105279.7828803657"+r+h+e,1,i+gx+Ab+" +k=1.0000599003 +x_0=116129.0322580645"+Jb+r+h+e,1,l+yx+_x+" +lon_0=-89.77 +k_0=1.000053289 +x_0=74676.1493522987 +y_0=55049.26695453391"+r+h+e,1,i+vx+Eb+" +k=1.0000234982 +x_0=238658.8794513589"+ll+r+h+e,1,i+bx+Cb+" +k=1.0000362499 +x_0=105461.0121412243"+ll+r+h+e,1,l+wx+xx+Tb+" +k_0=1.0000434122 +x_0=204521.2090424181 +y_0=121923.9861823724"+r+h+e,1,i+kx+Ob+" +k=1.0000236869 +x_0=182880.3675895352"+mp+r+h+e,1,l+Sx+Mx+Pb+" +k_0=1.0000686968 +x_0=70104.14020828041 +y_0=57588.03474726949"+r+h+e,1,l+Ax+Ex+Lb+" +k_0=1.0000362977 +x_0=167640.3352806706 +y_0=86033.08773177546"+r+h+e,1,i+Cx+lh+" +k=1.0000433849 +x_0=141732.2822453645"+Jb+r+h+e,1,l+Tx+Ox+" +lon_0=-89.5 +k_0=1.000039936 +x_0=56388.11277622555 +y_0=50022.1874523749"+r+h+e,1,i+Px+Ib+" +k=1.0000649554 +x_0=227990.8544577089 +y_0=0.01097282194564389"+r+h+e,1,l+JS+$S+Rb+" +k_0=1.0000375653 +x_0=202387.6047752095 +y_0=134255.4254508509"+r+h+e,1,i+Lx+jb+" +k=1.0000337311 +x_0=146304.2926085852 +y_0=0.006705613411226822"+r+h+e,1,i+Ix+Nb+" +k=1.0000495976 +x_0=250546.1013970028 +y_0=0.02346964693929388"+r+h+e,1,i+Rx+Bb+" +k=1.0000373868 +x_0=185623.5715519431 +y_0=0.005181610363220727"+r+h+e,1,l+jx+Nx+Db+" +k_0=1.0000573461 +x_0=216713.2337312675 +y_0=120734.1631699263"+r+h+e,1,i+zh+Fb+" +k=1.000032144 +x_0=262433.3251714504 +y_0=0.009448818897637795"+r+h+e,1,i+zh+lh+" +k=1.0000381803 +x_0=165506.7300990602 +y_0=0.01036322072644145"+r+h+e,1,l+Bx+Dx+Ub+" +k_0=1.0000597566 +x_0=187147.5742951486 +y_0=107746.7521463043"+r+h+e,1,i+Fx+Gb+" +k=1.0000361538 +x_0=256946.9138938278"+Xb+r+h+e,1,l+Ux+Gx+zb+" +k_0=1.0000408158 +x_0=222504.44500889 +y_0=47532.0603505207"+r+h+e,1,l+zx+Hx+Hb+" +k_0=1.0000730142 +x_0=134417.0688341377 +y_0=50337.10927101854"+r+h+e,1,l+qx+Zx+qb+" +k_0=1.0000367192 +x_0=232562.8651257302 +y_0=111088.2224028448"+r+h+e,1,l+Wx+Vx+Zb+" +k_0=1.0000475376 +x_0=234086.8681737363 +y_0=188358.6059436119"+r+h+e,1,i+Qx+Wb+" +k=1.00003738 +x_0=120091.4414020828"+ll+r+h+e,1,i+Kx+Vb+" +k=1.0000346179 +x_0=208788.4178816358"+mp+r+h+e,1,i+Yx+Qb+" +k=1.0000333645 +x_0=185013.9709423419 +y_0=0.007010414020828041"+r+h+e,1,l+Xx+Jx+ah+" +k_0=1.0000392096"+Jk+" +y_0=45069.7588011176"+r+h+e,1,l+$x+tk+He+" +k_0=1.0000421209 +x_0=208483.6172720346 +y_0=134589.7539243078"+r+h+e,41,c+r+e,6,i+f+" +lon_0=68.51666666666667 +k=1 +x_0=1300000"+Zg+r+o+e,1,i+f+" +lon_0=71.51666666666667 +k=1"+oM+Zg+r+o+e,1,i+f+" +lon_0=74.51666666666667 +k=1"+sM+Zg+r+o+e,1,i+f+" +lon_0=77.51666666666667 +k=1"+aM+Zg+r+o+e,1,i+f+" +lon_0=80.51666666666667 +k=1 +x_0=5300000"+Zg+r+o+e,12308,i+f+As+" +k=1"+ur+p+d+a+o+e,1,i+f+ea+" +k=1"+Si+p+d+a+o+e,1,i+f+Za+" +k=1"+Cu+p+d+a+o+e,1,i+f+Wh+" +k=1"+Xa+p+d+a+o+e,1,i+f+eu+" +k=1"+Kc+p+d+a+o+e,1,i+f+qp+" +k=1"+Yc+p+d+a+o+e,1,i+f+Ig+" +k=1"+rc+p+d+a+o+e,1,i+f+Wm+" +k=1"+Su+p+d+a+o+e,1,i+f+Rg+" +k=1"+ic+p+d+a+o+e,1,i+f+na+" +k=1"+aa+p+d+a+o+e,1,i+f+ra+" +k=1"+Bs+p+d+a+o+e,1,i+f+ga+" +k=1"+Ia+p+d+a+o+e,1,i+f+ia+" +k=1"+Ra+p+d+a+o+e,1,i+f+oa+" +k=1"+Ol+p+d+a+o+e,1,i+f+oi+" +k=1"+Pa+p+d+a+o+e,1,i+f+Go+" +k=1"+La+p+d+a+o+e,1,i+f+To+" +k=1"+la+p+d+a+o+e,1,i+f+Ro+" +k=1"+ja+p+d+a+o+e,1,i+f+wi+" +k=1"+ua+p+d+a+o+e,1,i+f+Oo+" +k=1"+Na+p+d+a+o+e,1,i+f+rm+" +k=1"+oc+p+d+a+o+e,1,i+f+rp+" +k=1"+Ba+p+d+a+o+e,1,i+f+td+" +k=1"+Da+p+d+a+o+e,1,i+f+im+" +k=1"+Fa+p+d+a+o+e,1,i+f+ed+" +k=1"+Ua+p+d+a+o+e,1,i+f+hc+" +k=1"+Ds+p+d+a+o+e,1,i+f+Gu+" +k=1"+il+p+d+a+o+e,1,i+f+zu+" +k=1"+ys+p+d+a+o+e,1,i+f+fc+" +k=1"+ol+p+d+a+o+e,103,u+mh+T+ha+o+e,1,u+uf+T+ha+o+e,1,u+Du+T+ha+o+e,1,u+lu+T+ha+o+e,111,u+ff+G+Y+q+o+e,1,u+Qf+G+Y+q+o+e,1,u+hf+G+Y+q+o+e,1,u+Kf+G+Y+q+o+e,1,u+vp+G+Y+q+o+e,1,u+kd+G+Y+q+o+e,1,u+Dp+G+Y+q+o+e,1,u+Jg+G+Y+q+o+e,1,u+Ly+G+Y+q+o+e,1,u+Pc+G+Y+q+o+e,91,u+ff+G+Y+Ye+o+e,1,u+Qf+G+Y+Ye+o+e,1,u+hf+G+Y+Ye+o+e,1,u+Kf+G+Y+Ye+o+e,1,u+vp+G+Y+Ye+o+e,1,u+kd+G+Y+Ye+o+e,1,u+Dp+G+Y+Ye+o+e,1,u+Jg+G+Y+Ye+o+e,80,u+uf+_+Rn+o+e,1,u+Du+_+Rn+o+e,1,u+lu+_+Rn+o+e,1,u+Kl+_+Rn+o+e,1,u+lf+_+Rn+o+e,59,u+Kl+_+Rn+o+e,39,u+lu+d+Gf+o+e,1,u+Kl+d+Gf+o+e,251,i+we+" +lon_0=1 +k=1"+R+ka+_+di+IS+o+e,1,i+we+" +lon_0=1 +k=1"+Z+p+_+di+IS+o+e,31,u+Ml+G+_+bi+o+e,1,u+Lc+G+_+bi+o+e,1,u+Md+G+_+bi+o+e,110,u+Vf+G+Me+me+Sl+o+e,1,u+mh+G+Me+me+Sl+o+e,1,u+uf+G+Me+me+Sl+o+e,99,u+mh+G+T+ui+o+e,1,u+uf+G+T+ui+o+e,1,u+Du+G+T+ui+o+e,58,u+mh+T+ui+o+e,1,u+uf+T+ui+o+e,1,u+Du+T+ui+o+e,51,u+cf+G+M+Pn+o+e,1,u+ff+G+M+Pn+o+e,1,u+Qf+G+M+Pn+o+e,141,i+f+Yf+ai+V+p+T+Pu+o+e,1,i+" +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986"+HS+" +y_0=75000"+T+Pu+o+e,121,i+f+na+" +k=1"+aa+p+d+w+o+e,1,i+f+ra+" +k=1"+Bs+p+d+w+o+e,1,i+f+ga+" +k=1"+Ia+p+d+w+o+e,1,i+f+ia+" +k=1"+Ra+p+d+w+o+e,1,i+f+oa+" +k=1"+Ol+p+d+w+o+e,1,i+f+oi+" +k=1"+Pa+p+d+w+o+e,1,i+f+Go+" +k=1"+La+p+d+w+o+e,1,i+f+To+" +k=1"+la+p+d+w+o+e,1,i+f+Ro+" +k=1"+ja+p+d+w+o+e,1,i+f+wi+" +k=1"+ua+p+d+w+o+e,1,i+f+Oo+" +k=1"+Na+p+d+w+o+e,30,i+f+na+" +k=1"+m+p+d+w+o+e,1,i+f+ra+" +k=1"+m+p+d+w+o+e,1,i+f+ga+" +k=1"+m+p+d+w+o+e,1,i+f+ia+" +k=1"+m+p+d+w+o+e,1,i+f+oa+" +k=1"+m+p+d+w+o+e,1,i+f+oi+" +k=1"+m+p+d+w+o+e,1,i+f+Go+" +k=1"+m+p+d+w+o+e,1,i+f+To+" +k=1"+m+p+d+w+o+e,1,i+f+Ro+" +k=1"+m+p+d+w+o+e,1,i+f+wi+" +k=1"+m+p+d+w+o+e,1,i+f+Oo+" +k=1"+m+p+d+w+o+e,37,l+Mh+Ah+Oa+ta+Ne+" +y_0=5400000"+_+" +pm=brussels"+o+e,280,_m+gh+ta+" +k_0=1"+Z+p+M+bs+" +pm=bern"+o+e,1,_m+gh+xp+" +k_0=1"+E+Ka+M+bs+o+e,1,_m+gh+xp+" +k_0=1"+Z+p+M+bs+o+e,36,u+Ga+_+hi+o+e,78,i+Hh+" +lon_0=-77.08091666666667 +k=1"+xe+st+_+hi+o+e,1,i+Hh+" +lon_0=-74.08091666666667 +k=1"+xe+st+_+hi+o+e,1,i+Hh+" +lon_0=-71.08091666666667 +k=1"+xe+st+_+hi+o+e,1,i+Hh+" +lon_0=-68.08091666666667 +k=1"+xe+st+_+hi+o+e,133,u+Yl+G+T+rs+o+e,1,u+Bu+G+T+rs+o+e,58,i+f+" +lon_0=11.5"+pt+m+jt+T+rs+o+e,1,i+f+Wa+pt+m+jt+T+rs+o+e,79,i+F+Lv+" +k=1"+bt+p+r+n+o+e,1,i+F+Wc+" +k=1"+On+p+r+n+o+e,1,i+F+nm+" +k=1"+Be+p+r+n+o+e,1,i+F+sg+" +k=1"+ur+p+r+n+o+e,1,i+F+Rv+" +k=1"+Si+p+r+n+o+e,1,i+F+RS+" +k=1"+Cu+p+r+n+o+e,1,i+F+rd+" +k=1"+Xa+p+r+n+o+e,4,i+F+Lv+" +k=1"+bt+p+N+n+o+e,1,i+F+Wc+" +k=1"+On+p+N+n+o+e,1,i+F+nm+" +k=1"+Be+p+N+n+o+e,1,i+F+sg+" +k=1"+ur+p+N+n+o+e,1,i+F+Rv+" +k=1"+Si+p+N+n+o+e,1,i+F+RS+" +k=1"+Cu+p+N+n+o+e,1,i+F+rd+" +k=1"+Xa+p+N+n+o+e,4,i+F+Lv+" +k=1"+bt+p+_+Ge+o+e,1,i+F+Wc+" +k=1"+On+p+_+Ge+o+e,1,i+F+nm+" +k=1"+Be+p+_+Ge+o+e,1,i+F+sg+" +k=1"+ur+p+_+Ge+o+e,1,i+F+Rv+" +k=1"+Si+p+_+Ge+o+e,1,i+F+RS+" +k=1"+Cu+p+_+Ge+o+e,1,i+F+rd+" +k=1"+Xa+p+_+Ge+o+e,37,u+Vf+G+Me+me+Qt+o+e,1,u+mh+G+Me+me+Qt+o+e,40,i+f+Ss+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+bv+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+Og+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+As+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+jy+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+Pg+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+ea+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+" +lon_0=29 +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+Um+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,2,i+f+Za+" +k=1"+Z+p+Ms+Me+me+Qt+o+e,39,u+Yl+vt+he+ks+o+e,59,l+" +lat_1=36"+es+" +lon_0=9.9"+jm+m+ka+vt+he+ks+o+e,1,l+Ky+Yy+" +lon_0=9.9"+fd+m+ka+vt+he+ks+o+e,129,u+za+G+_+ss+o+e,1,u+Ml+G+_+ss+o+e,1,u+Lc+G+_+ss+o+e,1,u+Md+G+_+ss+o+e,1,u+vd+G+_+ss+o+e,175,l+mM+" +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256"+at+ka+vt+he+Ks+o+e,70,l+mM+" +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256"+at+ka+vt+he+Ks+o+e,10,us+" +lat_0=34.2 +lon_0=39.15 +k=0.9995341"+Z+p+vt+he+Ks+o+e,211,i+Es+" +lon_0=35 +k=1"+at+" +y_0=1100000"+Cs+ca+o+e,1,i+Es+Um+" +k=1 +x_0=615000 +y_0=810000"+Cs+ca+o+e,1,i+Es+ea+" +k=1"+pi+Ka+Cs+ca+o+e,1,i+Es+ea+" +k=1"+pi+$_+Cs+ca+o+e,34,u+uu+_+U+o+e,1,u+ju+_+U+o+e,1,u+gp+_+U+o+e,1,u+Em+_+U+o+e,1,u+Yl+_+U+o+e,1,u+Bu+_+U+o+e,1,u+Vf+_+U+o+e,1,u+mh+_+U+o+e,1,u+uf+_+U+o+e,1,u+Du+_+U+o+e,1,u+lu+_+U+o+e,52,i+f+ta+pt+m+p+_+U+o+e,5,i+f+" +lon_0=5"+pt+m+p+_+U+o+e,144,u+Kl+T+zf+o+e,1,u+lf+T+zf+o+e,460,_m+" +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000"+Ka+pM+Ag+o+e,130,i+f+" +lon_0=94.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=97.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=100.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=103.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=106.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=109.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=112.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=115.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=118.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=121.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=124.5"+x+R+hr+N+n+o+e,1,i+f+am+x+R+hr+N+n+o+e,1,i+f+" +lon_0=130.5"+x+R+hr+N+n+o+e,1,i+f+tv+x+R+hr+N+n+o+e,1,i+f+" +lon_0=136.5"+x+R+hr+N+n+o+e,1,i+f+" +lon_0=139.5"+x+R+hr+N+n+o+e,1,u+Tm+nl+Oe+Wt+o+e,1,u+Ad+nl+Oe+Wt+o+e,1,u+cf+nl+Oe+Wt+o+e,1,u+ff+nl+Oe+Wt+o+e,1,u+Qf+nl+Oe+Wt+o+e,1,u+hf+nl+Oe+Wt+o+e,1,u+Kf+nl+Oe+Wt+o+e,14,u+Tm+N+n+o+e,1,u+Ad+N+n+o+e,1,u+cf+N+n+o+e,1,u+ff+N+n+o+e,1,u+Qf+N+n+o+e,1,u+hf+N+n+o+e,1,u+Kf+N+n+o+e,5,u+Ad+G+N+n+o+e,1,u+cf+G+N+n+o+e,1,u+ff+G+N+n+o+e,1,u+Qf+G+N+n+o+e,1,u+hf+G+N+n+o+e,1,u+Kf+G+N+n+o+e,1,u+vp+G+N+n+o+e,1,u+kd+G+N+n+o+e,3,u+Ad+G+nl+Oe+Wt+o+e,1,u+cf+G+nl+Oe+Wt+o+e,1,u+ff+G+nl+Oe+Wt+o+e,1,u+Qf+G+nl+Oe+Wt+o+e,1,u+hf+G+nl+Oe+Wt+o+e,1,u+Kf+G+nl+Oe+Wt+o+e,1,u+vp+G+nl+Oe+Wt+o+e,1,u+kd+G+nl+Oe+Wt+o+e,52,u+Tm+Ve+Kt+tu+o+e,1,u+Ad+Ve+Kt+tu+o+e,1,u+cf+Ve+Kt+tu+o+e,99,u+Ad+Ve+Kt+Hf+o+e,1,u+cf+Ve+Kt+Hf+o+e,52,l+" +lat_1=18"+Xd+lc+" +k_0=1 +x_0=167638.49597 +y_0=121918.90616"+kg+Sg+zc+e,100,l+" +lat_1=18"+Xd+lc+" +k_0=1"+qe+" +y_0=150000"+j+S_+o+e,105,u+Q_+Ve+Kt+$l+o+e,1,u+Tm+Ve+Kt+$l+o+e,5,u+Kg+bc+Ca+os+o+e,1,u+Yg+bc+Ca+os+o+e,1,u+Ry+bc+Ca+os+o+e,29,u+Yg+Ts+mn+ge+o+e,1,u+Ry+Ts+mn+ge+o+e,1,u+V_+Ts+mn+ge+o+e,1,u+Q_+Ts+mn+ge+o+e,1,u+Tm+Ts+mn+ge+o+e,1,u+Ad+Ts+mn+ge+o+e,23,l+Qy+" +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102"+Xs+Ns+ls+e,1,l+fg+dc+" +lon_0=68"+zo+su+au+Xs+Ns+ls+e,1,l+Cv+el+" +lon_0=74"+zo+su+au+Xs+Ns+ls+e,1,l+" +lat_1=19 +lat_0=19 +lon_0=80"+zo+su+au+Xs+Ns+ls+e,1,l+" +lat_1=12 +lat_0=12 +lon_0=80"+zo+su+au+Xs+Ns+ls+e,1,l+Cv+el+Ta+zo+" +x_0=2743185.69 +y_0=914395.23"+Ve+Kt+$l+o+e,1,l+fg+dc+" +lon_0=68"+zo+" +x_0=2743196.4 +y_0=914398.8"+bc+Ca+os+o+e,1,l+Cv+el+" +lon_0=74"+zo+" +x_0=2743196.4 +y_0=914398.8"+bc+Ca+os+o+e,1,l+fg+dc+" +lon_0=68"+zo+Kp+Ym+Ts+mn+ge+o+e,1,l+Cv+el+" +lon_0=74"+zo+Kp+Ym+Ts+mn+ge+o+e,1,l+Cv+el+Ta+zo+Kp+Ym+Ts+mn+ge+o+e,1,l+" +lat_1=19 +lat_0=19 +lon_0=80"+zo+Kp+Ym+Ts+mn+ge+o+e,1,l+Cv+el+Ta+zo+su+au+Xs+Ns+ls+e,1,l+" +lat_1=12 +lat_0=12 +lon_0=80"+zo+Kp+Ym+Ts+mn+ge+o+e,117,Ln+" +lat_0=1.287646666666667 +lon_0=103.8530022222222"+HS+" +y_0=30000"+ts+Qe+_e+o+e,47,u+Ad+ts+Qe+_e+o+e,1,u+cf+ts+Qe+_e+o+e,52,l+fg+dc+eu+Xp+bt+hM+T+rg+o+e,118,u+Ga+_+ma+o+e,1,u+wa+_+ma+o+e,1,u+Us+_+ma+o+e,97,u+wl+_+xt+o+e,1,u+Ga+_+xt+o+e,1,u+wa+_+xt+o+e,1,u+Us+_+xt+o+e,1,u+za+_+xt+o+e,56,u+wl+G+_+xt+o+e,1,u+Ga+G+_+xt+o+e,1,u+wa+G+_+xt+o+e,1,u+Us+G+_+xt+o+e,1,u+za+G+_+xt+o+e,1,u+Ml+G+_+xt+o+e,9,i+" +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743"+_+xt+o+e,1,i+" +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159"+_+xt+o+e,1,i+" +lat_0=-9.5"+Ya+" +k=0.99952992 +x_0=1324000 +y_0=1040084.558"+_+xt+o+e,107,i+ew+" +lon_0=-1"+my+" +x_0=274319.51"+p+T+j_+o+e,231,u+Em+vt+he+o+e,160,i+f+To+cn+m+p+j+Zo+o+e,1,i+f+AS+cn+m+p+j+Zo+o+e,1,i+f+ES+cn+m+p+j+Zo+o+e,1,i+f+Ro+cn+m+p+j+Zo+o+e,1,i+f+py+cn+m+p+j+Zo+o+e,433,u+uu+r+n+o+e,1,u+ju+r+n+o+e,1,u+gp+r+n+o+e,1,u+Em+r+n+o+e,1,u+Yl+r+n+o+e,1,u+Bu+r+n+o+e,1,u+Vf+r+n+o+e,1,u+mh+r+n+o+e,1,u+uf+r+n+o+e,1,u+Du+r+n+o+e,47,i+f+Va+pt+m+p+r+n+o+e,48,u+Yl+G+_+$m+o+e,259,l+Ky+Yy+qk+fd+m+ka+vt+he+$a+o+e,1,l+" +lat_1=29.7 +lat_0=29.7"+qk+" +k_0=0.9996155960000001"+m+ka+vt+he+$a+o+e,2,l+" +lat_1=26.1 +lat_0=26.1"+qk+" +k_0=0.999616304 +x_0=1200000"+Tl+vt+he+$a+o+e,1,l+" +lat_1=22.5 +lat_0=22.5"+qk+" +k_0=0.999616437"+bt+Tl+vt+he+$a+o+e,42,u+Du+M+W_+o+e,94,u+Em+T+as+o+e,1,u+Yl+T+as+o+e,59,i+ig+" +lon_0=4.5"+my+" +x_0=230738.26"+p+T+as+o+e,1,i+ig+" +lon_0=8.5"+my+" +x_0=670553.98"+p+T+as+o+e,1,i+ig+" +lon_0=12.5"+my+" +x_0=1110369.7"+p+T+as+o+e,239,u+Yl+vt+he+qf+o+e,60,u+Yl+G+vt+he+qf+o+e,9,u+Oy+S+o+e,1,u+F_+S+o+e,1,u+ak+S+o+e,1,u+z_+S+o+e,1,u+Cg+S+o+e,1,u+ly+S+o+e,1,u+Tg+S+o+e,1,u+U_+S+o+e,1,u+G_+S+o+e,1,u+Cm+S+o+e,1,u+bd+S+o+e,1,u+wd+S+o+e,1,u+xd+S+o+e,1,u+Sd+S+o+e,1,u+Zf+S+o+e,1,u+Wf+S+o+e,1,u+wl+S+o+e,1,u+Ga+S+o+e,1,u+wa+S+o+e,1,u+Us+S+o+e,1,u+za+S+o+e,1,u+Ml+S+o+e,7,i+ul+sl+tm+P+p+S+h+e,1,i+Es+Wd+re+P+p+S+h+e,1,gn+" +lat_0=57"+Eh+Ch+x+" +x_0=5000000.001016002 +y_0=-5000000.001016002"+Fu+ps+S+h+e,1,i+No+wk+x+P+p+S+h+e,1,i+No+xk+x+P+p+S+h+e,1,i+No+Gd+x+P+p+S+h+e,1,i+No+xf+x+P+p+S+h+e,1,i+No+Hu+x+P+p+S+h+e,1,i+No+kk+x+" +x_0=213360.4267208534"+p+S+h+e,1,i+No+Sk+x+P+p+S+h+e,1,i+No+zy+x+wm+p+S+h+e,1,l+Th+Oh+Av+Mk+Ze+p+S+h+e,1,l+gr+xu+X+Gs+A+p+S+h+e,1,l+yr+_r+$+Gs+A+p+S+h+e,1,l+Ut+vr+mf+lt+A+p+S+h+e,1,l+Vh+zm+br+gf+A+p+S+h+e,1,l+wr+xr+yf+Cl+A+p+S+h+e,1,l+kr+Sr+Mr+Il+A+p+S+h+e,2,i+Re+jn+x+P+p+S+h+e,1,i+Re+Nn+x+P+p+S+h+e,1,i+Re+Ll+re+P+p+S+h+e,1,l+Hr+qr+$t+qa+A+p+S+h+e,1,l+Zr+bf+Wr+qa+A+p+S+h+e,1,l+" +lat_1=39.71666666666667 +lat_2=40.78333333333333"+X+ke+A+p+S+h+e,1,l+Qh+Kh+bn+ke+A+p+S+h+e,1,l+Ut+Ar+L+ke+A+p+S+h+e,1,l+Er+_f+Cr+Mu+wm+p+S+h+e,1,i+Tn+Bn+vf+P+p+S+h+e,1,i+Gt+dn+Bt+P+p+S+h+e,1,i+Gt+ep+Bt+P+p+S+h+e,1,l+Yh+Tr+Hm+Xh+A+p+S+h+e,6,i+Es+Dn+x+P+p+S+h+e,1,i+Es+Fn+x+P+p+S+h+e,1,i+z+Un+se+P+p+S+h+e,1,i+z+hu+se+P+p+S+h+e,1,i+z+Rl+re+P+p+S+h+e,1,i+L+Vn+li+P+p+S+h+e,1,i+L+Qn+Bt+P+p+S+h+e,1,i+sr+Kn+dt+P+p+S+h+e,1,i+sr+Yn+dt+P+p+S+h+e,1,l+Vr+Qr+Po+Ko+A+p+S+h+e,1,l+kt+Kr+jo+Ko+A+p+S+h+e,1,l+Yr+Xr+mt+Co+A+p+S+h+e,1,l+Jr+$r+L+yn+A+p+S+h+e,1,l+Yt+mr+sr+ku+A+p+S+h+e,1,l+" +lat_1=36.73333333333333 +lat_2=37.93333333333333"+tt+gi+A+p+S+h+e,1,l+" +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667"+va+A+p+S+h+e,1,l+" +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667"+Pe+A+p+S+h+e,1,i+ht+Ys+x+P+p+S+h+e,1,i+te+Xn+dt+P+p+S+h+e,1,l+" +lat_1=38.3 +lat_2=39.45"+bn+lc+" +x_0=243840.4876809754"+p+S+h+e,1,l+" +lat_1=41.71666666666667 +lat_2=42.68333333333333"+Al+Vo+wm+p+S+h+e,1,l+" +lat_1=41.28333333333333 +lat_2=41.48333333333333"+Al+Ya+" +x_0=60960.12192024384"+p+S+h+e,4,l+" +lat_1=47.03333333333333 +lat_2=48.63333333333333"+El+Jn+A+p+S+h+e,1,l+" +lat_1=45.61666666666667 +lat_2=47.05"+tl+Eu+A+p+S+h+e,1,l+" +lat_1=43.78333333333333 +lat_2=45.21666666666667"+cd+nd+A+p+S+h+e,1,i+kn+Gn+tm+P+p+S+h+e,1,i+ul+We+Bt+P+p+S+h+e,1,i+Mn+Ug+re+P+p+S+h+e,1,i+Mn+va+re+P+p+S+h+e,1,i+pl+Gg+Bt+P+p+S+h+e,1,l+" +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333"+al+" +x_0=1276106.450596901 +y_0=1268253.006858014"+S+h+e,48,i+ut+Ys+x+ne+p+r+n+h+e,1,i+te+Xn+dt+sa+p+r+n+h+e,1,l+ho+co+El+Jn+Dt+Ft+r+n+h+e,1,l+rf+fo+tl+Eu+Dt+Ft+r+n+h+e,1,l+po+mo+cd+nd+Dt+Ft+r+n+h+e,1,l+nu+xu+go+pn+ot+p+r+n+h+e,1,l+of+jg+wf+ms+E+p+r+n+h+e,1,l+ko+So+Vm+dn+E+p+r+n+h+e,1,i+ut+Ys+x+ne+p+r+n+h+e,1,i+te+Xn+dt+sa+p+r+n+h+e,1,l+ho+co+El+Jn+Dt+Ft+r+n+h+e,1,l+rf+fo+tl+Eu+Dt+Ft+r+n+h+e,1,l+po+mo+cd+nd+Dt+Ft+r+n+h+e,1,l+nu+xu+go+pn+ot+p+r+n+h+e,1,l+of+jg+wf+ms+E+p+r+n+h+e,1,l+ko+So+Vm+dn+E+p+r+n+h+e,1,i+ut+Ys+x+ne+p+r+n+h+e,1,i+te+Xn+dt+sa+p+r+n+h+e,1,l+ho+co+El+Jn+Dt+Ft+r+n+h+e,1,l+rf+fo+tl+Eu+Dt+Ft+r+n+h+e,1,l+po+mo+cd+nd+Dt+Ft+r+n+h+e,1,l+nu+xu+go+pn+ot+p+r+n+h+e,1,l+of+jg+wf+ms+E+p+r+n+h+e,1,l+ko+So+Vm+dn+E+p+r+n+h+e,21,i+f+ci+x+At+p+r+n+o+e,1,i+f+dn+x+At+p+r+n+o+e,1,i+f+Xf+x+At+p+r+n+o+e,1,i+f+gu+x+At+p+r+n+o+e,1,i+f+He+x+At+p+r+n+o+e,1,i+f+fy+x+At+p+r+n+o+e,1,i+f+$d+x+At+p+r+n+o+e,1,i+f+" +lon_0=-53"+x+At+p+r+n+o+e,1,i+f+jS+x+At+p+r+n+o+e,2,u+Oy+r+n+o+e,1,u+F_+r+n+o+e,1,u+ak+r+n+o+e,1,u+z_+r+n+o+e,1,u+Cg+r+n+o+e,1,u+ly+r+n+o+e,1,u+Tg+r+n+o+e,1,u+U_+r+n+o+e,1,u+G_+r+n+o+e,1,u+Cm+r+n+o+e,1,u+bd+r+n+o+e,1,u+wd+r+n+o+e,1,u+xd+r+n+o+e,1,u+Sd+r+n+o+e,1,u+Zf+r+n+o+e,1,u+Wf+r+n+o+e,1,u+wl+r+n+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,u+Us+r+n+o+e,1,u+za+r+n+o+e,1,u+Ml+r+n+o+e,1,u+Lc+r+n+o+e,6,i+ul+sl+tm+R+p+r+n+o+e,1,i+Es+Wd+re+E+p+r+n+o+e,1,gn+" +lat_0=57"+Eh+Ch+x+nc+si+Fu+ps+r+n+o+e,1,i+No+wk+x+m+p+r+n+o+e,1,i+No+xk+x+m+p+r+n+o+e,1,i+No+Gd+x+m+p+r+n+o+e,1,i+No+xf+x+m+p+r+n+o+e,1,i+No+Hu+x+m+p+r+n+o+e,1,i+No+kk+x+m+p+r+n+o+e,1,i+No+Sk+x+m+p+r+n+o+e,1,i+No+zy+x+m+p+r+n+o+e,1,l+Th+Oh+Av+Mk+xe+p+r+n+o+e,1,l+gr+xu+X+Gs+Ae+Tt+r+n+o+e,1,l+yr+_r+$+Gs+Ae+Tt+r+n+o+e,1,l+Ut+vr+mf+lt+Ae+Tt+r+n+o+e,1,l+Vh+zm+br+gf+Ae+Tt+r+n+o+e,1,l+wr+xr+yf+Cl+Ae+Tt+r+n+o+e,1,l+kr+Sr+Mr+Il+Ae+Tt+r+n+o+e,2,i+Re+jn+x+mi+p+r+n+o+e,1,i+Re+Nn+x+mi+p+r+n+o+e,1,i+Re+Ll+re+mi+p+r+n+o+e,1,l+Hr+qr+$t+qa+V+p+r+n+o+e,1,l+Zr+bf+Wr+qa+V+Tl+r+n+o+e,1,l+Mi+Ai+X+ke+Fo+Uo+r+n+o+e,1,l+Qh+Kh+bn+ke+Fo+Uo+r+n+o+e,1,l+Ut+Ar+L+ke+Fo+Uo+r+n+o+e,1,l+Er+_f+Cr+Mu+Om+Pm+r+n+o+e,1,i+Tn+Bn+vf+R+p+r+n+o+e,1,i+Gt+dn+Bt+R+p+r+n+o+e,1,i+Gt+ep+Bt+R+p+r+n+o+e,1,l+Yh+Tr+Hm+Xh+E+p+r+n+o+e,1,i+bh+Xy+dt+m+p+r+n+o+e,1,i+wh+Ku+dt+m+p+r+n+o+e,1,i+hs+Hu+bu+m+p+r+n+o+e,1,i+xh+Jy+bu+m+p+r+n+o+e,1,i+kh+Yu+" +k=1"+m+p+r+n+o+e,1,i+Es+Dn+x+R+p+r+n+o+e,1,i+Es+Fn+x+pi+p+r+n+o+e,1,i+z+Un+se+R+p+r+n+o+e,1,i+z+hu+se+m+p+r+n+o+e,1,i+z+Rl+re+vn+p+r+n+o+e,1,i+L+Vn+li+at+p+r+n+o+e,1,i+L+Qn+Bt+pi+p+r+n+o+e,1,i+sr+Kn+dt+ye+qu+r+n+o+e,1,i+sr+Yn+dt+sa+qu+r+n+o+e,1,l+Vr+Qr+Po+Ko+bt+st+r+n+o+e,1,l+kt+Kr+jo+Ko+m+p+r+n+o+e,1,l+Yr+Xr+mt+Co+V+p+r+n+o+e,1,l+Jr+$r+L+yn+V+Tl+r+n+o+e,2,l+Ei+Ci+tt+gi+m+Tt+r+n+o+e,1,l+lo+uo+ul+va+xe+p+r+n+o+e,1,l+jd+Nd+Bd+Pe+xe+p+r+n+o+e,1,i+ut+Ys+x+at+p+r+n+o+e,1,i+te+Xn+dt+sa+p+r+n+o+e,1,l+Xc+Ed+$+lc+V+p+r+n+o+e,1,l+Ti+Or+Al+Vo+R+pf+r+n+o+e,1,l+Oi+Pi+Al+Ya+m+p+r+n+o+e,1,l+Li+Ii+Ri+gu+ev+p+r+n+o+e,1,l+Cd+ji+Ni+ee+lm+p+r+n+o+e,1,l+Fe+Td+Po+ee+$h+p+r+n+o+e,1,l+ho+co+El+Jn+vn+ni+r+n+o+e,1,l+rf+fo+tl+Eu+vn+ni+r+n+o+e,1,l+po+mo+cd+nd+vn+ni+r+n+o+e,1,i+xa+Gn+cn+at+p+r+n+o+e,1,i+xa+We+cn+pi+p+r+n+o+e,1,i+Mn+Ug+re+qe+p+r+n+o+e,1,i+Mn+va+re+m+p+r+n+o+e,1,i+pl+Gg+Bt+hk+p+r+n+o+e,41,u+Kl+T+lr+o+e,1,u+lf+T+lr+o+e,80,u+Us+_+N_+o+e,80,"+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150"+_+k+o+e,5,i+" +lat_0=-36.87986527777778 +lon_0=174.7643393611111"+x+at+ar+_+k+o+e,1,i+" +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1"+at+ar+_+k+o+e,1,i+" +lat_0=-45.86151336111111 +lon_0=170.2825891111111"+tm+at+ar+_+k+o+e,1,i+" +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58"+_+k+o+e,26,u+Pc+G+_+k+o+e,1,u+_d+G+_+k+o+e,1,u+Bp+G+_+k+o+e,31,i+" +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114"+_+k+D_+e,1,i+LS+" +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143"+_+k+D_+e,99,i+Eo+" +lon_0=-4.666666666666667 +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,1,i+Eo+" +lon_0=-2.333333333333333 +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,1,i+Eo+ta+" +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,1,i+Eo+" +lon_0=2.5 +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,1,i+Eo+rw+" +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,1,i+Eo+" +lon_0=10.16666666666667 +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,1,i+Eo+" +lon_0=14.16666666666667 +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,1,i+Eo+" +lon_0=18.33333333333333 +k=1"+Z+p+Aa+ri+Mt+Iy+o+e,31,u+ju+_+Ql+o+e,64,i+we+Gv+" +k=1 +x_0=180.598 +y_0=-86.98999999999999"+_+Ql+o+e,7,l+Tp+Op+" +lon_0=5.399999999999999 +k_0=0.99950908"+m+ka+" +a=6376523"+xg+_S+o+e,61,l+Tp+Op+ta+" +k_0=0.999877341"+E+Ka+vt+he+Ie+Ac+o+e,1,l+" +lat_1=46.8 +lat_0=46.8"+ta+" +k_0=0.99987742"+E+Ka+vt+he+Ie+Ac+o+e,1,l+ek+nk+ta+" +k_0=0.999877499"+E+Ka+vt+he+Ie+Ac+o+e,1,l+rk+ik+ta+" +k_0=0.99994471 +x_0=234.358 +y_0=185861.369"+vt+he+Ie+Ac+o+e,7,l+Tp+Op+ta+" +k_0=0.999877341"+E+$_+vt+he+Ie+Ac+o+e,1,l+" +lat_1=46.8 +lat_0=46.8"+ta+" +k_0=0.99987742"+E+" +y_0=2200000"+vt+he+Ie+Ac+o+e,1,l+ek+nk+ta+" +k_0=0.999877499"+E+" +y_0=3200000"+vt+he+Ie+Ac+o+e,1,l+rk+ik+ta+" +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369"+vt+he+Ie+Ac+o+e,126,i+" +lat_0=49 +lon_0=-2 +k=0.9996012717"+V+" +y_0=-100000"+Vp+Cc+o+e,491,Ln+Uh+Gh+vg+" +y_0=126867.909"+id+od+fr+o+e,1,i+Uh+Gh+" +k=1"+vg+" +y_0=1126867.909"+id+od+fr+o+e,1,Ln+Uh+Gh+vg+" +y_0=1126867.909"+id+od+fr+o+e,39,u+Yl+G+vt+he+M_+o+e,116,u+cf+G+r+n+o+e,1,u+ff+G+r+n+o+e,1,u+Qf+G+r+n+o+e,1,u+hf+G+r+n+o+e,1,u+Kf+G+r+n+o+e,1,u+vp+G+r+n+o+e,1,u+kd+G+r+n+o+e,1,u+Dp+G+r+n+o+e,1,u+Jg+G+r+n+o+e,1,u+Ly+G+r+n+o+e,1,u+Pc+G+r+n+o+e,46,i+f+As+" +k=1"+ur+p+d+s+o+e,1,i+f+ea+" +k=1"+Si+p+d+s+o+e,1,i+f+Za+" +k=1"+Cu+p+d+s+o+e,1,i+f+Wh+" +k=1"+Xa+p+d+s+o+e,1,i+f+eu+" +k=1"+Kc+p+d+s+o+e,1,i+f+qp+" +k=1"+Yc+p+d+s+o+e,1,i+f+Ig+" +k=1"+rc+p+d+s+o+e,1,i+f+Wm+" +k=1"+Su+p+d+s+o+e,1,i+f+Rg+" +k=1"+ic+p+d+s+o+e,1,i+f+na+" +k=1"+aa+p+d+s+o+e,1,i+f+ra+" +k=1"+Bs+p+d+s+o+e,1,i+f+ga+" +k=1"+Ia+p+d+s+o+e,1,i+f+ia+" +k=1"+Ra+p+d+s+o+e,1,i+f+oa+" +k=1"+Ol+p+d+s+o+e,1,i+f+oi+" +k=1"+Pa+p+d+s+o+e,1,i+f+Go+" +k=1"+La+p+d+s+o+e,1,i+f+To+" +k=1"+la+p+d+s+o+e,1,i+f+Ro+" +k=1"+ja+p+d+s+o+e,1,i+f+wi+" +k=1"+ua+p+d+s+o+e,1,i+f+Oo+" +k=1"+Na+p+d+s+o+e,1,i+f+rm+" +k=1"+oc+p+d+s+o+e,1,i+f+rp+" +k=1"+Ba+p+d+s+o+e,1,i+f+td+" +k=1"+Da+p+d+s+o+e,1,i+f+im+" +k=1"+Fa+p+d+s+o+e,1,i+f+ed+" +k=1"+Ua+p+d+s+o+e,1,i+f+hc+" +k=1"+Ds+p+d+s+o+e,1,i+f+Gu+" +k=1"+il+p+d+s+o+e,1,i+f+zu+" +k=1"+ys+p+d+s+o+e,1,i+f+fc+" +k=1"+ol+p+d+s+o+e,168,i+" +lat_0=24.45"+aw+bu+R+ka+_+Dm+o+e,391,us+ok+Qk+" +k=0.9999079"+Z+p+M+Do+o+e,1,us+ok+Qk+" +k=0.9999079 +x_0=155000 +y_0=463000"+M+Do+o+e,109,Nv+f+rd+nc+jt+Y+Nt+o+e,67,u+Ga+Y+Nt+o+e,1,u+wa+Y+Nt+o+e,1,u+Us+Y+Nt+o+e,1,u+za+Y+Nt+o+e,1,u+Ml+Y+Nt+o+e,15,u+wl+G+Y+Nt+o+e,1,u+Ga+G+Y+Nt+o+e,1,u+wa+G+Y+Nt+o+e,1,u+Us+G+Y+Nt+o+e,1,u+za+G+Y+Nt+o+e,1,u+Ml+G+Y+Nt+o+e,1,u+Lc+G+Y+Nt+o+e,1,u+Md+G+Y+Nt+o+e,1,u+vd+G+Y+Nt+o+e,25,u+Us+G+_+md+o+e,1,u+za+G+_+md+o+e,112,u+Bu+G+zs+ze+o+e,38,i+sm+" +lon_0=11 +k=1"+Z+p+Ms+zs+ze+$o+e,2,i+sm+" +lon_0=13 +k=1"+Z+p+Ms+zs+ze+$o+e,2,i+sm+Ss+" +k=1"+Z+p+Ms+zs+ze+$o+e,2,i+sm+bv+" +k=1"+Z+p+Ms+zs+ze+$o+e,2,i+sm+Og+" +k=1"+Z+p+Ms+zs+ze+$o+e,2,i+sm+As+" +k=1"+Z+p+Ms+zs+ze+$o+e,2,i+sm+jy+" +k=1"+Z+p+Ms+zs+ze+$o+e,2,i+sm+Pg+" +k=1"+Z+p+Ms+zs+ze+$o+e,317,gn+" +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9"+ai+V+hn+" +gamma=18.9"+_+qs+Ac+o+e,36,u+lu+G+_+qs+o+e,1,u+Kl+G+_+qs+o+e,110,u+ff+vc+Wo+o+e,1,u+Qf+vc+Wo+o+e,21,gn+ig+oS+Pp+om+" +x_0=590476.8714630401 +y_0=442857.653094361"+gl+vc+Wo+" +to_meter=20.11676512155263"+e,1,gn+ig+oS+Pp+om+" +x_0=590476.8727431979 +y_0=442857.6545573985"+gl+vc+Wo+" +to_meter=0.3047994715386762"+e,1,gn+ig+oS+Pp+om+" +x_0=590476.87 +y_0=442857.65"+gl+vc+Wo+o+e,28,i+lk+" +lon_0=-8 +k=1"+R+qu+Vp+Se+o+e,1,i+lk+" +lon_0=-8 +k=1.000035"+R+qu+hp+Se+o+e,1,i+lk+" +lon_0=-8 +k=1.000035"+R+qu+hp+Se+o+e,258,i+Zp+rM+x+Z+p+M+I+o+e,1,i+Zp+$f+x+Z+p+M+I+o+e,1,i+es+kp+x+Z+p+M+I+o+e,1,i+Zp+tv+x+Z+p+M+I+o+e,1,i+es+Sp+x+Z+p+M+I+o+e,1,i+es+gy+x+Z+p+M+I+o+e,1,i+es+Mp+x+Z+p+M+I+o+e,1,i+es+iM+x+Z+p+M+I+o+e,1,i+es+Ap+x+Z+p+M+I+o+e,1,i+jo+Ep+x+Z+p+M+I+o+e,1,i+hl+dS+x+Z+p+M+I+o+e,1,i+hl+pS+x+Z+p+M+I+o+e,1,i+hl+mS+x+Z+p+M+I+o+e,1,i+el+" +lon_0=142"+x+Z+p+M+I+o+e,1,i+el+am+x+Z+p+M+I+o+e,1,i+el+" +lon_0=124"+x+Z+p+M+I+o+e,1,i+el+$f+x+Z+p+M+I+o+e,1,i+" +lat_0=20"+gy+x+Z+p+M+I+o+e,1,i+el+kS+x+Z+p+M+I+o+e,21,Ln+iw+Fv+" +x_0=86501.46392051999"+xM+xi+ki+Vl+tw+e,139,u+Kl+Cs+o+e,1,u+lf+Cs+o+e,151,l+" +lat_1=36"+es+xy+jm+m+ka+vt+he+Fl+o+e,1,l+Ky+Yy+xy+fd+m+ka+vt+he+Fl+o+e,1,l+" +lat_1=36"+es+xy+jm+m+ka+vt+he+o+e,1,l+Ky+Yy+xy+fd+m+ka+vt+he+o+e,235,u+ju+T+Ot+o+e,1,u+gp+T+Ot+o+e,1,u+Em+T+Ot+o+e,1,u+Yl+T+Ot+o+e,59,l+" +lat_1=36"+es+xy+jm+" +x_0=500135 +y_0=300090"+T+Ot+o+e,1,l+Ky+Yy+xy+fd+" +x_0=500135 +y_0=300090"+T+Ot+o+e,236,u+uu+vt+he+o+e,93,u+za+_+Zs+o+e,33,i+f+rd+pt+m+p+_+Zs+o+e,16,i+f+$b+pt+m+p+_+Zs+o+e,1,i+f+$b+x+m+p+_+Zs+o+e,80,i+f+Bg+" +k=1"+Z+si+M+Vt+kc+o+e,1,i+f+Um+" +k=1"+Z+si+M+Vt+kc+o+e,1,i+f+fS+" +k=1"+Z+si+M+Vt+kc+o+e,1,i+f+Lp+" +k=1"+Z+si+M+J+o+e,1,i+f+yl+" +k=1"+Z+si+M+J+o+e,1,i+f+Ip+" +k=1"+Z+si+M+J+o+e,1,i+f+Lp+" +k=1"+Ne+si+M+J+o+e,1,i+f+yl+" +k=1 +x_0=450000"+si+M+J+o+e,1,i+f+Ip+" +k=1"+vk+si+M+J+o+e,22,i+f+Bg+" +k=1"+Z+p+M+Vt+kc+o+e,1,i+f+Um+" +k=1"+Z+p+M+Vt+kc+o+e,1,i+f+fS+" +k=1"+Z+p+M+Vt+kc+o+e,1,i+f+Lp+" +k=1"+Ne+p+M+J+o+e,1,i+f+yl+" +k=1 +x_0=450000"+p+M+J+o+e,1,i+f+Ip+" +k=1"+vk+p+M+J+o+e,1,l+Zh+ud+" +lat_0=47.5"+yl+V+Tl+M+J+o+e,1,i+f+Bg+" +k=1"+Ne+p+M+Vt+kc+o+e,1,i+f+Um+" +k=1 +x_0=450000"+p+M+Vt+kc+o+e,1,i+f+fS+" +k=1"+vk+p+M+Vt+kc+o+e,10,l+Mh+Ah+Oa+" +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378"+_+is+o+e,70,l+" +lat_1=51.16666723333333 +lat_2=49.8333339"+Oa+" +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438"+_+is+o+e,96,i+f+bS+" +k=1"+On+p+M+et+o+e,1,i+f+Nu+" +k=1"+Be+p+M+et+o+e,1,i+f+Wa+" +k=1"+ur+p+M+et+o+e,1,i+f+Ss+" +k=1"+Si+p+M+et+o+e,59,u+uu+vt+he+gd+o+e,1,u+ju+vt+he+gd+o+e,71,us+" +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667"+m+Tt+_+Fm+o+e,238,u+lu+N+Qc+o+e,1,u+Kl+N+Qc+o+e,62,i+f+Ny+" +k=1"+m+p+r+cy+o+e,64,u+bd+r+n+o+e,1,u+wd+r+n+o+e,1,u+xd+r+n+o+e,1,u+Sd+r+n+o+e,1,u+Zf+r+n+o+e,1,u+Wf+r+n+o+e,1,u+wl+r+n+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,u+Us+r+n+o+e,1,u+za+r+n+o+e,1,u+Ml+r+n+o+e,1,u+wl+G+r+n+o+e,1,u+Ga+G+r+n+o+e,1,u+wa+G+r+n+o+e,1,u+Us+G+r+n+o+e,1,u+za+G+r+n+o+e,1,u+Ml+G+r+n+o+e,1,u+Lc+G+r+n+o+e,1,u+Md+G+r+n+o+e,1,u+vd+G+r+n+o+e,1,u+wl+r+n+o+e,1,u+Ga+r+n+o+e,1,u+wa+r+n+o+e,1,u+Us+r+n+o+e,1,u+za+r+n+o+e,1,u+Ml+r+n+o+e,1,u+wl+G+r+n+o+e,1,u+Ga+G+r+n+o+e,1,u+wa+G+r+n+o+e,1,u+Us+G+r+n+o+e,1,u+za+G+r+n+o+e,1,u+Ml+G+r+n+o+e,1,u+Lc+G+r+n+o+e,1,u+Md+G+r+n+o+e,1,u+vd+G+r+n+o+e,1,l+" +lat_1=48.71666666666667 +lat_2=47.85"+fl+rl+A+p+S+h+e,1,l+" +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334"+rl+A+p+S+h+e,1,l+" +lat_1=46.4 +lat_2=44.86666666666667"+hl+rl+A+p+S+h+e,2,l+" +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334"+pn+A+p+S+h+e,1,l+" +lat_1=40.28333333333333"+Or+we+" +lon_0=-99.5"+A+p+S+h+e,1,i+fn+$n+x+P+p+S+h+e,1,i+fn+tr+x+P+p+S+h+e,1,i+fn+er+x+P+p+S+h+e,1,i+Lo+nr+dt+P+p+S+h+e,1,i+Xt+" +lon_0=-74.66666666666667"+li+A+p+S+h+e,1,i+Re+zn+Ma+P+p+S+h+e,1,i+Re+jl+x+P+p+S+h+e,1,i+Re+Hn+Nl+P+p+S+h+e,1,i+jo+" +lon_0=-74.33333333333333"+dt+P+p+S+h+e,1,i+jo+qn+Ct+P+p+S+h+e,1,i+jo+Zn+Ct+P+p+S+h+e,2,l+" +lat_1=34.33333333333334 +lat_2=36.16666666666666"+Jh+Jf+A+p+S+h+e,1,l+" +lat_1=47.43333333333333"+sk+fl+yi+A+p+S+h+e,1,l+" +lat_1=46.18333333333333 +lat_2=47.48333333333333"+Ee+yi+A+p+S+h+e,1,l+" +lat_1=40.43333333333333 +lat_2=41.7"+we+ci+A+p+S+h+e,1,l+" +lat_1=38.73333333333333 +lat_2=40.03333333333333"+Tn+ci+A+p+S+h+e,1,l+" +lat_1=35.56666666666667"+Ur+qm+Co+A+p+S+h+e,1,l+" +lat_1=33.93333333333333 +lat_2=35.23333333333333"+Rr+Co+A+p+S+h+e,1,l+" +lat_1=44.33333333333334"+ud+ut+lt+A+p+S+h+e,1,l+" +lat_1=42.33333333333334 +lat_2=44"+z+lt+A+p+S+h+e,1,l+" +lat_1=40.88333333333333 +lat_2=41.95"+Jt+_i+A+p+S+h+e,2,i+ti+Vo+" +k=0.9999938"+P+p+S+h+e,1,l+" +lat_1=33.76666666666667 +lat_2=34.96666666666667"+Zp+dn+A+p+S+h+e,2,l+" +lat_1=32.33333333333334 +lat_2=33.66666666666666"+Br+dn+A+p+S+h+e,1,l+" +lat_1=44.41666666666666 +lat_2=45.68333333333333"+ht+pn+A+p+S+h+e,1,l+" +lat_1=42.83333333333334 +lat_2=44.4"+ei+Pt+A+p+S+h+e,2,l+mM+" +lat_2=36.18333333333333"+Zm+Au+A+p+S+h+e,1,l+" +lat_1=32.13333333333333 +lat_2=33.96666666666667"+Dr+" +lon_0=-97.5"+A+p+S+h+e,1,l+" +lat_1=30.11666666666667 +lat_2=31.88333333333333"+kn+Pt+A+p+S+h+e,1,l+" +lat_1=28.38333333333333 +lat_2=30.28333333333333"+Fr+yu+A+p+S+h+e,1,l+" +lat_1=26.16666666666667 +lat_2=27.83333333333333"+Sn+yn+A+p+S+h+e,1,l+" +lat_1=40.71666666666667 +lat_2=41.78333333333333"+Ue+oe+A+p+S+h+e,1,l+" +lat_1=39.01666666666667 +lat_2=40.65"+mt+oe+A+p+S+h+e,1,l+" +lat_1=37.21666666666667 +lat_2=38.35"+L+oe+A+p+S+h+e,1,i+Lo+ec+Bl+P+p+S+h+e,1,l+" +lat_1=38.03333333333333 +lat_2=39.2"+$+Qo+A+p+S+h+e,1,l+Ir+" +lat_2=37.96666666666667"+tt+Qo+A+p+S+h+e,1,l+" +lat_1=47.5"+sk+fl+Wn+A+p+S+h+e,1,l+" +lat_1=45.83333333333334 +lat_2=47.33333333333334"+Gr+lt+A+p+S+h+e,1,l+" +lat_1=39 +lat_2=40.25"+wf+ms+A+p+S+h+e,1,l+" +lat_1=37.48333333333333 +lat_2=38.88333333333333"+Vm+dn+A+p+S+h+e,1,l+" +lat_1=45.56666666666667 +lat_2=46.76666666666667"+zr+He+A+p+S+h+e,1,l+" +lat_1=44.25"+Sa+ht+He+A+p+S+h+e,1,l+" +lat_1=42.73333333333333 +lat_2=44.06666666666667"+Hp+He+A+p+S+h+e,1,i+qh+rr+Bt+P+p+S+h+e,1,i+qh+ir+Bt+P+p+S+h+e,1,i+qh+Dl+Bt+P+p+S+h+e,1,i+qh+or+Bt+P+p+S+h+e,6,i+f+yu+pt+B+p+S+h+e,1,i+f+fy+pt+B+p+S+h+e,1,i+f+gu+pt+B+p+S+h+e,1,i+f+dn+pt+B+p+S+h+e,14,i+f+" +lon_0=-53"+x+At+p+S+o+e,1,i+f+jS+x+At+p+S+o+e,1,i+f+K_+x+At+p+S+o+e,1,i+f+Dg+x+At+p+S+o+e,1,i+f+Fg+x+At+p+S+o+e,1,i+f+Y_+x+At+p+S+o+e,12,l+wv+ud+hl+Ys+Z+p+S+o+e,1,l+Je+$e+Sn+Pe+A+p+S+h+e,1,l+Zh+Lg+Jc+rl+E+p+r+n+o+e,4,l+nu+xu+go+pn+m+p+r+n+o+e,3,i+fn+$n+x+R+nv+r+n+o+e,1,i+fn+tr+x+m+ba+r+n+o+e,1,i+fn+er+x+vn+tc+r+n+o+e,1,i+Lo+nr+dt+at+p+r+n+o+e,1,i+Xt+Os+x+Ne+p+r+n+o+e,1,i+Re+zn+Ma+Od+p+r+n+o+e,1,i+Re+jl+x+m+p+r+n+o+e,1,i+Re+Hn+Nl+ck+p+r+n+o+e,1,i+Xt+Os+x+Ne+p+r+n+o+e,1,i+jo+qn+Ct+qe+p+r+n+o+e,1,i+jo+Zn+Ct+hg+p+r+n+o+e,1,l+Pr+Lr+Jt+np+at+p+r+n+o+e,1,l+Bi+Di+Jh+Jf+ey+p+r+n+o+e,1,l+ie+Fi+fl+yi+E+p+r+n+o+e,1,l+Ui+Gi+Ee+yi+E+p+r+n+o+e,1,l+Dd+yo+we+ci+E+p+r+n+o+e,1,l+_o+vo+Tn+ci+E+p+r+n+o+e,1,l+Ir+zi+qm+Co+E+p+r+n+o+e,1,l+Hi+qi+Rr+Co+E+p+r+n+o+e,1,l+Gp+wn+ut+lt+On+p+r+n+o+e,1,l+zp+xn+z+lt+bt+p+r+n+o+e,1,l+$c+Zi+Jt+_i+E+p+r+n+o+e,1,l+jr+Nr+X+_i+E+p+r+n+o+e,1,i+ti+Vo+sc+ye+p+r+n+o+e,3,l+Wi+Pd+Br+dn+Ld+p+r+n+o+e,1,l+bo+wo+ht+pn+E+p+r+n+o+e,1,l+Fd+xo+ei+Pt+E+p+r+n+o+e,1,l+Vi+tf+$t+Vc+E+p+r+n+o+e,1,l+Qi+ef+Zm+Au+R+st+r+n+o+e,1,l+Ki+Yi+Dr+yn+E+In+r+n+o+e,1,l+Xi+Ji+kn+Pt+pi+Io+r+n+o+e,1,l+$i+to+Fr+yu+E+tc+r+n+o+e,1,l+Je+$e+Sn+yn+at+Tu+r+n+o+e,1,l+kt+tn+Ue+oe+m+st+r+n+o+e,1,l+zl+en+mt+oe+m+In+r+n+o+e,1,l+Hl+nn+L+oe+m+Io+r+n+o+e,1,i+Lo+ec+Bl+m+p+r+n+o+e,1,l+Id+eo+$+Qo+Be+In+r+n+o+e,1,l+Yt+Ur+tt+Qo+Be+st+r+n+o+e,1,l+ie+Rd+fl+Wn+m+p+r+n+o+e,1,l+no+ro+Gr+lt+m+p+r+n+o+e,1,l+of+jg+wf+ms+E+p+r+n+o+e,1,l+ko+So+Vm+dn+E+p+r+n+o+e,1,l+io+oo+zr+He+E+p+r+n+o+e,1,l+cu+nf+ht+He+E+p+r+n+o+e,1,l+so+ao+Hp+He+E+p+r+n+o+e,1,i+Ke+rr+Ct+R+p+r+n+o+e,1,i+Ke+ir+Ct+V+ni+r+n+o+e,1,i+Ke+Dl+Ct+E+p+r+n+o+e,1,i+Ke+or+Ct+vn+ni+r+n+o+e,3,l+cs+fs+ds+Ho+R+Ka+r+n+o+e,3,i+f+yu+pt+B+p+r+n+h+e,1,i+f+fy+pt+B+p+r+n+h+e,1,i+f+gu+pt+B+p+r+n+h+e,1,i+f+dn+pt+B+p+r+n+h+e,14,i+f+" +lon_0=-53"+x+At+p+r+n+o+e,1,i+f+jS+x+At+p+r+n+o+e,1,i+f+K_+x+At+p+r+n+o+e,1,i+f+Dg+x+At+p+r+n+o+e,1,i+f+Fg+x+At+p+r+n+o+e,1,i+f+Y_+x+At+p+r+n+o+e,1,i+f+Ya+x+At+p+r+n+o+e,1,i+f+X_+x+At+p+r+n+o+e,1,i+f+J_+x+At+p+r+n+o+e,1,i+f+ms+x+At+p+r+n+o+e,1,i+f+ci+x+At+p+r+n+o+e,1,i+f+dn+x+At+p+r+n+o+e,1,i+f+Xf+x+At+p+r+n+o+e,1,i+f+gu+x+At+p+r+n+o+e,1,i+f+He+x+At+p+r+n+o+e,1,i+f+fy+x+At+p+r+n+o+e,1,i+f+$d+x+At+p+r+n+o+e,1,l+wv+ud+hl+Ys+Z+p+r+n+o+e,1,l+Je+$e+" +lat_0=25.5"+Pe+xe+p+r+n+o+e,2,u+Oy+b+g+o+e,1,u+F_+b+g+o+e,1,u+ak+b+g+o+e,1,u+z_+b+g+o+e,1,u+Cg+b+g+o+e,1,u+ly+b+g+o+e,1,u+Tg+b+g+o+e,1,u+U_+b+g+o+e,1,u+G_+b+g+o+e,1,u+Cm+b+g+o+e,1,u+bd+b+g+o+e,1,u+wd+b+g+o+e,1,u+xd+b+g+o+e,1,u+Sd+b+g+o+e,1,u+Zf+b+g+o+e,1,u+Wf+b+g+o+e,1,u+wl+b+g+o+e,1,u+Ga+b+g+o+e,1,u+wa+b+g+o+e,1,u+Us+b+g+o+e,1,u+za+b+g+o+e,1,u+Ml+b+g+o+e,1,u+Lc+b+g+o+e,1,u+Md+b+g+o+e,1,u+vd+b+g+o+e,1,u+_p+b+g+o+e,1,u+Py+b+g+o+e,1,u+uu+b+g+o+e,1,u+ju+b+g+o+e,1,u+gp+b+g+o+e,1,u+Em+b+g+o+e,1,u+Yl+b+g+o+e,1,u+Bu+b+g+o+e,1,u+Vf+b+g+o+e,1,u+mh+b+g+o+e,1,u+uf+b+g+o+e,1,u+Du+b+g+o+e,1,u+lu+b+g+o+e,1,u+Kl+b+g+o+e,1,u+lf+b+g+o+e,1,u+Kg+b+g+o+e,1,u+Yg+b+g+o+e,1,u+Ry+b+g+o+e,1,u+V_+b+g+o+e,1,u+Q_+b+g+o+e,1,u+Tm+b+g+o+e,1,u+Ad+b+g+o+e,1,u+cf+b+g+o+e,1,u+ff+b+g+o+e,1,u+Qf+b+g+o+e,1,u+hf+b+g+o+e,1,u+Kf+b+g+o+e,1,u+vp+b+g+o+e,1,u+kd+b+g+o+e,1,u+Dp+b+g+o+e,1,u+Jg+b+g+o+e,1,u+Ly+b+g+o+e,1,u+Pc+b+g+o+e,1,u+_d+b+g+o+e,1,u+Bp+b+g+o+e,41,u+Oy+G+b+g+o+e,1,u+F_+G+b+g+o+e,1,u+ak+G+b+g+o+e,1,u+z_+G+b+g+o+e,1,u+Cg+G+b+g+o+e,1,u+ly+G+b+g+o+e,1,u+Tg+G+b+g+o+e,1,u+U_+G+b+g+o+e,1,u+G_+G+b+g+o+e,1,u+Cm+G+b+g+o+e,1,u+bd+G+b+g+o+e,1,u+wd+G+b+g+o+e,1,u+xd+G+b+g+o+e,1,u+Sd+G+b+g+o+e,1,u+Zf+G+b+g+o+e,1,u+Wf+G+b+g+o+e,1,u+wl+G+b+g+o+e,1,u+Ga+G+b+g+o+e,1,u+wa+G+b+g+o+e,1,u+Us+G+b+g+o+e,1,u+za+G+b+g+o+e,1,u+Ml+G+b+g+o+e,1,u+Lc+G+b+g+o+e,1,u+Md+G+b+g+o+e,1,u+vd+G+b+g+o+e,1,u+_p+G+b+g+o+e,1,u+Py+G+b+g+o+e,1,u+uu+G+b+g+o+e,1,u+ju+G+b+g+o+e,1,u+gp+G+b+g+o+e,1,u+Em+G+b+g+o+e,1,u+Yl+G+b+g+o+e,1,u+Bu+G+b+g+o+e,1,u+Vf+G+b+g+o+e,1,u+mh+G+b+g+o+e,1,u+uf+G+b+g+o+e,1,u+Du+G+b+g+o+e,1,u+lu+G+b+g+o+e,1,u+Kl+G+b+g+o+e,1,u+lf+G+b+g+o+e,1,u+Kg+G+b+g+o+e,1,u+Yg+G+b+g+o+e,1,u+Ry+G+b+g+o+e,1,u+V_+G+b+g+o+e,1,u+Q_+G+b+g+o+e,1,u+Tm+G+b+g+o+e,1,u+Ad+G+b+g+o+e,1,u+cf+G+b+g+o+e,1,u+ff+G+b+g+o+e,1,u+Qf+G+b+g+o+e,1,u+hf+G+b+g+o+e,1,u+Kf+G+b+g+o+e,1,u+vp+G+b+g+o+e,1,u+kd+G+b+g+o+e,1,u+Dp+G+b+g+o+e,1,u+Jg+G+b+g+o+e,1,u+Ly+G+b+g+o+e,1,u+Pc+G+b+g+o+e,1,u+_d+G+b+g+o+e,1,u+Bp+G+b+g+o+e,41,u+Oy+b+y+o+e,1,u+F_+b+y+o+e,1,u+ak+b+y+o+e,1,u+z_+b+y+o+e,1,u+Cg+b+y+o+e,1,u+ly+b+y+o+e,1,u+Tg+b+y+o+e,1,u+U_+b+y+o+e,1,u+G_+b+y+o+e,1,u+Cm+b+y+o+e,1,u+bd+b+y+o+e,1,u+wd+b+y+o+e,1,u+xd+b+y+o+e,1,u+Sd+b+y+o+e,1,u+Zf+b+y+o+e,1,u+Wf+b+y+o+e,1,u+wl+b+y+o+e,1,u+Ga+b+y+o+e,1,u+wa+b+y+o+e,1,u+Us+b+y+o+e,1,u+za+b+y+o+e,1,u+Ml+b+y+o+e,1,u+Lc+b+y+o+e,1,u+Md+b+y+o+e,1,u+vd+b+y+o+e,1,u+_p+b+y+o+e,1,u+Py+b+y+o+e,1,u+uu+b+y+o+e,1,u+ju+b+y+o+e,1,u+gp+b+y+o+e,1,u+Em+b+y+o+e,1,u+Yl+b+y+o+e,1,u+Bu+b+y+o+e,1,u+Vf+b+y+o+e,1,u+mh+b+y+o+e,1,u+uf+b+y+o+e,1,u+Du+b+y+o+e,1,u+lu+b+y+o+e,1,u+Kl+b+y+o+e,1,u+lf+b+y+o+e,1,u+Kg+b+y+o+e,1,u+Yg+b+y+o+e,1,u+Ry+b+y+o+e,1,u+V_+b+y+o+e,1,u+Q_+b+y+o+e,1,u+Tm+b+y+o+e,1,u+Ad+b+y+o+e,1,u+cf+b+y+o+e,1,u+ff+b+y+o+e,1,u+Qf+b+y+o+e,1,u+hf+b+y+o+e,1,u+Kf+b+y+o+e,1,u+vp+b+y+o+e,1,u+kd+b+y+o+e,1,u+Dp+b+y+o+e,1,u+Jg+b+y+o+e,1,u+Ly+b+y+o+e,1,u+Pc+b+y+o+e,1,u+_d+b+y+o+e,1,u+Bp+b+y+o+e,41,u+Oy+G+b+y+o+e,1,u+F_+G+b+y+o+e,1,u+ak+G+b+y+o+e,1,u+z_+G+b+y+o+e,1,u+Cg+G+b+y+o+e,1,u+ly+G+b+y+o+e,1,u+Tg+G+b+y+o+e,1,u+U_+G+b+y+o+e,1,u+G_+G+b+y+o+e,1,u+Cm+G+b+y+o+e,1,u+bd+G+b+y+o+e,1,u+wd+G+b+y+o+e,1,u+xd+G+b+y+o+e,1,u+Sd+G+b+y+o+e,1,u+Zf+G+b+y+o+e,1,u+Wf+G+b+y+o+e,1,u+wl+G+b+y+o+e,1,u+Ga+G+b+y+o+e,1,u+wa+G+b+y+o+e,1,u+Us+G+b+y+o+e,1,u+za+G+b+y+o+e,1,u+Ml+G+b+y+o+e,1,u+Lc+G+b+y+o+e,1,u+Md+G+b+y+o+e,1,u+vd+G+b+y+o+e,1,u+_p+G+b+y+o+e,1,u+Py+G+b+y+o+e,1,u+uu+G+b+y+o+e,1,u+ju+G+b+y+o+e,1,u+gp+G+b+y+o+e,1,u+Em+G+b+y+o+e,1,u+Yl+G+b+y+o+e,1,u+Bu+G+b+y+o+e,1,u+Vf+G+b+y+o+e,1,u+mh+G+b+y+o+e,1,u+uf+G+b+y+o+e,1,u+Du+G+b+y+o+e,1,u+lu+G+b+y+o+e,1,u+Kl+G+b+y+o+e,1,u+lf+G+b+y+o+e,1,u+Kg+G+b+y+o+e,1,u+Yg+G+b+y+o+e,1,u+Ry+G+b+y+o+e,1,u+V_+G+b+y+o+e,1,u+Q_+G+b+y+o+e,1,u+Tm+G+b+y+o+e,1,u+Ad+G+b+y+o+e,1,u+cf+G+b+y+o+e,1,u+ff+G+b+y+o+e,1,u+Qf+G+b+y+o+e,1,u+hf+G+b+y+o+e,1,u+Kf+G+b+y+o+e,1,u+vp+G+b+y+o+e,1,u+kd+G+b+y+o+e,1,u+Dp+G+b+y+o+e,1,u+Jg+G+b+y+o+e,1,u+Ly+G+b+y+o+e,1,u+Pc+G+b+y+o+e,1,u+_d+G+b+y+o+e,1,u+Bp+G+b+y+o+e,41,u+Oy+v+o+e,1,u+F_+v+o+e,1,u+ak+v+o+e,1,u+z_+v+o+e,1,u+Cg+v+o+e,1,u+ly+v+o+e,1,u+Tg+v+o+e,1,u+U_+v+o+e,1,u+G_+v+o+e,1,u+Cm+v+o+e,1,u+bd+v+o+e,1,u+wd+v+o+e,1,u+xd+v+o+e,1,u+Sd+v+o+e,1,u+Zf+v+o+e,1,u+Wf+v+o+e,1,u+wl+v+o+e,1,u+Ga+v+o+e,1,u+wa+v+o+e,1,u+Us+v+o+e,1,u+za+v+o+e,1,u+Ml+v+o+e,1,u+Lc+v+o+e,1,u+Md+v+o+e,1,u+vd+v+o+e,1,u+_p+v+o+e,1,u+Py+v+o+e,1,u+uu+v+o+e,1,u+ju+v+o+e,1,u+gp+v+o+e,1,u+Em+v+o+e,1,u+Yl+v+o+e,1,u+Bu+v+o+e,1,u+Vf+v+o+e,1,u+mh+v+o+e,1,u+uf+v+o+e,1,u+Du+v+o+e,1,u+lu+v+o+e,1,u+Kl+v+o+e,1,u+lf+v+o+e,1,u+Kg+v+o+e,1,u+Yg+v+o+e,1,u+Ry+v+o+e,1,u+V_+v+o+e,1,u+Q_+v+o+e,1,u+Tm+v+o+e,1,u+Ad+v+o+e,1,u+cf+v+o+e,1,u+ff+v+o+e,1,u+Qf+v+o+e,1,u+hf+v+o+e,1,u+Kf+v+o+e,1,u+vp+v+o+e,1,u+kd+v+o+e,1,u+Dp+v+o+e,1,u+Jg+v+o+e,1,u+Ly+v+o+e,1,u+Pc+v+o+e,1,u+_d+v+o+e,1,u+Bp+v+o+e,1,fe+Oa+lg+ta+Xg+Ae+In+v+o+e,3,i+f+yu+pt+B+p+v+h+e,1,i+f+fy+pt+B+p+v+h+e,1,i+f+gu+pt+B+p+v+h+e,1,i+f+dn+pt+B+p+v+h+e,34,u+Oy+G+v+o+e,1,u+F_+G+v+o+e,1,u+ak+G+v+o+e,1,u+z_+G+v+o+e,1,u+Cg+G+v+o+e,1,u+ly+G+v+o+e,1,u+Tg+G+v+o+e,1,u+U_+G+v+o+e,1,u+G_+G+v+o+e,1,u+Cm+G+v+o+e,1,u+bd+G+v+o+e,1,u+wd+G+v+o+e,1,u+xd+G+v+o+e,1,u+Sd+G+v+o+e,1,u+Zf+G+v+o+e,1,u+Wf+G+v+o+e,1,u+wl+G+v+o+e,1,u+Ga+G+v+o+e,1,u+wa+G+v+o+e,1,u+Us+G+v+o+e,1,u+za+G+v+o+e,1,u+Ml+G+v+o+e,1,u+Lc+G+v+o+e,1,u+Md+G+v+o+e,1,u+vd+G+v+o+e,1,u+_p+G+v+o+e,1,u+Py+G+v+o+e,1,u+uu+G+v+o+e,1,u+ju+G+v+o+e,1,u+gp+G+v+o+e,1,u+Em+G+v+o+e,1,u+Yl+G+v+o+e,1,u+Bu+G+v+o+e,1,u+Vf+G+v+o+e,1,u+mh+G+v+o+e,1,u+uf+G+v+o+e,1,u+Du+G+v+o+e,1,u+lu+G+v+o+e,1,u+Kl+G+v+o+e,1,u+lf+G+v+o+e,1,u+Kg+G+v+o+e,1,u+Yg+G+v+o+e,1,u+Ry+G+v+o+e,1,u+V_+G+v+o+e,1,u+Q_+G+v+o+e,1,u+Tm+G+v+o+e,1,u+Ad+G+v+o+e,1,u+cf+G+v+o+e,1,u+ff+G+v+o+e,1,u+Qf+G+v+o+e,1,u+hf+G+v+o+e,1,u+Kf+G+v+o+e,1,u+vp+G+v+o+e,1,u+kd+G+v+o+e,1,u+Dp+G+v+o+e,1,u+Jg+G+v+o+e,1,u+Ly+G+v+o+e,1,u+Pc+G+v+o+e,1,u+_d+G+v+o+e,1,u+Bp+G+v+o+e,1,fe+F+" +lat_ts=-90"+ta+Xg+Ae+In+v+o+e,5,i+f+Fp+pt+m+jt+v+o+e].reduce(((t,e,n)=>{if(n%2===0){const n=t.prev+e,r="EPSG:"+n;t.defs.push([r]),t.prev=n}else t.defs[t.defs.length-1].push(e);return t}),{defs:[],prev:0}).defs},5192:function(t){function e(t){return t}function n(t,e,n,r,i){return n+r*(i-t)/e}function r(t,e,n,r,i){return n-r*(i-t)/e}function i(t,e,n,r,i){return Math.round(n+r*(i-t)/e)}function o(t,e,n,r,i){return Math.round(n-r*(i-t)/e)}function s([t,s],[a,l],{flip:u,no_range_value:h,no_range_value_strategy:c="highest",round:f=!1}={}){const d=s-t,p=l-a;if(0===d){if("number"===typeof h)return e.bind(null,h);if("highest"===c)return e.bind(null,l);if("lowest"===c)return e.bind(null,a);if("middle"===c){let t=(l-a)/2;return f&&(t=Math.round(t)),e.bind(null,t)}}return u?f?o.bind(null,t,d,l,p):r.bind(null,t,d,l,p):f?i.bind(null,t,d,a,p):n.bind(null,t,d,a,p)}function a(t,...e){return create(e)(t)}const l={_identity:e,_scale:a,_scale_number:n,_scale_and_flip_number:r,_scale_and_round_number:i,_scale_and_flip_and_round_number:o,createScaleFunction:s};t.exports=l,"object"===typeof window&&(window.quickScale=l),"object"===typeof self&&(self.quickScale=l)},65572:function(t,e,n){var r;function i({bbox:t,reproject:e}){const[n,r,i,o]=t,s=e([n,o]),a=e([i,o]),l=e([n,r]),u=e([i,r]),h=[s,a,l,u],c=h.map((t=>t[0])),f=h.map((t=>t[1]));return[Math.min(...c),Math.min(...f),Math.max(...c),Math.max(...f)]}r=function(){return i}.call(e,n,e,t),void 0===r||(t.exports=r),t.exports=i,t.exports["default"]=i,"object"===typeof window&&(window.reprojectBoundingBoxPluggable=i),"object"===typeof self&&(self.reprojectBoundingBoxPluggable=i)},56688:function(t,e,n){var r;const i=n(66056),o=n(74972),s=n(65572);function a({bbox:t,from:e,proj4:n,to:r}){"number"===typeof e&&(e="EPSG:"+e),"number"===typeof r&&(r="EPSG:"+r);const a=[n,o];"object"===typeof window&&window.proj4&&a.push(window.proj4),"object"===typeof self&&self.proj4&&a.push(self.proj4);const l=i(a),u=l(e,r).forward;return s({bbox:t,reproject:u})}"function"!==typeof i&&console.warn("[reproject-bbox] failed to import proj4-merge"),r=function(){return a}.call(e,n,e,t),void 0===r||(t.exports=r),t.exports=a,t.exports["default"]=a,"object"===typeof window&&(window.reprojectBoundingBox=a),"object"===typeof self&&(self.reprojectBoundingBox=a)},69496:function(t,e,n){let r=n(17216);const i=n(38776);"object"===typeof r&&"function"!==typeof r.defs&&"function"===typeof r.default&&(r=r.default),r.defs(i),t.exports=r},88036:function(t,e,n){var r;const i=n(67940);function o(t,{reproject:e}){if("function"!==typeof e)throw new Error("[reproject-geojson] you must specify a reproject function");if("FeatureCollection"===t.type)return{...t,features:t.features.map((t=>o(t,{reproject:e})))};if("Feature"===t.type)return{...t,geometry:o(t.geometry,{reproject:e})};if("LineString"===t.type)return{...t,coordinates:t.coordinates.map((t=>e(t)))};if("MultiLineString"===t.type)return{...t,coordinates:t.coordinates.map((t=>t.map((t=>e(t)))))};if("MultiPoint"===t.type)return{...t,coordinates:t.coordinates.map((t=>e(t)))};if("MultiPolygon"===t.type)return{...t,coordinates:t.coordinates.map((t=>t.map((t=>t.map((t=>e(t)))))))};if("Point"===t.type)return{...t,coordinates:e(t.coordinates)};if("Polygon"===t.type)return{...t,coordinates:t.coordinates.map((t=>t.map((t=>e(t)))))};if(Array.isArray(t)){const n=i(t);if(1===n)return e(t);if(2===n)return t.map((t=>e(t)));if(3===n)return t.map((t=>t.map((t=>e(t)))));if(4===n)return t.map((t=>t.map((t=>t.map((t=>e(t)))))))}return t}r=function(){return o}.call(e,n,e,t),void 0===r||(t.exports=r),t.exports=o,"object"===typeof window&&(window.reprojectGeoJSONPluggable=o),"object"===typeof self&&(self.reprojectGeoJSONPluggable=o)},46696:function(t,e,n){var r;const i=n(69496),o=n(88036);function s(t,{from:e="EPSG:4326",in_place:n=!1,to:r="EPSG:4326"}){return("number"===typeof e||e.match(/^\d+$/))&&(e="EPSG:"+e),("number"===typeof r||r.match(/^\d+$/))&&(r="EPSG:"+r),o(t,{in_place:n,reproject:i(e,r).forward})}r=function(){return s}.call(e,n,e,t),void 0===r||(t.exports=r),t.exports=s,"object"===typeof window&&(window.reprojectGeoJSON=s),"object"===typeof self&&(self.reprojectGeoJSON=s)},48540:function(t,e,n){var r;function i({segments:t,min:e=-1/0,max:n=1/0,debug:r=!1}){if(r&&console.log("[segflip] segs:",t),void 0===t||null===t||Array.isArray(t)&&0===t.length)return r&&console.log("[segflip] segments are empty so return the whole row flipped"),[[e,n]];const i=t.map((([t,e])=>[t-1,e+1])).flat();i.unshift(e),i.push(n),r&&console.log("flattened nums:",i);const o=[];for(let s=1;se||o.push([t,e])}return o}r=function(){return i}.call(e,n,e,t),void 0===r||(t.exports=r),t.exports=i,"object"===typeof window&&(window.segflip=i),"object"===typeof self&&(self.segflip=i)},59512:function(t){t.exports=({bbox:t,container:e,debug:n,origin:r,padding:i,scale:o})=>{n&&console.log("[snap-bbox] starting"),n&&console.log("[snap-bbox] bbox:",t),n&&console.log("[snap-bbox] debug:",n),n&&console.log("[snap-bbox] origin:",r),n&&console.log("[snap-bbox] padding:",i),n&&console.log("[snap-bbox] scale:",o);const[s,a]=r;n&&console.log("[snap-bbox] originX:",s),n&&console.log("[snap-bbox] originY:",a);const[l,u]=i||[0,0];n&&console.log("[snap-bbox] padX:",l),n&&console.log("[snap-bbox] padY:",u);const[h,c]=o;n&&console.log("[snap-bbox] scale_x:",h),n&&console.log("[snap-bbox] scale_y:",c);const f=Math.sign(h),d=Math.sign(c);n&&console.log("[snap-bbox] sign_scale_x:",f),n&&console.log("[snap-bbox] sign_scale_y:",d);const[p,m,g,y]=t;n&&console.log("[snap-bbox] xmin:",p),n&&console.log("[snap-bbox] ymin:",m),n&&console.log("[snap-bbox] xmax:",g),n&&console.log("[snap-bbox] ymax:",y);const _=(p-s)/h,v=(g-s)/h,b=(y-a)/c,w=(m-a)/c;n&&console.log("[snap-bbox] left:",_),n&&console.log("[snap-bbox] right:",v),n&&console.log("[snap-bbox] top:",b),n&&console.log("[snap-bbox] bottom:",w);let x=Math.floor(_)-l,k=Math.ceil(v)+l,S=Math.floor(b)-u,M=Math.ceil(w)+u;if(n&&console.log("[snap-bbox] left_int:",x),n&&console.log("[snap-bbox] right_int:",k),n&&console.log("[snap-bbox] top_int:",S),n&&console.log("[snap-bbox] bottom_int:",M),e){n&&console.log("[snap-bbox] container:",e);const t=(e[0]-s)/h,r=(e[2]-s)/h,i=(e[3]-a)/c,o=(e[1]-a)/c;n&&console.log("[snap-bbox] min_left:",t),n&&console.log("[snap-bbox] max_right:",r),n&&console.log("[snap-bbox] min_top:",i),n&&console.log("[snap-bbox] max_bottom:",o);const l=Math.ceil(t),u=Math.floor(r),f=Math.ceil(i),d=Math.floor(o);n&&console.log("[snap-bbox] min_left_int:",l),n&&console.log("[snap-bbox] max_right_int:",u),n&&console.log("[snap-bbox] min_top_int:",f),n&&console.log("[snap-bbox] max_bottom_int:",d),x=Math.max(x,l),k=Math.min(k,u),S=Math.max(S,f),M=Math.min(M,d),n&&console.log("[snap-bbox] after containment, left_int:",x),n&&console.log("[snap-bbox] after containment, right_int:",k),n&&console.log("[snap-bbox] after containment, top_int:",S),n&&console.log("[snap-bbox] after containment, bottom_int:",M)}const A=[0===x?0:x,0===M?0:M,0===k?0:k,0===S?0:S];n&&console.log("[snap-bbox] bbox_in_grid_cells:",A);const E=[s+x*h,a+M*c,s+k*h,a+S*c];return{bbox_in_coordinate_system:E,bbox_in_grid_cells:A}}},44336:function(t){t.exports=function(t){const e=t.toString();return e.startsWith("326")?"N":e.startsWith("327")?"S":void 0}},90096:function(t,e,n){const r=n(3248),i=n(44336);t.exports=function(t){const e=r(t),n=i(t);return`+proj=utm +zone=${e}${"S"===n?" +south ":" "}+ellps=WGS84 +datum=WGS84 +units=m +no_defs`}},3248:function(t){t.exports=function(t){return Number.parseInt(t.toString().substring(3))}},22288:function(t){t.exports=function(t){const e=t.toString();return e.startsWith("326")||e.startsWith("327")}},52108:function(t){t.exports={1:function({point:t}){const e=this.data,n=t[this.d0v0];return{parent:e,index:n,value:e[n]}},2:function({point:t}){const e=this.data,n=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1];return{parent:e,index:n,value:e[n]}},3:function({point:t}){const e=this.data,n=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2];return{parent:e,index:n,value:e[n]}},4:function({point:t}){const e=this.data,n=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3];return{parent:e,index:n,value:e[n]}},5:function({point:t}){const e=this.data,n=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]+this.m0v4*t[this.d0v4];return{parent:e,index:n,value:e[n]}},"1,1":function({point:t}){const e=this.data[t[this.d0v0]],n=t[this.d1v0];return{parent:e,index:n,value:e[n]}},"1,2":function({point:t}){const e=this.data[t[this.d0v0]],n=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1];return{parent:e,index:n,value:e[n]}},"1,3":function({point:t}){const e=this.data[t[this.d0v0]],n=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2];return{parent:e,index:n,value:e[n]}},"1,4":function({point:t}){const e=this.data[t[this.d0v0]],n=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3];return{parent:e,index:n,value:e[n]}},"1,5":function({point:t}){const e=this.data[t[this.d0v0]],n=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]+this.m1v4*t[this.d1v4];return{parent:e,index:n,value:e[n]}},"1,1,1":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],n=t[this.d2v0];return{parent:e,index:n,value:e[n]}},"1,1,2":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],n=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1];return{parent:e,index:n,value:e[n]}},"1,1,3":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],n=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2];return{parent:e,index:n,value:e[n]}},"1,1,4":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],n=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3];return{parent:e,index:n,value:e[n]}},"1,1,5":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],n=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]+this.m2v4*t[this.d2v4];return{parent:e,index:n,value:e[n]}},"1,1,1,1":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],n=t[this.d3v0];return{parent:e,index:n,value:e[n]}},"1,1,1,2":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],n=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1];return{parent:e,index:n,value:e[n]}},"1,1,1,3":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],n=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2];return{parent:e,index:n,value:e[n]}},"1,1,1,4":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],n=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3];return{parent:e,index:n,value:e[n]}},"1,1,1,5":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],n=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]+this.m3v4*t[this.d3v4];return{parent:e,index:n,value:e[n]}},"1,1,1,1,1":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],n=t[this.d4v0];return{parent:e,index:n,value:e[n]}},"1,1,1,1,2":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],n=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1];return{parent:e,index:n,value:e[n]}},"1,1,1,1,3":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],n=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2];return{parent:e,index:n,value:e[n]}},"1,1,1,1,4":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],n=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3];return{parent:e,index:n,value:e[n]}},"1,1,1,1,5":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],n=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]+this.m4v4*t[this.d4v4];return{parent:e,index:n,value:e[n]}}}},13752:function(t){t.exports={1:function({point:t,value:e}){this.data[t[this.d0v0]]=e},2:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]]=e},3:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]]=e},4:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]]=e},5:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]+this.m0v4*t[this.d0v4]]=e},"1,1":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]]=e},"1,2":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]]=e},"1,3":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]]=e},"1,4":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]]=e},"1,5":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]+this.m1v4*t[this.d1v4]]=e},"1,1,1":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]]=e},"1,1,2":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]]=e},"1,1,3":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]]=e},"1,1,4":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]]=e},"1,1,5":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]+this.m2v4*t[this.d2v4]]=e},"1,1,1,1":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]]=e},"1,1,1,2":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]]=e},"1,1,1,3":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]]=e},"1,1,1,4":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]]=e},"1,1,1,5":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]+this.m3v4*t[this.d3v4]]=e},"1,1,1,1,1":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][t[this.d4v0]]=e},"1,1,1,1,2":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]]=e},"1,1,1,1,3":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]]=e},"1,1,1,1,4":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]]=e},"1,1,1,1,5":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]+this.m4v4*t[this.d4v4]]=e}}},25336:function(t,e,n){const r={},{wrapNextFunction:i}=n(89027),o=n(52108),s=n(13752),a={Array:Array,Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Float32Array:Float32Array,Float64Array:Float64Array};try{a.BigInt64Array=BigInt64Array,a.BigUint64Array=BigUint64Array}catch(O){}function l(t){const e={},n=/[A-Za-z]+/g;let r;while(null!==(r=n.exec(t))){const[t]=r;e[t]={name:t}}return e}const u=t=>t.match(/\[[^\]]+\]/g),h=t=>t.startsWith("[")&&t.endsWith("]")?t.substring(1,t.length-1):t,c=t=>t.startsWith("(")&&t.endsWith(")")?t.substring(1,t.length-1):t,f=t=>t.match(/(\(.*?\)|[^\(,\s]+)(?=\s*,|\s*$)/g),d=t=>{t=h(t),t=c(t);const e=f(t);return 1===e.length?{type:"Vector",dim:e[0]}:{type:"Matrix",parts:e.map(d)}};function p(t){const e=t.match(/[^ A-Za-z,\[\]]/g);if(e)throw new Error("The following invalid characters were used: "+e.map((t=>`"${t}"`)).join(", "));return!0}function m(t,{useLayoutCache:e=!0}={useLayoutCache:!0}){if(e&&t in r)return r[t];p(t);const n=u(t),i=n.map(d),o={type:"Layout",summary:i.map((t=>"Matrix"===t.type?t.parts.length:1)),dims:i};return e&&(r[t]=o),o}function g({useLayoutCache:t=!0,data:e,layout:n,point:r,sizes:i={},value:o}){"string"===typeof n&&(n=m(n,{useLayoutCache:t}));const{dims:s}=n;for(let a=0;a=0;n--){const o=t[n],{dim:s}=o;if(l+=e*r[s],n>0){if(!(s in i))throw new Error(`you cannot calculate the location without knowing the size of the "${s}" dimension.`);e*=i[s]}}}t?e[l]=o:e=e[l]}}function y({useLayoutCache:t=!0,data:e,layout:n,sizes:r={}}){"string"===typeof n&&(n=m(n,{useLayoutCache:t}));const{dims:i}=n,o=i.length,a=w({useLayoutCache:t,layout:n,sizes:r}),l=o-1,u=n.summary.toString();if(u in s){const t={data:e};return n.dims.map(((e,n)=>{"Vector"===e.type?t[`d${n}v0`]=e.dim:"Matrix"===e.type&&e.parts.forEach(((e,r)=>{t[`d${n}v${r}`]=e.dim,t[`m${n}v${r}`]=a[e.dim]}))})),s[u].bind(t)}return({point:t,value:n})=>{let r=e;for(let e=0;ee+a[n]*t[n]),0),o?r[u]=n:r=r[u]}}}function _({data:t,layout:e,order:n,rect:r={},sizes:o={},useLayoutCache:s=!0}){if(!t)throw new Error("[xdim] must specify data");if(!e)throw new Error("[xdim] must specify layout");const a=C({order:n,sizes:o,rect:r});return i((function(){const{value:n,done:r}=a.next();if(r)return{done:!0};{const{value:r}=k({data:t,layout:e,point:n,sizes:o,useLayoutCache:s});return{done:!1,value:r}}}))}function v({rect:t={}}){if(t)for(let e in t){const n=t[e];if(2!==n.length)throw new Error("[xdim] uh oh. invalid hyper-rectangle");const[r,i]=n;if(r>i)throw new Error(`[xdim] uh oh. invalid range for "${e}". Start of ${r} can't be greater than end of ${i}.`);if(r<0)throw new Error(`[xdim] uh oh. invalid hyper-rectangle with start ${r}`)}}function b({useLayoutCache:t=!0,data:e,layout:n,rect:r,sizes:i={},flat:o=!1,validate:s=!0}){s&&v({rect:r}),"string"===typeof n&&(n=m(n,{useLayoutCache:t}));let a=[e];if(n.dims.forEach((t=>{let e=[];a.forEach((n=>{if("Vector"===t.type){const[i,o]=r[t.dim];e=e.concat(n.slice(i,o+1))}else{const{parts:o}=t;let s=[0],a=1;for(let t=o.length-1;t>=0;t--){const e=o[t],{dim:n}=e,[l,u]=r[n],h=[];for(let t=l;t<=u;t++)s.forEach((e=>{h.push(e+a*t)}));s=h,a*=i[n]}s.forEach((t=>{e.push(n[t])}))}})),a=e})),o)return{data:a};const l=Object.fromEntries(Object.entries(r).map((([t,[e,n]])=>[t,n-e+1]))),{data:u}=A({layout:n,sizes:l}),h=n.dims.length,c=(t,e)=>{if(e===h)for(let n=0;nc(t,e+1)))};return c(u,1),{data:u}}function w({useLayoutCache:t=!0,layout:e,sizes:n}){"string"===typeof e&&(e=m(e,{useLayoutCache:t}));const{dims:r}=e,i=r.length;let o={};for(let s=0;s=0;t--){const{dim:i}=e[t];o[i]=r,r*=n[e[t].dim]}}}return o}function x({useLayoutCache:t=!0,data:e,layout:n,sizes:r={}}){"string"===typeof n&&(n=m(n,{useLayoutCache:t}));const{dims:i}=n,s=i.length,a=w({useLayoutCache:t,layout:n,sizes:r}),l=s-1,u=n.summary.toString();if(u in o){const t={data:e};return n.dims.map(((e,n)=>{"Vector"===e.type?t[`d${n}v0`]=e.dim:"Matrix"===e.type&&e.parts.forEach(((e,r)=>{t[`d${n}v${r}`]=e.dim,t[`m${n}v${r}`]=a[e.dim]}))})),o[u].bind(t)}return({point:t})=>{let n=e;for(let e=0;ee+a[n]*t[n]),0),r)return{index:s,parent:n,value:n[s]};n=n[s]}}}function k({useLayoutCache:t=!0,data:e,layout:n,point:r,sizes:i={}}){let o,s;"string"===typeof n&&(n=m(n,{useLayoutCache:t}));let a=e;const{dims:l}=n,u=l.length;for(let h=0;h=0;t--){const o=e[t];if("Vector"===o.type){const{dim:e}=o;if(n+=l*r[e],t>0){if(!(e in i))throw new Error(`you cannot calculate the location without knowing the size of the "${e}" dimension.`);l*=i[e]}}}o=a,s=n,a=a[n]}}return{index:s,value:a,parent:o}}function S({arr:t,fill:e,lens:n,arrayTypes:r}){if(0===n.length)return t;const i=n[0];if(1===n.length){const n=r?r[r.length-1]:"Array";for(let r=0;r"Vector"===t.type?r[t.dim]:"Matrix"===t.type?t.parts.reduce(((t,e)=>{if(!(e.dim in r))throw new Error(`[xdim] could not find "${e.dim}" in sizes: { ${Object.keys(r).join(", ")} }`);return t*r[e.dim]}),1):void 0)),s=M({fill:t,shape:o,arrayTypes:i});return{data:s,shape:o,arrayTypes:i}}function E({start:t=0,end:e=100}){let n=t-1;return e+=1,i((function(){return n++,n===e?{done:!0}:{done:!1,value:n}}))}function C({order:t,sizes:e,rect:n={}}){const r=Array.isArray(t)?t:Object.keys(e).sort(((t,n)=>e[t]-e[n])),o=new Array(r.length),s={};for(let i=0;i=0;t--){const{value:i,done:a}=o[t].next();if(!a){for(let i=t+1;i} tile\n * @returns {Array} bbox\n * @example\n * var bbox = tileToBBOX([5, 10, 10])\n * //=bbox\n */\nfunction tileToBBOX(tile) {\n var e = tile2lon(tile[0] + 1, tile[2]);\n var w = tile2lon(tile[0], tile[2]);\n var s = tile2lat(tile[1] + 1, tile[2]);\n var n = tile2lat(tile[1], tile[2]);\n return [w, s, e, n];\n}\n\n/**\n * Get a geojson representation of a tile\n *\n * @name tileToGeoJSON\n * @param {Array} tile\n * @returns {Feature}\n * @example\n * var poly = tileToGeoJSON([5, 10, 10])\n * //=poly\n */\nfunction tileToGeoJSON(tile) {\n var bbox = tileToBBOX(tile);\n var poly = {\n type: 'Polygon',\n coordinates: [[\n [bbox[0], bbox[3]],\n [bbox[0], bbox[1]],\n [bbox[2], bbox[1]],\n [bbox[2], bbox[3]],\n [bbox[0], bbox[3]]\n ]]\n };\n return poly;\n}\n\nfunction tile2lon(x, z) {\n return x / Math.pow(2, z) * 360 - 180;\n}\n\nfunction tile2lat(y, z) {\n var n = Math.PI - 2 * Math.PI * y / Math.pow(2, z);\n return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n}\n\n/**\n * Get the tile for a point at a specified zoom level\n *\n * @name pointToTile\n * @param {number} lon\n * @param {number} lat\n * @param {number} z\n * @returns {Array} tile\n * @example\n * var tile = pointToTile(1, 1, 20)\n * //=tile\n */\nfunction pointToTile(lon, lat, z) {\n var tile = pointToTileFraction(lon, lat, z);\n tile[0] = Math.floor(tile[0]);\n tile[1] = Math.floor(tile[1]);\n return tile;\n}\n\n/**\n * Get the 4 tiles one zoom level higher\n *\n * @name getChildren\n * @param {Array} tile\n * @returns {Array>} tiles\n * @example\n * var tiles = getChildren([5, 10, 10])\n * //=tiles\n */\nfunction getChildren(tile) {\n return [\n [tile[0] * 2, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2, tile[2 ] + 1],\n [tile[0] * 2 + 1, tile[1] * 2 + 1, tile[2] + 1],\n [tile[0] * 2, tile[1] * 2 + 1, tile[2] + 1]\n ];\n}\n\n/**\n * Get the tile one zoom level lower\n *\n * @name getParent\n * @param {Array} tile\n * @returns {Array} tile\n * @example\n * var tile = getParent([5, 10, 10])\n * //=tile\n */\nfunction getParent(tile) {\n return [tile[0] >> 1, tile[1] >> 1, tile[2] - 1];\n}\n\nfunction getSiblings(tile) {\n return getChildren(getParent(tile));\n}\n\n/**\n * Get the 3 sibling tiles for a tile\n *\n * @name getSiblings\n * @param {Array} tile\n * @returns {Array>} tiles\n * @example\n * var tiles = getSiblings([5, 10, 10])\n * //=tiles\n */\nfunction hasSiblings(tile, tiles) {\n var siblings = getSiblings(tile);\n for (var i = 0; i < siblings.length; i++) {\n if (!hasTile(tiles, siblings[i])) return false;\n }\n return true;\n}\n\n/**\n * Check to see if an array of tiles contains a particular tile\n *\n * @name hasTile\n * @param {Array>} tiles\n * @param {Array} tile\n * @returns {boolean}\n * @example\n * var tiles = [\n * [0, 0, 5],\n * [0, 1, 5],\n * [1, 1, 5],\n * [1, 0, 5]\n * ]\n * hasTile(tiles, [0, 0, 5])\n * //=boolean\n */\nfunction hasTile(tiles, tile) {\n for (var i = 0; i < tiles.length; i++) {\n if (tilesEqual(tiles[i], tile)) return true;\n }\n return false;\n}\n\n/**\n * Check to see if two tiles are the same\n *\n * @name tilesEqual\n * @param {Array} tile1\n * @param {Array} tile2\n * @returns {boolean}\n * @example\n * tilesEqual([0, 1, 5], [0, 0, 5])\n * //=boolean\n */\nfunction tilesEqual(tile1, tile2) {\n return (\n tile1[0] === tile2[0] &&\n tile1[1] === tile2[1] &&\n tile1[2] === tile2[2]\n );\n}\n\n/**\n * Get the quadkey for a tile\n *\n * @name tileToQuadkey\n * @param {Array} tile\n * @returns {string} quadkey\n * @example\n * var quadkey = tileToQuadkey([0, 1, 5])\n * //=quadkey\n */\nfunction tileToQuadkey(tile) {\n var index = '';\n for (var z = tile[2]; z > 0; z--) {\n var b = 0;\n var mask = 1 << (z - 1);\n if ((tile[0] & mask) !== 0) b++;\n if ((tile[1] & mask) !== 0) b += 2;\n index += b.toString();\n }\n return index;\n}\n\n/**\n * Get the tile for a quadkey\n *\n * @name quadkeyToTile\n * @param {string} quadkey\n * @returns {Array} tile\n * @example\n * var tile = quadkeyToTile('00001033')\n * //=tile\n */\nfunction quadkeyToTile(quadkey) {\n var x = 0;\n var y = 0;\n var z = quadkey.length;\n\n for (var i = z; i > 0; i--) {\n var mask = 1 << (i - 1);\n var q = +quadkey[z - i];\n if (q === 1) x |= mask;\n if (q === 2) y |= mask;\n if (q === 3) {\n x |= mask;\n y |= mask;\n }\n }\n return [x, y, z];\n}\n\n/**\n * Get the smallest tile to cover a bbox\n *\n * @name bboxToTile\n * @param {Array} bbox\n * @returns {Array} tile\n * @example\n * var tile = bboxToTile([ -178, 84, -177, 85 ])\n * //=tile\n */\nfunction bboxToTile(bboxCoords) {\n var min = pointToTile(bboxCoords[0], bboxCoords[1], 32);\n var max = pointToTile(bboxCoords[2], bboxCoords[3], 32);\n var bbox = [min[0], min[1], max[0], max[1]];\n\n var z = getBboxZoom(bbox);\n if (z === 0) return [0, 0, 0];\n var x = bbox[0] >>> (32 - z);\n var y = bbox[1] >>> (32 - z);\n return [x, y, z];\n}\n\nfunction getBboxZoom(bbox) {\n var MAX_ZOOM = 28;\n for (var z = 0; z < MAX_ZOOM; z++) {\n var mask = 1 << (32 - (z + 1));\n if (((bbox[0] & mask) !== (bbox[2] & mask)) ||\n ((bbox[1] & mask) !== (bbox[3] & mask))) {\n return z;\n }\n }\n\n return MAX_ZOOM;\n}\n\n/**\n * Get the precise fractional tile location for a point at a zoom level\n *\n * @name pointToTileFraction\n * @param {number} lon\n * @param {number} lat\n * @param {number} z\n * @returns {Array} tile fraction\n * var tile = pointToTileFraction(30.5, 50.5, 15)\n * //=tile\n */\nfunction pointToTileFraction(lon, lat, z) {\n var sin = Math.sin(lat * d2r),\n z2 = Math.pow(2, z),\n x = z2 * (lon / 360 + 0.5),\n y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n\n // Wrap Tile X\n x = x % z2;\n if (x < 0) x = x + z2;\n return [x, y, z];\n}\n\nmodule.exports = {\n tileToGeoJSON: tileToGeoJSON,\n tileToBBOX: tileToBBOX,\n getChildren: getChildren,\n getParent: getParent,\n getSiblings: getSiblings,\n hasTile: hasTile,\n hasSiblings: hasSiblings,\n tilesEqual: tilesEqual,\n tileToQuadkey: tileToQuadkey,\n quadkeyToTile: quadkeyToTile,\n pointToTile: pointToTile,\n bboxToTile: bboxToTile,\n pointToTileFraction: pointToTileFraction\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"map-container\"},[(_vm.show)?_c('l-map',{staticClass:\"map\",class:_vm.stac.type,attrs:{\"options\":_vm.mapOptions},on:{\"ready\":_vm.init}},[_c('l-control-fullscreen'),_c('l-control-zoom',_vm._b({key:`z${_vm.ix}`,attrs:{\"position\":\"topleft\"}},'l-control-zoom',_vm.zoomControlTexts,false)),(_vm.showLayerControl)?_c('l-control-layers',{ref:\"layerControl\",attrs:{\"position\":\"bottomleft\"}}):_vm._e(),_vm._l((_vm.basemaps),function(basemap){return _c(basemap.is,_vm._b({key:basemap.key,ref:\"basemaps\",refInFor:true,tag:\"component\",attrs:{\"layerType\":\"base\"}},'component',basemap,false))}),_vm._l((_vm.xyzLinks),function(xyz){return _c('l-tile-layer',{key:xyz.url,ref:\"overlays\",refInFor:true,attrs:{\"layerType\":\"overlay\",\"name\":xyz.name,\"url\":xyz.url,\"subdomains\":xyz.subdomains,\"options\":xyz.options}})}),(_vm.geojson)?_c('l-geo-json',{ref:\"geojson\",attrs:{\"geojson\":_vm.geojson,\"options\":{onEachFeature: _vm.showPopup},\"optionsStyle\":{color: _vm.secondaryColor, weight: _vm.secondaryWeight}}}):_vm._e()],2):_vm._e(),(_vm.popover && _vm.selectedItem)?_c('b-popover',{key:_vm.selectedItem.key,attrs:{\"placement\":\"left\",\"triggers\":\"manual\",\"show\":_vm.selectedItem !== null,\"target\":_vm.selectedItem.target,\"boundary\":\"#stac-browser\",\"container\":\"#stac-browser\"}},[_c('section',{staticClass:\"items\"},[_c('b-card-group',{staticClass:\"count-1\",attrs:{\"columns\":\"\"}},[_c('Item',{attrs:{\"item\":_vm.selectedItem.item}})],1)],1),_c('div',{staticClass:\"text-center\"},[_c('b-button',{attrs:{\"target\":\"_blank\",\"variant\":\"danger\"},on:{\"click\":_vm.resetSelectedItem}},[_vm._v(_vm._s(_vm.$t('leaflet.close')))])],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export let Layout;\n\n(function (Layout) {\n Layout[\"[band][row][column]\"] = \"[band][row][column]\";\n Layout[\"[band][row,column]\"] = \"[band][row,column]\";\n Layout[\"[band,row,column]\"] = \"[band,row,column]\";\n Layout[\"[row,column,band]\"] = \"[row,column,band]\";\n Layout[\"[row,column][band]\"] = \"[row,column][band]\";\n Layout[\"[row][column][band]\"] = \"[row][column][band]\";\n Layout[\"[row][column,band]\"] = \"[row][column,band]\";\n})(Layout || (Layout = {}));","export default function makeNoDataRGB(noDataValue) {\n // typescript not smart enough to realize all values in the array will be the same\n // @ts-ignore\n return [noDataValue, noDataValue, noDataValue];\n}","export default function convert_raw_one_band_pixel_to_rgb(noDataValue, noDataPixel, scale, pixel) {\n if (pixel.includes(noDataValue)) return noDataPixel;\n const scaled = scale(pixel[0]);\n return [scaled, scaled, scaled];\n}","export default function convert_raw_one_band_pixel_to_rgb_str(noDataValue, noDataPixel, scale, pixel) {\n if (pixel.includes(noDataValue)) return noDataPixel;\n const scaled = scale(pixel[0]);\n return \"rgb(\" + scaled + \", \" + scaled + \", \" + scaled + \")\";\n}","export default function convert_raw_two_band_pixel_to_rgb(noDataValue, noDataPixel, scaleFunction1, scaleFunction2, pixel) {\n if (pixel.includes(noDataValue)) return noDataPixel;\n return [scaleFunction1(pixel[0]), scaleFunction2(pixel[1]), 0];\n}","export default function convert_raw_two_band_pixel_to_rgb_str(noDataValue, noDataPixel, scaleFunction1, scaleFunction2, pixel) {\n if (pixel.includes(noDataValue)) return noDataPixel;\n return \"rgb(\" + scaleFunction1(pixel[0]) + \", \" + scaleFunction2(pixel[1]) + \", 0)\";\n}","export default function convert_raw_three_band_pixel_to_rgb(noDataValue, noDataPixel, scaleFunction1, scaleFunction2, scaleFunction3, pixel) {\n if (pixel.includes(noDataValue)) return noDataPixel;\n return [scaleFunction1(pixel[0]), scaleFunction2(pixel[1]), scaleFunction3(pixel[2])];\n}","export default function convert_raw_three_band_pixel_to_rgb_css(noDataValue, noDataPixel, scaleFunction1, scaleFunction2, scaleFunction3, pixel) {\n if (pixel.includes(noDataValue)) return noDataPixel;\n return \"rgb(\" + scaleFunction1(pixel[0]) + \", \" + scaleFunction2(pixel[1]) + \", \" + scaleFunction3(pixel[2]) + \")\";\n}","export default function convert_raw_two_band_pixel_to_rgb(noDataValue, noDataPixel, scaleFunction1, scaleFunction2, scaleFunction3, pixel) {\n pixel = pixel.slice(0, 3);\n if (pixel.includes(noDataValue)) return noDataPixel;\n return [scaleFunction1(pixel[0]), scaleFunction2(pixel[1]), scaleFunction3(pixel[2])];\n}","export default function convert_raw_two_band_pixel_to_rgb_str(noDataValue, noDataPixel, scaleFunction1, scaleFunction2, scaleFunction3, pixel) {\n pixel = pixel.slice(0, 3);\n if (pixel.includes(noDataValue)) return noDataPixel;\n return \"rgb(\" + scaleFunction1(pixel[0]) + \", \" + scaleFunction2(pixel[1]) + \", \" + scaleFunction3(pixel[2]) + \")\";\n}","// prettier-ignore\nexport default function rgbToStr([r, g, b]) {\n return \"rgb(\" + r + \", \" + g + \", \" + b + \")\";\n}","import { createScaleFunction } from \"quick-scale\";\nimport makeNoDataRGB from \"../make-no-data-rgb\";\nimport convertSingle from \"./convert-single\";\nimport convertSingleStr from \"./convert-single-str\";\nimport convertDouble from \"./convert-double\";\nimport convertDoubleStr from \"./convert-double-str\";\nimport convertTriple from \"./convert-triple\";\nimport convertTripleStr from \"./convert-triple-str\";\nimport convertMulti from \"./convert-many\";\nimport convertMultiStr from \"./convert-many-str\";\nimport rgbToStr from \"../rgb-to-str\";\nexport default function rawToRgb({\n format = \"array\",\n ranges,\n flip,\n new_no_data_pixel,\n new_no_data_value,\n no_range_value,\n no_range_value_strategy,\n old_no_data_value,\n round = true\n}) {\n const nbands = ranges.length;\n\n if (new_no_data_pixel && new_no_data_value) {\n throw new Error(\"[pixel-utils/raw-to-rgb] can't specify both new_no_data_pixel and new_no_data_value\");\n }\n\n if (new_no_data_pixel === undefined || new_no_data_pixel === null) {\n if (new_no_data_value === undefined || new_no_data_value === null) {\n new_no_data_pixel = makeNoDataRGB(null);\n } else {\n new_no_data_pixel = makeNoDataRGB(new_no_data_value);\n }\n }\n\n if (new_no_data_pixel === undefined) throw new Error(\"[raw-to-rgb] undefined new_no_data_pixel\");\n const new_range = [0 === new_no_data_value ? 1 : 0, 255 === new_no_data_value ? 254 : 255];\n const options = {\n flip,\n no_range_value,\n no_range_value_strategy,\n round\n };\n const scalefns = ranges.slice(0, 3).map(rng => createScaleFunction(rng, new_range, options));\n\n if (nbands === 1) {\n if (format === \"string\") {\n // @ts-ignore\n return convertSingleStr.bind(null, old_no_data_value, rgbToStr(new_no_data_pixel), ...scalefns);\n } else {\n // @ts-ignore\n return convertSingle.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);\n }\n } else if (nbands === 2) {\n if (format === \"string\") {\n // @ts-ignore\n return convertDoubleStr.bind(null, old_no_data_value, rgbToStr(new_no_data_pixel), ...scalefns);\n } else {\n // @ts-ignore\n return convertDouble.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);\n }\n } else if (nbands === 3) {\n if (format === \"string\") {\n // @ts-ignore\n return convertTripleStr.bind(null, old_no_data_value, rgbToStr(new_no_data_pixel), ...scalefns);\n } else {\n // @ts-ignore\n return convertTriple.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);\n }\n } else if (nbands >= 4) {\n if (format === \"string\") {\n // @ts-ignore\n return convertMultiStr.bind(null, old_no_data_value, rgbToStr(new_no_data_pixel), ...scalefns);\n } else {\n // @ts-ignore\n return convertMulti.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);\n }\n } else {\n throw new Error(\"[pixel-utils/raw-to-rgb] invalid number of bands: \" + nbands);\n }\n}","\"use strict\";\n\n/****\n * TO DO:\n * add support for GeoJSON and need to check projection of GeoJSON\n */\nimport add from \"preciso/add.js\";\nimport divide from \"preciso/divide.js\";\nimport multiply from \"preciso/multiply.js\";\nimport subtract from \"preciso/subtract.js\";\nimport getEPSGCode from \"get-epsg-code\";\nimport reprojectBoundingBox from \"reproject-bbox\";\n\nconst avg = (a, b) => divide(add(a.toString(), b.toString()), \"2\");\nconst isAry = o => Array.isArray(o);\nconst isDef = o => o !== undefined && o !== null && o !== \"\";\nconst isFunc = o => typeof o === \"function\";\n\n// identifying GeoJSON currently unused\n// shouldn't rely on type being provided\n// because sometimes the rest could be valid but no type is provided\n// const isFeatureCollection = it => isObj(it) && it.type === \"FeatureCollection\" && hasKey(it, \"features\");\n// const isFeature = it => isObj(it) && it.type === \"Feature\" && hasKey(it, \"geometry\");\n// const isGeometryCollection = it => isObj(it) && it.type === \"GeometryCollection\" && hasKey(\"geometries\");\n// const isMultiPolygon = it => isObj(it) && it.type === \"MultiPolygon\" && hasKey(it, \"coordinates\");\n// const isPolygon = it => isObj(it) && it.type === \"Polygon\" && hasKey(it, \"coordinates\");\n// const isPoint = it => isObj(it) && it.type === \"Point\" && hasKey(it, \"coordinates\");\n// const isMultiPoint = it => isObj(it) && isObj.type === \"MultiPoint\" && hasKey(it, \"coordinates\");\n\nconst isObj = o => typeof o === \"object\";\nconst isStr = o => typeof o === \"string\";\nconst isNum = o => typeof o === \"number\";\nconst isBoxStr = o => isStr(o) && !!o.match(/^[-|+]?[\\d\\.]+(, ?[-|+]?[\\d\\.]+){3}$/);\nconst isLeafletLatLngBounds = o => isObj(o) && hasFuncs(o, [\"getEast\", \"getNorth\", \"getSouth\", \"getWest\"]);\nconst hasFunc = (o, f) => isObj(o) && isFunc(o[f]);\nconst hasObj = (o, k) => isObj(o) && isObj(o[k]);\nconst hasFuncs = (o, fs) => fs.every(f => hasFunc(o, f));\nconst hasObjs = (o, ks) => ks.every(k => hasObj(o, k));\nconst hasKey = (o, k) => isObj(o) && o[k] !== undefined && o[k] !== null;\nconst hasKeys = (o, ks) => ks.every(k => hasKey(o, k));\nconst allNums = ary => isAry(ary) && ary.every(isNum);\nconst allStrs = ary => isAry(ary) && ary.every(isStr);\nconst getConstructor = o => (typeof obj === \"object\" && typeof obj.constructor === \"function\") || undefined;\nconst normalize = srs => {\n if (!srs) return srs;\n if (isStr(srs) && srs.startsWith(\"EPSG:\")) return srs;\n if (isStr(srs) && srs.match(/^\\d+$/)) return \"EPSG:\" + srs;\n else if (isNum(srs)) return \"EPSG:\" + srs;\n const code = getEPSGCode(srs);\n if (isNum(code)) return \"EPSG:\" + code;\n return srs;\n};\n\n// currently unused\n// const getConstructorName = o =>\n// (typeof obj === \"object\" &&\n// typeof obj.constructor === \"function\" &&\n// typeof obj.constructor.name === \"string\" &&\n// obj.constructor.name) ||\n// undefined;\n\n// const forEachCoord = (data, cb) => {\n// if (data.features) data.features.forEach(forEachCoord);\n// else if (data.geometry) forEachCoord(data.geometry);\n// else if (data.coordinates) forEachCoord(data.coordinates);\n// else if (Array.isArray(data) && Array.isArray(data[0])) data.map(forEachCoord);\n// else if (Array.isArray(data) && (data.length === 2 || data.length === 3) && typeof data[0] === \"number\") {\n// const [x, y, z] = data;\n// cb({ x, y, z });\n// }\n// };\n\n// const getExtentOfGeoJSON = geojson => {\n// let xmin, xmax, ymin, ymax;\n// if (geojson.features) {\n\n// }\n// }\n\nexport class GeoExtent {\n constructor(o, { srs } = {}) {\n this.srs = normalize(srs);\n\n let xmin, xmax, ymin, ymax;\n let xmin_str, xmax_str, ymin_str, ymax_str;\n if (getConstructor(o) === this.constructor) {\n ({ xmin, xmax, ymin, ymax } = o);\n if (isDef(o.srs)) {\n this.srs = normalize(o.srs);\n }\n }\n\n if (isBoxStr(o)) o = o.split(/, ?/);\n\n if (isAry(o) && o.length === 4 && allNums(o)) {\n [xmin, ymin, xmax, ymax] = o;\n } else if (isAry(o) && o.length === 4 && allStrs(o)) {\n [xmin_str, ymin_str, xmax_str, ymax_str] = o;\n [xmin, ymin, xmax, ymax] = o.map(str => Number(str));\n } else if (isAry(o) && o.length === 2 && o.every(isAry) && o.every(o => o.length === 2 && allNums(o))) {\n [[ymin, xmin], [ymax, xmax]] = o;\n } else if (isLeafletLatLngBounds(o)) {\n (xmin = o.getWest()), (xmax = o.getEast()), (ymin = o.getSouth()), (ymax = o.getNorth());\n if (!isDef(this.srs)) this.srs = \"EPSG:4326\";\n } else if (isAry(o) && o.length === 2 && o.every(it => hasKeys(it, [\"x\", \"y\"]))) {\n [{ x: xmin, y: ymin }, { x: xmax, y: ymax }] = o;\n } else if (isObj(o) && hasKeys(o, [\"x\", \"y\"]) && isNum(o.x) && isNum(o.y)) {\n // receive a point like { x: 147, y: -18 } because isn't a point\n // really just an extent with zero height and width?\n xmin = xmax = o.x;\n ymin = ymax = o.y;\n if (hasKey(o, \"spatialReference\") && hasKey(o.spatialReference, \"wkid\")) {\n if (!isDef(this.srs)) this.srs = normalize(o.spatialReference.wkid);\n }\n } else if (isObj(o) && hasKeys(o, [\"xmin\", \"xmax\", \"ymin\", \"ymax\"])) {\n ({ xmin, xmax, ymin, ymax } = o);\n const keys = [\"srs\", \"crs\", \"proj\", \"projection\"];\n\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n const v = o[k];\n const normalized = normalize(v);\n if (normalized) {\n this.srs = normalized;\n break;\n }\n }\n\n if (!this.srs && isDef(o.srs)) {\n this.srs = o.srs;\n }\n } else if (isAry(o) && o.length === 2 && allNums(o)) {\n // assume [ x , y ]\n xmin = xmax = o[0];\n ymin = ymax = o[1];\n } else if (isObj(o) && hasFuncs(o, [\"getCoordinates\"])) {\n const xy = o.getCoordinates();\n xmin = xmax = xy[0];\n ymin = ymax = xy[1];\n } else if (isObj(o) && hasKey(o, \"bbox\") && o.bbox.length === 4 && allNums(o)) {\n // like GeoJSON with bbox property set\n // { type: \"Feature\", \"bbox\": [-37, 7, 12, 67 ], \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [...] } }\n [xmin, ymin, xmax, ymax] = o.bbox;\n } else if (hasObj(o, \"_bounds\") && isLeafletLatLngBounds(o._bounds)) {\n const { _bounds } = o;\n (xmin = _bounds.getWest()), (xmax = _bounds.getEast()), (ymin = _bounds.getSouth()), (ymax = _bounds.getNorth());\n if (!this.srs) this.srs = \"EPSG:4326\";\n } else if (isObj(o) && isObj(o._bounds) && hasObjs(o._bounds, [\"_southWest\", \"_northEast\"])) {\n ({ lat: ymin, lng: xmin } = o._bounds._southWest);\n ({ lat: ymax, lng: xmax } = o._bounds._northEast);\n if (!isDef(this.srs)) this.srs = \"EPSG:4326\";\n } else {\n throw new Error(\"[geo-extent] unknown format\");\n }\n\n this.xmin = xmin;\n this.xmin_str = xmin_str || xmin.toString();\n this.ymin = ymin;\n this.ymin_str = ymin_str || ymin.toString();\n this.xmax = xmax;\n this.xmax_str = xmax_str || xmax.toString();\n this.ymax = ymax;\n this.ymax_str = ymax_str || ymax.toString();\n\n this.width_str = subtract(this.xmax_str, this.xmin_str);\n this.width = Number(this.width_str);\n\n this.height_str = subtract(this.ymax_str, this.ymin_str);\n this.height = Number(this.height_str);\n\n // corners\n this.bottomLeft = { x: xmin, y: ymin };\n this.bottomRight = { x: xmax, y: ymin };\n this.topLeft = { x: xmin, y: ymax };\n this.topRight = { x: xmax, y: ymax };\n\n this.leafletBounds = [\n [this.ymin, this.xmin],\n [this.ymax, this.xmax]\n ];\n\n this.area_str = multiply(this.width_str, this.height_str);\n this.area = Number(this.area_str);\n\n this.perimeter_str = add(multiply(this.width_str, \"2\"), multiply(this.height_str, \"2\"));\n this.perimeter = Number(this.perimeter_str);\n\n this.bbox = [xmin, ymin, xmax, ymax];\n this.bbox_str = [this.xmin_str, this.ymin_str, this.xmax_str, this.ymax_str];\n\n this.center_str = {\n x: avg(xmin_str || xmin, xmax_str || xmax),\n y: avg(ymin_str || ymin, ymax_str || ymax)\n };\n this.center = { x: Number(this.center_str.x), y: Number(this.center_str.y) };\n\n this.str = this.bbox_str.join(\",\");\n }\n\n _pre(_this, _other) {\n // convert other to an extent instance (if not already)\n _other = new this.constructor(_other);\n\n if (!isDef(_this.srs) && !isDef(_other.srs)) {\n // assume same/no projection\n } else if (isDef(_this.srs) && !isDef(_other.srs)) {\n // assume other is the same srs as this\n _other = new _this.constructor({ ..._other, srs: _this.srs });\n } else if (!isDef(_this.srs) && isDef(_other.srs)) {\n // assume this' srs is the same as other\n _this = new _this.constructor({ ..._this, srs: _other.srs });\n } else if (isDef(_this.srs) && isDef(_other.srs) && _this.srs !== _other.srs) {\n _other = _other.reproj(_this.srs);\n } else if (isDef(_this.srs) && isDef(_other.srs) && _this.srs === _other.srs) {\n // same projection, so no reprojection necessary\n } else {\n throw \"UH OH\";\n }\n return [_this, _other];\n }\n\n clone() {\n return new this.constructor(this);\n }\n\n contains(other) {\n const [_this, _other] = this._pre(this, other);\n\n const xContains = _other.xmin >= _this.xmin && _other.xmax <= _this.xmax;\n const yContains = _other.ymin >= _this.ymin && _other.ymax <= _this.ymax;\n\n return xContains && yContains;\n }\n\n // should return null if no overlap\n crop(other) {\n other = new this.constructor(other);\n\n // if really no overlap then return null\n if (this.overlaps(other, { quiet: true }) === false && other.overlaps(this, { quiet: true }) === false) return null;\n\n // first check if other fully contains this extent\n // in which case, we don't really need to crop\n // and can just return the extent of this\n if (other.contains(this)) return this.clone();\n\n // check if special case where other crosses 180th meridian\n if (other.srs === \"EPSG:4326\" && (other.xmin < -180 || other.xmax > 180)) {\n const parts = other.unwrap();\n\n let cropped = parts.map(it => this.crop(it));\n\n // filter out any parts that are null (didn't overlap)\n cropped = cropped.filter(Boolean);\n\n // no overlap\n if (cropped.length === 0) return null;\n\n let combo = cropped[0];\n for (let i = 1; i < cropped.length; i++) combo = combo.combine(cropped[i]);\n\n return combo;\n }\n\n // if both this and other have srs defined reproject\n // otherwise, assume they are the same projection\n let another = isDef(this.srs) && isDef(other.srs) ? other.reproj(this.srs, { quiet: true }) : other.clone();\n if (another) {\n if (!this.overlaps(another)) return null;\n const xmin = Math.max(this.xmin, another.xmin);\n const ymin = Math.max(this.ymin, another.ymin);\n const xmax = Math.min(this.xmax, another.xmax);\n const ymax = Math.min(this.ymax, another.ymax);\n return new this.constructor([xmin, ymin, xmax, ymax], { srs: this.srs });\n }\n\n // fall back to converting everything to 4326 and cropping there\n const this4326 = isDef(this.srs) ? this.reproj(4326) : this;\n const other4326 = isDef(other.srs) ? other.reproj(4326) : other;\n const [aMinLon, aMinLat, aMaxLon, aMaxLat] = this4326.bbox;\n const [bMinLon, bMinLat, bMaxLon, bMaxLat] = other4326.bbox;\n\n if (!this4326.overlaps(other4326)) return null;\n\n const minLon = Math.max(aMinLon, bMinLon);\n const minLat = Math.max(aMinLat, bMinLat);\n const maxLon = Math.min(aMaxLon, bMaxLon);\n const maxLat = Math.min(aMaxLat, bMaxLat);\n return new this.constructor([minLon, minLat, maxLon, maxLat], { srs: 4326 }).reproj(this.srs);\n }\n\n // add two extents together\n // result is a new extent in the projection of this\n combine(other) {\n if (isDef(this.srs) && isDef(other.srs)) {\n other = other.reproj(this.srs);\n }\n\n const xmin = Math.min(this.xmin, other.xmin);\n const xmax = Math.max(this.xmax, other.xmax);\n const ymin = Math.min(this.ymin, other.ymin);\n const ymax = Math.max(this.ymax, other.ymax);\n\n return new this.constructor({ xmin, xmax, ymin, ymax, srs: this.srs });\n }\n\n equals(other, { digits = 13, strict = true } = { digits: 13, strict: true }) {\n // convert other to GeoExtent if necessary\n other = new this.constructor(other);\n\n if (isDef(this.srs) && isDef(other.srs)) {\n other = other.reproj(this.srs);\n } else if (strict && isDef(this.srs) !== !isDef(this.srs)) {\n return false;\n }\n const str1 = this.bbox.map(n => n.toFixed(digits)).join(\",\");\n const str2 = other.bbox.map(n => n.toFixed(digits)).join(\",\");\n return str1 === str2;\n }\n\n /*\n shouldn't accept GeoJSON as input because the extent created from a GeoJSON\n might overlap, but the actual polygon wouldn't.\n Or at least make the user have to be explicit about the functionality via\n a flag like overlaps(geojson, { strict: false })\n */\n overlaps(other, { quiet = false } = { quite: false }) {\n try {\n const [_this, _other] = this._pre(this, other);\n\n const yOverlaps = _other.ymin <= _this.ymax && _other.ymax >= _this.ymin;\n const xOverlaps = _other.xmin <= _this.xmax && _other.xmax >= _this.xmin;\n\n return xOverlaps && yOverlaps;\n } catch (error) {\n if (quiet) return;\n else throw error;\n }\n }\n\n reproj(to, { quiet = false } = { quiet: false }) {\n to = normalize(to); // normalize srs\n\n // don't need to reproject, so just return a clone\n if (isDef(this.srs) && this.srs === normalize(to)) return this.clone();\n\n if (!isDef(this.srs)) {\n if (quiet) return;\n throw new Error(`[geo-extent] cannot reproject ${this.bbox} without a projection set`);\n }\n\n // unwrap, reproject pieces, and combine\n if (this.srs === \"EPSG:4326\" && (this.xmin < -180 || this.xmax > 180)) {\n try {\n const parts = this.unwrap().map(ext => ext.reproj(to));\n let combo = parts[0];\n for (let i = 1; i < parts.length; i++) combo = combo.combine(parts[i]);\n return combo;\n } catch (error) {\n if (quiet) return;\n throw error;\n }\n }\n\n const reprojected = reprojectBoundingBox({\n bbox: this.bbox,\n from: this.srs,\n to\n });\n\n if (reprojected.some(isNaN)) {\n if (quiet) return;\n throw new Error(`[geo-extent] failed to reproject ${this.bbox} from ${this.srs} to ${to}`);\n }\n return new GeoExtent(reprojected, { srs: to });\n }\n\n unwrap() {\n const { xmin, ymin, xmax, ymax, srs } = this;\n\n // not in 4326, so just return a clone\n if (srs !== \"EPSG:4326\") return [this.clone()];\n\n // extent is within the normal extent of the earth, so return clone\n if (xmin > -180 && xmax < 180) return [this.clone()];\n\n // handle special case where extent overflows xmin and then overlaps itself\n if (xmin < -180 && xmax >= xmin + 360) return [new this.constructor([-180, ymin, 180, ymax], { srs: 4326 })];\n\n if (xmax > 180 && xmin <= xmax - 360) return [new this.constructor([-180, ymin, 180, ymax], { srs: 4326 })];\n\n let extents = [];\n\n // extent overflows left edge of the world\n if (xmin < -180) {\n extents.push(new this.constructor([xmin + 360, ymin, 180, ymax], { srs }));\n }\n\n // add extent for part between -180 to 180 longitude\n extents.push(new this.constructor([xmin < -180 ? -180 : xmin, ymin, xmax > 180 ? 180 : xmax, ymax], { srs }));\n\n // extent overflows right edge of the world\n if (this.xmax > 180) {\n extents.push(new this.constructor([-180, ymin, xmax - 360, ymax], { srs }));\n }\n\n return extents;\n }\n\n asEsriJSON() {\n return {\n xmin: this.xmin,\n ymin: this.ymin,\n xmax: this.xmax,\n ymax: this.ymax,\n spatialReference: {\n wkid: this.srs\n }\n };\n }\n\n asGeoJSON() {\n const { xmin, ymin, xmax, ymax } = this.srs === \"EPSG:4326\" ? this : this.reproj(4326);\n return {\n type: \"Feature\",\n geometry: {\n type: \"Polygon\",\n coordinates: [\n [\n [xmin, ymax],\n [xmax, ymax],\n [xmax, ymin],\n [xmin, ymin],\n [xmin, ymax]\n ]\n ]\n }\n };\n }\n\n asObj() {\n const res = {};\n for (let k in this) {\n const v = this[k];\n if (!isFunc(v)) {\n res[k] = v;\n }\n }\n return res;\n }\n}\n\nif (typeof define === \"function\" && define.amd)\n define(function () {\n return GeoExtent;\n });\nif (typeof self === \"object\") self.GeoExtent = GeoExtent;\nif (typeof window === \"object\") window.GeoExtent = GeoExtent;\n","/* global proj4 */\nimport \"regenerator-runtime/runtime.js\";\nimport * as L from \"leaflet\";\nimport chroma from \"chroma-js\";\nimport geocanvas from \"geocanvas\";\nimport { rawToRgb } from \"pixel-utils\";\nimport isUTM from \"utm-utils/src/isUTM.js\";\nimport getProjString from \"utm-utils/src/getProjString.js\";\nimport proj4FullyLoaded from \"proj4-fully-loaded\";\nimport { GeoExtent } from \"geo-extent\";\nimport snap from \"snap-bbox\";\nconst EPSG4326 = 4326;\nconst PROJ4_SUPPORTED_PROJECTIONS = new Set([3785, 3857, 4269, 4326, 900913, 102113]);\nconst MAX_NORTHING = 1000;\nconst MAX_EASTING = 1000;\nconst ORIGIN = [0, 0];\n\nconst log = obj => console.log(\"[georaster-layer-for-leaflet] \", obj); // figure out if simple CRS\n// even if not created with same instance of LeafletJS\n\n\nconst isSimpleCRS = crs => {\n var _crs$transformation, _crs$transformation2, _crs$transformation3, _crs$transformation4;\n\n return crs === L.CRS.Simple || !crs.code && crs.infinite && (crs === null || crs === void 0 ? void 0 : (_crs$transformation = crs.transformation) === null || _crs$transformation === void 0 ? void 0 : _crs$transformation._a) === 1 && (crs === null || crs === void 0 ? void 0 : (_crs$transformation2 = crs.transformation) === null || _crs$transformation2 === void 0 ? void 0 : _crs$transformation2._b) === 0 && (crs === null || crs === void 0 ? void 0 : (_crs$transformation3 = crs.transformation) === null || _crs$transformation3 === void 0 ? void 0 : _crs$transformation3._c) === -1 && (crs === null || crs === void 0 ? void 0 : (_crs$transformation4 = crs.transformation) === null || _crs$transformation4 === void 0 ? void 0 : _crs$transformation4._d) === 0;\n};\n\nif (!L) console.warn(\"[georaster-layer-for-leaflet] can't find Leaflet. If you are loading via ","import mod from \"-!../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LControlFullscreen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LControlFullscreen.vue?vue&type=script&lang=js\"","import { CRS } from 'leaflet';\nimport STAC from './src/models/stac';\nimport Utils from './src/utils';\n\nconst USGS_ATTRIBUTION = 'USGS Astrogeology';\nconst WMS = 'LWMSTileLayer';\nconst XYZ = 'LTileLayer';\n\nconst BASEMAPS = {\n earth: {\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n name: 'OpenStreetMap',\n is: XYZ,\n attribution: '© OpenStreetMap contributors.'\n },\n europa: {\n baseUrl: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/jupiter/europa_simp_cyl.map',\n is: WMS,\n name: 'USGS Europa',\n attribution: USGS_ATTRIBUTION,\n crs: CRS.EPSG4326,\n format: 'image/png',\n layers: 'GALILEO_VOYAGER'\n },\n mars: {\n baseUrl: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/mars/mars_simp_cyl.map',\n is: WMS,\n name: 'USGS Mars',\n attribution: USGS_ATTRIBUTION,\n crs: CRS.EPSG4326,\n format: 'image/png',\n layers: 'MDIM21'\n },\n moon: {\n baseUrl: 'https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/earth/moon_simp_cyl.map',\n is: WMS,\n name: 'USGS Moon',\n attribution: USGS_ATTRIBUTION,\n crs: CRS.EPSG4326,\n format: 'image/png',\n layers: 'LROC_WAC'\n }\n};\n\n/**\n * @typedef BasemapOptions\n * @type {Object}\n * @property {string} is Component: LWMSTileLayer or LTileLayer\n * @see https://vue2-leaflet.netlify.app/components/\n */\n\n/**\n * \n * @param {Object} stac The STAC object\n * @param {Object} map The Leaflet map object\n * @param {Object} i18n Vue I18N object\n * @returns {Array.}\n */\nexport default function configureBasemap(stac, map, i18n) {\n let targets = ['earth'];\n if (stac instanceof STAC) {\n if (stac.isCollection() && Utils.isObject(stac.summaries) && Array.isArray(stac.summaries['ssys:targets'])) {\n targets = stac.summaries['ssys:targets'];\n }\n else if (stac.isCollection() && Array.isArray(stac['ssys:targets'])) {\n targets = stac['ssys:targets'];\n }\n else if (stac.isItem() && Array.isArray(stac.properties['ssys:targets'])) {\n targets = stac.properties['ssys:targets'];\n }\n }\n\n return targets.map(target => BASEMAPS[target.toLowerCase()]);\n};","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Map.vue?vue&type=template&id=d6ae1928\"\nimport script from \"./Map.vue?vue&type=script&lang=js\"\nexport * from \"./Map.vue?vue&type=script&lang=js\"\nimport style0 from \"./Map.vue?vue&type=style&index=0&id=d6ae1928&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* This is based on https://github.com/heyman/leaflet-areaselect from @heymen\n * with contributions from @lweller and @ebrensi */\n\n/* eslint-disable no-undef */\n\nL.AreaSelect = L.Class.extend({\n includes: L.Evented.prototype,\n\n options: {\n width: 200,\n height: 300,\n minWidth: 30,\n minHeight: 30,\n minHorizontalSpacing: 30,\n minVerticalSpacing: 30,\n keepAspectRatio: false,\n },\n\n initialize: function (options) {\n L.Util.setOptions(this, options);\n\n this._width = this.options.width;\n this._height = this.options.height;\n },\n\n addTo: function (map) {\n this.map = map;\n if (this._container) { this.map._controlContainer.appendChild(this._container); }\n else { this._createElements(); }\n this.map.on(\"moveend\", this._onMapChange, this);\n this.map.on(\"zoomend\", this._onMapChange, this);\n this.map.on(\"resize\", this._onMapResize, this);\n\n this.fire(\"change\");\n this._render();\n return this;\n },\n\n getBounds: function () {\n const size = this.map.getSize();\n const topRight = new L.Point();\n const bottomLeft = new L.Point();\n\n bottomLeft.x = Math.round((size.x - this._width) / 2);\n topRight.y = Math.round((size.y - this._height) / 2);\n topRight.x = size.x - bottomLeft.x;\n bottomLeft.y = size.y - topRight.y;\n\n const sw = this.map.containerPointToLatLng(bottomLeft);\n const ne = this.map.containerPointToLatLng(topRight);\n\n return new L.LatLngBounds(sw, ne);\n },\n\n getBBoxCoordinates: function () {\n const size = this.map.getSize();\n\n const topRight = new L.Point();\n const bottomLeft = new L.Point();\n const topLeft = new L.Point();\n const bottomRight = new L.Point();\n\n bottomLeft.x = Math.round((size.x - this._width) / 2);\n topRight.y = Math.round((size.y - this._height) / 2);\n topRight.x = size.x - bottomLeft.x;\n bottomLeft.y = size.y - topRight.y;\n\n topLeft.x = bottomLeft.x;\n topLeft.y = topRight.y;\n bottomRight.x = topRight.x;\n bottomRight.y = bottomLeft.y;\n\n const coordinates = [\n { sw: this.map.containerPointToLatLng(bottomLeft) },\n { nw: this.map.containerPointToLatLng(topLeft) },\n { ne: this.map.containerPointToLatLng(topRight) },\n { se: this.map.containerPointToLatLng(bottomRight) },\n ];\n\n return coordinates;\n },\n\n remove: function () {\n this.map.off(\"moveend\", this._onMapChange);\n this.map.off(\"zoomend\", this._onMapChange);\n this.map.off(\"resize\", this._onMapResize);\n\n this._container.parentNode.removeChild(this._container);\n },\n\n setDimensions: function (dimensions) {\n if (!dimensions) { return; }\n\n this._height = parseInt(dimensions.height) || this._height;\n this._width = parseInt(dimensions.width) || this._width;\n this._render();\n this.fire(\"change\");\n },\n\n _createElements: function () {\n if (this._container) { return; }\n\n this._container = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-container\",\n this.map._controlContainer\n );\n this._topShade = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-shade leaflet-control\",\n this._container\n );\n this._bottomShade = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-shade leaflet-control\",\n this._container\n );\n this._leftShade = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-shade leaflet-control\",\n this._container\n );\n this._rightShade = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-shade leaflet-control\",\n this._container\n );\n\n this._nwHandle = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-handle leaflet-control\",\n this._container\n );\n this._swHandle = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-handle leaflet-control\",\n this._container\n );\n this._neHandle = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-handle leaflet-control\",\n this._container\n );\n this._seHandle = L.DomUtil.create(\n \"div\",\n \"leaflet-areaselect-handle leaflet-control\",\n this._container\n );\n\n this._setUpHandlerEvents(this._nwHandle);\n this._setUpHandlerEvents(this._neHandle, -1, 1);\n this._setUpHandlerEvents(this._swHandle, 1, -1);\n this._setUpHandlerEvents(this._seHandle, -1, -1);\n },\n\n _setUpHandlerEvents: function (handle, xMod, yMod) {\n xMod = xMod || 1;\n yMod = yMod || 1;\n\n const self = this;\n function onPointerDown(event) {\n event.stopPropagation();\n event.preventDefault();\n self.map.dragging.disable();\n L.DomEvent.removeListener(this, \"onpointerdown\", onPointerDown);\n let curX = event.pageX;\n let curY = event.pageY;\n const ratio = self._width / self._height;\n const size = self.map.getSize();\n const mapContainer = self.map.getContainer();\n\n function onPointerMove(event) {\n if (self.options.keepAspectRatio) {\n const maxHeight =\n (self._height >= self._width ? size.y : size.y * (1 / ratio)) -\n Math.max(\n self.options.minVerticalSpacing,\n self.options.minHorizontalSpacing\n );\n self._height += (curY - event.pageY) * 2 * yMod;\n self._height = Math.max(\n self.options.minHeight,\n self.options.minWidth,\n self._height\n );\n self._height = Math.min(maxHeight, self._height);\n self._width = self._height * ratio;\n } else {\n self._width += (curX - event.pageX) * 2 * xMod;\n self._height += (curY - event.pageY) * 2 * yMod;\n self._width = Math.max(self.options.minWidth, self._width);\n self._height = Math.max(self.options.minHeight, self._height);\n self._width = Math.min(\n size.x - self.options.minHorizontalSpacing,\n self._width\n );\n self._height = Math.min(\n size.y - self.options.minVerticalSpacing,\n self._height\n );\n }\n\n curX = event.pageX;\n curY = event.pageY;\n self._render();\n }\n function onPointerUp() {\n self.map.dragging.enable();\n L.DomEvent.removeListener(mapContainer, \"pointerup\", onPointerUp);\n L.DomEvent.removeListener(mapContainer, \"pointermove\", onPointerMove);\n L.DomEvent.addListener(handle, \"pointerdown\", onPointerDown);\n self.fire(\"change\");\n }\n L.DomEvent.addListener(mapContainer, \"pointermove\", onPointerMove);\n L.DomEvent.addListener(mapContainer, \"pointerup\", onPointerUp);\n }\n L.DomEvent.addListener(handle, \"pointerdown\", onPointerDown);\n },\n\n _onMapResize: function () {\n this._render();\n },\n\n _onMapChange: function () {\n this.fire(\"change\");\n },\n\n _render: function () {\n const size = this.map.getSize();\n const handleOffset = Math.round(this._nwHandle.offsetWidth / 2);\n\n var topBottomWidth = size.x;\n var topBottomHeight = Math.round((size.y - this._height) / 2);\n var leftRightWidth = Math.round((size.x - this._width) / 2);\n var leftRightHeight = size.y - (topBottomHeight * 2);\n\n function setDimensions(element, dimension) {\n element.style.width = dimension.width + \"px\";\n element.style.height = dimension.height + \"px\";\n element.style.top = dimension.top + \"px\";\n element.style.left = dimension.left + \"px\";\n element.style.bottom = dimension.bottom + \"px\";\n element.style.right = dimension.right + \"px\";\n }\n\n setDimensions(this._topShade, {\n width: topBottomWidth,\n height: topBottomHeight,\n top: 0,\n left: 0\n });\n setDimensions(this._bottomShade, {\n width: topBottomWidth,\n height: topBottomHeight,\n top: size.y - topBottomHeight,\n left: 0\n });\n setDimensions(this._leftShade, {\n width: leftRightWidth,\n height: leftRightHeight,\n top: topBottomHeight,\n left: 0\n });\n setDimensions(this._rightShade, {\n width: leftRightWidth,\n height: leftRightHeight,\n top: topBottomHeight,\n left: size.x - leftRightWidth\n });\n\n setDimensions(this._nwHandle, {\n left: leftRightWidth - handleOffset,\n top: topBottomHeight - 7,\n });\n setDimensions(this._neHandle, {\n right: leftRightWidth - handleOffset,\n top: topBottomHeight - 7,\n });\n setDimensions(this._swHandle, {\n left: leftRightWidth - handleOffset,\n bottom: topBottomHeight - 7,\n });\n setDimensions(this._seHandle, {\n right: leftRightWidth - handleOffset,\n bottom: topBottomHeight - 7,\n });\n },\n});\n\nL.areaSelect = function (options) {\n return new L.AreaSelect(options);\n};\n","\n/**\n * @license\n *\n * chroma.js - JavaScript library for color conversions\n * \n * Copyright (c) 2011-2017, Gregor Aisch\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * \n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */\n\n(function() {\n var Color, DEG2RAD, LAB_CONSTANTS, PI, PITHIRD, RAD2DEG, TWOPI, _average_lrgb, _guess_formats, _guess_formats_sorted, _input, _interpolators, abs, atan2, bezier, blend, blend_f, brewer, burn, chroma, clip_rgb, cmyk2rgb, colors, cos, css2rgb, darken, dodge, each, floor, hcg2rgb, hex2rgb, hsi2rgb, hsl2css, hsl2rgb, hsv2rgb, interpolate, interpolate_hsx, interpolate_lab, interpolate_lrgb, interpolate_num, interpolate_rgb, lab2lch, lab2rgb, lab_xyz, lch2lab, lch2rgb, lighten, limit, log, luminance_x, m, max, multiply, normal, num2rgb, overlay, pow, rgb2cmyk, rgb2css, rgb2hcg, rgb2hex, rgb2hsi, rgb2hsl, rgb2hsv, rgb2lab, rgb2lch, rgb2luminance, rgb2num, rgb2temperature, rgb2xyz, rgb_xyz, rnd, root, round, screen, sin, sqrt, temperature2rgb, type, unpack, w3cx11, xyz_lab, xyz_rgb,\n slice = [].slice;\n\n type = (function() {\n\n /*\n for browser-safe type checking+\n ported from jQuery's $.type\n */\n var classToType, len, name, o, ref;\n classToType = {};\n ref = \"Boolean Number String Function Array Date RegExp Undefined Null\".split(\" \");\n for (o = 0, len = ref.length; o < len; o++) {\n name = ref[o];\n classToType[\"[object \" + name + \"]\"] = name.toLowerCase();\n }\n return function(obj) {\n var strType;\n strType = Object.prototype.toString.call(obj);\n return classToType[strType] || \"object\";\n };\n })();\n\n limit = function(x, min, max) {\n if (min == null) {\n min = 0;\n }\n if (max == null) {\n max = 1;\n }\n if (x < min) {\n x = min;\n }\n if (x > max) {\n x = max;\n }\n return x;\n };\n\n unpack = function(args) {\n if (args.length >= 3) {\n return Array.prototype.slice.call(args);\n } else {\n return args[0];\n }\n };\n\n clip_rgb = function(rgb) {\n var i, o;\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (i = o = 0; o < 3; i = ++o) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) {\n rgb._clipped = true;\n }\n if (rgb[i] < 0) {\n rgb[i] = 0;\n }\n if (rgb[i] > 255) {\n rgb[i] = 255;\n }\n } else if (i === 3) {\n if (rgb[i] < 0) {\n rgb[i] = 0;\n }\n if (rgb[i] > 1) {\n rgb[i] = 1;\n }\n }\n }\n if (!rgb._clipped) {\n delete rgb._unclipped;\n }\n return rgb;\n };\n\n PI = Math.PI, round = Math.round, cos = Math.cos, floor = Math.floor, pow = Math.pow, log = Math.log, sin = Math.sin, sqrt = Math.sqrt, atan2 = Math.atan2, max = Math.max, abs = Math.abs;\n\n TWOPI = PI * 2;\n\n PITHIRD = PI / 3;\n\n DEG2RAD = PI / 180;\n\n RAD2DEG = 180 / PI;\n\n chroma = function() {\n if (arguments[0] instanceof Color) {\n return arguments[0];\n }\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, arguments, function(){});\n };\n\n chroma[\"default\"] = chroma;\n\n _interpolators = [];\n\n if ((typeof module !== \"undefined\" && module !== null) && (module.exports != null)) {\n module.exports = chroma;\n }\n\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return chroma;\n });\n } else {\n root = typeof exports !== \"undefined\" && exports !== null ? exports : this;\n root.chroma = chroma;\n }\n\n chroma.version = '1.4.1';\n\n _input = {};\n\n _guess_formats = [];\n\n _guess_formats_sorted = false;\n\n Color = (function() {\n function Color() {\n var arg, args, chk, len, len1, me, mode, o, w;\n me = this;\n args = [];\n for (o = 0, len = arguments.length; o < len; o++) {\n arg = arguments[o];\n if (arg != null) {\n args.push(arg);\n }\n }\n if (args.length > 1) {\n mode = args[args.length - 1];\n }\n if (_input[mode] != null) {\n me._rgb = clip_rgb(_input[mode](unpack(args.slice(0, -1))));\n } else {\n if (!_guess_formats_sorted) {\n _guess_formats = _guess_formats.sort(function(a, b) {\n return b.p - a.p;\n });\n _guess_formats_sorted = true;\n }\n for (w = 0, len1 = _guess_formats.length; w < len1; w++) {\n chk = _guess_formats[w];\n mode = chk.test.apply(chk, args);\n if (mode) {\n break;\n }\n }\n if (mode) {\n me._rgb = clip_rgb(_input[mode].apply(_input, args));\n }\n }\n if (me._rgb == null) {\n console.warn('unknown format: ' + args);\n }\n if (me._rgb == null) {\n me._rgb = [0, 0, 0];\n }\n if (me._rgb.length === 3) {\n me._rgb.push(1);\n }\n }\n\n Color.prototype.toString = function() {\n return this.hex();\n };\n\n return Color;\n\n })();\n\n chroma._input = _input;\n\n\n /**\n \tColorBrewer colors for chroma.js\n \n \tCopyright (c) 2002 Cynthia Brewer, Mark Harrower, and The \n \tPennsylvania State University.\n \n \tLicensed under the Apache License, Version 2.0 (the \"License\"); \n \tyou may not use this file except in compliance with the License.\n \tYou may obtain a copy of the License at\t\n \thttp://www.apache.org/licenses/LICENSE-2.0\n \n \tUnless required by applicable law or agreed to in writing, software distributed\n \tunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n \tCONDITIONS OF ANY KIND, either express or implied. See the License for the\n \tspecific language governing permissions and limitations under the License.\n \n @preserve\n */\n\n chroma.brewer = brewer = {\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2']\n };\n\n (function() {\n var key, results;\n results = [];\n for (key in brewer) {\n results.push(brewer[key.toLowerCase()] = brewer[key]);\n }\n return results;\n })();\n\n\n /**\n \tX11 color names\n \n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n chroma.colors = colors = w3cx11;\n\n lab2rgb = function() {\n var a, args, b, g, l, r, x, y, z;\n args = unpack(arguments);\n l = args[0], a = args[1], b = args[2];\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n y = LAB_CONSTANTS.Yn * lab_xyz(y);\n x = LAB_CONSTANTS.Xn * lab_xyz(x);\n z = LAB_CONSTANTS.Zn * lab_xyz(z);\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n xyz_rgb = function(r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow(r, 1 / 2.4) - 0.055);\n };\n\n lab_xyz = function(t) {\n if (t > LAB_CONSTANTS.t1) {\n return t * t * t;\n } else {\n return LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0);\n }\n };\n\n LAB_CONSTANTS = {\n Kn: 18,\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n t0: 0.137931034,\n t1: 0.206896552,\n t2: 0.12841855,\n t3: 0.008856452\n };\n\n rgb2lab = function() {\n var b, g, r, ref, ref1, x, y, z;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n ref1 = rgb2xyz(r, g, b), x = ref1[0], y = ref1[1], z = ref1[2];\n return [116 * y - 16, 500 * (x - y), 200 * (y - z)];\n };\n\n rgb_xyz = function(r) {\n if ((r /= 255) <= 0.04045) {\n return r / 12.92;\n } else {\n return pow((r + 0.055) / 1.055, 2.4);\n }\n };\n\n xyz_lab = function(t) {\n if (t > LAB_CONSTANTS.t3) {\n return pow(t, 1 / 3);\n } else {\n return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0;\n }\n };\n\n rgb2xyz = function() {\n var b, g, r, ref, x, y, z;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn);\n y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS.Yn);\n z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn);\n return [x, y, z];\n };\n\n chroma.lab = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['lab']), function(){});\n };\n\n _input.lab = lab2rgb;\n\n Color.prototype.lab = function() {\n return rgb2lab(this._rgb);\n };\n\n bezier = function(colors) {\n var I, I0, I1, c, lab0, lab1, lab2, lab3, ref, ref1, ref2;\n colors = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(chroma(c));\n }\n return results;\n })();\n if (colors.length === 2) {\n ref = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref[0], lab1 = ref[1];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push(lab0[i] + t * (lab1[i] - lab0[i]));\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 3) {\n ref1 = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref1[0], lab1 = ref1[1], lab2 = ref1[2];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push((1 - t) * (1 - t) * lab0[i] + 2 * (1 - t) * t * lab1[i] + t * t * lab2[i]);\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 4) {\n ref2 = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref2[0], lab1 = ref2[1], lab2 = ref2[2], lab3 = ref2[3];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push((1 - t) * (1 - t) * (1 - t) * lab0[i] + 3 * (1 - t) * (1 - t) * t * lab1[i] + 3 * (1 - t) * t * t * lab2[i] + t * t * t * lab3[i]);\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 5) {\n I0 = bezier(colors.slice(0, 3));\n I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t * 2);\n } else {\n return I1((t - 0.5) * 2);\n }\n };\n }\n return I;\n };\n\n chroma.bezier = function(colors) {\n var f;\n f = bezier(colors);\n f.scale = function() {\n return chroma.scale(f);\n };\n return f;\n };\n\n chroma.cubehelix = function(start, rotations, hue, gamma, lightness) {\n var dh, dl, f;\n if (start == null) {\n start = 300;\n }\n if (rotations == null) {\n rotations = -1.5;\n }\n if (hue == null) {\n hue = 1;\n }\n if (gamma == null) {\n gamma = 1;\n }\n if (lightness == null) {\n lightness = [0, 1];\n }\n dh = 0;\n if (type(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n f = function(fract) {\n var a, amp, b, cos_a, g, h, l, r, sin_a;\n a = TWOPI * ((start + 120) / 360 + rotations * fract);\n l = pow(lightness[0] + dl * fract, gamma);\n h = dh !== 0 ? hue[0] + fract * dh : hue;\n amp = h * l * (1 - l) / 2;\n cos_a = cos(a);\n sin_a = sin(a);\n r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);\n g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);\n b = l + amp * (+1.97294 * cos_a);\n return chroma(clip_rgb([r * 255, g * 255, b * 255, 1]));\n };\n f.start = function(s) {\n if (s == null) {\n return start;\n }\n start = s;\n return f;\n };\n f.rotations = function(r) {\n if (r == null) {\n return rotations;\n }\n rotations = r;\n return f;\n };\n f.gamma = function(g) {\n if (g == null) {\n return gamma;\n }\n gamma = g;\n return f;\n };\n f.hue = function(h) {\n if (h == null) {\n return hue;\n }\n hue = h;\n if (type(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) {\n hue = hue[1];\n }\n } else {\n dh = 0;\n }\n return f;\n };\n f.lightness = function(h) {\n if (h == null) {\n return lightness;\n }\n if (type(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h, h];\n dl = 0;\n }\n return f;\n };\n f.scale = function() {\n return chroma.scale(f);\n };\n f.hue(hue);\n return f;\n };\n\n chroma.random = function() {\n var code, digits, i, o;\n digits = '0123456789abcdef';\n code = '#';\n for (i = o = 0; o < 6; i = ++o) {\n code += digits.charAt(floor(Math.random() * 16));\n }\n return new Color(code);\n };\n\n _interpolators = [];\n\n interpolate = function(col1, col2, f, m) {\n var interpol, len, o, res;\n if (f == null) {\n f = 0.5;\n }\n if (m == null) {\n m = 'rgb';\n }\n\n /*\n interpolates between colors\n f = 0 --> me\n f = 1 --> col\n */\n if (type(col1) !== 'object') {\n col1 = chroma(col1);\n }\n if (type(col2) !== 'object') {\n col2 = chroma(col2);\n }\n for (o = 0, len = _interpolators.length; o < len; o++) {\n interpol = _interpolators[o];\n if (m === interpol[0]) {\n res = interpol[1](col1, col2, f, m);\n break;\n }\n }\n if (res == null) {\n throw \"color mode \" + m + \" is not supported\";\n }\n return res.alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n chroma.interpolate = interpolate;\n\n Color.prototype.interpolate = function(col2, f, m) {\n return interpolate(this, col2, f, m);\n };\n\n chroma.mix = interpolate;\n\n Color.prototype.mix = Color.prototype.interpolate;\n\n _input.rgb = function() {\n var k, ref, results, v;\n ref = unpack(arguments);\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(v);\n }\n return results;\n };\n\n chroma.rgb = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['rgb']), function(){});\n };\n\n Color.prototype.rgb = function(round) {\n if (round == null) {\n round = true;\n }\n if (round) {\n return this._rgb.map(Math.round).slice(0, 3);\n } else {\n return this._rgb.slice(0, 3);\n }\n };\n\n Color.prototype.rgba = function(round) {\n if (round == null) {\n round = true;\n }\n if (!round) {\n return this._rgb.slice(0);\n }\n return [Math.round(this._rgb[0]), Math.round(this._rgb[1]), Math.round(this._rgb[2]), this._rgb[3]];\n };\n\n _guess_formats.push({\n p: 3,\n test: function(n) {\n var a;\n a = unpack(arguments);\n if (type(a) === 'array' && a.length === 3) {\n return 'rgb';\n }\n if (a.length === 4 && type(a[3]) === \"number\" && a[3] >= 0 && a[3] <= 1) {\n return 'rgb';\n }\n }\n });\n\n _input.lrgb = _input.rgb;\n\n interpolate_lrgb = function(col1, col2, f, m) {\n var xyz0, xyz1;\n xyz0 = col1._rgb;\n xyz1 = col2._rgb;\n return new Color(sqrt(pow(xyz0[0], 2) * (1 - f) + pow(xyz1[0], 2) * f), sqrt(pow(xyz0[1], 2) * (1 - f) + pow(xyz1[1], 2) * f), sqrt(pow(xyz0[2], 2) * (1 - f) + pow(xyz1[2], 2) * f), m);\n };\n\n _average_lrgb = function(colors) {\n var col, f, len, o, rgb, xyz;\n f = 1 / colors.length;\n xyz = [0, 0, 0, 0];\n for (o = 0, len = colors.length; o < len; o++) {\n col = colors[o];\n rgb = col._rgb;\n xyz[0] += pow(rgb[0], 2) * f;\n xyz[1] += pow(rgb[1], 2) * f;\n xyz[2] += pow(rgb[2], 2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt(xyz[0]);\n xyz[1] = sqrt(xyz[1]);\n xyz[2] = sqrt(xyz[2]);\n if (xyz[3] > 1) {\n xyz[3] = 1;\n }\n return new Color(clip_rgb(xyz));\n };\n\n _interpolators.push(['lrgb', interpolate_lrgb]);\n\n chroma.average = function(colors, mode) {\n var A, alpha, c, cnt, dx, dy, first, i, l, len, o, xyz, xyz2;\n if (mode == null) {\n mode = 'rgb';\n }\n l = colors.length;\n colors = colors.map(function(c) {\n return chroma(c);\n });\n first = colors.splice(0, 1)[0];\n if (mode === 'lrgb') {\n return _average_lrgb(colors);\n }\n xyz = first.get(mode);\n cnt = [];\n dx = 0;\n dy = 0;\n for (i in xyz) {\n xyz[i] = xyz[i] || 0;\n cnt.push(isNaN(xyz[i]) ? 0 : 1);\n if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n A = xyz[i] / 180 * PI;\n dx += cos(A);\n dy += sin(A);\n }\n }\n alpha = first.alpha();\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n xyz2 = c.get(mode);\n alpha += c.alpha();\n for (i in xyz) {\n if (!isNaN(xyz2[i])) {\n cnt[i] += 1;\n if (mode.charAt(i) === 'h') {\n A = xyz2[i] / 180 * PI;\n dx += cos(A);\n dy += sin(A);\n } else {\n xyz[i] += xyz2[i];\n }\n }\n }\n }\n for (i in xyz) {\n if (mode.charAt(i) === 'h') {\n A = atan2(dy / cnt[i], dx / cnt[i]) / PI * 180;\n while (A < 0) {\n A += 360;\n }\n while (A >= 360) {\n A -= 360;\n }\n xyz[i] = A;\n } else {\n xyz[i] = xyz[i] / cnt[i];\n }\n }\n return chroma(xyz, mode).alpha(alpha / l);\n };\n\n hex2rgb = function(hex) {\n var a, b, g, r, rgb, u;\n if (hex.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/)) {\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n if (hex.length === 3) {\n hex = hex.split(\"\");\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n u = parseInt(hex, 16);\n r = u >> 16;\n g = u >> 8 & 0xFF;\n b = u & 0xFF;\n return [r, g, b, 1];\n }\n if (hex.match(/^#?([A-Fa-f0-9]{8})$/)) {\n if (hex.length === 9) {\n hex = hex.substr(1);\n }\n u = parseInt(hex, 16);\n r = u >> 24 & 0xFF;\n g = u >> 16 & 0xFF;\n b = u >> 8 & 0xFF;\n a = round((u & 0xFF) / 0xFF * 100) / 100;\n return [r, g, b, a];\n }\n if ((_input.css != null) && (rgb = _input.css(hex))) {\n return rgb;\n }\n throw \"unknown color: \" + hex;\n };\n\n rgb2hex = function(channels, mode) {\n var a, b, g, hxa, r, str, u;\n if (mode == null) {\n mode = 'auto';\n }\n r = channels[0], g = channels[1], b = channels[2], a = channels[3];\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n u = r << 16 | g << 8 | b;\n str = \"000000\" + u.toString(16);\n str = str.substr(str.length - 6);\n hxa = '0' + round(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n return \"#\" + (function() {\n switch (mode.toLowerCase()) {\n case 'rgba':\n return str + hxa;\n case 'argb':\n return hxa + str;\n default:\n return str;\n }\n })();\n };\n\n _input.hex = function(h) {\n return hex2rgb(h);\n };\n\n chroma.hex = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hex']), function(){});\n };\n\n Color.prototype.hex = function(mode) {\n if (mode == null) {\n mode = 'auto';\n }\n return rgb2hex(this._rgb, mode);\n };\n\n _guess_formats.push({\n p: 4,\n test: function(n) {\n if (arguments.length === 1 && type(n) === \"string\") {\n return 'hex';\n }\n }\n });\n\n hsl2rgb = function() {\n var args, b, c, g, h, i, l, o, r, ref, s, t1, t2, t3;\n args = unpack(arguments);\n h = args[0], s = args[1], l = args[2];\n if (s === 0) {\n r = g = b = l * 255;\n } else {\n t3 = [0, 0, 0];\n c = [0, 0, 0];\n t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n t1 = 2 * l - t2;\n h /= 360;\n t3[0] = h + 1 / 3;\n t3[1] = h;\n t3[2] = h - 1 / 3;\n for (i = o = 0; o <= 2; i = ++o) {\n if (t3[i] < 0) {\n t3[i] += 1;\n }\n if (t3[i] > 1) {\n t3[i] -= 1;\n }\n if (6 * t3[i] < 1) {\n c[i] = t1 + (t2 - t1) * 6 * t3[i];\n } else if (2 * t3[i] < 1) {\n c[i] = t2;\n } else if (3 * t3[i] < 2) {\n c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6;\n } else {\n c[i] = t1;\n }\n }\n ref = [round(c[0] * 255), round(c[1] * 255), round(c[2] * 255)], r = ref[0], g = ref[1], b = ref[2];\n }\n if (args.length > 3) {\n return [r, g, b, args[3]];\n } else {\n return [r, g, b];\n }\n };\n\n rgb2hsl = function(r, g, b) {\n var h, l, min, ref, s;\n if (r !== void 0 && r.length >= 3) {\n ref = r, r = ref[0], g = ref[1], b = ref[2];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n if (r === max) {\n h = (g - b) / (max - min);\n } else if (g === max) {\n h = 2 + (b - r) / (max - min);\n } else if (b === max) {\n h = 4 + (r - g) / (max - min);\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n return [h, s, l];\n };\n\n chroma.hsl = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsl']), function(){});\n };\n\n _input.hsl = hsl2rgb;\n\n Color.prototype.hsl = function() {\n return rgb2hsl(this._rgb);\n };\n\n hsv2rgb = function() {\n var args, b, f, g, h, i, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, s, t, v;\n args = unpack(arguments);\n h = args[0], s = args[1], v = args[2];\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) {\n h = 0;\n }\n if (h > 360) {\n h -= 360;\n }\n if (h < 0) {\n h += 360;\n }\n h /= 60;\n i = floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n ref = [v, t, p], r = ref[0], g = ref[1], b = ref[2];\n break;\n case 1:\n ref1 = [q, v, p], r = ref1[0], g = ref1[1], b = ref1[2];\n break;\n case 2:\n ref2 = [p, v, t], r = ref2[0], g = ref2[1], b = ref2[2];\n break;\n case 3:\n ref3 = [p, q, v], r = ref3[0], g = ref3[1], b = ref3[2];\n break;\n case 4:\n ref4 = [t, p, v], r = ref4[0], g = ref4[1], b = ref4[2];\n break;\n case 5:\n ref5 = [v, p, q], r = ref5[0], g = ref5[1], b = ref5[2];\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hsv = function() {\n var b, delta, g, h, min, r, ref, s, v;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n delta = max - min;\n v = max / 255.0;\n if (max === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n }\n if (g === max) {\n h = 2 + (b - r) / delta;\n }\n if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n }\n return [h, s, v];\n };\n\n chroma.hsv = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsv']), function(){});\n };\n\n _input.hsv = hsv2rgb;\n\n Color.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n num2rgb = function(num) {\n var b, g, r;\n if (type(num) === \"number\" && num >= 0 && num <= 0xFFFFFF) {\n r = num >> 16;\n g = (num >> 8) & 0xFF;\n b = num & 0xFF;\n return [r, g, b, 1];\n }\n console.warn(\"unknown num color: \" + num);\n return [0, 0, 0, 1];\n };\n\n rgb2num = function() {\n var b, g, r, ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n chroma.num = function(num) {\n return new Color(num, 'num');\n };\n\n Color.prototype.num = function(mode) {\n if (mode == null) {\n mode = 'rgb';\n }\n return rgb2num(this._rgb, mode);\n };\n\n _input.num = num2rgb;\n\n _guess_formats.push({\n p: 1,\n test: function(n) {\n if (arguments.length === 1 && type(n) === \"number\" && n >= 0 && n <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n hcg2rgb = function() {\n var _c, _g, args, b, c, f, g, h, i, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, t, v;\n args = unpack(arguments);\n h = args[0], c = args[1], _g = args[2];\n c = c / 100;\n g = g / 100 * 255;\n _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) {\n h = 0;\n }\n if (h > 360) {\n h -= 360;\n }\n if (h < 0) {\n h += 360;\n }\n h /= 60;\n i = floor(h);\n f = h - i;\n p = _g * (1 - c);\n q = p + _c * (1 - f);\n t = p + _c * f;\n v = p + _c;\n switch (i) {\n case 0:\n ref = [v, t, p], r = ref[0], g = ref[1], b = ref[2];\n break;\n case 1:\n ref1 = [q, v, p], r = ref1[0], g = ref1[1], b = ref1[2];\n break;\n case 2:\n ref2 = [p, v, t], r = ref2[0], g = ref2[1], b = ref2[2];\n break;\n case 3:\n ref3 = [p, q, v], r = ref3[0], g = ref3[1], b = ref3[2];\n break;\n case 4:\n ref4 = [t, p, v], r = ref4[0], g = ref4[1], b = ref4[2];\n break;\n case 5:\n ref5 = [v, p, q], r = ref5[0], g = ref5[1], b = ref5[2];\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hcg = function() {\n var _g, b, c, delta, g, h, min, r, ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n delta = max - min;\n c = delta * 100 / 255;\n _g = min / (255 - delta) * 100;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) {\n h = (g - b) / delta;\n }\n if (g === max) {\n h = 2 + (b - r) / delta;\n }\n if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n }\n return [h, c, _g];\n };\n\n chroma.hcg = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hcg']), function(){});\n };\n\n _input.hcg = hcg2rgb;\n\n Color.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n css2rgb = function(css) {\n var aa, ab, hsl, i, m, o, rgb, w;\n css = css.toLowerCase();\n if ((chroma.colors != null) && chroma.colors[css]) {\n return hex2rgb(chroma.colors[css]);\n }\n if (m = css.match(/rgb\\(\\s*(\\-?\\d+),\\s*(\\-?\\d+)\\s*,\\s*(\\-?\\d+)\\s*\\)/)) {\n rgb = m.slice(1, 4);\n for (i = o = 0; o <= 2; i = ++o) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1;\n } else if (m = css.match(/rgba\\(\\s*(\\-?\\d+),\\s*(\\-?\\d+)\\s*,\\s*(\\-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n rgb = m.slice(1, 5);\n for (i = w = 0; w <= 3; i = ++w) {\n rgb[i] = +rgb[i];\n }\n } else if (m = css.match(/rgb\\(\\s*(\\-?\\d+(?:\\.\\d+)?)%,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*\\)/)) {\n rgb = m.slice(1, 4);\n for (i = aa = 0; aa <= 2; i = ++aa) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = 1;\n } else if (m = css.match(/rgba\\(\\s*(\\-?\\d+(?:\\.\\d+)?)%,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n rgb = m.slice(1, 5);\n for (i = ab = 0; ab <= 2; i = ++ab) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = +rgb[3];\n } else if (m = css.match(/hsl\\(\\s*(\\-?\\d+(?:\\.\\d+)?),\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*\\)/)) {\n hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n rgb = hsl2rgb(hsl);\n rgb[3] = 1;\n } else if (m = css.match(/hsla\\(\\s*(\\-?\\d+(?:\\.\\d+)?),\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n rgb = hsl2rgb(hsl);\n rgb[3] = +m[4];\n }\n return rgb;\n };\n\n rgb2css = function(rgba) {\n var mode;\n mode = rgba[3] < 1 ? 'rgba' : 'rgb';\n if (mode === 'rgb') {\n return mode + '(' + rgba.slice(0, 3).map(round).join(',') + ')';\n } else if (mode === 'rgba') {\n return mode + '(' + rgba.slice(0, 3).map(round).join(',') + ',' + rgba[3] + ')';\n } else {\n\n }\n };\n\n rnd = function(a) {\n return round(a * 100) / 100;\n };\n\n hsl2css = function(hsl, alpha) {\n var mode;\n mode = alpha < 1 ? 'hsla' : 'hsl';\n hsl[0] = rnd(hsl[0] || 0);\n hsl[1] = rnd(hsl[1] * 100) + '%';\n hsl[2] = rnd(hsl[2] * 100) + '%';\n if (mode === 'hsla') {\n hsl[3] = alpha;\n }\n return mode + '(' + hsl.join(',') + ')';\n };\n\n _input.css = function(h) {\n return css2rgb(h);\n };\n\n chroma.css = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['css']), function(){});\n };\n\n Color.prototype.css = function(mode) {\n if (mode == null) {\n mode = 'rgb';\n }\n if (mode.slice(0, 3) === 'rgb') {\n return rgb2css(this._rgb);\n } else if (mode.slice(0, 3) === 'hsl') {\n return hsl2css(this.hsl(), this.alpha());\n }\n };\n\n _input.named = function(name) {\n return hex2rgb(w3cx11[name]);\n };\n\n _guess_formats.push({\n p: 5,\n test: function(n) {\n if (arguments.length === 1 && (w3cx11[n] != null)) {\n return 'named';\n }\n }\n });\n\n Color.prototype.name = function(n) {\n var h, k;\n if (arguments.length) {\n if (w3cx11[n]) {\n this._rgb = hex2rgb(w3cx11[n]);\n }\n this._rgb[3] = 1;\n this;\n }\n h = this.hex('rgb');\n for (k in w3cx11) {\n if (h === w3cx11[k]) {\n return k;\n }\n }\n return h;\n };\n\n lch2lab = function() {\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n \n A saturation multiplier was added by Gregor Aisch\n */\n var c, h, l, ref;\n ref = unpack(arguments), l = ref[0], c = ref[1], h = ref[2];\n h = h * DEG2RAD;\n return [l, cos(h) * c, sin(h) * c];\n };\n\n lch2rgb = function() {\n var L, a, args, b, c, g, h, l, r, ref, ref1;\n args = unpack(arguments);\n l = args[0], c = args[1], h = args[2];\n ref = lch2lab(l, c, h), L = ref[0], a = ref[1], b = ref[2];\n ref1 = lab2rgb(L, a, b), r = ref1[0], g = ref1[1], b = ref1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n lab2lch = function() {\n var a, b, c, h, l, ref;\n ref = unpack(arguments), l = ref[0], a = ref[1], b = ref[2];\n c = sqrt(a * a + b * b);\n h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round(c * 10000) === 0) {\n h = Number.NaN;\n }\n return [l, c, h];\n };\n\n rgb2lch = function() {\n var a, b, g, l, r, ref, ref1;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n ref1 = rgb2lab(r, g, b), l = ref1[0], a = ref1[1], b = ref1[2];\n return lab2lch(l, a, b);\n };\n\n chroma.lch = function() {\n var args;\n args = unpack(arguments);\n return new Color(args, 'lch');\n };\n\n chroma.hcl = function() {\n var args;\n args = unpack(arguments);\n return new Color(args, 'hcl');\n };\n\n _input.lch = lch2rgb;\n\n _input.hcl = function() {\n var c, h, l, ref;\n ref = unpack(arguments), h = ref[0], c = ref[1], l = ref[2];\n return lch2rgb([l, c, h]);\n };\n\n Color.prototype.lch = function() {\n return rgb2lch(this._rgb);\n };\n\n Color.prototype.hcl = function() {\n return rgb2lch(this._rgb).reverse();\n };\n\n rgb2cmyk = function(mode) {\n var b, c, f, g, k, m, r, ref, y;\n if (mode == null) {\n mode = 'rgb';\n }\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n k = 1 - Math.max(r, Math.max(g, b));\n f = k < 1 ? 1 / (1 - k) : 0;\n c = (1 - r - k) * f;\n m = (1 - g - k) * f;\n y = (1 - b - k) * f;\n return [c, m, y, k];\n };\n\n cmyk2rgb = function() {\n var alpha, args, b, c, g, k, m, r, y;\n args = unpack(arguments);\n c = args[0], m = args[1], y = args[2], k = args[3];\n alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) {\n return [0, 0, 0, alpha];\n }\n r = c >= 1 ? 0 : 255 * (1 - c) * (1 - k);\n g = m >= 1 ? 0 : 255 * (1 - m) * (1 - k);\n b = y >= 1 ? 0 : 255 * (1 - y) * (1 - k);\n return [r, g, b, alpha];\n };\n\n _input.cmyk = function() {\n return cmyk2rgb(unpack(arguments));\n };\n\n chroma.cmyk = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['cmyk']), function(){});\n };\n\n Color.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n _input.gl = function() {\n var i, k, o, rgb, v;\n rgb = (function() {\n var ref, results;\n ref = unpack(arguments);\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(v);\n }\n return results;\n }).apply(this, arguments);\n for (i = o = 0; o <= 2; i = ++o) {\n rgb[i] *= 255;\n }\n return rgb;\n };\n\n chroma.gl = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['gl']), function(){});\n };\n\n Color.prototype.gl = function() {\n var rgb;\n rgb = this._rgb;\n return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]];\n };\n\n rgb2luminance = function(r, g, b) {\n var ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n luminance_x = function(x) {\n x /= 255;\n if (x <= 0.03928) {\n return x / 12.92;\n } else {\n return pow((x + 0.055) / 1.055, 2.4);\n }\n };\n\n interpolate_rgb = function(col1, col2, f, m) {\n var xyz0, xyz1;\n xyz0 = col1._rgb;\n xyz1 = col2._rgb;\n return new Color(xyz0[0] + f * (xyz1[0] - xyz0[0]), xyz0[1] + f * (xyz1[1] - xyz0[1]), xyz0[2] + f * (xyz1[2] - xyz0[2]), m);\n };\n\n _interpolators.push(['rgb', interpolate_rgb]);\n\n Color.prototype.luminance = function(lum, mode) {\n var cur_lum, eps, max_iter, rgba, test;\n if (mode == null) {\n mode = 'rgb';\n }\n if (!arguments.length) {\n return rgb2luminance(this._rgb);\n }\n rgba = this._rgb;\n if (lum === 0) {\n rgba = [0, 0, 0, this._rgb[3]];\n } else if (lum === 1) {\n rgba = [255, 255, 255, this[3]];\n } else {\n cur_lum = rgb2luminance(this._rgb);\n eps = 1e-7;\n max_iter = 20;\n test = function(l, h) {\n var lm, m;\n m = l.interpolate(h, 0.5, mode);\n lm = m.luminance();\n if (Math.abs(lum - lm) < eps || !max_iter--) {\n return m;\n }\n if (lm > lum) {\n return test(l, m);\n }\n return test(m, h);\n };\n if (cur_lum > lum) {\n rgba = test(chroma('black'), this).rgba();\n } else {\n rgba = test(this, chroma('white')).rgba();\n }\n }\n return chroma(rgba).alpha(this.alpha());\n };\n\n temperature2rgb = function(kelvin) {\n var b, g, r, temp;\n temp = kelvin / 100;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r, g, b];\n };\n\n rgb2temperature = function() {\n var b, eps, g, maxTemp, minTemp, r, ref, rgb, temp;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n minTemp = 1000;\n maxTemp = 40000;\n eps = 0.4;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n rgb = temperature2rgb(temp);\n if ((rgb[2] / rgb[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n chroma.temperature = chroma.kelvin = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['temperature']), function(){});\n };\n\n _input.temperature = _input.kelvin = _input.K = temperature2rgb;\n\n Color.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n Color.prototype.kelvin = Color.prototype.temperature;\n\n chroma.contrast = function(a, b) {\n var l1, l2, ref, ref1;\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n l1 = a.luminance();\n l2 = b.luminance();\n if (l1 > l2) {\n return (l1 + 0.05) / (l2 + 0.05);\n } else {\n return (l2 + 0.05) / (l1 + 0.05);\n }\n };\n\n chroma.distance = function(a, b, mode) {\n var d, i, l1, l2, ref, ref1, sum_sq;\n if (mode == null) {\n mode = 'lab';\n }\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n l1 = a.get(mode);\n l2 = b.get(mode);\n sum_sq = 0;\n for (i in l1) {\n d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d * d;\n }\n return Math.sqrt(sum_sq);\n };\n\n chroma.deltaE = function(a, b, L, C) {\n var L1, L2, a1, a2, b1, b2, c1, c2, c4, dH2, delA, delB, delC, delL, f, h1, ref, ref1, ref2, ref3, sc, sh, sl, t, v1, v2, v3;\n if (L == null) {\n L = 1;\n }\n if (C == null) {\n C = 1;\n }\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n ref2 = a.lab(), L1 = ref2[0], a1 = ref2[1], b1 = ref2[2];\n ref3 = b.lab(), L2 = ref3[0], a2 = ref3[1], b2 = ref3[2];\n c1 = sqrt(a1 * a1 + b1 * b1);\n c2 = sqrt(a2 * a2 + b2 * b2);\n sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + 0.01765 * L1);\n sc = (0.0638 * c1) / (1.0 + 0.0131 * c1) + 0.638;\n h1 = c1 < 0.000001 ? 0.0 : (atan2(b1, a1) * 180.0) / PI;\n while (h1 < 0) {\n h1 += 360;\n }\n while (h1 >= 360) {\n h1 -= 360;\n }\n t = (h1 >= 164.0) && (h1 <= 345.0) ? 0.56 + abs(0.2 * cos((PI * (h1 + 168.0)) / 180.0)) : 0.36 + abs(0.4 * cos((PI * (h1 + 35.0)) / 180.0));\n c4 = c1 * c1 * c1 * c1;\n f = sqrt(c4 / (c4 + 1900.0));\n sh = sc * (f * t + 1.0 - f);\n delL = L1 - L2;\n delC = c1 - c2;\n delA = a1 - a2;\n delB = b1 - b2;\n dH2 = delA * delA + delB * delB - delC * delC;\n v1 = delL / (L * sl);\n v2 = delC / (C * sc);\n v3 = sh;\n return sqrt(v1 * v1 + v2 * v2 + (dH2 / (v3 * v3)));\n };\n\n Color.prototype.get = function(modechan) {\n var channel, i, me, mode, ref, src;\n me = this;\n ref = modechan.split('.'), mode = ref[0], channel = ref[1];\n src = me[mode]();\n if (channel) {\n i = mode.indexOf(channel);\n if (i > -1) {\n return src[i];\n } else {\n return console.warn('unknown channel ' + channel + ' in mode ' + mode);\n }\n } else {\n return src;\n }\n };\n\n Color.prototype.set = function(modechan, value) {\n var channel, i, me, mode, ref, src;\n me = this;\n ref = modechan.split('.'), mode = ref[0], channel = ref[1];\n if (channel) {\n src = me[mode]();\n i = mode.indexOf(channel);\n if (i > -1) {\n if (type(value) === 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +(value.substr(1));\n break;\n case '/':\n src[i] /= +(value.substr(1));\n break;\n default:\n src[i] = +value;\n }\n } else {\n src[i] = value;\n }\n } else {\n console.warn('unknown channel ' + channel + ' in mode ' + mode);\n }\n } else {\n src = value;\n }\n return chroma(src, mode).alpha(me.alpha());\n };\n\n Color.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color.prototype.alpha = function(a) {\n if (arguments.length) {\n return chroma.rgb([this._rgb[0], this._rgb[1], this._rgb[2], a]);\n }\n return this._rgb[3];\n };\n\n Color.prototype.darken = function(amount) {\n var lab, me;\n if (amount == null) {\n amount = 1;\n }\n me = this;\n lab = me.lab();\n lab[0] -= LAB_CONSTANTS.Kn * amount;\n return chroma.lab(lab).alpha(me.alpha());\n };\n\n Color.prototype.brighten = function(amount) {\n if (amount == null) {\n amount = 1;\n }\n return this.darken(-amount);\n };\n\n Color.prototype.darker = Color.prototype.darken;\n\n Color.prototype.brighter = Color.prototype.brighten;\n\n Color.prototype.saturate = function(amount) {\n var lch, me;\n if (amount == null) {\n amount = 1;\n }\n me = this;\n lch = me.lch();\n lch[1] += amount * LAB_CONSTANTS.Kn;\n if (lch[1] < 0) {\n lch[1] = 0;\n }\n return chroma.lch(lch).alpha(me.alpha());\n };\n\n Color.prototype.desaturate = function(amount) {\n if (amount == null) {\n amount = 1;\n }\n return this.saturate(-amount);\n };\n\n Color.prototype.premultiply = function() {\n var a, rgb;\n rgb = this.rgb();\n a = this.alpha();\n return chroma(rgb[0] * a, rgb[1] * a, rgb[2] * a, a);\n };\n\n blend = function(bottom, top, mode) {\n if (!blend[mode]) {\n throw 'unknown blend mode ' + mode;\n }\n return blend[mode](bottom, top);\n };\n\n blend_f = function(f) {\n return function(bottom, top) {\n var c0, c1;\n c0 = chroma(top).rgb();\n c1 = chroma(bottom).rgb();\n return chroma(f(c0, c1), 'rgb');\n };\n };\n\n each = function(f) {\n return function(c0, c1) {\n var i, o, out;\n out = [];\n for (i = o = 0; o <= 3; i = ++o) {\n out[i] = f(c0[i], c1[i]);\n }\n return out;\n };\n };\n\n normal = function(a, b) {\n return a;\n };\n\n multiply = function(a, b) {\n return a * b / 255;\n };\n\n darken = function(a, b) {\n if (a > b) {\n return b;\n } else {\n return a;\n }\n };\n\n lighten = function(a, b) {\n if (a > b) {\n return a;\n } else {\n return b;\n }\n };\n\n screen = function(a, b) {\n return 255 * (1 - (1 - a / 255) * (1 - b / 255));\n };\n\n overlay = function(a, b) {\n if (b < 128) {\n return 2 * a * b / 255;\n } else {\n return 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\n }\n };\n\n burn = function(a, b) {\n return 255 * (1 - (1 - b / 255) / (a / 255));\n };\n\n dodge = function(a, b) {\n if (a === 255) {\n return 255;\n }\n a = 255 * (b / 255) / (1 - a / 255);\n if (a > 255) {\n return 255;\n } else {\n return a;\n }\n };\n\n blend.normal = blend_f(each(normal));\n\n blend.multiply = blend_f(each(multiply));\n\n blend.screen = blend_f(each(screen));\n\n blend.overlay = blend_f(each(overlay));\n\n blend.darken = blend_f(each(darken));\n\n blend.lighten = blend_f(each(lighten));\n\n blend.dodge = blend_f(each(dodge));\n\n blend.burn = blend_f(each(burn));\n\n chroma.blend = blend;\n\n chroma.analyze = function(data) {\n var len, o, r, val;\n r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n for (o = 0, len = data.length; o < len; o++) {\n val = data[o];\n if ((val != null) && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) {\n r.min = val;\n }\n if (val > r.max) {\n r.max = val;\n }\n r.count += 1;\n }\n }\n r.domain = [r.min, r.max];\n r.limits = function(mode, num) {\n return chroma.limits(r, mode, num);\n };\n return r;\n };\n\n chroma.scale = function(colors, positions) {\n var _classes, _colorCache, _colors, _correctLightness, _domain, _fixed, _gamma, _max, _min, _mode, _nacol, _out, _padding, _pos, _spread, _useCache, classifyValue, f, getClass, getColor, resetCache, setColors, tmap;\n _mode = 'rgb';\n _nacol = chroma('#ccc');\n _spread = 0;\n _fixed = false;\n _domain = [0, 1];\n _pos = [];\n _padding = [0, 0];\n _classes = false;\n _colors = [];\n _out = false;\n _min = 0;\n _max = 1;\n _correctLightness = false;\n _colorCache = {};\n _useCache = true;\n _gamma = 1;\n setColors = function(colors) {\n var c, col, o, ref, ref1, w;\n if (colors == null) {\n colors = ['#fff', '#000'];\n }\n if ((colors != null) && type(colors) === 'string' && (chroma.brewer != null)) {\n colors = chroma.brewer[colors] || chroma.brewer[colors.toLowerCase()] || colors;\n }\n if (type(colors) === 'array') {\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n colors = colors.slice(0);\n for (c = o = 0, ref = colors.length - 1; 0 <= ref ? o <= ref : o >= ref; c = 0 <= ref ? ++o : --o) {\n col = colors[c];\n if (type(col) === \"string\") {\n colors[c] = chroma(col);\n }\n }\n _pos.length = 0;\n for (c = w = 0, ref1 = colors.length - 1; 0 <= ref1 ? w <= ref1 : w >= ref1; c = 0 <= ref1 ? ++w : --w) {\n _pos.push(c / (colors.length - 1));\n }\n }\n resetCache();\n return _colors = colors;\n };\n getClass = function(value) {\n var i, n;\n if (_classes != null) {\n n = _classes.length - 1;\n i = 0;\n while (i < n && value >= _classes[i]) {\n i++;\n }\n return i - 1;\n }\n return 0;\n };\n tmap = function(t) {\n return t;\n };\n classifyValue = function(value) {\n var i, maxc, minc, n, val;\n val = value;\n if (_classes.length > 2) {\n n = _classes.length - 1;\n i = getClass(value);\n minc = _classes[0] + (_classes[1] - _classes[0]) * (0 + _spread * 0.5);\n maxc = _classes[n - 1] + (_classes[n] - _classes[n - 1]) * (1 - _spread * 0.5);\n val = _min + ((_classes[i] + (_classes[i + 1] - _classes[i]) * 0.5 - minc) / (maxc - minc)) * (_max - _min);\n }\n return val;\n };\n getColor = function(val, bypassMap) {\n var c, col, i, k, o, p, ref, t;\n if (bypassMap == null) {\n bypassMap = false;\n }\n if (isNaN(val) || val === null) {\n return _nacol;\n }\n if (!bypassMap) {\n if (_classes && _classes.length > 2) {\n c = getClass(val);\n t = c / (_classes.length - 2);\n } else if (_max !== _min) {\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n if (!bypassMap) {\n t = tmap(t);\n }\n if (_gamma !== 1) {\n t = pow(t, _gamma);\n }\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n t = Math.min(1, Math.max(0, t));\n k = Math.floor(t * 10000);\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type(_colors) === 'array') {\n for (i = o = 0, ref = _pos.length - 1; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if (t >= p && i === _pos.length - 1) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i + 1]) {\n t = (t - p) / (_pos[i + 1] - p);\n col = chroma.interpolate(_colors[i], _colors[i + 1], t, _mode);\n break;\n }\n }\n } else if (type(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) {\n _colorCache[k] = col;\n }\n }\n return col;\n };\n resetCache = function() {\n return _colorCache = {};\n };\n setColors(colors);\n f = function(v) {\n var c;\n c = chroma(getColor(v));\n if (_out && c[_out]) {\n return c[_out]();\n } else {\n return c;\n }\n };\n f.classes = function(classes) {\n var d;\n if (classes != null) {\n if (type(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length - 1]];\n } else {\n d = chroma.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n f.domain = function(domain) {\n var c, d, k, len, o, ref, w;\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length - 1];\n _pos = [];\n k = _colors.length;\n if (domain.length === k && _min !== _max) {\n for (o = 0, len = domain.length; o < len; o++) {\n d = domain[o];\n _pos.push((d - _min) / (_max - _min));\n }\n } else {\n for (c = w = 0, ref = k - 1; 0 <= ref ? w <= ref : w >= ref; c = 0 <= ref ? ++w : --w) {\n _pos.push(c / (k - 1));\n }\n }\n _domain = [_min, _max];\n return f;\n };\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n f.range = function(colors, _pos) {\n setColors(colors, _pos);\n return f;\n };\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n f.correctLightness = function(v) {\n if (v == null) {\n v = true;\n }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tmap = function(t) {\n var L0, L1, L_actual, L_diff, L_ideal, max_iter, pol, t0, t1;\n L0 = getColor(0, true).lab()[0];\n L1 = getColor(1, true).lab()[0];\n pol = L0 > L1;\n L_actual = getColor(t, true).lab()[0];\n L_ideal = L0 + (L1 - L0) * t;\n L_diff = L_actual - L_ideal;\n t0 = 0;\n t1 = 1;\n max_iter = 20;\n while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) {\n (function() {\n if (pol) {\n L_diff *= -1;\n }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function(t) {\n return t;\n };\n }\n return f;\n };\n f.padding = function(p) {\n if (p != null) {\n if (type(p) === 'number') {\n p = [p, p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n f.colors = function(numColors, out) {\n var dd, dm, i, o, ref, result, results, samples, w;\n if (arguments.length < 2) {\n out = 'hex';\n }\n result = [];\n if (arguments.length === 0) {\n result = _colors.slice(0);\n } else if (numColors === 1) {\n result = [f(0.5)];\n } else if (numColors > 1) {\n dm = _domain[0];\n dd = _domain[1] - dm;\n result = (function() {\n results = [];\n for (var o = 0; 0 <= numColors ? o < numColors : o > numColors; 0 <= numColors ? o++ : o--){ results.push(o); }\n return results;\n }).apply(this).map(function(i) {\n return f(dm + i / (numColors - 1) * dd);\n });\n } else {\n colors = [];\n samples = [];\n if (_classes && _classes.length > 2) {\n for (i = w = 1, ref = _classes.length; 1 <= ref ? w < ref : w > ref; i = 1 <= ref ? ++w : --w) {\n samples.push((_classes[i - 1] + _classes[i]) * 0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function(v) {\n return f(v);\n });\n }\n if (chroma[out]) {\n result = result.map(function(c) {\n return c[out]();\n });\n }\n return result;\n };\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma(d);\n return f;\n } else {\n return _nacol;\n }\n };\n return f;\n };\n\n if (chroma.scales == null) {\n chroma.scales = {};\n }\n\n chroma.scales.cool = function() {\n return chroma.scale([chroma.hsl(180, 1, .9), chroma.hsl(250, .7, .4)]);\n };\n\n chroma.scales.hot = function() {\n return chroma.scale(['#000', '#f00', '#ff0', '#fff'], [0, .25, .75, 1]).mode('rgb');\n };\n\n chroma.analyze = function(data, key, filter) {\n var add, k, len, o, r, val, visit;\n r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n if (filter == null) {\n filter = function() {\n return true;\n };\n }\n add = function(val) {\n if ((val != null) && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) {\n r.min = val;\n }\n if (val > r.max) {\n r.max = val;\n }\n r.count += 1;\n }\n };\n visit = function(val, k) {\n if (filter(val, k)) {\n if ((key != null) && type(key) === 'function') {\n return add(key(val));\n } else if ((key != null) && type(key) === 'string' || type(key) === 'number') {\n return add(val[key]);\n } else {\n return add(val);\n }\n }\n };\n if (type(data) === 'array') {\n for (o = 0, len = data.length; o < len; o++) {\n val = data[o];\n visit(val);\n }\n } else {\n for (k in data) {\n val = data[k];\n visit(val, k);\n }\n }\n r.domain = [r.min, r.max];\n r.limits = function(mode, num) {\n return chroma.limits(r, mode, num);\n };\n return r;\n };\n\n chroma.limits = function(data, mode, num) {\n var aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, assignments, best, centroids, cluster, clusterSizes, dist, i, j, kClusters, limits, max_log, min, min_log, mindist, n, nb_iters, newCentroids, o, p, pb, pr, ref, ref1, ref10, ref11, ref12, ref13, ref14, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, repeat, sum, tmpKMeansBreaks, v, value, values, w;\n if (mode == null) {\n mode = 'equal';\n }\n if (num == null) {\n num = 7;\n }\n if (type(data) === 'array') {\n data = chroma.analyze(data);\n }\n min = data.min;\n max = data.max;\n sum = data.sum;\n values = data.values.sort(function(a, b) {\n return a - b;\n });\n if (num === 1) {\n return [min, max];\n }\n limits = [];\n if (mode.substr(0, 1) === 'c') {\n limits.push(min);\n limits.push(max);\n }\n if (mode.substr(0, 1) === 'e') {\n limits.push(min);\n for (i = o = 1, ref = num - 1; 1 <= ref ? o <= ref : o >= ref; i = 1 <= ref ? ++o : --o) {\n limits.push(min + (i / num) * (max - min));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'l') {\n if (min <= 0) {\n throw 'Logarithmic scales are only possible for values > 0';\n }\n min_log = Math.LOG10E * log(min);\n max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (i = w = 1, ref1 = num - 1; 1 <= ref1 ? w <= ref1 : w >= ref1; i = 1 <= ref1 ? ++w : --w) {\n limits.push(pow(10, min_log + (i / num) * (max_log - min_log)));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'q') {\n limits.push(min);\n for (i = aa = 1, ref2 = num - 1; 1 <= ref2 ? aa <= ref2 : aa >= ref2; i = 1 <= ref2 ? ++aa : --aa) {\n p = (values.length - 1) * i / num;\n pb = floor(p);\n if (pb === p) {\n limits.push(values[pb]);\n } else {\n pr = p - pb;\n limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr);\n }\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'k') {\n\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n n = values.length;\n assignments = new Array(n);\n clusterSizes = new Array(num);\n repeat = true;\n nb_iters = 0;\n centroids = null;\n centroids = [];\n centroids.push(min);\n for (i = ab = 1, ref3 = num - 1; 1 <= ref3 ? ab <= ref3 : ab >= ref3; i = 1 <= ref3 ? ++ab : --ab) {\n centroids.push(min + (i / num) * (max - min));\n }\n centroids.push(max);\n while (repeat) {\n for (j = ac = 0, ref4 = num - 1; 0 <= ref4 ? ac <= ref4 : ac >= ref4; j = 0 <= ref4 ? ++ac : --ac) {\n clusterSizes[j] = 0;\n }\n for (i = ad = 0, ref5 = n - 1; 0 <= ref5 ? ad <= ref5 : ad >= ref5; i = 0 <= ref5 ? ++ad : --ad) {\n value = values[i];\n mindist = Number.MAX_VALUE;\n for (j = ae = 0, ref6 = num - 1; 0 <= ref6 ? ae <= ref6 : ae >= ref6; j = 0 <= ref6 ? ++ae : --ae) {\n dist = abs(centroids[j] - value);\n if (dist < mindist) {\n mindist = dist;\n best = j;\n }\n }\n clusterSizes[best]++;\n assignments[i] = best;\n }\n newCentroids = new Array(num);\n for (j = af = 0, ref7 = num - 1; 0 <= ref7 ? af <= ref7 : af >= ref7; j = 0 <= ref7 ? ++af : --af) {\n newCentroids[j] = null;\n }\n for (i = ag = 0, ref8 = n - 1; 0 <= ref8 ? ag <= ref8 : ag >= ref8; i = 0 <= ref8 ? ++ag : --ag) {\n cluster = assignments[i];\n if (newCentroids[cluster] === null) {\n newCentroids[cluster] = values[i];\n } else {\n newCentroids[cluster] += values[i];\n }\n }\n for (j = ah = 0, ref9 = num - 1; 0 <= ref9 ? ah <= ref9 : ah >= ref9; j = 0 <= ref9 ? ++ah : --ah) {\n newCentroids[j] *= 1 / clusterSizes[j];\n }\n repeat = false;\n for (j = ai = 0, ref10 = num - 1; 0 <= ref10 ? ai <= ref10 : ai >= ref10; j = 0 <= ref10 ? ++ai : --ai) {\n if (newCentroids[j] !== centroids[i]) {\n repeat = true;\n break;\n }\n }\n centroids = newCentroids;\n nb_iters++;\n if (nb_iters > 200) {\n repeat = false;\n }\n }\n kClusters = {};\n for (j = aj = 0, ref11 = num - 1; 0 <= ref11 ? aj <= ref11 : aj >= ref11; j = 0 <= ref11 ? ++aj : --aj) {\n kClusters[j] = [];\n }\n for (i = ak = 0, ref12 = n - 1; 0 <= ref12 ? ak <= ref12 : ak >= ref12; i = 0 <= ref12 ? ++ak : --ak) {\n cluster = assignments[i];\n kClusters[cluster].push(values[i]);\n }\n tmpKMeansBreaks = [];\n for (j = al = 0, ref13 = num - 1; 0 <= ref13 ? al <= ref13 : al >= ref13; j = 0 <= ref13 ? ++al : --al) {\n tmpKMeansBreaks.push(kClusters[j][0]);\n tmpKMeansBreaks.push(kClusters[j][kClusters[j].length - 1]);\n }\n tmpKMeansBreaks = tmpKMeansBreaks.sort(function(a, b) {\n return a - b;\n });\n limits.push(tmpKMeansBreaks[0]);\n for (i = am = 1, ref14 = tmpKMeansBreaks.length - 1; am <= ref14; i = am += 2) {\n v = tmpKMeansBreaks[i];\n if (!isNaN(v) && limits.indexOf(v) === -1) {\n limits.push(v);\n }\n }\n }\n return limits;\n };\n\n hsi2rgb = function(h, s, i) {\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n var args, b, g, r;\n args = unpack(arguments);\n h = args[0], s = args[1], i = args[2];\n if (isNaN(h)) {\n h = 0;\n }\n h /= 360;\n if (h < 1 / 3) {\n b = (1 - s) / 3;\n r = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n g = 1 - (b + r);\n } else if (h < 2 / 3) {\n h -= 1 / 3;\n r = (1 - s) / 3;\n g = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n b = 1 - (r + g);\n } else {\n h -= 2 / 3;\n g = (1 - s) / 3;\n b = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n r = 1 - (g + b);\n }\n r = limit(i * r * 3);\n g = limit(i * g * 3);\n b = limit(i * b * 3);\n return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hsi = function() {\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var b, g, h, i, min, r, ref, s;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n TWOPI = Math.PI * 2;\n r /= 255;\n g /= 255;\n b /= 255;\n min = Math.min(r, g, b);\n i = (r + g + b) / 3;\n s = 1 - min / i;\n if (s === 0) {\n h = 0;\n } else {\n h = ((r - g) + (r - b)) / 2;\n h /= Math.sqrt((r - g) * (r - g) + (r - b) * (g - b));\n h = Math.acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h * 360, s, i];\n };\n\n chroma.hsi = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsi']), function(){});\n };\n\n _input.hsi = hsi2rgb;\n\n Color.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n interpolate_hsx = function(col1, col2, f, m) {\n var dh, hue, hue0, hue1, lbv, lbv0, lbv1, res, sat, sat0, sat1, xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n if (m.substr(0, 1) === 'h') {\n hue0 = xyz0[0], sat0 = xyz0[1], lbv0 = xyz0[2];\n hue1 = xyz1[0], sat1 = xyz1[1], lbv1 = xyz1[2];\n }\n if (!isNaN(hue0) && !isNaN(hue1)) {\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 === 1 || lbv1 === 0) && m !== 'hsv') {\n sat = sat0;\n }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 === 1 || lbv0 === 0) && m !== 'hsv') {\n sat = sat1;\n }\n } else {\n hue = Number.NaN;\n }\n if (sat == null) {\n sat = sat0 + f * (sat1 - sat0);\n }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return res = chroma[m](hue, sat, lbv);\n };\n\n _interpolators = _interpolators.concat((function() {\n var len, o, ref, results;\n ref = ['hsv', 'hsl', 'hsi', 'hcl', 'lch', 'hcg'];\n results = [];\n for (o = 0, len = ref.length; o < len; o++) {\n m = ref[o];\n results.push([m, interpolate_hsx]);\n }\n return results;\n })());\n\n interpolate_num = function(col1, col2, f, m) {\n var n1, n2;\n n1 = col1.num();\n n2 = col2.num();\n return chroma.num(n1 + (n2 - n1) * f, 'num');\n };\n\n _interpolators.push(['num', interpolate_num]);\n\n interpolate_lab = function(col1, col2, f, m) {\n var res, xyz0, xyz1;\n xyz0 = col1.lab();\n xyz1 = col2.lab();\n return res = new Color(xyz0[0] + f * (xyz1[0] - xyz0[0]), xyz0[1] + f * (xyz1[1] - xyz0[1]), xyz0[2] + f * (xyz1[2] - xyz0[2]), m);\n };\n\n _interpolators.push(['lab', interpolate_lab]);\n\n}).call(this);\n","const getLineFromPoints = require(\"./get-line-from-points.js\");\nconst categorizeIntersection = require(\"./categorize-intersection.js\");\nconst clamp = require(\"./clamp.js\");\nconst couple = require(\"./couple.js\");\nconst clusterLineSegments = require(\"./cluster-line-segments.js\");\nconst getEdges = require(\"./get-edges.js\");\nconst getIntersectionOfTwoLines = require(\"./get-intersection-of-two-lines.js\");\nconst getPolygons = require(\"./get-polygons.js\");\nconst mergeRanges = require(\"./merge-ranges.js\");\nconst partition = require(\"./partition.js\");\nconst prepareSnap = require(\"./prepare-snap.js\");\nconst range = require(\"./range.js\");\n\nmodule.exports = function calculateCore({\n debug_level = 0,\n raster_bbox,\n raster_height, // number of rows of pixels in the raster\n raster_width, // number of columns of pixels in the raster\n pixel_height,\n pixel_width,\n geometry,\n per_pixel,\n per_row_segment\n}) {\n const [raster_xmin, raster_ymin, raster_xmax, raster_ymax] = raster_bbox;\n\n // iterate through image rows and convert each one to a line\n // running through the middle of the row\n const imageLines = [];\n\n if (raster_height === 0) return;\n\n for (let y = 0; y < raster_height; y++) {\n const lat = raster_ymax - pixel_height * y - pixel_height / 2;\n\n // use that point, plus another point along the same latitude to\n // create a line\n const point0 = [raster_xmin, lat];\n const point1 = [raster_xmin + 1, lat];\n const line = getLineFromPoints(point0, point1);\n imageLines.push(line);\n }\n if (debug_level >= 2) console.log(\"[dufour-peyton-intersection] imageLines:\", imageLines);\n\n // collapse geometry down to a list of edges\n // necessary for multi-part geometries\n const polygons = getPolygons(geometry);\n const polygonEdges = polygons.map(getEdges);\n\n polygonEdges.forEach(edges => {\n // iterate through the list of polygon vertices, convert them to\n // lines, and compute the intersections with each image row\n const intersectionsByRow = range(raster_height).map(() => []);\n const numberOfEdges = edges.length;\n for (let i = 0; i < numberOfEdges; i++) {\n // get vertices that make up an edge and convert that to a line\n const edge = edges[i];\n\n const [startPoint, endPoint] = edge;\n const [x1, y1] = startPoint;\n const [x2, y2] = endPoint;\n\n const direction = Math.sign(y2 - y1);\n const horizontal = y1 === y2;\n const vertical = x1 === x2;\n\n const edgeY = y1;\n\n const edgeLine = getLineFromPoints(startPoint, endPoint);\n\n const edgeYMin = Math.min(y1, y2);\n const edgeYMax = Math.max(y1, y2);\n\n let startLng, startLat, endLat, endLng;\n if (x1 < x2) {\n [startLng, startLat] = startPoint;\n [endLng, endLat] = endPoint;\n } else {\n [startLng, startLat] = endPoint;\n [endLng, endLat] = startPoint;\n }\n\n if (startLng === undefined) throw Error(\"startLng is \" + startLng);\n\n // find the y values in the image coordinate space\n const imageY1 = Math.round((raster_bbox[3] - 0.5 * pixel_height - startLat) / pixel_height);\n const imageY2 = Math.round((raster_bbox[3] - 0.5 * pixel_height - endLat) / pixel_height);\n\n // make sure to set the start and end points so that we are\n // incrementing upwards through rows\n let rowStart, rowEnd;\n if (imageY1 < imageY2) {\n rowStart = imageY1;\n rowEnd = imageY2;\n } else {\n rowStart = imageY2;\n rowEnd = imageY1;\n }\n\n rowStart = clamp(rowStart, 0, raster_height - 1);\n rowEnd = clamp(rowEnd, 0, raster_height - 1);\n // iterate through image lines within the change in y of\n // the edge line and find all intersections\n for (let j = rowStart; j < rowEnd + 1; j++) {\n const imageLine = imageLines[j];\n\n if (imageLine === undefined) {\n console.error(\"j:\", j);\n console.error(\"imageLines:\", imageLines);\n throw Error(\"imageLines\");\n }\n\n // because you know x is zero in ax + by = c, so by = c and b = -1, so -1 * y = c or y = -1 * c\n const imageLineY = -1 * imageLine.c;\n\n const startsOnLine = y1 === imageLineY;\n const endsOnLine = y2 === imageLineY;\n const endsOffLine = !endsOnLine;\n\n let xminOnLine, xmaxOnLine;\n if (horizontal) {\n if (edgeY === imageLineY) {\n xminOnLine = startLng;\n xmaxOnLine = endLng;\n } else {\n continue; // stop running calculations for this horizontal line because it doesn't intersect at all\n }\n } else if (vertical) {\n /* we have to have a seprate section for vertical because of floating point arithmetic probs with get_inter...\" */\n if (imageLineY >= edgeYMin && imageLineY <= edgeYMax) {\n xminOnLine = startLng;\n xmaxOnLine = endLng;\n }\n } else if (startsOnLine) {\n // we know that the other end is not on the line because then it would be horizontal\n xminOnLine = xmaxOnLine = x1;\n } else if (endsOnLine) {\n // we know that the other end is not on the line because then it would be horizontal\n xminOnLine = xmaxOnLine = x2;\n } else {\n try {\n xminOnLine = xmaxOnLine = getIntersectionOfTwoLines(edgeLine, imageLine).x;\n } catch (error) {\n throw error;\n }\n }\n\n // check to see if the intersection point is within the range of\n // the edge line segment. If it is, add the intersection to the\n // list of intersections at the corresponding index for that row\n // in intersectionsByRow\n if (\n xminOnLine !== undefined &&\n xmaxOnLine !== undefined &&\n (horizontal || (xminOnLine >= startLng && xmaxOnLine <= endLng && imageLineY <= edgeYMax && imageLineY >= edgeYMin))\n ) {\n intersectionsByRow[j].push({\n direction,\n index: i,\n edge,\n endsOnLine,\n endsOffLine,\n horizontal,\n startsOnLine,\n vertical,\n xmin: xminOnLine,\n xmax: xmaxOnLine,\n imageLineY\n });\n }\n }\n }\n\n const half_pixel_width = pixel_width / 2;\n const snap = prepareSnap(raster_xmin, pixel_width);\n\n intersectionsByRow.forEach((segmentsInRow, row_index) => {\n if (segmentsInRow.length > 0) {\n const clusters = clusterLineSegments(segmentsInRow, numberOfEdges);\n const categorized = clusters.map(categorizeIntersection);\n const [throughs, nonthroughs] = partition(categorized, item => item.through);\n\n if (throughs.length % 2 === 1) {\n if (debug_level >= 1) console.error(\"throughs:\", JSON.stringify(throughs));\n throw Error(\"throughs.length for \" + row_index + \" is odd with \" + throughs.length);\n }\n\n let insides = nonthroughs.map(intersection => [intersection.xmin, intersection.xmax]);\n\n // sorts throughs from left to right in-place\n throughs.sort((a, b) => a.xmin - b.xmin);\n\n const couples = couple(throughs).map(couple => {\n const [left, right] = couple;\n return [left.xmin, right.xmax];\n });\n\n insides = insides.concat(couples);\n\n /*\n This makes sure we don't double count pixels.\n For example, converts `[[0,10],[10,10]]` to `[[0,10]]`\n */\n insides = mergeRanges(insides);\n\n insides.forEach(pair => {\n const [xmin, xmax] = pair;\n\n if (xmax - xmin < half_pixel_width) return;\n\n // snap [xmin, xmax] in srs to raster coordinates\n const [left, right] = snap(pair);\n\n // intersection doesn't take up more than half of a pixel\n if (left === right) return;\n\n // skip because segment is beyond the right edge of the raster\n if (left > raster_width) return;\n\n // skip because segment is beyond the left edge of the raster\n if (right <= 0) return;\n\n const start_column_index = Math.max(left, 0);\n const end_column_index = Math.min(right - 1, raster_width - 1);\n\n if (per_row_segment) {\n per_row_segment({\n row: row_index,\n columns: [start_column_index, end_column_index]\n });\n }\n\n if (per_pixel) {\n for (let column_index = start_column_index; column_index <= end_column_index; column_index++) {\n per_pixel({ row: row_index, column: column_index });\n }\n }\n });\n }\n });\n });\n};\n","const calculateCallbacks = require(\"./calculate-core.js\");\nconst checkRows = require(\"./check-rows.js\");\nconst mergeConsecutiveRanges = require(\"./merge-consecutive-ranges.js\");\n\nmodule.exports = function calculate({\n debug = false,\n raster_bbox,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n geometry,\n per_pixel,\n per_row_segment\n}) {\n const [xmin, ymin, xmax, ymax] = raster_bbox;\n if (pixel_height === undefined || pixel_height === null) pixel_height = (ymax - ymin) / raster_height;\n if (pixel_width === undefined || pixel_width === null) pixel_width = (xmax - xmin) / raster_width;\n\n const rows = new Array(raster_height);\n\n calculateCallbacks({\n raster_bbox,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n geometry,\n per_pixel,\n per_row_segment: ({ row, columns }) => {\n if (!rows[row]) rows[row] = [];\n rows[row].push(columns);\n if (per_row_segment) per_row_segment({ row, columns });\n }\n });\n\n for (let irow = 0; irow < rows.length; irow++) {\n const ranges = rows[irow];\n if (ranges) {\n // sort from left to right\n ranges.sort((a, b) => (a === b ? a[1] - b[1] : a[0] - b[0]));\n\n // replace existing row with sorted and merged one\n rows[irow] = mergeConsecutiveRanges(ranges);\n }\n }\n\n if (debug) checkRows(insides);\n\n return { rows };\n};\n","module.exports = function categorizeIntersection(segments) {\n try {\n let through, xmin, xmax;\n\n const n = segments.length;\n\n const first = segments[0];\n\n if (n === 1) {\n through = true;\n xmin = first.xmin;\n xmax = first.xmax;\n } /* n > 1 */ else {\n const last = segments[n - 1];\n through = first.direction === last.direction;\n xmin = Math.min(first.xmin, last.xmin);\n xmax = Math.max(first.xmax, last.xmax);\n }\n\n if (xmin === undefined || xmax === undefined || through === undefined || isNaN(xmin) || isNaN(xmax)) {\n throw Error(\"categorizeIntersection failed with xmin\", xmin, \"and xmax\", xmax);\n }\n\n return { xmin, xmax, through };\n } catch (error) {\n console.error(\"[categorizeIntersection] segments:\", segments);\n console.error(\"[categorizeIntersection]\", error);\n throw error;\n }\n};\n","module.exports = function checkRanges(rows) {\n rows.forEach((ranges, irow) => {\n for (let irange = 0; irange < ranges.length; irange++) {\n const range = ranges[irange];\n const [start, end] = range;\n if (start > end) {\n console.warn(\"[dufour-peyton-intersection] uh oh, encountered invalid range\", range, \"at row index\", irow, \"with ranges\", ranges);\n }\n\n for (let iother = irange + 1; iother < ranges.length; iother++) {\n if (iother[0] <= end) {\n console.warn(\"[dufour-peyton-intersection] encountered range problem on row index\", irow, \":\", ranges);\n }\n }\n }\n });\n};\n","module.exports = function clamp(n, min, max) {\n if (n < min) return min;\n else if (n > max) return max;\n return n;\n};\n","const cluster = require(\"./cluster.js\");\n\nmodule.exports = function clusterLineSegments(lineSegments, numberOfEdges, debug = false) {\n try {\n const clusters = cluster(lineSegments, s => s.endsOffLine);\n\n const numberOfClusters = clusters.length;\n\n if (numberOfClusters >= 2) {\n const firstCluster = clusters[0];\n const firstSegment = firstCluster[0];\n const lastCluster = clusters[clusters.length - 1];\n const lastSegment = lastCluster[lastCluster.length - 1];\n\n if (lastSegment.index === numberOfEdges - 1 && firstSegment.index === 0 && lastSegment.endsOnLine) {\n clusters[0] = clusters.pop().concat(firstCluster);\n }\n }\n\n return clusters;\n } catch (error) {\n console.error(\"[clusterLineSegments]\", error);\n }\n};\n","module.exports = function cluster(items, newClusterTest) {\n try {\n const numberOfItems = items.length;\n const clusters = [];\n let cluster = [];\n for (let i = 0; i < numberOfItems; i++) {\n const item = items[i];\n cluster.push(item);\n if (newClusterTest(item)) {\n clusters.push(cluster);\n cluster = [];\n }\n }\n\n if (cluster.length > 0) clusters.push(cluster);\n\n return clusters;\n } catch (error) {\n console.error(\"[cluster]:\", error);\n }\n};\n","// This function takes in an array with an even number of elements and\n// returns an array that couples every two consecutive elements;\nmodule.exports = function couple(array) {\n const couples = [];\n const lengthOfArray = array.length;\n for (let i = 0; i < lengthOfArray; i += 2) {\n couples.push([array[i], array[i + 1]]);\n }\n return couples;\n};\n","module.exports = function eachEdge(polygon, callback) {\n polygon.forEach(ring => {\n for (let i = 1; i < ring.length; i++) {\n // should reuse previous endPoint as startPoint to save memory\n const startPoint = ring[i - 1];\n const endPoint = ring[i];\n const edgeIndex = i - 1;\n callback([startPoint, endPoint], edgeIndex);\n }\n });\n};\n","const getDepth = require(\"get-depth\");\n\n// call callback function for each polygon in geojson\nmodule.exports = function eachPolygon(geojson, callback) {\n if (geojson.type === \"FeatureCollection\") {\n geojson.features.forEach(feature => eachPolygon(feature, callback));\n } else if (geojson.type === \"Feature\") {\n eachPolygon(geojson.geometry, callback);\n } else if (geojson.type === \"Polygon\") {\n eachPolygon(geojson.coordinates, callback);\n } else if (geojson.type === \"MultiPolygon\") {\n geojson.coordinates.forEach(polygon => {\n callback(polygon);\n });\n } else if (Array.isArray(geojson)) {\n const depth = getDepth(geojson);\n if (depth === 4) {\n geojson.forEach(polygon => {\n callback(polygon);\n });\n } else if (depth === 3) {\n callback(geojson);\n }\n }\n};\n","const eachPolygon = require(\"./each-polygon.js\");\n\nmodule.exports = function getBoundingBox(geometry) {\n let xmin, ymin, xmax, ymax;\n\n eachPolygon(geometry, polygon => {\n const ring = polygon[0]; // only want the exterior ring\n const imax = ring.length - 1;\n\n let i;\n if (xmin === undefined) {\n xmin = xmax = ring[0][0];\n ymin = ymax = ring[0][1];\n i = 1;\n } else {\n i = 0;\n }\n\n for (; i <= imax; i++) {\n const [x, y] = ring[i];\n if (x < xmin) xmin = x;\n else if (x > xmax) xmax = x;\n if (y < ymin) ymin = y;\n else if (y > ymax) ymax = y;\n }\n });\n\n return [xmin, ymin, xmax, ymax];\n};\n","const eachEdge = require(\"./each-edge.js\");\n\nmodule.exports = function getEdges(polygon) {\n const edges = [];\n eachEdge(polygon, edge => edges.push(edge));\n return edges;\n};\n","// function to get the point at which two lines intersect\n// the input uses the line representations from the\n// getLineFromPoints function\nmodule.exports = function getIntersectionOfTwoLines(line1, line2) {\n // calculate the determinant, ad - cb in a square matrix |a b|\n const det = line1.a * line2.b - line2.a * line1.b; /* |c d| */\n\n if (det) {\n // this makes sure the lines aren't parallel, if they are, det will equal 0\n const x = (line2.b * line1.c - line1.b * line2.c) / det;\n const y = (line1.a * line2.c - line2.a * line1.c) / det;\n return { x, y };\n }\n};\n","// function to convert two points into a\n// representation of a line\nmodule.exports = function getLineFromPoints(startPoint, endPoint) {\n // get a, b, and c from line equation ax + by = c\n const [x1, y1] = startPoint;\n const [x2, y2] = endPoint;\n const a = y2 - y1;\n const b = x1 - x2;\n const c = a * x1 + b * y1;\n\n // return just a b and c since that is all we need\n // to compute the intersection\n return { a, b, c };\n};\n","const eachPolygon = require(\"./each-polygon.js\");\n\nmodule.exports = function getPolygons(geojson) {\n const polygons = [];\n eachPolygon(geojson, polygon => polygons.push(polygon));\n return polygons;\n};\n","const categorizeIntersection = require(\"./categorize-intersection.js\");\nconst clamp = require(\"./clamp.js\");\nconst cluster = require(\"./cluster.js\");\nconst clusterLineSegments = require(\"./cluster-line-segments.js\");\nconst calculate = require(\"./calculate.js\");\nconst calculateCore = require(\"./calculate-core.js\");\nconst couple = require(\"./couple.js\");\nconst getBoundingBox = require(\"./get-bounding-box.js\");\nconst getPolygons = require(\"./get-polygons.js\");\nconst eachEdge = require(\"./each-edge.js\");\nconst getIntersectionOfTwoLines = require(\"./get-intersection-of-two-lines.js\");\nconst getLineFromPoints = require(\"./get-line-from-points.js\");\nconst mergeRanges = require(\"./merge-ranges.js\");\nconst partition = require(\"./partition.js\");\nconst prepareSnap = require(\"./prepare-snap.js\");\nconst range = require(\"./range.js\");\nconst roundDown = require(\"./round-down.js\");\n\nconst dufour_peyton_intersection = {\n calculate,\n calculateCore,\n categorizeIntersection,\n clamp,\n cluster,\n clusterLineSegments,\n couple,\n eachEdge,\n getBoundingBox,\n getIntersectionOfTwoLines,\n getLineFromPoints,\n getPolygons,\n mergeRanges,\n partition,\n prepareSnap,\n range,\n roundDown\n};\n\nif (typeof define === \"function\" && define.amd) define(() => dufour_peyton_intersection);\nif (typeof module === \"object\") module.exports = dufour_peyton_intersection;\nif (typeof self == \"object\") self.dufour_peyton_intersection = dufour_peyton_intersection;\nif (typeof window == \"object\") window.dufour_peyton_intersection = dufour_peyton_intersection;\n","module.exports = function mergeConsecutiveRanges(ranges) {\n const numberOfRanges = ranges.length;\n if (numberOfRanges > 0) {\n const firstRange = ranges[0];\n let previousEnd = firstRange[1];\n const result = [firstRange];\n for (let i = 1; i < numberOfRanges; i++) {\n const tempRange = ranges[i];\n const [start, end] = tempRange;\n if (start <= previousEnd + 1) {\n result[result.length - 1][1] = end;\n } else {\n result.push(tempRange);\n }\n previousEnd = end;\n }\n return result;\n }\n};\n","// This function takes in an array of number pairs and combines where there's overlap\nmodule.exports = function mergeRanges(ranges) {\n const numberOfRanges = ranges.length;\n if (numberOfRanges > 0) {\n const firstRange = ranges[0];\n let previousEnd = firstRange[1];\n const result = [firstRange];\n for (let i = 1; i < numberOfRanges; i++) {\n const tempRange = ranges[i];\n const [start, end] = tempRange;\n if (start <= previousEnd) {\n result[result.length - 1][1] = end;\n } else {\n result.push(tempRange);\n }\n previousEnd = end;\n }\n return result;\n }\n};\n","module.exports = function partition(array, filter) {\n const passed = [];\n const unpassed = [];\n const len = array.length;\n for (let i = 0; i < len; i++) {\n const item = array[i];\n if (filter(item)) passed.push(item);\n else unpassed.push(item);\n }\n return [passed, unpassed];\n};\n","const roundDown = require(\"./round-down.js\");\n\n/**\n * @name prepareSnap\n * @description snap horizontal range in crs to model space\n * @private\n * @param {Number} raster_xmin\n * @param {Number} pixel_width\n * @return {([Number, Number]) => [Number, Number]}\n */\nmodule.exports = function prepareSnap(raster_xmin, pixel_width) {\n return ([xmin, xmax]) => {\n // use roundDown so 1.5 is rounded to 1 not 2\n xmin = roundDown((xmin - raster_xmin) / pixel_width);\n if (xmin === -0) xmin = 0;\n\n xmax = Math.round((xmax - raster_xmin) / pixel_width);\n if (xmax === -0) xmax = 0;\n\n return [xmin, xmax];\n };\n};\n","module.exports = function range(count) {\n const result = new Array(count);\n for (let i = 0; i < count; i++) result[i] = i;\n return result;\n};\n","/**\n * @name roundDown\n * @description like Math.round, but numbers in the middle are rounded down not up\n * @param {Number} n\n * @returns {Number} rounded number\n */\nmodule.exports = function roundDown(n) {\n return -1 * Math.round(-1 * n);\n};\n","var loadImageCache = {};\n\nfunction loadImage(url, options) {\n var debug = (options && options.debug) || false;\n var useCache = (options && options.useCache) || false;\n var crossOrigin = (options && options.crossOrigin) || null;\n if (debug) console.log(\"[easy-image-loader] starting to load\", url);\n\n if (useCache && loadImageCache[url]) return loadImageCache[url];\n\n const promise = new Promise(function (resolve, reject) {\n var timeout;\n var img = document.createElement(\"img\");\n img.onload = function () {\n if (debug) console.log(\"[easy-image-loader] successfully loaded\", url);\n if (timeout) clearTimeout(timeout);\n resolve(img);\n };\n img.onerror = function (error) {\n if (debug) console.error(\"[easy-image-loader] failed to load\", url);\n if (timeout) clearTimeout(timeout);\n reject(error);\n };\n img.src = url;\n img.crossOrigin = crossOrigin;\n if (options && typeof options.timeout === \"number\") {\n setTimeout(() => {\n if (debug) console.error(\"[easy-image-loader] timed out loading\", url);\n reject(new Error(\"timeout\"));\n }, options.timeout);\n }\n });\n\n if (useCache) loadImageCache[url] = promise;\n\n return promise;\n}\n\nif (typeof define === \"function\" && define.amd)\n define(function () {\n return loadImage;\n });\nif (typeof window !== \"undefined\") window.loadImage = loadImage;\nif (typeof self !== \"undefined\") self.loadImage = loadImage;\nif (typeof global !== \"undefined\") global.loadImage = loadImage;\nif (typeof module !== \"undefined\") module.exports = loadImage;\n","\"use strict\";\n\nconst clean = require(\"./clean.js\");\n\nfunction absolute(n) {\n n = clean(n);\n if (n[0] === \"-\") return n.substring(1);\n else return n;\n}\n\nmodule.exports = absolute;\nmodule.exports.default = absolute;\n","\"use strict\";\n\nconst compare_positive = require(\"./compare_positive.js\");\nconst clean = require(\"./clean.js\");\nconst long_addition = require(\"./long_addition.js\");\nconst long_subtraction = require(\"./long_subtraction.js\");\n\nfunction add(a, b) {\n a = clean(a);\n b = clean(b);\n\n const apos = a[0] !== \"-\";\n const bpos = b[0] !== \"-\";\n\n if (apos && bpos) {\n return long_addition(a, b);\n } else if (!apos && !bpos) {\n return \"-\" + long_addition(a.substring(1), b.substring(1));\n } else if (!apos && bpos) {\n a = a.substring(1);\n switch (compare_positive(a, b)) {\n case \"=\":\n return \"0\";\n case \"<\":\n return long_subtraction(b, a);\n case \">\":\n return \"-\" + long_subtraction(a, b);\n }\n } else if (apos && !bpos) {\n b = b.substring(1);\n switch (compare_positive(a, b)) {\n case \"=\":\n return \"0\";\n case \"<\":\n return \"-\" + long_subtraction(b, a);\n case \">\":\n return long_subtraction(a, b);\n }\n }\n}\n\nmodule.exports = add;\nmodule.exports.default = add;\n","\"use strict\";\n\nconst expand = require(\"./expand.js\");\n\nmodule.exports = function clean(n) {\n // remove + from beginning\n if (n[0] === \"+\") n = n.substring(1);\n\n n = expand(n);\n\n // remove extra zero in front\n // 03938.123 => 3938.123\n n = n.replace(/^0+(?=\\d)/, \"\");\n\n // remove extra zero at end\n if (n.includes(\".\")) n = n.replace(/\\.?0+$/, \"\");\n\n // should improve this, so it identifies zero earlier\n if (n === \"\") n = \"0\";\n\n if (n === \"-0\") n = \"0\";\n\n return n;\n};\n","\"use strict\";\n\n// given:\n// - a and b are positive numbers\n// - a and b have been cleaned (i.e. no + or leading zeros)\nfunction compare_positive(a, b) {\n const alen = a.length;\n const blen = b.length;\n\n const aidx = a.indexOf(\".\");\n const bidx = b.indexOf(\".\");\n\n // basically where would the dot be\n // if we add a dot at the end of integers\n // like 123.\n const a_adjusted_dot_index = aidx === -1 ? alen : aidx;\n const b_adjusted_dot_index = bidx === -1 ? blen : bidx;\n\n // how much you need to shift the second number\n // to line up the decimal with the first\n // 0.12345\n // 12345.0\n\n const offset = a_adjusted_dot_index - b_adjusted_dot_index;\n\n let left = Math.max(a_adjusted_dot_index, b_adjusted_dot_index);\n\n let right = Math.max(alen - a_adjusted_dot_index, blen - b_adjusted_dot_index);\n\n let aoffset = offset < 0 ? -1 * offset : 0;\n let boffset = offset <= 0 ? 0 : offset;\n\n let imax = left + 1 + right - 1; // -1 for zero-index\n\n let i = 0;\n while (i < imax) {\n const ai = i - aoffset;\n const achar = ai === a_adjusted_dot_index ? \".\" : a[ai] || \"0\";\n const bi = i - boffset;\n const bchar = bi === b_adjusted_dot_index ? \".\" : b[bi] || \"0\";\n if (achar !== bchar) {\n if (achar > bchar) return \">\";\n else if (achar < bchar) return \"<\";\n }\n i++;\n }\n\n return \"=\";\n}\n\nmodule.exports = compare_positive;\nmodule.exports.default = compare_positive;\n","\"use strict\";\n\n// Internet Explorer doesn't support Number.MAX_SAFE_INTEGER\n// so we just define the constant ourselves\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n// the greatest number of digits an integer can have\n// and be guaranteed to be stored safely as a floating point.\n// subtract 1 because MAX_SAFE_INTEGER isn't all 9's\nconst MAX_SAFE_INTEGER_LENGTH = MAX_SAFE_INTEGER.toString().length - 1;\n\nmodule.exports = {\n MAX_SAFE_INTEGER,\n MAX_SAFE_INTEGER_LENGTH\n};\n","\"use strict\";\n\nconst absolute = require(\"./absolute.js\");\nconst clean = require(\"./clean.js\");\nconst long_division = require(\"./long_division.js\");\n\nfunction divide(dividend, divisor, options) {\n dividend = clean(dividend);\n divisor = clean(divisor);\n\n if (divisor === \"0\") throw new Error(\"[preciso] division by zero\");\n\n // sometimes dividend can be cleaned to \"\"\n if (dividend === \"\" || dividend === \"0\") return \"0\";\n\n const dividend_is_positive = dividend[0] !== \"-\";\n const divisor_is_positive = divisor[0] !== \"-\";\n\n const out_sign = dividend_is_positive !== divisor_is_positive ? \"-\" : \"\";\n\n if (!dividend_is_positive) dividend = absolute(dividend);\n if (!divisor_is_positive) divisor = absolute(divisor);\n\n return out_sign + long_division(dividend, divisor, options);\n}\n\nmodule.exports = divide;\nmodule.exports.default = divide;\n","\"use strict\";\n\n// convert exponential notation to normal string\n// not optimized yet and no support for big numbers\nfunction expand(n) {\n // remove + from beginning\n if (n[0] === \"+\") n = n.substring(1);\n\n const sign = n[0] === \"-\" ? \"-\" : \"\";\n if (sign === \"-\") n = n.substring(1);\n\n const index_of_e = n.indexOf(\"e\");\n\n // number not in exponential notation\n if (index_of_e === -1) return sign + n;\n\n let index_of_dot = n.indexOf(\".\");\n\n // if number doesn't include a period dot\n // then just assume it at the end\n // such that 3e4 has index of dot at 1\n if (index_of_dot === -1) index_of_dot = index_of_e;\n\n const shift = Number(n.substring(index_of_e + 1));\n\n // remove old decimal place\n const base = n.substring(0, index_of_e).replace(\".\", \"\");\n\n // normalize shift to start of the string at index zero\n const normshift = index_of_dot + shift;\n\n const baselen = base.length;\n\n if (normshift >= baselen) {\n const zct = normshift - baselen;\n let result = base;\n for (let i = 0; i < zct; i++) result += \"0\";\n return sign + result;\n } else if (normshift < 0) {\n // need to add zeros in decimal places\n let result = \"0.\";\n for (let i = 0; i > normshift; i--) result += \"0\";\n result += base;\n return sign + result;\n } else {\n // shifting within the base\n return sign + base.substring(0, normshift) + \".\" + base.substring(normshift);\n }\n}\n\nmodule.exports = expand;\nmodule.exports.default = expand;\n","\"use strict\";\n\nconst { MAX_SAFE_INTEGER_LENGTH } = require(\"./constants.js\");\n\n// assumes both numbers are positive numbers\nfunction long_addition(a, b) {\n const alen = a.length;\n const blen = b.length;\n\n const aidx = a.indexOf(\".\");\n const bidx = b.indexOf(\".\");\n\n // basically where would the dot be\n // if we add a dot at the end of integers\n // like 123.\n const a_adjusted_dot_index = aidx === -1 ? alen : aidx;\n const b_adjusted_dot_index = bidx === -1 ? blen : bidx;\n\n // just use floating point arithmetic for small integers\n if (aidx === -1 && bidx === -1 && alen < MAX_SAFE_INTEGER_LENGTH && blen < MAX_SAFE_INTEGER_LENGTH) {\n return (Number(a) + Number(b)).toFixed();\n }\n\n // how much you need to shift the second number\n // to line up the decimal with the first\n // 0.12345\n // 12345.0\n\n const offset = a_adjusted_dot_index - b_adjusted_dot_index;\n\n let left = Math.max(a_adjusted_dot_index, b_adjusted_dot_index);\n\n let right = Math.max(alen - a_adjusted_dot_index - 1, blen - b_adjusted_dot_index - 1);\n\n let aoffset = offset < 0 ? -1 * offset : 0;\n let boffset = offset <= 0 ? 0 : offset;\n\n let imax = left + 1 + right - 1; // -1 for zero-index\n\n let result = \"\";\n\n let carried = 0;\n\n // to the right of the period\n // 0.12345\n // 12345.0\n let i = imax;\n if (right > 0) {\n while (i > imax - right) {\n const achar = a[i - aoffset] || \"0\";\n const bchar = b[i - boffset] || \"0\";\n let n = Number(achar) + Number(bchar) + carried;\n if (n >= 10) {\n n -= 10;\n carried = 1;\n } else {\n carried = 0;\n }\n if (result !== \"\" || n !== 0) {\n result = n + result;\n }\n i--;\n }\n if (result) result = \".\" + result;\n i--; // substract 1 for dot\n }\n\n if (left > 0) {\n while (i >= 0) {\n const achar = a[i - aoffset] || \"0\";\n const bchar = b[i - boffset] || \"0\";\n let n = Number(achar) + Number(bchar) + carried;\n if (n >= 10) {\n n -= 10;\n carried = 1;\n } else {\n carried = 0;\n }\n result = n + result;\n i--;\n }\n }\n\n if (carried === 1) {\n result = carried + result;\n }\n\n if (result[0] === \".\") result = \"0\" + result;\n\n return result;\n}\n\nmodule.exports = long_addition;\nmodule.exports.default = long_addition;\n","\"use strict\";\n\nconst compare_positive = require(\"./compare_positive.js\");\nconst add = require(\"./add.js\");\nconst subtract = require(\"./subtract.js\");\nconst round_last_decimal = require(\"./round_last_decimal.js\");\n\n// given dividend and divisor are positive numberical strings\nfunction long_division(dividend, divisor, { max_decimal_digits = 100, ellipsis = false } = {}) {\n // remove unnecessary starting zeros\n // ex: 0.5 => .5\n if (dividend[0] === \"0\") dividend = dividend.substring(1);\n if (divisor[0] === \"0\") divisor = divisor.substring(1);\n\n const dividend_index_of_dot = dividend.indexOf(\".\");\n const divisor_index_of_dot = divisor.indexOf(\".\");\n\n const adjusted_dividend_index_of_dot = dividend_index_of_dot === -1 ? dividend.length : dividend_index_of_dot;\n const divisor_num_decimal_places = divisor_index_of_dot === -1 ? 0 : divisor.length - 1 - divisor_index_of_dot;\n\n // whether the result has a repeating decimal\n // e.g. 1/3 is repeating as in \"0.333...\"\n let repeating = false;\n\n // remove decimals\n dividend = dividend.replace(/\\./, \"\");\n divisor = divisor.replace(/\\./, \"\");\n\n const dividend_length = dividend.length;\n\n let current = \"\";\n let quotient = \"\";\n let comparison;\n let offset = -1 * divisor_num_decimal_places;\n let skip = 0;\n for (let i = 0; i < dividend_length; i++) {\n const char = dividend[i];\n\n current += char;\n\n comparison = compare_positive(current, divisor);\n\n if (comparison === \">\") {\n // same as const times = Math.floor(current / divisor);\n // but without floating point problems\n let times = 1;\n let product = add(divisor, divisor);\n let passed_product = divisor;\n while (compare_positive(product, current) !== \">\") {\n times++;\n passed_product = product;\n product = add(product, divisor);\n }\n times = times.toString();\n\n if (quotient !== \"\") {\n for (let i = times.length; i <= skip; i++) quotient += \"0\";\n }\n quotient += times; // string concatentation\n\n current = subtract(current, passed_product);\n\n skip = 0;\n } else if (comparison === \"<\") {\n if (quotient === \"\") {\n offset++;\n }\n skip++;\n\n // outside greater than inside\n continue;\n } else if (comparison === \"=\") {\n if (quotient !== \"\") {\n for (let i = 0; i < skip; i++) quotient += \"0\";\n }\n quotient += \"1\";\n current = \"0\";\n skip = 0;\n }\n }\n\n if (current.match(/^0+$/g)) {\n if (comparison === \"<\") {\n quotient += current.substring(0, current.length - 1);\n }\n } else {\n const previous = {};\n\n // keep dividing until we have an answer\n // figure out current place of decimal number\n const idot = adjusted_dividend_index_of_dot - offset;\n const qlen = quotient.length;\n // add 1 extra for rounding purposes\n const imax = idot - qlen + max_decimal_digits + 1;\n\n // reset skip if just \"\" so far because don't want to count 0 in 0.\n if (quotient === \"\") {\n skip = 0;\n }\n\n for (let i = 0; i < imax; i++) {\n current += \"0\";\n if (ellipsis) {\n if (current in previous) {\n previous[current]++;\n if (previous[current] > 3) {\n quotient += \"...\";\n repeating = true;\n break;\n }\n } else {\n previous[current] = 1;\n }\n }\n const comparison = compare_positive(current, divisor);\n\n if (comparison === \">\") {\n // inside greater than outside\n\n // how many times the divisor goes into the current\n let times = 1;\n let product = add(divisor, divisor);\n let passed_product = divisor;\n while (compare_positive(product, current) !== \">\") {\n times++;\n passed_product = product;\n product = add(product, divisor);\n }\n\n times = times.toString();\n\n // pad left zeros\n for (let i = times.length; i <= skip; i++) quotient += \"0\";\n quotient += times; // string concatentation\n current = subtract(current, passed_product);\n\n if (current === \"0\") {\n break;\n }\n\n skip = 0;\n } else if (comparison === \"<\") {\n // outside greater than inside\n skip++;\n continue;\n } else if (comparison === \"=\") {\n // fill in previous with zeros\n for (let i = 0; i < skip; i++) quotient += \"0\";\n quotient += \"1\";\n skip = 0;\n break;\n }\n }\n }\n\n // reinsert decimal place\n\n const idot = adjusted_dividend_index_of_dot - offset;\n const qlen = quotient.length;\n\n let num_decimals;\n\n if (idot === qlen) {\n // integer number so don't do anything\n num_decimals = 0;\n } else if (idot < 0) {\n quotient = \"0.\" + \"0\".repeat(Math.abs(idot)) + quotient;\n num_decimals = qlen - idot; // idot is negative, so adding\n } else if (idot > qlen) {\n // add more zeros to integer\n for (let i = qlen; i < idot; i++) quotient += \"0\";\n num_decimals = 0;\n } else if (idot < qlen) {\n quotient = quotient.substring(0, idot) + \".\" + quotient.substring(idot);\n num_decimals = qlen - idot;\n } else if (idot === 0) {\n quotient = \"0.\" + quotient;\n num_decimals = qlen;\n }\n\n // remove zeros from front\n // 03938.123 => 3938.123\n quotient = quotient.replace(/^0+/, \"\");\n\n // remove extra zeros from the end\n quotient = quotient.replace(/\\.\\d+0+$/, \"\");\n\n // round if necessary\n if (!repeating) {\n const extra_decimals = num_decimals - max_decimal_digits;\n if (extra_decimals > 0) {\n quotient = round_last_decimal(quotient.substring(0, quotient.length - extra_decimals + 1));\n }\n }\n\n if (quotient[0] === \".\") quotient = \"0\" + quotient;\n\n return quotient;\n}\n\nmodule.exports = long_division;\nmodule.exports.default = long_division;\n","\"use strict\";\n\nconst { MAX_SAFE_INTEGER_LENGTH } = require(\"./constants.js\");\n\nconst CHUNK_SIZE = 15;\n\n/**\n *\n * @param {String} a - numerical string larger or equal to b\n * @param {String} b - numerical string smaller or equal to a\n * @returns {String} product - result of multiplying a with b\n */\n\nfunction long_multiplication(a, b) {\n if (a === \"0\" || b === \"0\") return \"0\";\n\n const top_index_of_dot = a.indexOf(\".\");\n const bottom_index_of_dot = b.indexOf(\".\");\n\n const a_num_integer_places = top_index_of_dot === -1 ? a.length : top_index_of_dot;\n const b_num_integer_places = bottom_index_of_dot === -1 ? b.length : bottom_index_of_dot;\n const max_total_num_integer_places = a_num_integer_places + b_num_integer_places;\n\n const a_num_decimal_places = top_index_of_dot === -1 ? 0 : a.length - 1 - top_index_of_dot;\n const b_num_decimal_places = bottom_index_of_dot === -1 ? 0 : b.length - 1 - bottom_index_of_dot;\n\n const out_num_decimal_places = a_num_decimal_places + b_num_decimal_places;\n\n if (out_num_decimal_places === 0 && max_total_num_integer_places < MAX_SAFE_INTEGER_LENGTH) {\n return (Number(a) * Number(b)).toFixed(0);\n }\n\n // remove decimals\n const aint = a.replace(\".\", \"\");\n const bint = b.replace(\".\", \"\");\n\n const alen = aint.length;\n const blen = bint.length;\n\n const chunks = [];\n let i = alen;\n while (i >= 0) {\n const end = i;\n const start = (i -= CHUNK_SIZE);\n const str = aint.substring(start, end);\n chunks.push([Number(str), str.length]);\n }\n\n const partial_products = [];\n const partials = [];\n\n // for each number in multiplier\n for (let i = 0, ireverse = blen - 1; ireverse >= 0; ireverse--, i++) {\n const bstr = bint[ireverse];\n\n const bnum = Number(bstr);\n\n let carried = 0;\n let partial = \"\";\n const ichunklast = chunks.length - 1;\n chunks.forEach(([chunk, chunklen], c) => {\n const subpartial = carried + bnum * chunk;\n let subpartstr = subpartial.toString();\n const subpartcharlen = subpartstr.length;\n if (subpartcharlen > chunklen && c !== ichunklast) {\n const islice = -1 * chunklen;\n partial = subpartstr.slice(islice) + partial;\n carried = Number(subpartstr.slice(0, islice));\n } else {\n const imax = chunklen - subpartcharlen;\n for (let i = 0; i < imax; i++) {\n subpartstr = \"0\" + subpartstr;\n }\n carried = 0;\n partial = subpartstr + partial;\n }\n });\n\n // add number of zeros at end\n partial += \"0\".repeat(i);\n\n partial_products.push(partial);\n\n partials.push([Array.from(partial).map(char => Number(char)), partial.length]);\n }\n\n // back to front, iterate through columns\n // and add partial products together\n const num_partials = partial_products.length;\n\n const number_of_columns = partials[partials.length - 1][1] + num_partials;\n\n let result = \"\";\n let carried = 0;\n for (let icol = 0; icol < number_of_columns; icol++) {\n let sum = carried;\n const pmax = Math.min(icol, num_partials - 1);\n for (let p = 0; p <= pmax; p++) {\n const [pnums, plen] = partials[p];\n const i = plen - 1 - icol;\n if (i >= 0) {\n sum += pnums[i];\n }\n }\n\n if (sum >= 10) {\n sum = sum.toString();\n result = sum[sum.length - 1] + result;\n carried = Number(sum.slice(0, -1));\n } else {\n result = sum + result;\n carried = 0;\n }\n }\n\n // add decimal back in\n if (out_num_decimal_places === 0) {\n // integer\n // remove extra zeros\n result = result.replace(/^0+/, \"\");\n } else {\n // decimal number\n const idot = result.length - out_num_decimal_places;\n\n result = result.substring(0, idot) + \".\" + result.substring(idot);\n\n // remove zeros from front\n result = result.replace(/^0+/, \"\");\n\n // remove extra zeros from the end\n result = result.replace(/\\.?0+$/, \"\");\n\n if (result[0] === \".\") result = \"0\" + result;\n }\n\n return result;\n}\n\nmodule.exports = long_multiplication;\nmodule.exports.default = long_multiplication;\n","\"use strict\";\n\n// const lookup = {};\n// const vals = [undefined, 0, 1, 2, 3, 4, 5, 6, 8, 9];\n// vals.forEach(top => {\n// lookup[top] = {};\n// vals.forEach(bottom => {\n// lookup[top][bottom] = (top || 0) - (bottom || 0);\n// })\n// });\n\nconst { MAX_SAFE_INTEGER_LENGTH } = require(\"./constants.js\");\n\n// assumes (1) both a and b are positive numbers\n// and (2) a is larger than b\nfunction long_subtraction(a, b) {\n const alen = a.length;\n const blen = b.length;\n\n const aidx = a.indexOf(\".\");\n const bidx = b.indexOf(\".\");\n\n // basically where would the dot be\n // if we add a dot at the end of integers\n // like 123.\n const a_adjusted_dot_index = aidx === -1 ? alen : aidx;\n const b_adjusted_dot_index = bidx === -1 ? blen : bidx;\n // console.log({a_adjusted_dot_index, b_adjusted_dot_index});\n\n // how much you need to shift the second number\n // to line up the decimal with the first\n // 0.12345\n // 12345.0\n\n // just use floating point arithmetic for small integers\n if (aidx === -1 && bidx === -1 && alen < MAX_SAFE_INTEGER_LENGTH && blen < MAX_SAFE_INTEGER_LENGTH) {\n return (Number(a) - Number(b)).toFixed();\n }\n\n const offset = a_adjusted_dot_index - b_adjusted_dot_index;\n // console.log(\"offset:\", offset);\n\n let left = Math.max(a_adjusted_dot_index, b_adjusted_dot_index);\n // console.log(\"left:\", left);\n\n let right = Math.max(alen - a_adjusted_dot_index - 1, blen - b_adjusted_dot_index - 1);\n // console.log(\"right:\", right);\n\n let aoffset = offset < 0 ? -1 * offset : 0;\n let boffset = offset <= 0 ? 0 : offset;\n // console.log({aoffset, boffset});\n\n let imax = left + 1 + right - 1; // -1 for zero-index\n // console.log({imax});\n\n let result = \"\";\n\n // number of borrowings\n let borrowed = 0;\n\n // to the right of the period\n // 100.5 6 7\n // 2.2 9 3\n // (-3 + 10) 4\n let i = imax;\n if (right > 0) {\n while (i > imax - right) {\n // console.log(\"\\n\\n\", {i});\n let top = a[i - aoffset] || \"0\";\n let bottom = b[i - boffset] || \"0\";\n\n // console.log(\"pre borrowing\", {top, bottom});\n top -= borrowed;\n borrowed = 0;\n\n // console.log(\"after borrowing\", {top, bottom});\n let n = top - bottom;\n\n // console.log({n});\n if (n < 0) {\n while (n < 0) {\n borrowed++;\n n += 10;\n }\n } else if (borrowed) {\n borrowed--;\n }\n // console.log({n});\n if (result !== \"\" || n !== 0) {\n result = n + result;\n }\n i--;\n }\n if (result !== \"\") {\n result = \".\" + result;\n }\n i--; // substract 1 for dot\n }\n\n // console.log({result});\n\n if (left > 0) {\n while (i > 0) {\n // console.log(\"\\n\\n\", {i});\n let top = a[i - aoffset] || \"0\";\n let bottom = b[i - boffset] || \"0\";\n\n // console.log(\"pre borrowing\", {top, bottom});\n top -= borrowed;\n borrowed = 0;\n\n // console.log(\"after borrowing\", {top, bottom});\n let n = top - bottom;\n\n // console.log({n});\n if (n < 0) {\n while (n < 0) {\n borrowed++;\n n += 10;\n }\n } else if (borrowed) {\n borrowed--;\n }\n // console.log({n});\n result = n + result;\n i--;\n }\n\n // console.log({borrowed});\n // special rule for last one\n const achar = a[0 - aoffset] || \"0\";\n const bchar = b[0 - boffset] || \"0\";\n let n = Number(achar) - (borrowed > 0 ? 1 : 0) - Number(bchar);\n if (n !== 0) {\n result = n + result;\n }\n\n // remove any zeros in front like in 0123\n result = result.replace(/^0+/, \"\");\n }\n\n // if decimal number add zero\n if (result[0] === \".\") result = \"0\" + result;\n\n return result;\n}\n\nmodule.exports = long_subtraction;\nmodule.exports.default = long_subtraction;\n","\"use strict\";\n\nconst absolute = require(\"./absolute.js\");\nconst clean = require(\"./clean.js\");\nconst compare_positive = require(\"./compare_positive.js\");\nconst long_multiplication = require(\"./long_multiplication.js\");\n\nfunction multiply(a, b) {\n a = clean(a);\n b = clean(b);\n\n const apos = a[0] !== \"-\";\n const bpos = b[0] !== \"-\";\n\n const out_sign = apos !== bpos ? \"-\" : \"\";\n\n a = absolute(a);\n b = absolute(b);\n\n const comparison = compare_positive(a, b);\n\n if (comparison === \"<\") {\n const aold = a;\n const bold = b;\n a = bold;\n b = aold;\n }\n\n return out_sign + long_multiplication(a, b);\n}\n\nmodule.exports = multiply;\nmodule.exports.default = multiply;\n","\"use strict\";\n\nconst add = require(\"./add.js\");\nconst truncate_decimal = require(\"./truncate_decimal.js\");\n\n// given n is a positive decimal number\nconst up = [\"5\", \"6\", \"7\", \"8\", \"9\"];\n\nfunction round_last_decimal(n) {\n // will round up to an integer\n if (n.match(/\\.9+$/)) {\n return add(truncate_decimal(n), \"1\");\n }\n\n // remove + from beginning\n if (n[0] === \"+\") n = n.substring(1);\n\n //console.log(\"rounding:\", {n});\n const len = n.length;\n //console.log({len});\n let result = \"\";\n\n const last_char = n[n.length - 1];\n //console.log({last_char});\n\n if (up.includes(last_char)) {\n let i;\n for (i = len - 2; i >= 0; i--) {\n const char = n[i];\n //console.log({char});\n // skip over . or -\n if (char === \".\" || char === \"-\") continue;\n\n const nchar = Number(char) + 1;\n //console.log({nchar});\n\n if (nchar === 10) {\n result = \"0\" + result;\n // keep rounding up\n } else {\n result = nchar + result;\n break;\n }\n }\n //console.log({i});\n if (i > 0) result = n.substring(0, i) + result;\n } else {\n result = n.substring(0, len - 1);\n }\n\n if (result[result.length - 1] === \".\") result = result.substring(0, result.length - 1);\n\n // remove trailing zeros in decimal number\n // 0.50 => 0.5\n if (result.indexOf(\".\") > -1) result = result.replace(/0+$/, \"\");\n\n return result;\n}\n\nmodule.exports = round_last_decimal;\nmodule.exports.default = round_last_decimal;\n","\"use strict\";\n\nconst clean = require(\"./clean\");\nconst compare_positive = require(\"./compare_positive.js\");\nconst long_addition = require(\"./long_addition.js\");\nconst long_subtraction = require(\"./long_subtraction.js\");\n\nfunction subtract(a, b) {\n a = clean(a);\n b = clean(b);\n\n const a_is_positive = a[0] !== \"-\";\n const b_is_positive = b[0] !== \"-\";\n if (a_is_positive) {\n if (b_is_positive) {\n const comparison = compare_positive(a, b);\n if (comparison === \">\") {\n return long_subtraction(a, b);\n } else if (comparison === \"<\") {\n return \"-\" + long_subtraction(b, a);\n } else {\n return \"0\";\n }\n } else {\n return long_addition(a, b.substring(1));\n }\n } else if (b_is_positive) {\n return \"-\" + long_addition(a.substring(1), b);\n } else {\n a = a.substring(1);\n b = b.substring(1);\n const comparison = compare_positive(a, b);\n if (comparison === \">\") {\n return \"-\" + long_subtraction(a, b);\n } else if (comparison === \"<\") {\n return long_subtraction(b, a);\n } else {\n return \"0\";\n }\n }\n}\n\nmodule.exports = subtract;\nmodule.exports.default = subtract;\n","\"use strict\";\n\n// given n is a decimal number\nfunction truncate_decimal(n) {\n return n.substring(0, n.indexOf(\".\"));\n}\n\nmodule.exports = truncate_decimal;\nmodule.exports.default = truncate_decimal;\n","// takes in image data array and sets alpha value to 0 for parts outside the mask geometry\nfunction maskImageData({\n data,\n data_bbox,\n data_height,\n data_width,\n data_srs,\n debug = false,\n geomask,\n mask,\n mask_srs,\n reproject,\n strategy = \"outside\",\n edition\n}) {\n if (![\"inside\", \"outside\"].includes(strategy)) {\n throw new Error(`[geocanvas] strategy can be either \"inside\" or \"outside\". you provided \"${strategy}\"`);\n }\n const { rows } = geomask[strategy]({\n raster_bbox: data_bbox,\n raster_height: data_height,\n raster_width: data_width,\n raster_srs: data_srs,\n mask,\n mask_srs,\n reproject\n });\n\n rows.forEach((ranges, r) => {\n if (ranges) {\n const row_offset = r * 4 * data_width;\n ranges.forEach(([start, end]) => {\n for (let c = start; c <= end; c++) {\n data[row_offset + c * 4 + 3] = 0; // set alpha to zero\n }\n });\n }\n });\n}\n\nfunction maskCanvas({\n canvas,\n canvas_bbox,\n canvas_srs,\n geomask,\n mask,\n mask_srs,\n reproject,\n strategy = \"outside\",\n edition,\n debug = false\n}) {\n if (debug) console.log(\"[geocanvas] starting to mask canvas\");\n if (![\"inside\", \"outside\"].includes(strategy)) {\n throw new Error(`[geocanvas] strategy can be either \"inside\" or \"outside\". you provided \"${strategy}\"`);\n }\n const context = canvas.getContext(\"2d\");\n const { height, width } = canvas;\n if (debug) console.log(`[geocanvas] canvas height is ${height} pixels`);\n if (debug) console.log(`[geocanvas] canvas width is ${width} pixels`);\n const imageData = context.getImageData(0, 0, width, height);\n maskImageData({\n data: imageData.data,\n data_bbox: canvas_bbox,\n data_height: height,\n data_srs: canvas_srs,\n data_width: width,\n debug,\n geomask,\n mask,\n mask_srs,\n reproject,\n strategy\n });\n if (debug) console.log(\"[geocanvas] image data after masking:\", imageData);\n context.putImageData(imageData, 0, 0);\n if (debug) console.log(\"[geocanvas] put image data back\");\n return canvas;\n}\n\nmodule.exports = { maskImageData, maskCanvas };\n","const geomask = require(\"geomask\");\nconst core = require(\"./core.js\");\n\nfunction maskImageData(options) {\n return core.maskImageData({ ...options, edition: \"full\", geomask });\n}\n\nfunction maskCanvas(options) {\n return core.maskCanvas({ ...options, edition: \"full\", geomask });\n}\n\nconst geocanvas = { maskImageData, maskCanvas };\n\nif (typeof define === \"function\" && define.amd)\n define(function () {\n return geocanvas;\n });\nif (typeof module === \"object\") module.exports = geocanvas;\nif (typeof self === \"object\") self.geocanvas = geocanvas;\nif (typeof window === \"object\") window.geocanvas = geocanvas;\n","const lite = require(\"./lite.js\");\nconst reprojectGeoJSON = require(\"reproject-geojson\");\n\nfunction calcMask({\n debug = false,\n fname,\n raster_bbox,\n raster_srs,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n mask,\n mask_srs\n}) {\n if (raster_srs !== mask_srs) {\n mask = reprojectGeoJSON(mask, { from: mask_srs, to: raster_srs });\n }\n\n return lite[fname]({\n debug,\n raster_bbox,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n mask\n });\n}\n\nfunction inside(options) {\n return calcMask({ ...options, fname: \"inside\" });\n}\n\nfunction outside(options) {\n return calcMask({ ...options, fname: \"outside\" });\n}\n\nconst geomask = { inside, outside };\n\nif (typeof module === \"object\") module.exports = geomask;\n","const dufour_peyton_intersection = require(\"dufour-peyton-intersection\");\nconst subtract = require(\"preciso/subtract.js\");\nconst divide = require(\"preciso/divide.js\");\nconst reprojectGeoJSON = require(\"reproject-geojson/pluggable.js\");\nconst segflip = require(\"segflip\");\n\nfunction checkRows({ rows }) {\n rows.forEach((segs, irow) => {\n if (segs) {\n segs.forEach(([start, end], iseg) => {\n if (start > end) {\n throw Error(`uh oh: invalid segment at row ${irow}, segment ${iseg}`);\n }\n });\n }\n });\n}\n\nfunction inside({\n debug = false,\n raster_bbox,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n mask,\n reproject\n}) {\n if (typeof reproject === \"function\") {\n // reproject geometry to the srs of the raster\n mask = reprojectGeoJSON(mask, { in_place: false, reproject });\n }\n\n if (pixel_height === undefined)\n pixel_height = Number(\n divide(subtract(raster_bbox[3].toString(), raster_bbox[1].toString()), raster_height.toString())\n );\n if (pixel_width === undefined)\n pixel_width = Number(\n divide(subtract(raster_bbox[2].toString(), raster_bbox[0].toString()), raster_width.toString())\n );\n\n const { rows } = dufour_peyton_intersection.calculate({\n raster_bbox,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n geometry: mask\n });\n\n if (debug) checkRows({ rows });\n\n return { rows };\n}\n\nfunction outside({\n debug = false,\n raster_bbox,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n mask,\n reproject\n}) {\n if (typeof reproject === \"function\") {\n // reproject geometry to the srs of the raster\n mask = reprojectGeoJSON(mask, { in_place: false, reproject });\n }\n\n if (pixel_height === undefined)\n pixel_height = Number(\n divide(subtract(raster_bbox[3].toString(), raster_bbox[1].toString()), raster_height.toString())\n );\n if (pixel_width === undefined)\n pixel_width = Number(\n divide(subtract(raster_bbox[2].toString(), raster_bbox[0].toString()), raster_width.toString())\n );\n\n // calculate inside segments\n const { rows: insides } = inside({\n debug,\n raster_bbox,\n raster_height,\n raster_width,\n pixel_height,\n pixel_width,\n mask\n });\n\n if (debug) checkRows({ rows: insides });\n\n const last_column_index = raster_width - 1;\n\n // consider optimizing memory and speed\n // by just returning a reference to a whole row\n // instead of generating a new array every time\n // const whole_row = [0, last_column_index];\n\n const outsides = [];\n // using for loop instead of map because\n // map skips empty insides/rows\n for (let i = 0; i < insides.length; i++) {\n const segs = insides[i];\n if (!Array.isArray(segs) || segs.length === 0) {\n outsides.push([[0, last_column_index]]);\n } else {\n outsides.push(\n segflip({\n segments: segs,\n min: 0,\n max: last_column_index,\n debug: false\n })\n );\n }\n }\n\n if (debug) checkRows({ rows: outsides });\n\n return { rows: outsides };\n}\n\nconst geomask = { inside, outside };\n\nif (typeof module === \"object\") module.exports = geomask;\n","const clean = require(\"./clean.js\");\nmodule.exports = function absolute(n) {\n n = clean(n);\n if (n[0] === \"-\") return n.substring(1);\n else return n;\n};\n","const compare_positive = require(\"./compare_positive.js\");\nconst clean = require(\"./clean.js\");\nconst long_addition = require(\"./long_addition.js\");\nconst long_subtraction = require(\"./long_subtraction.js\");\n\nmodule.exports = function add(a, b) {\n a = clean(a);\n b = clean(b);\n\n const apos = a[0] !== \"-\";\n const bpos = b[0] !== \"-\";\n\n if (apos && bpos) {\n return long_addition(a, b);\n } else if (!apos && !bpos) {\n return \"-\" + long_addition(a.substring(1), b.substring(1));\n } else if (!apos && bpos) {\n a = a.substring(1);\n switch (compare_positive(a, b)) {\n case \"=\":\n return \"0\";\n case \"<\":\n return long_subtraction(b, a);\n case \">\":\n return \"-\" + long_subtraction(a, b);\n }\n } else if (apos && !bpos) {\n b = b.substring(1);\n switch (compare_positive(a, b)) {\n case \"=\":\n return \"0\";\n case \"<\":\n return \"-\" + long_subtraction(b, a);\n case \">\":\n return long_subtraction(a, b);\n }\n }\n};\n","const expand = require(\"./expand.js\");\n\nmodule.exports = function clean(n) {\n // remove + from beginning\n if (n[0] === \"+\") n = n.substring(1);\n\n n = expand(n);\n\n // remove extra zero in front\n // 03938.123 => 3938.123\n n = n.replace(/^0+(?=\\d)/, \"\");\n\n // remove extra zero at end\n\n return n;\n};\n","const clean = require(\"./clean.js\");\n\n// given:\n// - a and b are positive numbers\n// - a and b have been cleaned (i.e. no + or leading zeros)\nmodule.exports = function compare_positive(a, b) {\n const alen = a.length;\n const blen = b.length;\n\n const aidx = a.indexOf(\".\");\n const bidx = b.indexOf(\".\");\n\n // basically where would the dot be\n // if we add a dot at the end of integers\n // like 123.\n const a_adjusted_dot_index = aidx === -1 ? alen : aidx;\n const b_adjusted_dot_index = bidx === -1 ? blen : bidx;\n\n // how much you need to shift the second number\n // to line up the decimal with the first\n // 0.12345\n // 12345.0\n\n const offset = a_adjusted_dot_index - b_adjusted_dot_index;\n\n let left = Math.max(a_adjusted_dot_index, b_adjusted_dot_index);\n\n let right = Math.max(alen - a_adjusted_dot_index, blen - b_adjusted_dot_index);\n\n let aoffset = offset < 0 ? -1 * offset : 0;\n let boffset = offset <= 0 ? 0 : offset;\n\n let imax = left + 1 + right - 1; // -1 for zero-index\n\n let i = 0;\n while (i < imax) {\n const achar = a[i - aoffset] || \"0\";\n const bchar = b[i - boffset] || \"0\";\n if (achar !== bchar) {\n if (achar > bchar) return \">\";\n else if (achar < bchar) return \"<\";\n }\n i++;\n }\n\n return \"=\";\n};\n","const absolute = require(\"./absolute.js\");\nconst clean = require(\"./clean.js\");\nconst long_division = require(\"./long_division.js\");\n\nmodule.exports = function (dividend, divisor, options) {\n dividend = clean(dividend);\n divisor = clean(divisor);\n\n const dividend_is_positive = dividend[0] !== \"-\";\n const divisor_is_positive = divisor[0] !== \"-\";\n\n const out_sign = dividend_is_positive !== divisor_is_positive ? \"-\" : \"\";\n\n if (!dividend_is_positive) dividend = absolute(dividend);\n if (!divisor_is_positive) divisor = absolute(divisor);\n\n return out_sign + long_division(dividend, divisor, options);\n};\n","// convert exponential notation to normal string\n// not optimized yet and no support for big numbers\nmodule.exports = function expand(n) {\n // remove + from beginning\n if (n[0] === \"+\") n = n.substring(1);\n\n const sign = n[0] === \"-\" ? \"-\" : \"\";\n if (sign === \"-\") n = n.substring(1);\n\n const index_of_e = n.indexOf(\"e\");\n\n // number not in exponential notation\n if (index_of_e === -1) return sign + n;\n\n let index_of_dot = n.indexOf(\".\");\n\n // if number doesn't include a period dot\n // then just assume it at the end\n // such that 3e4 has index of dot at 1\n if (index_of_dot === -1) index_of_dot = index_of_e;\n\n const shift = Number(n.substring(index_of_e + 1));\n\n // remove old decimal place\n const base = n.substring(0, index_of_e).replace(\".\", \"\");\n\n // normalize shift to start of the string at index zero\n const normshift = index_of_dot + shift;\n\n const baselen = base.length;\n\n if (normshift >= baselen) {\n const zct = normshift - baselen;\n let result = base;\n for (let i = 0; i < zct; i++) result += \"0\";\n return sign + result;\n } else if (normshift < 0) {\n // need to add zeros in decimal places\n result = \"0.\";\n for (let i = 0; i > normshift; i--) result += \"0\";\n result += base;\n return sign + result;\n } else {\n // shifting within the base\n return sign + base.substring(0, normshift) + \".\" + base.substring(normshift);\n }\n};\n","// assumes both numbers are positive integers\nmodule.exports = function long_addition(a, b) {\n // assuming both positive for now\n\n const alen = a.length;\n const blen = b.length;\n\n const aidx = a.indexOf(\".\");\n const bidx = b.indexOf(\".\");\n\n // basically where would the dot be\n // if we add a dot at the end of integers\n // like 123.\n const a_adjusted_dot_index = aidx === -1 ? alen : aidx;\n const b_adjusted_dot_index = bidx === -1 ? blen : bidx;\n\n // how much you need to shift the second number\n // to line up the decimal with the first\n // 0.12345\n // 12345.0\n\n const offset = a_adjusted_dot_index - b_adjusted_dot_index;\n\n let left = Math.max(a_adjusted_dot_index, b_adjusted_dot_index);\n\n let right = Math.max(alen - a_adjusted_dot_index - 1, blen - b_adjusted_dot_index - 1);\n\n let aoffset = offset < 0 ? -1 * offset : 0;\n let boffset = offset <= 0 ? 0 : offset;\n\n let imax = left + 1 + right - 1; // -1 for zero-index\n\n let result = \"\";\n\n let carried = 0;\n\n // to the right of the period\n // 0.12345\n // 12345.0\n let i = imax;\n if (right > 0) {\n while (i > imax - right) {\n const achar = a[i - aoffset] || \"0\";\n const bchar = b[i - boffset] || \"0\";\n let n = Number(achar) + Number(bchar) + carried;\n if (n >= 10) {\n n -= 10;\n carried = 1;\n } else {\n carried = 0;\n }\n if (result !== \"\" || n !== 0) {\n result = n + result;\n }\n i--;\n }\n if (result) result = \".\" + result;\n i--; // substract 1 for dot\n }\n\n if (left > 0) {\n while (i >= 0) {\n const achar = a[i - aoffset] || \"0\";\n const bchar = b[i - boffset] || \"0\";\n let n = Number(achar) + Number(bchar) + carried;\n if (n >= 10) {\n n -= 10;\n carried = 1;\n } else {\n carried = 0;\n }\n result = n + result;\n i--;\n }\n }\n\n if (carried === 1) {\n result = carried + result;\n }\n\n return result;\n};\n","const compare_positive = require(\"./compare_positive.js\");\nconst add = require(\"./add.js\");\nconst multiply = require(\"./multiply.js\");\nconst subtract = require(\"./subtract.js\");\nconst round_last_decimal = require(\"./round_last_decimal.js\");\n\n// given dividend and divisor are positive numberical strings\nmodule.exports = function long_division(dividend, divisor, { max_decimal_digits = 100, ellipsis = false } = {}) {\n // remove unnecessary starting zeros\n // ex: 0.5 => .5\n if (dividend[0] === \"0\") dividend = dividend.substring(1);\n if (divisor[0] === \"0\") divisor = divisor.substring(1);\n\n const dividend_index_of_dot = dividend.indexOf(\".\");\n const divisor_index_of_dot = divisor.indexOf(\".\");\n\n const adjusted_dividend_index_of_dot = dividend_index_of_dot === -1 ? dividend.length : dividend_index_of_dot;\n const divisor_num_decimal_places = divisor_index_of_dot === -1 ? 0 : divisor.length - 1 - divisor_index_of_dot;\n\n // whether the result has a repeating decimal\n // e.g. 1/3 is repeating as in \"0.333...\"\n let repeating = false;\n\n // remove decimals\n dividend = dividend.replace(/\\./, \"\");\n divisor = divisor.replace(/\\./, \"\");\n\n const dividend_length = dividend.length;\n\n let current = \"\";\n let quotient = \"\";\n let comparison;\n let offset = -1 * divisor_num_decimal_places;\n let skip = 0;\n for (let i = 0; i < dividend_length; i++) {\n const char = dividend[i];\n\n current += char;\n\n comparison = compare_positive(current, divisor);\n\n if (comparison === \">\") {\n // same as const times = Math.floor(current / divisor);\n // but without floating point problems\n let times = 1;\n let product = add(divisor, divisor);\n let passed_product = divisor;\n while (compare_positive(product, current) !== \">\") {\n times++;\n passed_product = product;\n product = add(product, divisor);\n }\n times = times.toString();\n\n if (quotient !== \"\") {\n for (let i = times.length; i <= skip; i++) quotient += \"0\";\n }\n quotient += times; // string concatentation\n\n current = subtract(current, passed_product);\n\n skip = 0;\n } else if (comparison === \"<\") {\n if (quotient === \"\") {\n offset++;\n }\n skip++;\n\n // outside greater than inside\n continue;\n } else if (comparison === \"=\") {\n if (quotient !== \"\") {\n for (let i = 0; i < skip; i++) quotient += \"0\";\n }\n quotient += \"1\";\n current = \"0\";\n skip = 0;\n }\n }\n\n if (current.match(/^0+$/g)) {\n if (comparison === \"<\") {\n quotient += current.substring(0, current.length - 1);\n }\n } else {\n const previous = {};\n\n // keep dividing until we have an answer\n // figure out current place of decimal number\n const idot = adjusted_dividend_index_of_dot - offset;\n const qlen = quotient.length;\n // add 1 extra for rounding purposes\n const imax = idot - qlen + max_decimal_digits + 1;\n\n // reset skip if just \"\" so far because don't want to count 0 in 0.\n if (quotient === \"\") {\n skip = 0;\n }\n\n for (let i = 0; i < imax; i++) {\n current += \"0\";\n if (ellipsis) {\n if (current in previous) {\n previous[current]++;\n if (previous[current] > 3) {\n quotient += \"...\";\n repeating = true;\n break;\n }\n } else {\n previous[current] = 1;\n }\n }\n const comparison = compare_positive(current, divisor);\n\n if (comparison === \">\") {\n // inside greater than outside\n\n // how many times the divisor goes into the current\n let times = 1;\n let product = add(divisor, divisor);\n let passed_product = divisor;\n while (compare_positive(product, current) !== \">\") {\n times++;\n passed_product = product;\n product = add(product, divisor);\n }\n\n times = times.toString();\n\n // pad left zeros\n for (let i = times.length; i <= skip; i++) quotient += \"0\";\n quotient += times; // string concatentation\n current = subtract(current, passed_product);\n\n if (current === \"0\") {\n break;\n }\n\n skip = 0;\n } else if (comparison === \"<\") {\n // outside greater than inside\n skip++;\n continue;\n } else if (comparison === \"=\") {\n // fill in previous with zeros\n for (let i = 0; i < skip; i++) quotient += \"0\";\n quotient += \"1\";\n skip = 0;\n break;\n }\n }\n }\n\n // reinsert decimal place\n\n const idot = adjusted_dividend_index_of_dot - offset;\n const qlen = quotient.length;\n\n let num_decimals;\n\n if (idot === qlen) {\n // integer number so don't do anything\n num_decimals = 0;\n } else if (idot < 0) {\n quotient = \"0.\" + \"0\".repeat(Math.abs(idot)) + quotient;\n num_decimals = qlen - idot; // idot is negative, so adding\n } else if (idot > qlen) {\n // add more zeros to integer\n for (let i = qlen; i < idot; i++) quotient += \"0\";\n num_decimals = 0;\n } else if (idot < qlen) {\n quotient = quotient.substring(0, idot) + \".\" + quotient.substring(idot);\n num_decimals = qlen - idot;\n } else if (idot === 0) {\n quotient = \"0.\" + quotient;\n num_decimals = qlen;\n }\n\n // remove zeros from front\n // 03938.123 => 3938.123\n quotient = quotient.replace(/^0+/, \"\");\n\n // remove extra zeros from the end\n quotient = quotient.replace(/\\.\\d+0+$/, \"\");\n\n // round if necessary\n if (!repeating) {\n const extra_decimals = num_decimals - max_decimal_digits;\n if (extra_decimals > 0) {\n quotient = round_last_decimal(quotient.substring(0, quotient.length - extra_decimals + 1));\n }\n }\n\n if (quotient[0] === \".\") quotient = \"0\" + quotient;\n\n return quotient;\n};\n","const CHUNK_SIZE = 15;\n\n/**\n *\n * @param {String} a - numerical string larger or equal to b\n * @param {String} b - numerical string smaller or equal to a\n * @returns {String} product - result of multiplying a with b\n */\n\nmodule.exports = function long_multiplication(a, b) {\n if (a === \"0\" || b === \"0\") return \"0\";\n\n const top_index_of_dot = a.indexOf(\".\");\n const bottom_index_of_dot = b.indexOf(\".\");\n\n const a_num_decimal_places = top_index_of_dot === -1 ? 0 : a.length - 1 - top_index_of_dot;\n const b_num_decimal_places = bottom_index_of_dot === -1 ? 0 : b.length - 1 - bottom_index_of_dot;\n\n const out_num_decimal_places = a_num_decimal_places + b_num_decimal_places;\n\n // remove decimals\n a = a.replace(\".\", \"\");\n b = b.replace(\".\", \"\");\n\n const alen = a.length;\n const blen = b.length;\n\n const chunks = [];\n let i = alen;\n while (i >= 0) {\n const end = i;\n const start = (i -= CHUNK_SIZE);\n const str = a.substring(start, end);\n chunks.push([Number(str), str.length]);\n }\n\n const partial_products = [];\n const partials = [];\n\n // for each number in multiplier\n for (let i = 0, ireverse = blen - 1; ireverse >= 0; ireverse--, i++) {\n const bstr = b[ireverse];\n\n const bnum = Number(bstr);\n\n let carried = 0;\n let partial = \"\";\n const ichunklast = chunks.length - 1;\n chunks.forEach(([chunk, chunklen], c) => {\n const subpartial = carried + bnum * chunk;\n let subpartstr = subpartial.toString();\n const subpartcharlen = subpartstr.length;\n if (subpartcharlen > chunklen && c !== ichunklast) {\n const islice = -1 * chunklen;\n partial = subpartstr.slice(islice) + partial;\n carried = Number(subpartstr.slice(0, islice));\n } else {\n const imax = chunklen - subpartcharlen;\n for (let i = 0; i < imax; i++) {\n subpartstr = \"0\" + subpartstr;\n }\n carried = 0;\n partial = subpartstr + partial;\n }\n });\n\n // add number of zeros at end\n partial += \"0\".repeat(i);\n\n partial_products.push(partial);\n\n partials.push([Array.from(partial).map(char => Number(char)), partial.length]);\n }\n\n // back to front, iterate through columns\n // and add partial products together\n const num_partials = partial_products.length;\n\n const number_of_columns = partials[partials.length - 1][1] + num_partials;\n\n let result = \"\";\n let carried = 0;\n for (let icol = 0; icol < number_of_columns; icol++) {\n let sum = carried;\n const pmax = Math.min(icol, num_partials - 1);\n for (let p = 0; p <= pmax; p++) {\n const [pnums, plen] = partials[p];\n const i = plen - 1 - icol;\n if (i >= 0) {\n sum += pnums[i];\n }\n }\n\n if (sum >= 10) {\n sum = sum.toString();\n result = sum[sum.length - 1] + result;\n carried = Number(sum.slice(0, -1));\n } else {\n result = sum + result;\n carried = 0;\n }\n }\n\n // add decimal back in\n if (out_num_decimal_places === 0) {\n // integer\n // remove extra zeros\n result = result.replace(/^0+/, \"\");\n } else {\n // decimal number\n const idot = result.length - out_num_decimal_places;\n\n result = result.substring(0, idot) + \".\" + result.substring(idot);\n\n // remove zeros from front\n result = result.replace(/^0+/, \"\");\n\n // remove extra zeros from the end\n result = result.replace(/\\.?0+$/, \"\");\n\n if (result[0] === \".\") result = \"0\" + result;\n }\n\n return result;\n};\n","// const lookup = {};\n// const vals = [undefined, 0, 1, 2, 3, 4, 5, 6, 8, 9];\n// vals.forEach(top => {\n// lookup[top] = {};\n// vals.forEach(bottom => {\n// lookup[top][bottom] = (top || 0) - (bottom || 0);\n// })\n// });\n\n// assumes (1) both a and b are positive numbers\n// and (2) a is larger than b\nmodule.exports = function long_subtraction(a, b) {\n const alen = a.length;\n const blen = b.length;\n\n const aidx = a.indexOf(\".\");\n const bidx = b.indexOf(\".\");\n\n // basically where would the dot be\n // if we add a dot at the end of integers\n // like 123.\n const a_adjusted_dot_index = aidx === -1 ? alen : aidx;\n const b_adjusted_dot_index = bidx === -1 ? blen : bidx;\n // console.log({a_adjusted_dot_index, b_adjusted_dot_index});\n\n // how much you need to shift the second number\n // to line up the decimal with the first\n // 0.12345\n // 12345.0\n\n const offset = a_adjusted_dot_index - b_adjusted_dot_index;\n // console.log(\"offset:\", offset);\n\n let left = Math.max(a_adjusted_dot_index, b_adjusted_dot_index);\n // console.log(\"left:\", left);\n\n let right = Math.max(alen - a_adjusted_dot_index - 1, blen - b_adjusted_dot_index - 1);\n // console.log(\"right:\", right);\n\n let aoffset = offset < 0 ? -1 * offset : 0;\n let boffset = offset <= 0 ? 0 : offset;\n // console.log({aoffset, boffset});\n\n let imax = left + 1 + right - 1; // -1 for zero-index\n // console.log({imax});\n\n let result = \"\";\n\n // number of borrowings\n let borrowed = 0;\n\n // to the right of the period\n // 100.5 6 7\n // 2.2 9 3\n // (-3 + 10) 4\n let i = imax;\n if (right > 0) {\n while (i > imax - right) {\n // console.log(\"\\n\\n\", {i});\n let top = a[i - aoffset] || \"0\";\n let bottom = b[i - boffset] || \"0\";\n\n // console.log(\"pre borrowing\", {top, bottom});\n top -= borrowed;\n borrowed = 0;\n\n // console.log(\"after borrowing\", {top, bottom});\n let n = top - bottom;\n\n // console.log({n});\n if (n < 0) {\n while (n < 0) {\n borrowed++;\n n += 10;\n }\n } else if (borrowed) {\n borrowed--;\n }\n // console.log({n});\n if (result !== \"\" || n !== 0) {\n result = n + result;\n }\n i--;\n }\n if (result !== \"\") {\n result = \".\" + result;\n }\n i--; // substract 1 for dot\n }\n\n // console.log({result});\n\n if (left > 0) {\n while (i > 0) {\n // console.log(\"\\n\\n\", {i});\n let top = a[i - aoffset] || \"0\";\n let bottom = b[i - boffset] || \"0\";\n\n // console.log(\"pre borrowing\", {top, bottom});\n top -= borrowed;\n borrowed = 0;\n\n // console.log(\"after borrowing\", {top, bottom});\n let n = top - bottom;\n\n // console.log({n});\n if (n < 0) {\n while (n < 0) {\n borrowed++;\n n += 10;\n }\n } else if (borrowed) {\n borrowed--;\n }\n // console.log({n});\n result = n + result;\n i--;\n }\n\n // console.log({borrowed});\n // special rule for last one\n const achar = a[0 - aoffset] || \"0\";\n const bchar = b[0 - boffset] || \"0\";\n let n = Number(achar) - (borrowed > 0 ? 1 : 0) - Number(bchar);\n if (n !== 0) {\n result = n + result;\n }\n\n // remove any zeros in front like in 0123\n result = result.replace(/^0+/, \"\");\n }\n\n // if decimal number add zero\n if (result[0] === \".\") result = \"0\" + result;\n\n return result;\n};\n","const absolute = require(\"./absolute.js\");\nconst clean = require(\"./clean.js\");\nconst compare_positive = require(\"./compare_positive.js\");\nconst long_multiplication = require(\"./long_multiplication.js\");\n\nmodule.exports = function multiply(a, b) {\n a = clean(a);\n b = clean(b);\n\n const apos = a[0] !== \"-\";\n const bpos = b[0] !== \"-\";\n\n const out_sign = apos !== bpos ? \"-\" : \"\";\n\n a = absolute(a);\n b = absolute(b);\n\n const comparison = compare_positive(a, b);\n\n if (comparison === \"<\") {\n const aold = a;\n const bold = b;\n a = bold;\n b = aold;\n }\n\n return out_sign + long_multiplication(a, b);\n};\n","// given n is a decimal number\nconst up = [\"5\", \"6\", \"7\", \"8\", \"9\"];\nmodule.exports = function round_last_decimal(n) {\n // remove + from beginning\n if (n[0] === \"+\") n = n.substring(1);\n\n //console.log(\"rounding:\", {n});\n const len = n.length;\n //console.log({len});\n let result = \"\";\n\n const last_char = n[n.length - 1];\n //console.log({last_char});\n\n if (up.includes(last_char)) {\n let i;\n for (i = len - 2; i >= 0; i--) {\n const char = n[i];\n //console.log({char});\n // skip over . or -\n if (char === \".\" || char === \"-\") continue;\n\n const nchar = Number(char) + 1;\n //console.log({nchar});\n\n if (nchar === 10) {\n result = \"0\" + result;\n // keep rounding up\n } else {\n result = nchar + result;\n break;\n }\n }\n //console.log({i});\n if (i > 0) result = n.substring(0, i) + result;\n } else {\n result = n.substring(0, len - 1);\n }\n\n if (result[result.length - 1] === \".\") result = result.substring(0, result.length - 1);\n\n // remove trailing zeros in decimal number\n // 0.50 => 0.5\n if (result.indexOf(\".\") > -1) result = result.replace(/0+$/, \"\");\n\n return result;\n};\n","const clean = require(\"./clean\");\nconst compare_positive = require(\"./compare_positive.js\");\nconst long_addition = require(\"./long_addition.js\");\nconst long_subtraction = require(\"./long_subtraction.js\");\n\nmodule.exports = function subtract(a, b) {\n a = clean(a);\n b = clean(b);\n\n const a_is_positive = a[0] !== \"-\";\n const b_is_positive = b[0] !== \"-\";\n if (a_is_positive) {\n if (b_is_positive) {\n const comparison = compare_positive(a, b);\n if (comparison === \">\") {\n return long_subtraction(a, b);\n } else if (comparison === \"<\") {\n return \"-\" + long_subtraction(b, a);\n } else {\n return \"0\";\n }\n } else {\n return long_addition(a, b.substring(1));\n }\n } else if (b_is_positive) {\n return \"-\" + long_addition(a.substring(1), b);\n } else {\n a = a.substring(1);\n b = b.substring(1);\n const comparison = compare_positive(a, b);\n if (comparison === \">\") {\n return \"-\" + long_subtraction(a, b);\n } else if (comparison === \"<\") {\n return long_subtraction(b, a);\n } else {\n return \"0\";\n }\n }\n};\n","let proj4 = require(\"proj4\");\nconst defs = require(\"proj4js-definitions\");\n\nif (typeof proj4 === \"object\" && typeof proj4.defs !== \"function\" && typeof proj4.default === \"function\") {\n // probably inside an Angular project\n proj4 = proj4.default;\n}\n\nproj4.defs(defs);\n\nmodule.exports = proj4;\n","const clone = data => JSON.parse(JSON.stringify(data));\n\nfunction reprojectGeoJSONPluggable(data, { in_place = false, reproject }) {\n if (typeof reproject !== \"function\") {\n throw new Error(`[reproject-geojson] you must specify a reproject function`);\n }\n if (in_place !== true) data = clone(data);\n\n if (data.type === \"FeatureCollection\") {\n data.features = data.features.map(feature => reprojectGeoJSONPluggable(feature, { in_place, reproject }));\n } else if (data.type === \"Feature\") {\n data.geometry = reprojectGeoJSONPluggable(data.geometry, { in_place, reproject });\n } else if (data.type === \"LineString\") {\n data.coordinates = data.coordinates.map(coord => reproject(coord));\n } else if (data.type === \"MultiLineString\") {\n data.coordinates = data.coordinates.map(line => line.map(coord => reproject(coord)));\n } else if (data.type === \"MultiPoint\") {\n data.coordinates = data.coordinates.map(point => reproject(point));\n } else if (data.type === \"MultiPolygon\") {\n data.coordinates = data.coordinates.map(polygon => {\n return polygon.map(ring => ring.map(coord => reproject(coord)));\n });\n } else if (data.type === \"Point\") {\n data.coordinates = reproject(data.coordinates);\n } else if (data.type === \"Polygon\") {\n data.coordinates = data.coordinates.map(ring => ring.map(coord => reproject(coord)));\n }\n return data;\n}\n\nif (typeof define === \"function\" && define.amd)\n define(function () {\n return reprojectGeoJSONPluggable;\n });\nif (typeof module === \"object\") module.exports = reprojectGeoJSONPluggable;\nif (typeof window === \"object\") window.reprojectGeoJSONPluggable = reprojectGeoJSONPluggable;\nif (typeof self === \"object\") self.reprojectGeoJSONPluggable = reprojectGeoJSONPluggable;\n","const proj4 = require(\"proj4-fully-loaded\");\nconst reprojectGeoJSONPluggable = require(\"./pluggable.js\");\n\nfunction reprojectGeoJSON(data, { from: _from = \"EPSG:4326\", in_place = false, to: _to = \"EPSG:4326\" }) {\n if (typeof _from === \"number\" || _from.match(/^\\d+$/)) _from = \"EPSG:\" + _from;\n if (typeof _to === \"number\" || _to.match(/^\\d+$/)) _to = \"EPSG:\" + _to;\n return reprojectGeoJSONPluggable(data, {\n in_place,\n reproject: proj4(_from, _to).forward\n });\n}\n\nif (typeof define === \"function\" && define.amd)\n define(function () {\n return reprojectGeoJSON;\n });\nif (typeof module === \"object\") module.exports = reprojectGeoJSON;\nif (typeof window === \"object\") window.reprojectGeoJSON = reprojectGeoJSON;\nif (typeof self === \"object\") self.reprojectGeoJSON = reprojectGeoJSON;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.GeoRaster=e():t.GeoRaster=e()}(\"undefined\"!=typeof self?self:this,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=107)}([function(t,e,r){\"use strict\";const n=r(73);t.exports=function(t){return\"+\"===t[0]&&(t=t.substring(1)),(t=(t=n(t)).replace(/^0+(?=\\d)/,\"\")).includes(\".\")&&(t=t.replace(/\\.?0+$/,\"\")),\"\"===t&&(t=\"0\"),\"-0\"===t&&(t=\"0\"),t}},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(15),s=r(32);function a(t,e,r){t=i(t),e=i(e);const a=\"-\"!==t[0],u=\"-\"!==e[0],c=o(t),l=o(e);if(c||l)return a==u?\"Infinity\":\"-Infinity\";if(\"0\"===e)throw new Error(\"[preciso] division by zero\");if(\"\"===t||\"0\"===t)return\"0\";const f=a!==u?\"-\":\"\";return a||(t=n(t)),u||(e=n(e)),f+s(t,e,r)}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return n})),r.d(e,\"b\",(function(){return i})),r.d(e,\"c\",(function(){return o})),r.d(e,\"d\",(function(){return s})),r.d(e,\"e\",(function(){return a}));const n=Symbol(\"thread.errors\"),i=Symbol(\"thread.events\"),o=Symbol(\"thread.terminate\"),s=Symbol(\"thread.transferable\"),a=Symbol(\"thread.worker\")},function(t,e){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";const n=r(0);function i(t){return\"-\"===(t=n(t))[0]?t.substring(1):t}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";function n(t,e){const r=t.length,n=e.length,i=t.indexOf(\".\"),o=e.indexOf(\".\"),s=-1===i?r:i,a=-1===o?n:o,u=s-a;let c=u<0?-1*u:0,l=u<=0?0:u,f=Math.max(s,a)+1+Math.max(r-s,n-a)-1,h=0;for(;ho)return\">\";if(n\":return\"-\"+s(t,e)}else if(u&&!c)switch(e=e.substring(1),n(t,e)){case\"=\":return\"0\";case\"<\":return\"-\"+s(e,t);case\">\":return s(t,e)}}t.exports=u,t.exports.default=u},function(t,e,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(108),i=r(109),o=r(60);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function p(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return B(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return G(t).length;default:if(n)return B(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function y(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return C(this,e,r);case\"utf8\":case\"utf-8\":return k(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return O(this,e,r);case\"base64\":return E(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return P(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:b(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):b(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function b(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var l=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var f=!0,h=0;hi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function E(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function k(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n0&&(t=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(t+=\" ... \")),\"\"},u.prototype.compare=function(t,e,r,n,i){if(!u.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),c=this.slice(n,i),l=t.slice(e,r),f=0;fi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return v(this,t,e,r);case\"utf8\":case\"utf-8\":return w(this,t,e,r);case\"ascii\":return x(this,t,e,r);case\"latin1\":case\"binary\":return _(this,t,e,r);case\"base64\":return S(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return A(this,t,e,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",o=e;or)throw new RangeError(\"Trying to access beyond buffer length\")}function R(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function j(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function M(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function L(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function F(t,e,r,n,o){return o||L(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function N(t,e,r,n,o){return o||L(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return e||I(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||I(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||I(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||I(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||I(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||I(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||I(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return e||I(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||I(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){e||I(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return e||I(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||I(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||I(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||I(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||I(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||I(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||R(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):j(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):j(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):M(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):M(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);R(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},u.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);R(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):j(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):j(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):M(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):M(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,r){return F(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return F(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return N(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return N(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}(t).replace(D,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function q(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(3))},function(t,e){var r,n,i=t.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function s(){throw new Error(\"clearTimeout has not been defined\")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r=\"function\"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n=\"function\"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&d())}function d(){if(!l){var t=a(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f1)for(var r=1;r0){for(;m>p-f;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,\"\"===y&&0===i||(y=i+y),m--}y&&(y=\".\"+y),m--}if(l>0)for(;m>=0;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,y=i+y,m--}return 1===g&&(y=g+y),\".\"===y[0]&&(y=\"0\"+y),y}t.exports=i,t.exports.default=i},function(t,e){\"function\"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},function(t,e,r){\"use strict\";function n(t){return/^[-+]?0(\\.0+)?(e[\\.\\d]+)?$/.test(t)}t.exports=n,t.exports.default=n},function(t,e,r){(function(n){e.formatArgs=function(e){if(e[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+e[0]+(this.useColors?\"%c \":\" \")+\"+\"+t.exports.humanize(this.diff),!this.useColors)return;const r=\"color: \"+this.color;e.splice(1,0,r,\"color: inherit\");let n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,t=>{\"%%\"!==t&&(n++,\"%c\"===t&&(i=n))}),e.splice(i,0,r)},e.save=function(t){try{t?e.storage.setItem(\"debug\",t):e.storage.removeItem(\"debug\")}catch(t){}},e.load=function(){let t;try{t=e.storage.getItem(\"debug\")}catch(t){}!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG);return t},e.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&(\"renderer\"===window.process.type||window.process.__nwjs))return!0;if(\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))return!1;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)},e.storage=function(){try{return localStorage}catch(t){}}(),e.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})(),e.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],e.log=console.debug||console.log||(()=>{}),t.exports=r(134)(e);const{formatters:i}=t.exports;i.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}}}).call(this,r(8))},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return o})),r.d(e,\"b\",(function(){return s}));const n={deserialize:t=>Object.assign(Error(t.message),{name:t.name,stack:t.stack}),serialize:t=>({__error_marker:\"$$error\",message:t.message,name:t.name,stack:t.stack})};let i={deserialize(t){return(e=t)&&\"object\"==typeof e&&\"__error_marker\"in e&&\"$$error\"===e.__error_marker?n.deserialize(t):t;var e},serialize:t=>t instanceof Error?n.serialize(t):t};function o(t){return i.deserialize(t)}function s(t){return i.serialize(t)}},function(t,e,r){\"use strict\";var n=r(28),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=f;var o=Object.create(r(21));o.inherits=r(10);var s=r(61),a=r(65);o.inherits(f,s);for(var u=i(a.prototype),c=0;c/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(t);function a(t){const e=new Blob([t],{type:\"application/javascript\"});return URL.createObjectURL(e)}let u;function c(){return u||(u=function(){if(\"undefined\"==typeof Worker)return class{constructor(){throw Error(\"No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.\")}};class t extends Worker{constructor(t,e){var r,n;\"string\"==typeof t&&e&&e._baseURL?t=new URL(t,e._baseURL):\"string\"==typeof t&&!s(t)&&i().match(/^file:\\/\\//i)&&(t=new URL(t,i().replace(/\\/[^\\/]+$/,\"/\")),(null===(r=null==e?void 0:e.CORSWorkaround)||void 0===r||r)&&(t=a(`importScripts(${JSON.stringify(t)});`))),\"string\"==typeof t&&s(t)&&(null===(n=null==e?void 0:e.CORSWorkaround)||void 0===n||n)&&(t=a(`importScripts(${JSON.stringify(t)});`)),super(t,e)}}class e extends t{constructor(t,e){super(window.URL.createObjectURL(t),e)}static fromText(t,r){const n=new window.Blob([t],{type:\"text/javascript\"});return new e(n,r)}}return{blob:e,default:t}}()),u}},function(t,e,r){\"use strict\";var n,i;r.d(e,\"a\",(function(){return n})),r.d(e,\"b\",(function(){return i})),function(t){t.cancel=\"cancel\",t.run=\"run\"}(n||(n={})),function(t){t.error=\"error\",t.init=\"init\",t.result=\"result\",t.running=\"running\",t.uncaughtError=\"uncaughtError\"}(i||(i={}))},function(t,e,r){function n(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):\"[object Array]\"===n(t)},e.isBoolean=function(t){return\"boolean\"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return\"number\"==typeof t},e.isString=function(t){return\"string\"==typeof t},e.isSymbol=function(t){return\"symbol\"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return\"[object RegExp]\"===n(t)},e.isObject=function(t){return\"object\"==typeof t&&null!==t},e.isDate=function(t){return\"[object Date]\"===n(t)},e.isError=function(t){return\"[object Error]\"===n(t)||t instanceof Error},e.isFunction=function(t){return\"function\"==typeof t},e.isPrimitive=function(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||void 0===t},e.isBuffer=r(7).Buffer.isBuffer},function(t,e,r){\"use strict\";const n=r(11),i=r(50);function o(t){return n(t)?\"\":i(t)}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(35);function i(t,e){return n(t,\"2\",e)}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return o}));var n=r(2);function i(t){throw Error(t)}const o={errors:t=>t[n.a]||i(\"Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\"),events:t=>t[n.b]||i(\"Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\"),terminate:t=>t[n.c]()}},function(t,e){},function(t,e,r){\"use strict\";const n=()=>\"function\"==typeof Symbol,i=t=>n()&&Boolean(Symbol[t]),o=t=>i(t)?Symbol[t]:\"@@\"+t;i(\"asyncIterator\")||(Symbol.asyncIterator=Symbol.asyncIterator||Symbol.for(\"Symbol.asyncIterator\"));const s=o(\"iterator\"),a=o(\"observable\"),u=o(\"species\");function c(t,e){const r=t[e];if(null!=r){if(\"function\"!=typeof r)throw new TypeError(r+\" is not a function\");return r}}function l(t){let e=t.constructor;return void 0!==e&&(e=e[u],null===e&&(e=void 0)),void 0!==e?e:v}function f(t){f.log?f.log(t):setTimeout(()=>{throw t},0)}function h(t){Promise.resolve().then(()=>{try{t()}catch(t){f(t)}})}function d(t){const e=t._cleanup;if(void 0!==e&&(t._cleanup=void 0,e))try{if(\"function\"==typeof e)e();else{const t=c(e,\"unsubscribe\");t&&t.call(e)}}catch(t){f(t)}}function p(t){t._observer=void 0,t._queue=void 0,t._state=\"closed\"}function y(t,e,r){t._state=\"running\";const n=t._observer;try{const i=n?c(n,e):void 0;switch(e){case\"next\":i&&i.call(n,r);break;case\"error\":if(p(t),!i)throw r;i.call(n,r);break;case\"complete\":p(t),i&&i.call(n)}}catch(t){f(t)}\"closed\"===t._state?d(t):\"running\"===t._state&&(t._state=\"ready\")}function g(t,e,r){if(\"closed\"!==t._state)return\"buffering\"===t._state?(t._queue=t._queue||[],void t._queue.push({type:e,value:r})):\"ready\"!==t._state?(t._state=\"buffering\",t._queue=[{type:e,value:r}],void h(()=>function(t){const e=t._queue;if(e){t._queue=void 0,t._state=\"ready\";for(const r of e)if(y(t,r.type,r.value),\"closed\"===t._state)break}}(t))):void y(t,e,r)}class m{constructor(t,e){this._cleanup=void 0,this._observer=t,this._queue=void 0,this._state=\"initializing\";const r=new b(this);try{this._cleanup=e.call(void 0,r)}catch(t){r.error(t)}\"initializing\"===this._state&&(this._state=\"ready\")}get closed(){return\"closed\"===this._state}unsubscribe(){\"closed\"!==this._state&&(p(this),d(this))}}class b{constructor(t){this._subscription=t}get closed(){return\"closed\"===this._subscription._state}next(t){g(this._subscription,\"next\",t)}error(t){g(this._subscription,\"error\",t)}complete(){g(this._subscription,\"complete\")}}class v{constructor(t){if(!(this instanceof v))throw new TypeError(\"Observable cannot be called as a function\");if(\"function\"!=typeof t)throw new TypeError(\"Observable initializer must be a function\");this._subscriber=t}subscribe(t,e,r){return\"object\"==typeof t&&null!==t||(t={next:t,error:e,complete:r}),new m(t,this._subscriber)}pipe(t,...e){let r=this;for(const n of[t,...e])r=n(r);return r}tap(t,e,r){const n=\"object\"!=typeof t||null===t?{next:t,error:e,complete:r}:t;return new v(t=>this.subscribe({next(e){n.next&&n.next(e),t.next(e)},error(e){n.error&&n.error(e),t.error(e)},complete(){n.complete&&n.complete(),t.complete()},start(t){n.start&&n.start(t)}}))}forEach(t){return new Promise((e,r)=>{if(\"function\"!=typeof t)return void r(new TypeError(t+\" is not a function\"));function n(){i.unsubscribe(),e(void 0)}const i=this.subscribe({next(e){try{t(e,n)}catch(t){r(t),i.unsubscribe()}},error(t){r(t)},complete(){e(void 0)}})})}map(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");return new(l(this))(e=>this.subscribe({next(r){let n=r;try{n=t(r)}catch(t){return e.error(t)}e.next(n)},error(t){e.error(t)},complete(){e.complete()}}))}filter(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");return new(l(this))(e=>this.subscribe({next(r){try{if(!t(r))return}catch(t){return e.error(t)}e.next(r)},error(t){e.error(t)},complete(){e.complete()}}))}reduce(t,e){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");const r=l(this),n=arguments.length>1;let i=!1,o=e;return new r(e=>this.subscribe({next(r){const s=!i;if(i=!0,!s||n)try{o=t(o,r)}catch(t){return e.error(t)}else o=r},error(t){e.error(t)},complete(){if(!i&&!n)return e.error(new TypeError(\"Cannot reduce an empty sequence\"));e.next(o),e.complete()}}))}concat(...t){const e=l(this);return new e(r=>{let n,i=0;return function o(s){n=s.subscribe({next(t){r.next(t)},error(t){r.error(t)},complete(){i===t.length?(n=void 0,r.complete()):o(e.from(t[i++]))}})}(this),()=>{n&&(n.unsubscribe(),n=void 0)}})}flatMap(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");const e=l(this);return new e(r=>{const n=[],i=this.subscribe({next(i){let s;if(t)try{s=t(i)}catch(t){return r.error(t)}else s=i;const a=e.from(s).subscribe({next(t){r.next(t)},error(t){r.error(t)},complete(){const t=n.indexOf(a);t>=0&&n.splice(t,1),o()}});n.push(a)},error(t){r.error(t)},complete(){o()}});function o(){i.closed&&0===n.length&&r.complete()}return()=>{n.forEach(t=>t.unsubscribe()),i.unsubscribe()}})}[(Symbol.observable,a)](){return this}static from(t){const e=\"function\"==typeof this?this:v;if(null==t)throw new TypeError(t+\" is not an object\");const r=c(t,a);if(r){const n=r.call(t);if(Object(n)!==n)throw new TypeError(n+\" is not an object\");return function(t){return t instanceof v}(n)&&n.constructor===e?n:new e(t=>n.subscribe(t))}if(i(\"iterator\")){const r=c(t,s);if(r)return new e(e=>{h(()=>{if(!e.closed){for(const n of r.call(t))if(e.next(n),e.closed)return;e.complete()}})})}if(Array.isArray(t))return new e(e=>{h(()=>{if(!e.closed){for(const r of t)if(e.next(r),e.closed)return;e.complete()}})});throw new TypeError(t+\" is not observable\")}static of(...t){return new(\"function\"==typeof this?this:v)(e=>{h(()=>{if(!e.closed){for(const r of t)if(e.next(r),e.closed)return;e.complete()}})})}static get[u](){return this}}n()&&Object.defineProperty(v,Symbol(\"extensions\"),{value:{symbol:a,hostReportError:f},configurable:!0});e.a=v},function(t,e,r){\"use strict\";var n;r.d(e,\"a\",(function(){return n})),function(t){t.internalError=\"internalError\",t.message=\"message\",t.termination=\"termination\"}(n||(n={}))},function(t,e,r){\"use strict\";(function(e){void 0===e||!e.version||0===e.version.indexOf(\"v0.\")||0===e.version.indexOf(\"v1.\")&&0!==e.version.indexOf(\"v1.8.\")?t.exports={nextTick:function(t,r,n,i){if(\"function\"!=typeof t)throw new TypeError('\"callback\" argument must be a function');var o,s,a=arguments.length;switch(a){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick((function(){t.call(null,r)}));case 3:return e.nextTick((function(){t.call(null,r,n)}));case 4:return e.nextTick((function(){t.call(null,r,n,i)}));default:for(o=new Array(a-1),s=0;s0){for(;m>p-f;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;\"\"===y&&0===i||(y=i+y),m--}\"\"!==y&&(y=\".\"+y),m--}if(l>0){for(;m>0;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;y=i+y,m--}const r=t[0-h]||\"0\",n=e[0-d]||\"0\";let i=Number(r)-(g>0?1:0)-Number(n);0!==i&&(y=i+y),y=y.replace(/^0+/,\"\")}return\".\"===y[0]&&(y=\"0\"+y),y}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(5),i=r(6),o=r(33),s=r(49);function a(t,e,{format:r=\"string\",max_decimal_digits:a=100,ellipsis:u=!1}={}){\"0\"===t[0]&&(t=t.substring(1)),\"0\"===e[0]&&(e=e.substring(1));const c=t.indexOf(\".\"),l=e.indexOf(\".\"),f=-1===c?t.length:c,h=-1===l?0:e.length-1-l;let d=!1;t=t.replace(/\\./,\"\"),e=e.replace(/\\./,\"\");const p=t.length;let y,g=\"\",m=\"\",b=-1*h,v=0;for(let r=0;r\"===y){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,g);)t++,s=r,r=i(r,e);if(t=t.toString(),\"\"!==m)for(let e=t.length;e<=v;e++)m+=\"0\";m+=t,g=o(g,s),v=0}else{if(\"<\"===y){\"\"===m&&b++,v++;continue}if(\"=\"===y){if(\"\"!==m)for(let t=0;t3){m+=\"...\",d=!0;break}}else t[g]=1;const r=n(g,e);if(\">\"===r){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,g);)t++,s=r,r=i(r,e);t=t.toString();for(let e=t.length;e<=v;e++)m+=\"0\";if(m+=t,g=o(g,s),\"0\"===g)break;v=0}else{if(\"<\"===r){v++;continue}if(\"=\"===r){for(let t=0;tx){for(let t=x;t0&&(m=s(m.substring(0,m.length-S+1))),\".\"===m[0]&&(m=\"0\"+m),\"object\"===r?{quotient:m,extra_decimals:S}:m}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const n=r(0),i=r(5),o=r(15),s=r(9),a=r(31);function u(t,e,{infinity_minus_infinity:r=\"NaN\"}={}){t=n(t),e=n(e);const u=!(\"-\"===t[0]),c=!(\"-\"===e[0]),l=o(t),f=o(e);if(l&&f){if(u===c)return r;if(u)return\"Infinity\";if(c)return\"-Infinity\"}else{if(l)return t;if(f)return c?\"-Infinity\":\"Infinity\"}if(u){if(c){const r=i(t,e);return\">\"===r?a(t,e):\"<\"===r?\"-\"+a(e,t):\"0\"}return s(t,e.substring(1))}if(c)return\"-\"+s(t.substring(1),e);{t=t.substring(1),e=e.substring(1);const r=i(t,e);return\">\"===r?\"-\"+a(t,e):\"<\"===r?a(e,t):\"0\"}}t.exports=u,t.exports.default=u},function(t,e,r){\"use strict\";const n=r(0),i=r(5);function o(t,e){t=n(t),e=n(e);const r=\"-\"!==t[0],o=\"-\"!==e[0];return r?o?i(t,e):\">\":o?\"<\":i(e.substring(1),t.substring(1))}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(1),s=r(77),a=r(16),u=r(52),c=r(78),l=r(11),f=r(53),h=r(54),d=r(81),p=r(37),y=r(36),g=r(22),m=r(85);function b(t,e,{zero_to_the_power_of_zero:r=\"1\",ellipsis:b=!1,imaginary:v=!0,max_decimal_digits:w=100,fraction:x=!1}={}){t=i(t),e=i(e);const _=v&&u(t);_&&(t=t.replace(/i$/,\"\"));const S=l(t),A=l(e);if(S&&A)return r;if(A)return\"1\";const E=g(e);if(S){if(\"+\"===E)return\"0\";if(\"-\"===E)return\"Infinity\"}const k=a(e);if(\"+\"===E&&k){let r=h(t,e);return\"number\"==typeof w&&(r=y(r,{digits:w})),_&&c(e)&&(r+=\"i\"),r}if(\"-\"===E&&k){const r=\"1\",i=h(t,n(e));return o(r,i,{ellipsis:b,max_decimal_digits:w})}if(!k){e=n(e);let[r,i]=e.includes(\"/\")?e.split(\"/\"):s(e);[r,i]=m(r,i);let o=p(t,i,{imaginary:v}),a=f(r,o);return\"number\"==typeof w&&(a=y(a,{digits:w})),\"-\"===E&&(a=d(a,{fraction:x,max_decimal_digits:w})),a}}t.exports=b,t.exports.default=b},function(t,e,r){\"use strict\";const n=r(52),i=r(164);function o(t,{digits:e=0}={}){return n(t)?i(t.substring(0,t.length-1),{digits:e})+\"i\":i(t,{digits:e})}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(5),s=r(82),a=r(16),u=r(80),c=r(54),l=r(83);function f(t,e,{imaginary:r=!0,max_decimal_digits:f=100}={}){if(t=i(t),\"1\"===(e=i(e)))return t;if(\"1\"===t)return\"1\";if(!a(e))throw new Error(\"[preciso] can't find fractional roots\");if(u(e))throw new Error(\"[preciso] can't find root of negative indexes\");const h=n(t),d=u(t),p=s(e),y=d&&p;if(y&&!r)throw new Error(\"[preciso] root has an imaginary number\");const g=d&&!p?\"-\":\"\",m=l(h,e),b=[\"9\",\"8\",\"7\",\"6\",\"5\",\"4\",\"3\",\"2\",\"1\",\"0\"];let v=\"\";for(let t=0;to)return\">\";if(n\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),c=[\"'\"].concat(u),l=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(c),f=[\"/\",\"?\",\"#\"],h=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,\"javascript:\":!0},y={javascript:!0,\"javascript:\":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},m=r(142);function b(t,e,r){if(t&&\"object\"==typeof t&&t instanceof i)return t;var n=new i;return n.parse(t,e,r),n}i.prototype.parse=function(t,e,r){if(\"string\"!=typeof t)throw new TypeError(\"Parameter 'url' must be a string, not \"+typeof t);var i=t.indexOf(\"?\"),s=-1!==i&&i127?R+=\"x\":R+=I[j];if(!R.match(h)){var L=C.slice(0,k),F=C.slice(k+1),N=I.match(d);N&&(L.push(N[1]),F.unshift(N[2])),F.length&&(b=\"/\"+F.join(\".\")+b),this.hostname=L.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),O||(this.hostname=n.toASCII(this.hostname));var D=this.port?\":\"+this.port:\"\",U=this.hostname||\"\";this.host=U+D,this.href+=this.host,O&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==b[0]&&(b=\"/\"+b))}if(!p[x])for(k=0,P=c.length;k0)&&r.host.split(\"@\"))&&(r.auth=O.shift(),r.hostname=O.shift(),r.host=r.hostname);return r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.href=r.format(),r}if(!_.length)return r.pathname=null,r.search?r.path=\"/\"+r.search:r.path=null,r.href=r.format(),r;for(var A=_.slice(-1)[0],E=(r.host||t.host||_.length>1)&&(\".\"===A||\"..\"===A)||\"\"===A,k=0,T=_.length;T>=0;T--)\".\"===(A=_[T])?_.splice(T,1):\"..\"===A?(_.splice(T,1),k++):k&&(_.splice(T,1),k--);if(!w&&!x)for(;k--;k)_.unshift(\"..\");!w||\"\"===_[0]||_[0]&&\"/\"===_[0].charAt(0)||_.unshift(\"\"),E&&\"/\"!==_.join(\"/\").substr(-1)&&_.push(\"\");var O,C=\"\"===_[0]||_[0]&&\"/\"===_[0].charAt(0);S&&(r.hostname=C?\"\":_.length?_.shift():\"\",r.host=r.hostname,(O=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=O.shift(),r.hostname=O.shift(),r.host=r.hostname));return(w=w||r.host&&_.length)&&!C&&_.unshift(\"\"),_.length>0?r.pathname=_.join(\"/\"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},i.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(\":\"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return\"string\"==typeof t&&(t=b(t)),t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i},function(t,e,r){(function(t){var n=r(136),i=r(70),o=r(138),s=r(139),a=r(39),u=e;u.request=function(e,r){e=\"string\"==typeof e?a.parse(e):o(e);var i=-1===t.location.protocol.search(/^https?:$/)?\"http:\":\"\",s=e.protocol||i,u=e.hostname||e.host,c=e.port,l=e.path||\"/\";u&&-1!==u.indexOf(\":\")&&(u=\"[\"+u+\"]\"),e.url=(u?s+\"//\"+u:\"\")+(c?\":\"+c:\"\")+l,e.method=(e.method||\"GET\").toUpperCase(),e.headers=e.headers||{};var f=new n(e);return r&&f.on(\"response\",r),f},u.get=function(t,e){var r=u.request(t,e);return r.end(),r},u.ClientRequest=n,u.IncomingMessage=i.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=s,u.METHODS=[\"CHECKOUT\",\"CONNECT\",\"COPY\",\"DELETE\",\"GET\",\"HEAD\",\"LOCK\",\"M-SEARCH\",\"MERGE\",\"MKACTIVITY\",\"MKCOL\",\"MOVE\",\"NOTIFY\",\"OPTIONS\",\"PATCH\",\"POST\",\"PROPFIND\",\"PROPPATCH\",\"PURGE\",\"PUT\",\"REPORT\",\"SEARCH\",\"SUBSCRIBE\",\"TRACE\",\"UNLOCK\",\"UNSUBSCRIBE\"]}).call(this,r(3))},,function(t,e,r){(e=t.exports=r(61)).Stream=e,e.Readable=e,e.Writable=r(65),e.Duplex=r(14),e.Transform=r(67),e.PassThrough=r(122)},function(t,e,r){var n=r(7),i=n.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,e),e.Buffer=s),o(i,s),s.from=function(t,e,r){if(\"number\"==typeof t)throw new TypeError(\"Argument must not be a number\");return i(t,e,r)},s.alloc=function(t,e,r){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");var n=i(t);return void 0!==e?\"string\"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},s.allocUnsafe=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return i(t)},s.allocUnsafeSlow=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(t)}},function(t,e,r){\"use strict\";var n=SyntaxError,i=Function,o=TypeError,s=function(t){try{return i('\"use strict\"; return ('+t+\").constructor;\")()}catch(t){}},a=Object.getOwnPropertyDescriptor;if(a)try{a({},\"\")}catch(t){a=null}var u=function(){throw new o},c=a?function(){try{return u}catch(t){try{return a(arguments,\"callee\").get}catch(t){return u}}}():u,l=r(145)(),f=r(147)(),h=Object.getPrototypeOf||(f?function(t){return t.__proto__}:null),d={},p=\"undefined\"!=typeof Uint8Array&&h?h(Uint8Array):void 0,y={\"%AggregateError%\":\"undefined\"==typeof AggregateError?void 0:AggregateError,\"%Array%\":Array,\"%ArrayBuffer%\":\"undefined\"==typeof ArrayBuffer?void 0:ArrayBuffer,\"%ArrayIteratorPrototype%\":l&&h?h([][Symbol.iterator]()):void 0,\"%AsyncFromSyncIteratorPrototype%\":void 0,\"%AsyncFunction%\":d,\"%AsyncGenerator%\":d,\"%AsyncGeneratorFunction%\":d,\"%AsyncIteratorPrototype%\":d,\"%Atomics%\":\"undefined\"==typeof Atomics?void 0:Atomics,\"%BigInt%\":\"undefined\"==typeof BigInt?void 0:BigInt,\"%BigInt64Array%\":\"undefined\"==typeof BigInt64Array?void 0:BigInt64Array,\"%BigUint64Array%\":\"undefined\"==typeof BigUint64Array?void 0:BigUint64Array,\"%Boolean%\":Boolean,\"%DataView%\":\"undefined\"==typeof DataView?void 0:DataView,\"%Date%\":Date,\"%decodeURI%\":decodeURI,\"%decodeURIComponent%\":decodeURIComponent,\"%encodeURI%\":encodeURI,\"%encodeURIComponent%\":encodeURIComponent,\"%Error%\":Error,\"%eval%\":eval,\"%EvalError%\":EvalError,\"%Float32Array%\":\"undefined\"==typeof Float32Array?void 0:Float32Array,\"%Float64Array%\":\"undefined\"==typeof Float64Array?void 0:Float64Array,\"%FinalizationRegistry%\":\"undefined\"==typeof FinalizationRegistry?void 0:FinalizationRegistry,\"%Function%\":i,\"%GeneratorFunction%\":d,\"%Int8Array%\":\"undefined\"==typeof Int8Array?void 0:Int8Array,\"%Int16Array%\":\"undefined\"==typeof Int16Array?void 0:Int16Array,\"%Int32Array%\":\"undefined\"==typeof Int32Array?void 0:Int32Array,\"%isFinite%\":isFinite,\"%isNaN%\":isNaN,\"%IteratorPrototype%\":l&&h?h(h([][Symbol.iterator]())):void 0,\"%JSON%\":\"object\"==typeof JSON?JSON:void 0,\"%Map%\":\"undefined\"==typeof Map?void 0:Map,\"%MapIteratorPrototype%\":\"undefined\"!=typeof Map&&l&&h?h((new Map)[Symbol.iterator]()):void 0,\"%Math%\":Math,\"%Number%\":Number,\"%Object%\":Object,\"%parseFloat%\":parseFloat,\"%parseInt%\":parseInt,\"%Promise%\":\"undefined\"==typeof Promise?void 0:Promise,\"%Proxy%\":\"undefined\"==typeof Proxy?void 0:Proxy,\"%RangeError%\":RangeError,\"%ReferenceError%\":ReferenceError,\"%Reflect%\":\"undefined\"==typeof Reflect?void 0:Reflect,\"%RegExp%\":RegExp,\"%Set%\":\"undefined\"==typeof Set?void 0:Set,\"%SetIteratorPrototype%\":\"undefined\"!=typeof Set&&l&&h?h((new Set)[Symbol.iterator]()):void 0,\"%SharedArrayBuffer%\":\"undefined\"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,\"%String%\":String,\"%StringIteratorPrototype%\":l&&h?h(\"\"[Symbol.iterator]()):void 0,\"%Symbol%\":l?Symbol:void 0,\"%SyntaxError%\":n,\"%ThrowTypeError%\":c,\"%TypedArray%\":p,\"%TypeError%\":o,\"%Uint8Array%\":\"undefined\"==typeof Uint8Array?void 0:Uint8Array,\"%Uint8ClampedArray%\":\"undefined\"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,\"%Uint16Array%\":\"undefined\"==typeof Uint16Array?void 0:Uint16Array,\"%Uint32Array%\":\"undefined\"==typeof Uint32Array?void 0:Uint32Array,\"%URIError%\":URIError,\"%WeakMap%\":\"undefined\"==typeof WeakMap?void 0:WeakMap,\"%WeakRef%\":\"undefined\"==typeof WeakRef?void 0:WeakRef,\"%WeakSet%\":\"undefined\"==typeof WeakSet?void 0:WeakSet};if(h)try{null.error}catch(t){var g=h(h(t));y[\"%Error.prototype%\"]=g}var m={\"%ArrayBufferPrototype%\":[\"ArrayBuffer\",\"prototype\"],\"%ArrayPrototype%\":[\"Array\",\"prototype\"],\"%ArrayProto_entries%\":[\"Array\",\"prototype\",\"entries\"],\"%ArrayProto_forEach%\":[\"Array\",\"prototype\",\"forEach\"],\"%ArrayProto_keys%\":[\"Array\",\"prototype\",\"keys\"],\"%ArrayProto_values%\":[\"Array\",\"prototype\",\"values\"],\"%AsyncFunctionPrototype%\":[\"AsyncFunction\",\"prototype\"],\"%AsyncGenerator%\":[\"AsyncGeneratorFunction\",\"prototype\"],\"%AsyncGeneratorPrototype%\":[\"AsyncGeneratorFunction\",\"prototype\",\"prototype\"],\"%BooleanPrototype%\":[\"Boolean\",\"prototype\"],\"%DataViewPrototype%\":[\"DataView\",\"prototype\"],\"%DatePrototype%\":[\"Date\",\"prototype\"],\"%ErrorPrototype%\":[\"Error\",\"prototype\"],\"%EvalErrorPrototype%\":[\"EvalError\",\"prototype\"],\"%Float32ArrayPrototype%\":[\"Float32Array\",\"prototype\"],\"%Float64ArrayPrototype%\":[\"Float64Array\",\"prototype\"],\"%FunctionPrototype%\":[\"Function\",\"prototype\"],\"%Generator%\":[\"GeneratorFunction\",\"prototype\"],\"%GeneratorPrototype%\":[\"GeneratorFunction\",\"prototype\",\"prototype\"],\"%Int8ArrayPrototype%\":[\"Int8Array\",\"prototype\"],\"%Int16ArrayPrototype%\":[\"Int16Array\",\"prototype\"],\"%Int32ArrayPrototype%\":[\"Int32Array\",\"prototype\"],\"%JSONParse%\":[\"JSON\",\"parse\"],\"%JSONStringify%\":[\"JSON\",\"stringify\"],\"%MapPrototype%\":[\"Map\",\"prototype\"],\"%NumberPrototype%\":[\"Number\",\"prototype\"],\"%ObjectPrototype%\":[\"Object\",\"prototype\"],\"%ObjProto_toString%\":[\"Object\",\"prototype\",\"toString\"],\"%ObjProto_valueOf%\":[\"Object\",\"prototype\",\"valueOf\"],\"%PromisePrototype%\":[\"Promise\",\"prototype\"],\"%PromiseProto_then%\":[\"Promise\",\"prototype\",\"then\"],\"%Promise_all%\":[\"Promise\",\"all\"],\"%Promise_reject%\":[\"Promise\",\"reject\"],\"%Promise_resolve%\":[\"Promise\",\"resolve\"],\"%RangeErrorPrototype%\":[\"RangeError\",\"prototype\"],\"%ReferenceErrorPrototype%\":[\"ReferenceError\",\"prototype\"],\"%RegExpPrototype%\":[\"RegExp\",\"prototype\"],\"%SetPrototype%\":[\"Set\",\"prototype\"],\"%SharedArrayBufferPrototype%\":[\"SharedArrayBuffer\",\"prototype\"],\"%StringPrototype%\":[\"String\",\"prototype\"],\"%SymbolPrototype%\":[\"Symbol\",\"prototype\"],\"%SyntaxErrorPrototype%\":[\"SyntaxError\",\"prototype\"],\"%TypedArrayPrototype%\":[\"TypedArray\",\"prototype\"],\"%TypeErrorPrototype%\":[\"TypeError\",\"prototype\"],\"%Uint8ArrayPrototype%\":[\"Uint8Array\",\"prototype\"],\"%Uint8ClampedArrayPrototype%\":[\"Uint8ClampedArray\",\"prototype\"],\"%Uint16ArrayPrototype%\":[\"Uint16Array\",\"prototype\"],\"%Uint32ArrayPrototype%\":[\"Uint32Array\",\"prototype\"],\"%URIErrorPrototype%\":[\"URIError\",\"prototype\"],\"%WeakMapPrototype%\":[\"WeakMap\",\"prototype\"],\"%WeakSetPrototype%\":[\"WeakSet\",\"prototype\"]},b=r(45),v=r(149),w=b.call(Function.call,Array.prototype.concat),x=b.call(Function.apply,Array.prototype.splice),_=b.call(Function.call,String.prototype.replace),S=b.call(Function.call,String.prototype.slice),A=b.call(Function.call,RegExp.prototype.exec),E=/[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g,k=/\\\\(\\\\)?/g,T=function(t){var e=S(t,0,1),r=S(t,-1);if(\"%\"===e&&\"%\"!==r)throw new n(\"invalid intrinsic syntax, expected closing `%`\");if(\"%\"===r&&\"%\"!==e)throw new n(\"invalid intrinsic syntax, expected opening `%`\");var i=[];return _(t,E,(function(t,e,r,n){i[i.length]=r?_(n,k,\"$1\"):e||t})),i},O=function(t,e){var r,i=t;if(v(m,i)&&(i=\"%\"+(r=m[i])[0]+\"%\"),v(y,i)){var a=y[i];if(a===d&&(a=function t(e){var r;if(\"%AsyncFunction%\"===e)r=s(\"async function () {}\");else if(\"%GeneratorFunction%\"===e)r=s(\"function* () {}\");else if(\"%AsyncGeneratorFunction%\"===e)r=s(\"async function* () {}\");else if(\"%AsyncGenerator%\"===e){var n=t(\"%AsyncGeneratorFunction%\");n&&(r=n.prototype)}else if(\"%AsyncIteratorPrototype%\"===e){var i=t(\"%AsyncGenerator%\");i&&h&&(r=h(i.prototype))}return y[e]=r,r}(i)),void 0===a&&!e)throw new o(\"intrinsic \"+t+\" exists, but is not available. Please file an issue!\");return{alias:r,name:i,value:a}}throw new n(\"intrinsic \"+t+\" does not exist!\")};t.exports=function(t,e){if(\"string\"!=typeof t||0===t.length)throw new o(\"intrinsic name must be a non-empty string\");if(arguments.length>1&&\"boolean\"!=typeof e)throw new o('\"allowMissing\" argument must be a boolean');if(null===A(/^%?[^%]*%?$/,t))throw new n(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\");var r=T(t),i=r.length>0?r[0]:\"\",s=O(\"%\"+i+\"%\",e),u=s.name,c=s.value,l=!1,f=s.alias;f&&(i=f[0],x(r,w([0,1],f)));for(var h=1,d=!0;h=r.length){var b=a(c,p);c=(d=!!b)&&\"get\"in b&&!(\"originalValue\"in b.get)?b.get:c[p]}else d=v(c,p),c=c[p];d&&!l&&(y[u]=c)}}return c}},function(t,e,r){\"use strict\";var n=r(148);t.exports=Function.prototype.bind||n},function(t,e,r){\"use strict\";var n=String.prototype.replace,i=/%20/g,o=\"RFC1738\",s=\"RFC3986\";t.exports={default:s,formatters:{RFC1738:function(t){return n.call(t,i,\"+\")},RFC3986:function(t){return String(t)}},RFC1738:o,RFC3986:s}},function(t,e,r){\"use strict\";const n=r(5),i=r(11),o=r(48),s=r(9);function a(t,e,r=\"1\"){if(i(t))return\"0\";let a=t,u=t;for(;\"<\"===n(u,e);)u=s(u,r),a=o(a,u);return a}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const{MAX_SAFE_INTEGER_LENGTH:n}=r(30);function i(t,e){if(\"0\"===t||\"0\"===e)return\"0\";const r=t.indexOf(\".\"),i=e.indexOf(\".\"),o=(-1===r?t.length:r)+(-1===i?e.length:i),s=(-1===r?0:t.length-1-r)+(-1===i?0:e.length-1-i);if(0===s&&o=0;){const t=h,e=h-=15,r=a.substring(e,t);f.push([Number(r),r.length])}const d=[],p=[];for(let t=0,e=l-1;e>=0;e--,t++){const r=u[e],n=Number(r);let i=0,o=\"\";const s=f.length-1;f.forEach(([t,e],r)=>{let a=(i+n*t).toString();const u=a.length;if(u>e&&r!==s){const t=-1*e;o=a.slice(t)+o,i=Number(a.slice(0,t))}else{const t=e-u;for(let e=0;eNumber(t)),o.length])}const y=d.length,g=p[p.length-1][1]+y;let m=\"\",b=0;for(let t=0;t=0&&(e+=r[o])}e>=10?(e=e.toString(),m=e[e.length-1]+m,b=Number(e.slice(0,-1))):(m=e+m,b=0)}if(0===s)m=m.replace(/^0+/,\"\");else{const t=m.length-s;m=m.substring(0,t)+\".\"+m.substring(t),m=m.replace(/^0+/,\"\"),m=m.replace(/\\.?0+$/,\"\"),\".\"===m[0]&&(m=\"0\"+m)}return m}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(6),i=r(160),o=[\"5\",\"6\",\"7\",\"8\",\"9\"];function s(t){if(t.match(/\\.9+$/))return n(i(t),\"1\");\"+\"===t[0]&&(t=t.substring(1));const e=t.length;let r=\"\";const s=t[t.length-1];if(o.includes(s)){let n;for(n=e-2;n>=0;n--){const e=t[n];if(\".\"===e||\"-\"===e)continue;const i=Number(e)+1;if(10!==i){r=i+r;break}r=\"0\"+r}n>0&&(r=t.substring(0,n)+r)}else r=t.substring(0,e-1);return\".\"===r[r.length-1]&&(r=r.substring(0,r.length-1)),r.indexOf(\".\")>-1&&(r=r.replace(/0+$/,\"\")),r}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";function n(t){return\"-\"===t[0]?\"-\":\"+\"}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const n=r(0);function i(t){const e=(t=n(t)).indexOf(\".\");return-1===e?\"0\":(t.length-e-1).toString()}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";function n(t){return t.includes(\"i\")}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const n=r(79);function i(){const t=Array.from(arguments),e=\"object\"==typeof t[t.length-1]?t[t.length-1]:void 0,r=Array.isArray(t[0])?t[0]:e?t.slice(0,t.length-1):t;return n(r,e)}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(17);function i(t,e){const r=Number(e);let i=t;for(let e=1;et.type===c.a.internalError).map(t=>t.error);return Object.assign(t,{[u.a]:i,[u.b]:r,[u.c]:n,[u.e]:e})}function m(t,e){return f(this,void 0,void 0,(function*(){d(\"Initializing new thread\");const r=e&&e.timeout?e.timeout:y,n=(yield function(t,e,r){return f(this,void 0,void 0,(function*(){let n;const i=new Promise((t,i)=>{n=setTimeout(()=>i(Error(r)),e)}),o=yield Promise.race([t,i]);return clearTimeout(n),o}))}(function(t){return new Promise((e,r)=>{const n=i=>{var o;h(\"Message from worker before finishing initialization:\",i.data),(o=i.data)&&\"init\"===o.type?(t.removeEventListener(\"message\",n),e(i.data)):(t=>t&&\"uncaughtError\"===t.type)(i.data)&&(t.removeEventListener(\"message\",n),r(Object(s.a)(i.data.error)))};t.addEventListener(\"message\",n)})}(t),r,`Timeout: Did not receive an init message from worker after ${r}ms. Make sure the worker calls expose().`)).exposed,{termination:i,terminate:u}=function(t){const[e,r]=Object(a.a)();return{terminate:()=>f(this,void 0,void 0,(function*(){p(\"Terminating worker\"),yield t.terminate(),r()})),termination:e}}(t),m=function(t,e){return new o.a(r=>{const n=t=>{const e={type:c.a.message,data:t.data};r.next(e)},i=t=>{p(\"Unhandled promise rejection event in thread:\",t);const e={type:c.a.internalError,error:Error(t.reason)};r.next(e)};t.addEventListener(\"message\",n),t.addEventListener(\"unhandledrejection\",i),e.then(()=>{const e={type:c.a.termination};t.removeEventListener(\"message\",n),t.removeEventListener(\"unhandledrejection\",i),r.next(e),r.complete()})})}(t,i);if(\"function\"===n.type){return g(Object(l.a)(t),t,m,u)}if(\"module\"===n.type){return g(Object(l.b)(t,n.methods),t,m,u)}{const t=n.type;throw Error(\"Worker init message states unexpected type of expose(): \"+t)}}))}}).call(this,r(8))},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return g}));var n=r(12),i=r.n(n),o=r(103),s=r(201),a=r(26);function u(t){return Promise.all(t.map(t=>{const e=t=>({status:\"fulfilled\",value:t}),r=t=>({status:\"rejected\",reason:t}),n=Promise.resolve(t);try{return n.then(e,r)}catch(t){return Promise.reject(t)}}))}var c,l=r(19);!function(t){t.initialized=\"initialized\",t.taskCanceled=\"taskCanceled\",t.taskCompleted=\"taskCompleted\",t.taskFailed=\"taskFailed\",t.taskQueued=\"taskQueued\",t.taskQueueDrained=\"taskQueueDrained\",t.taskStart=\"taskStart\",t.terminated=\"terminated\"}(c||(c={}));var f=r(24),h=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{u(n.next(t))}catch(t){o(t)}}function a(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}u((n=n.apply(t,e||[])).next())}))};let d=1;class p{constructor(t,e){this.eventSubject=new o.a,this.initErrors=[],this.isClosing=!1,this.nextTaskID=1,this.taskQueue=[];const r=\"number\"==typeof e?{size:e}:e||{},{size:n=l.a}=r;this.debug=i()(\"threads:pool:\"+(r.name||String(d++)).replace(/\\W/g,\" \").trim().replace(/\\s+/g,\"-\")),this.options=r,this.workers=function(t,e){return function(t){const e=[];for(let r=0;r({init:t(),runningTasks:[]}))}(t,n),this.eventObservable=Object(s.a)(a.a.from(this.eventSubject)),Promise.all(this.workers.map(t=>t.init)).then(()=>this.eventSubject.next({type:c.initialized,size:this.workers.length}),t=>{this.debug(\"Error while initializing pool worker:\",t),this.eventSubject.error(t),this.initErrors.push(t)})}findIdlingWorker(){const{concurrency:t=1}=this.options;return this.workers.find(e=>e.runningTasks.lengthh(this,void 0,void 0,(function*(){var n;yield(n=0,new Promise(t=>setTimeout(t,n)));try{yield this.runPoolTask(t,e)}finally{t.runningTasks=t.runningTasks.filter(t=>t!==r),this.isClosing||this.scheduleWork()}})))();t.runningTasks.push(r)}))}scheduleWork(){this.debug(\"Attempt de-queueing a task in order to run it...\");const t=this.findIdlingWorker();if(!t)return;const e=this.taskQueue.shift();if(!e)return this.debug(\"Task queue is empty\"),void this.eventSubject.next({type:c.taskQueueDrained});this.run(t,e)}taskCompletion(t){return new Promise((e,r)=>{const n=this.events().subscribe(i=>{i.type===c.taskCompleted&&i.taskID===t?(n.unsubscribe(),e(i.returnValue)):i.type===c.taskFailed&&i.taskID===t?(n.unsubscribe(),r(i.error)):i.type===c.terminated&&(n.unsubscribe(),r(Error(\"Pool has been terminated before task was run.\")))})})}settled(t=!1){return h(this,void 0,void 0,(function*(){const e=()=>{return t=this.workers,e=t=>t.runningTasks,t.reduce((t,r)=>[...t,...e(r)],[]);var t,e},r=[],n=this.eventObservable.subscribe(t=>{t.type===c.taskFailed&&r.push(t.error)});return this.initErrors.length>0?Promise.reject(this.initErrors[0]):t&&0===this.taskQueue.length?(yield u(e()),r):(yield new Promise((t,e)=>{const r=this.eventObservable.subscribe({next(e){e.type===c.taskQueueDrained&&(r.unsubscribe(),t(void 0))},error:e})}),yield u(e()),n.unsubscribe(),r)}))}completed(t=!1){return h(this,void 0,void 0,(function*(){const e=this.settled(t),r=new Promise((t,r)=>{const n=this.eventObservable.subscribe({next(i){i.type===c.taskQueueDrained?(n.unsubscribe(),t(e)):i.type===c.taskFailed&&(n.unsubscribe(),r(i.error))},error:r})}),n=yield Promise.race([e,r]);if(n.length>0)throw n[0]}))}events(){return this.eventObservable}queue(t){const{maxQueuedJobs:e=1/0}=this.options;if(this.isClosing)throw Error(\"Cannot schedule pool tasks after terminate() has been called.\");if(this.initErrors.length>0)throw this.initErrors[0];const r=this.nextTaskID++,n=this.taskCompletion(r);n.catch(t=>{this.debug(`Task #${r} errored:`,t)});const i={id:r,run:t,cancel:()=>{-1!==this.taskQueue.indexOf(i)&&(this.taskQueue=this.taskQueue.filter(t=>t!==i),this.eventSubject.next({type:c.taskCanceled,taskID:i.id}))},then:n.then.bind(n)};if(this.taskQueue.length>=e)throw Error(\"Maximum number of pool tasks queued. Refusing to queue another one.\\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won't finish, thus blocking the pool.\");return this.debug(`Queueing task #${i.id}...`),this.taskQueue.push(i),this.eventSubject.next({type:c.taskQueued,taskID:i.id}),this.scheduleWork(),i}terminate(t){return h(this,void 0,void 0,(function*(){this.isClosing=!0,t||(yield this.completed(!0)),this.eventSubject.next({type:c.terminated,remainingQueue:[...this.taskQueue]}),this.eventSubject.complete(),yield Promise.all(this.workers.map(t=>h(this,void 0,void 0,(function*(){return f.a.terminate(yield t.init)}))))}))}}function y(t,e){return new p(t,e)}p.EventType=c,y.EventType=c;const g=y},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return b})),r.d(e,\"b\",(function(){return v}));var n=r(12),i=r.n(n),o=r(26),s=r(201),a=r(13);const u=()=>{},c=t=>t,l=t=>Promise.resolve().then(t);function f(t){throw t}class h extends o.a{constructor(t){super(e=>{const r=this,n=Object.assign(Object.assign({},e),{complete(){e.complete(),r.onCompletion()},error(t){e.error(t),r.onError(t)},next(t){e.next(t),r.onNext(t)}});try{return this.initHasRun=!0,t(n)}catch(t){n.error(t)}}),this.initHasRun=!1,this.fulfillmentCallbacks=[],this.rejectionCallbacks=[],this.firstValueSet=!1,this.state=\"pending\"}onNext(t){this.firstValueSet||(this.firstValue=t,this.firstValueSet=!0)}onError(t){this.state=\"rejected\",this.rejection=t;for(const e of this.rejectionCallbacks)l(()=>e(t))}onCompletion(){this.state=\"fulfilled\";for(const t of this.fulfillmentCallbacks)l(()=>t(this.firstValue))}then(t,e){const r=t||c,n=e||f;let i=!1;return new Promise((t,e)=>{const o=r=>{if(!i){i=!0;try{t(n(r))}catch(t){e(t)}}};return this.initHasRun||this.subscribe({error:o}),\"fulfilled\"===this.state?t(r(this.firstValue)):\"rejected\"===this.state?(i=!0,t(n(this.rejection))):(this.fulfillmentCallbacks.push(e=>{try{t(r(e))}catch(t){o(t)}}),void this.rejectionCallbacks.push(o))})}catch(t){return this.then(void 0,t)}finally(t){const e=t||u;return this.then(t=>(e(),t),()=>e())}static from(t){return function(t){return t&&\"function\"==typeof t.then}(t)?new h(e=>{t.then(t=>{e.next(t),e.complete()},t=>{e.error(t)})}):super.from(t)}}var d=r(105),p=r(20);const y=i()(\"threads:master:messages\");let g=1;function m(t,e){return new o.a(r=>{let n;const i=o=>{var s;if(y(\"Message from worker:\",o.data),o.data&&o.data.uid===e)if((s=o.data)&&s.type===p.b.running)n=o.data.resultType;else if((t=>t&&t.type===p.b.result)(o.data))\"promise\"===n?(void 0!==o.data.payload&&r.next(Object(a.a)(o.data.payload)),r.complete(),t.removeEventListener(\"message\",i)):(o.data.payload&&r.next(Object(a.a)(o.data.payload)),o.data.complete&&(r.complete(),t.removeEventListener(\"message\",i)));else if((t=>t&&t.type===p.b.error)(o.data)){const e=Object(a.a)(o.data.error);r.error(e),t.removeEventListener(\"message\",i)}};return t.addEventListener(\"message\",i),()=>{if(\"observable\"===n||!n){const r={type:p.a.cancel,uid:e};t.postMessage(r)}t.removeEventListener(\"message\",i)}})}function b(t,e){return(...r)=>{const n=g++,{args:i,transferables:o}=function(t){if(0===t.length)return{args:[],transferables:[]};const e=[],r=[];for(const n of t)Object(d.a)(n)?(e.push(Object(a.b)(n.send)),r.push(...n.transferables)):e.push(Object(a.b)(n));return{args:e,transferables:0===r.length?r:(n=r,Array.from(new Set(n)))};var n}(r),u={type:p.a.run,uid:n,method:e,args:i};y(\"Sending command to run function to worker:\",u);try{t.postMessage(u,o)}catch(t){return h.from(Promise.reject(t))}return h.from(Object(s.a)(m(t,n)))}}function v(t,e){const r={};for(const n of e)r[n]=b(t,n);return r}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){\"use strict\";(function(e,n){var i=r(28);t.exports=v;var o,s=r(60);v.ReadableState=b;r(62).EventEmitter;var a=function(t,e){return t.listeners(e).length},u=r(63),c=r(43).Buffer,l=(void 0!==e?e:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var f=Object.create(r(21));f.inherits=r(10);var h=r(115),d=void 0;d=h&&h.debuglog?h.debuglog(\"stream\"):function(){};var p,y=r(116),g=r(64);f.inherits(v,u);var m=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function b(t,e){t=t||{};var n=e instanceof(o=o||r(14));this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,s=t.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(s||0===s)?s:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new y,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(p||(p=r(66).StringDecoder),this.decoder=new p(t.encoding),this.encoding=t.encoding)}function v(t){if(o=o||r(14),!(this instanceof v))return new v(t);this._readableState=new b(t,this),this.readable=!0,t&&(\"function\"==typeof t.read&&(this._read=t.read),\"function\"==typeof t.destroy&&(this._destroy=t.destroy)),u.call(this)}function w(t,e,r,n,i){var o,s=t._readableState;null===e?(s.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,S(t)}(t,s)):(i||(o=function(t,e){var r;n=e,c.isBuffer(n)||n instanceof l||\"string\"==typeof e||void 0===e||t.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(s,e)),o?t.emit(\"error\",o):s.objectMode||e&&e.length>0?(\"string\"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),n?s.endEmitted?t.emit(\"error\",new Error(\"stream.unshift() after end event\")):x(t,s,e,!0):s.ended?t.emit(\"error\",new Error(\"stream.push() after EOF\")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?x(t,s,e,!1):E(t,s)):x(t,s,e,!1))):n||(s.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=8388608?t=8388608:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function S(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(d(\"emitReadable\",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(A,t):A(t))}function A(t){d(\"emit readable\"),t.emit(\"readable\"),C(t)}function E(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(k,t,e))}function k(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;to.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0===(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;for(;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0===(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e);return n}(t,e.buffer,e.decoder),r);var r}function I(t){var e=t._readableState;if(e.length>0)throw new Error('\"endReadable()\" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(R,e,t))}function R(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"))}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return d(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?I(this):S(this),null;if(0===(t=_(t,e))&&e.ended)return 0===e.length&&I(this),null;var n,i=e.needReadable;return d(\"need readable\",i),(0===e.length||e.length-t0?P(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&I(this)),null!==n&&this.emit(\"data\",n),n},v.prototype._read=function(t){this.emit(\"error\",new Error(\"_read() is not implemented\"))},v.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,d(\"pipe count=%d opts=%j\",o.pipesCount,e);var u=(!e||!1!==e.end)&&t!==n.stdout&&t!==n.stderr?l:v;function c(e,n){d(\"onunpipe\"),e===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,d(\"cleanup\"),t.removeListener(\"close\",m),t.removeListener(\"finish\",b),t.removeListener(\"drain\",f),t.removeListener(\"error\",g),t.removeListener(\"unpipe\",c),r.removeListener(\"end\",l),r.removeListener(\"end\",v),r.removeListener(\"data\",y),h=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||f())}function l(){d(\"onend\"),t.end()}o.endEmitted?i.nextTick(u):r.once(\"end\",u),t.on(\"unpipe\",c);var f=function(t){return function(){var e=t._readableState;d(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,C(t))}}(r);t.on(\"drain\",f);var h=!1;var p=!1;function y(e){d(\"ondata\"),p=!1,!1!==t.write(e)||p||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==j(o.pipes,t))&&!h&&(d(\"false write response, pause\",o.awaitDrain),o.awaitDrain++,p=!0),r.pause())}function g(e){d(\"onerror\",e),v(),t.removeListener(\"error\",g),0===a(t,\"error\")&&t.emit(\"error\",e)}function m(){t.removeListener(\"finish\",b),v()}function b(){d(\"onfinish\"),t.removeListener(\"close\",m),v()}function v(){d(\"unpipe\"),r.unpipe(t)}return r.on(\"data\",y),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?s(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",g),t.once(\"close\",m),t.once(\"finish\",b),t.emit(\"pipe\",r),o.flowing||(d(\"pipe resume\"),r.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error(\"Possible EventEmitter memory leak detected. \"+s.length+\" \"+String(e)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");u.name=\"MaxListenersExceededWarning\",u.emitter=t,u.type=e,u.count=s.length,a=u,console&&console.warn&&console.warn(a)}return t}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=h.bind(n);return i.listener=r,n.wrapFn=i,i}function p(t,e,r){var n=t._events;if(void 0===n)return[];var i=n[e];return void 0===i?[]:\"function\"==typeof i?r?[i.listener||i]:[i]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error(\"Unhandled error.\"+(s?\" (\"+s.message+\")\":\"\"));throw a.context=s,a}var u=i[t];if(void 0===u)return!1;if(\"function\"==typeof u)o(u,this,e);else{var c=u.length,l=g(u,c);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return p(this,t,!0)},a.prototype.rawListeners=function(t){return p(this,t,!1)},a.listenerCount=function(t,e){return\"function\"==typeof t.listenerCount?t.listenerCount(e):y.call(t,e)},a.prototype.listenerCount=y,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,r){t.exports=r(62).EventEmitter},function(t,e,r){\"use strict\";var n=r(28);function i(t,e){t.emit(\"error\",e)}t.exports={destroy:function(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,s=this._writableState&&this._writableState.destroyed;return o||s?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(i,this,t)):n.nextTick(i,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted||(r._writableState.errorEmitted=!0,n.nextTick(i,r,t)):n.nextTick(i,r,t):e&&e(t)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,r){\"use strict\";(function(e,n,i){var o=r(28);function s(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var n=t.entry;t.entry=null;for(;n;){var i=n.callback;e.pendingcb--,i(r),n=n.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=b;var a,u=!e.browser&&[\"v0.10\",\"v0.9.\"].indexOf(e.version.slice(0,5))>-1?n:o.nextTick;b.WritableState=m;var c=Object.create(r(21));c.inherits=r(10);var l={deprecate:r(120)},f=r(63),h=r(43).Buffer,d=(void 0!==i?i:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var p,y=r(64);function g(){}function m(t,e){a=a||r(14),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===t.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?(o.nextTick(i,n),o.nextTick(A,t,e),t._writableState.errorEmitted=!0,t.emit(\"error\",n)):(i(n),t._writableState.errorEmitted=!0,t.emit(\"error\",n),A(t,e))}(t,r,n,e,i);else{var s=_(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||x(t,r),n?u(w,t,r,s,i):w(t,r,s,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function b(t){if(a=a||r(14),!(p.call(b,this)||this instanceof a))return new b(t);this._writableState=new m(t,this),this.writable=!0,t&&(\"function\"==typeof t.write&&(this._write=t.write),\"function\"==typeof t.writev&&(this._writev=t.writev),\"function\"==typeof t.destroy&&(this._destroy=t.destroy),\"function\"==typeof t.final&&(this._final=t.final)),f.call(this)}function v(t,e,r,n,i,o,s){e.writelen=n,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function w(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}(t,e),e.pendingcb--,n(),A(t,e)}function x(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),o=e.corkedRequestsFree;o.entry=r;for(var a=0,u=!0;r;)i[a]=r,r.isBuf||(u=!1),r=r.next,a+=1;i.allBuffers=u,v(t,e,!0,e.length,i,\"\",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new s(e),e.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,f=r.callback;if(v(t,e,!1,e.objectMode?1:c.length,c,l,f),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function _(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function S(t,e){t._final((function(r){e.pendingcb--,r&&t.emit(\"error\",r),e.prefinished=!0,t.emit(\"prefinish\"),A(t,e)}))}function A(t,e){var r=_(e);return r&&(!function(t,e){e.prefinished||e.finalCalled||(\"function\"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,o.nextTick(S,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit(\"finish\"))),r}c.inherits(b,f),m.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(m.prototype,\"buffer\",{get:l.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(t){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(t){return!!p.call(this,t)||this===b&&(t&&t._writableState instanceof m)}})):p=function(t){return t instanceof this},b.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},b.prototype.write=function(t,e,r){var n,i=this._writableState,s=!1,a=!i.objectMode&&(n=t,h.isBuffer(n)||n instanceof d);return a&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),\"function\"==typeof e&&(r=e,e=null),a?e=\"buffer\":e||(e=i.defaultEncoding),\"function\"!=typeof r&&(r=g),i.ended?function(t,e){var r=new Error(\"write after end\");t.emit(\"error\",r),o.nextTick(e,r)}(this,r):(a||function(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||e.objectMode||(s=new TypeError(\"Invalid non-string/buffer chunk\")),s&&(t.emit(\"error\",s),o.nextTick(n,s),i=!1),i}(this,i,t,r))&&(i.pendingcb++,s=function(t,e,r,n,i,o){if(!r){var s=function(t,e,r){t.objectMode||!1===t.decodeStrings||\"string\"!=typeof e||(e=h.from(e,r));return e}(e,n,i);n!==s&&(r=!0,i=\"buffer\",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length-1))throw new TypeError(\"Unknown encoding: \"+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(b.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),b.prototype._write=function(t,e,r){r(new Error(\"_write() is not implemented\"))},b.prototype._writev=null,b.prototype.end=function(t,e,r){var n=this._writableState;\"function\"==typeof t?(r=t,t=null,e=null):\"function\"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,A(t,e),r&&(e.finished?o.nextTick(r):t.once(\"finish\",r));e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(b.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),b.prototype.destroy=y.destroy,b.prototype._undestroy=y.undestroy,b.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r(8),r(118).setImmediate,r(3))},function(t,e,r){\"use strict\";var n=r(121).Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=u,this.end=c,e=4;break;case\"utf8\":this.fillLast=a,e=4;break;case\"base64\":this.text=l,this.end=f,e=3;break;default:return this.write=h,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:-1}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"�\".repeat(r);if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"�\".repeat(r+1);if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"�\".repeat(r+2)}}(this,t,e);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):\"\"}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,r){\"use strict\";t.exports=s;var n=r(14),i=Object.create(r(21));function o(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.lengthObject(o.a)(r),e)}async decode(t,e){return new Promise((r,n)=>{this.pool.queue(async i=>{try{const n=await i(t,e);r(n)}catch(t){n(t)}})})}destroy(){this.pool.terminate(!0)}}}).call(this,r(133))},function(t,e,r){(function(t){e.fetch=a(t.fetch)&&a(t.ReadableStream),e.writableStream=a(t.WritableStream),e.abortController=a(t.AbortController),e.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),e.blobConstructor=!0}catch(t){}var r;function n(){if(void 0!==r)return r;if(t.XMLHttpRequest){r=new t.XMLHttpRequest;try{r.open(\"GET\",t.XDomainRequest?\"/\":\"https://example.com\")}catch(t){r=null}}else r=null;return r}function i(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}var o=void 0!==t.ArrayBuffer,s=o&&a(t.ArrayBuffer.prototype.slice);function a(t){return\"function\"==typeof t}e.arraybuffer=e.fetch||o&&i(\"arraybuffer\"),e.msstream=!e.fetch&&s&&i(\"ms-stream\"),e.mozchunkedarraybuffer=!e.fetch&&o&&i(\"moz-chunked-arraybuffer\"),e.overrideMimeType=e.fetch||!!n()&&a(n().overrideMimeType),e.vbArray=a(t.VBArray),r=null}).call(this,r(3))},function(t,e,r){(function(t,n,i){var o=r(69),s=r(10),a=r(42),u=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(e,r,s,u){var c=this;if(a.Readable.call(c),c._mode=s,c.headers={},c.rawHeaders=[],c.trailers={},c.rawTrailers=[],c.on(\"end\",(function(){t.nextTick((function(){c.emit(\"close\")}))})),\"fetch\"===s){if(c._fetchResponse=r,c.url=r.url,c.statusCode=r.status,c.statusMessage=r.statusText,r.headers.forEach((function(t,e){c.headers[e.toLowerCase()]=t,c.rawHeaders.push(e,t)})),o.writableStream){var l=new WritableStream({write:function(t){return new Promise((function(e,r){c._destroyed?r():c.push(new n(t))?e():c._resumeFetch=e}))},close:function(){i.clearTimeout(u),c._destroyed||c.push(null)},abort:function(t){c._destroyed||c.emit(\"error\",t)}});try{return void r.body.pipeTo(l).catch((function(t){i.clearTimeout(u),c._destroyed||c.emit(\"error\",t)}))}catch(t){}}var f=r.body.getReader();!function t(){f.read().then((function(e){if(!c._destroyed){if(e.done)return i.clearTimeout(u),void c.push(null);c.push(new n(e.value)),t()}})).catch((function(t){i.clearTimeout(u),c._destroyed||c.emit(\"error\",t)}))}()}else{if(c._xhr=e,c._pos=0,c.url=e.responseURL,c.statusCode=e.status,c.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\\r?\\n/).forEach((function(t){var e=t.match(/^([^:]+):\\s*(.*)/);if(e){var r=e[1].toLowerCase();\"set-cookie\"===r?(void 0===c.headers[r]&&(c.headers[r]=[]),c.headers[r].push(e[2])):void 0!==c.headers[r]?c.headers[r]+=\", \"+e[2]:c.headers[r]=e[2],c.rawHeaders.push(e[1],e[2])}})),c._charset=\"x-user-defined\",!o.overrideMimeType){var h=c.rawHeaders[\"mime-type\"];if(h){var d=h.match(/;\\s*charset=([^;])(;|$)/);d&&(c._charset=d[1].toLowerCase())}c._charset||(c._charset=\"utf-8\")}}};s(c,a.Readable),c.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},c.prototype._onXHRProgress=function(){var t=this,e=t._xhr,r=null;switch(t._mode){case\"text:vbarray\":if(e.readyState!==u.DONE)break;try{r=new i.VBArray(e.responseBody).toArray()}catch(t){}if(null!==r){t.push(new n(r));break}case\"text\":try{r=e.responseText}catch(e){t._mode=\"text:vbarray\";break}if(r.length>t._pos){var o=r.substr(t._pos);if(\"x-user-defined\"===t._charset){for(var s=new n(o.length),a=0;at._pos&&(t.push(new n(new Uint8Array(c.result.slice(t._pos)))),t._pos=c.result.byteLength)},c.onload=function(){t.push(null)},c.readAsArrayBuffer(r)}t._xhr.readyState===u.DONE&&\"ms-stream\"!==t._mode&&t.push(null)}}).call(this,r(8),r(7).Buffer,r(3))},function(t,e,r){\"use strict\";var n=r(46),i=Object.prototype.hasOwnProperty,o=Array.isArray,s=function(){for(var t=[],e=0;e<256;++e)t.push(\"%\"+((e<16?\"0\":\"\")+e.toString(16)).toUpperCase());return t}(),a=function(t,e){for(var r=e&&e.plainObjects?Object.create(null):{},n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(o(r)){for(var n=[],i=0;i=48&&l<=57||l>=65&&l<=90||l>=97&&l<=122||o===n.RFC1738&&(40===l||41===l)?u+=a.charAt(c):l<128?u+=s[l]:l<2048?u+=s[192|l>>6]+s[128|63&l]:l<55296||l>=57344?u+=s[224|l>>12]+s[128|l>>6&63]+s[128|63&l]:(c+=1,l=65536+((1023&l)<<10|1023&a.charCodeAt(c)),u+=s[240|l>>18]+s[128|l>>12&63]+s[128|l>>6&63]+s[128|63&l])}return u},isBuffer:function(t){return!(!t||\"object\"!=typeof t)&&!!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t))},isRegExp:function(t){return\"[object RegExp]\"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(o(t)){for(var r=[],n=0;ne++t.next());return e.every(({done:t})=>t)?{done:!0}:{done:!1,value:e.map(({value:t})=>t)}}))}}},function(t,e,r){\"use strict\";function n(t){\"+\"===t[0]&&(t=t.substring(1));const e=\"-\"===t[0]?\"-\":\"\";\"-\"===e&&(t=t.substring(1));const r=t.indexOf(\"e\");if(-1===r)return e+t;let n=t.indexOf(\".\");-1===n&&(n=r);const i=Number(t.substring(r+1)),o=t.substring(0,r).replace(\".\",\"\"),s=n+i,a=o.length;if(s>=a){const t=s-a;let r=o;for(let e=0;es;e--)t+=\"0\";return t+=o,e+t}return e+o.substring(0,s)+\".\"+o.substring(s)}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";t.exports={MAX_SAFE_INTEGER:9007199254740991}},function(t,e,r){\"use strict\";const n=r(47);function i(t){return\"0\"===t?\"1\":n(\"1\",t)}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(9),s=r(22);function a(t){if(-1===(t=i(t)).indexOf(\".\"))return t;const e=s(t);return t=n(t).split(\".\")[0],\"+\"===e?o(t,\"1\"):\"-\"===e?\"0\"===t||\"\"===t?\"0\":\"-\"+t:void 0}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const n=r(51);function i(t){const e=n(t);return[t.replace(/\\./g,\"\").replace(/^0/,\"\"),1+\"0\".repeat(e)]}t.exports=i,t.exports.default=i},function(t,e,r){const n=r(0),i=r(16);function o(t){if(t=n(t),!i(t))throw new Error(\"can't call is_odd on decimal\");return[\"1\",\"3\",\"5\",\"7\",\"9\"].includes(t.charAt(t.length-1))}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(52),i=r(15),o=r(78),s=r(11),a=r(17),u=r(50);function c(t,{max_decimal_digits:e,infinity_times_zero:r=\"NaN\"}={}){const c=t.some(t=>i(t)),l=t.some(t=>s(t));if(c&&l)return r;if(c){return t.filter(t=>\"-\"===u(t)).length%2==0?\"Infinity\":\"-Infinity\"}if(l)return\"0\";const f=o(t.filter(t=>n(t)).length.toString());let h=a(t.map(t=>t.replace(/i$/,\"\")),{max_decimal_digits:e});return f&&(h+=\"i\"),h}t.exports=c,t.exports.default=c},function(t,e,r){\"use strict\";const n=r(0);function i(t){return\"-\"===(t=n(t))[0]}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(1),i=r(165),o=r(166);function s(t,{max_decimal_digits:e=100,fraction:r=!1}={}){if(i(t)){const[i,s]=o(t);return r?s+\"/\"+i:n(s,i,{max_decimal_digits:e})}return r?\"1/\"+t:n(\"1\",t,{max_decimal_digits:e})}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";const n=r(0),i=r(16);function o(t){if(t=n(t),!i(t))throw new Error(\"can't call is_even on decimal\");return[\"0\",\"2\",\"4\",\"6\",\"8\"].includes(t.charAt(t.length-1))}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(76),i=r(84),o=r(1);function s(t,e){const r=i(t);return\"0\"===r?\"0\":n(o(r,e,{max_decimal_digits:1}))}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";const n=r(4),i=r(0);function o(t){const e=(t=n(i(t))).indexOf(\".\");return(-1===e?t.length:e).toString()}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(1),i=r(82),o=r(86),s=r(87);function a(t,e){const r=s(\"2\",o([\"1000\",e,e]));for(;t.endsWith(\"0\")&&e.endsWith(\"0\");)t=t.substring(0,t.length-1),e=e.substring(0,e.length-1);for(;i(t)&&i(e);)t=n(t,\"2\"),e=n(e,\"2\");let a=!0;for(;a;){a=!1;for(let i=0;i\"<\"!==n(r,t)&&\">\"!==n(r,e));let a=\"13\";for(;\">\"!==n(a,e);)/^\\d+5/.test(a)||/^(\\d)\\1+/.test(a)||[\"9\",\"7\",\"3\"].every(t=>!o(i(a,t)))&&r.push(a),a=s(a,\"2\");return r}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const n=r(6),i=r(1);function o({max_decimal_digits:t=100,steps:e=100}={}){let r=\"1\",o=\"1\";for(let s=1;s\":return\"-\"+s(t,e)}else if(r&&!a)switch(e=e.substring(1),n(t,e)){case\"=\":return\"0\";case\"<\":return\"-\"+s(e,t);case\">\":return s(t,e)}}t.exports=a,t.exports.default=a},function(t,e,r){const{MAX_SAFE_INTEGER_LENGTH:n}=r(56);t.exports=function(t,e){const r=t.length,i=e.length,o=t.indexOf(\".\"),s=e.indexOf(\".\"),a=-1===o?r:o,u=-1===s?i:s;if(-1===o&&-1===s&&r0){for(;m>p-f;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,\"\"===y&&0===i||(y=i+y),m--}y&&(y=\".\"+y),m--}if(l>0)for(;m>=0;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,y=i+y,m--}return 1===g&&(y=g+y),\".\"===y[0]&&(y=\"0\"+y),y}},function(t,e,r){const{MAX_SAFE_INTEGER_LENGTH:n}=r(56);t.exports=function(t,e){const r=t.length,i=e.length,o=t.indexOf(\".\"),s=e.indexOf(\".\"),a=-1===o?r:o,u=-1===s?i:s;if(-1===o&&-1===s&&r0){for(;m>p-f;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;\"\"===y&&0===i||(y=i+y),m--}\"\"!==y&&(y=\".\"+y),m--}if(l>0){for(;m>0;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;y=i+y,m--}const r=t[0-h]||\"0\",n=e[0-d]||\"0\";let i=Number(r)-(g>0?1:0)-Number(n);0!==i&&(y=i+y),y=y.replace(/^0+/,\"\")}return\".\"===y[0]&&(y=\"0\"+y),y}},function(t,e,r){const n=r(18);function i(t){return\"-\"===(t=n(t))[0]?t.substring(1):t}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";t.exports={countIn1D:function(t){return t.reduce((function(t,e){return void 0===t[e]?t[e]=1:t[e]++,t}),{})},countIn2D:function(t){return t.reduce((function(t,e){return e.forEach((function(e){void 0===t[e]?t[e]=1:t[e]++})),t}),{})},unflatten:function(t,e){for(var r=e.height,n=e.width,i=[],o=0;o>24)/500+a,c=a-(t[e+2]<<24>>24)/200;u=.95047*(u*u*u>.008856?u*u*u:(u-16/116)/7.787),a=1*(a*a*a>.008856?a*a*a:(a-16/116)/7.787),c=1.08883*(c*c*c>.008856?c*c*c:(c-16/116)/7.787),i=3.2406*u+-1.5372*a+-.4986*c,o=-.9689*u+1.8758*a+.0415*c,s=.0557*u+-.204*a+1.057*c,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,n[r]=255*Math.max(0,Math.min(1,i)),n[r+1]=255*Math.max(0,Math.min(1,o)),n[r+2]=255*Math.max(0,Math.min(1,s))}return n}function S(t,e){let r=t.length-e,n=0;do{for(let r=e;r>0;r--)t[n+e]+=t[n],n++;r-=e}while(r>0)}function A(t,e,r){let n=0,i=t.length;const o=i/r;for(;i>e;){for(let r=e;r>0;--r)t[n+e]+=t[n],++n;i-=e}const s=t.slice();for(let e=0;e=t.byteLength);++o){let n;if(2===e){switch(i[0]){case 8:n=new Uint8Array(t,o*a*r*s,a*r*s);break;case 16:n=new Uint16Array(t,o*a*r*s,a*r*s/2);break;case 32:n=new Uint32Array(t,o*a*r*s,a*r*s/4);break;default:throw new Error(`Predictor 2 not allowed with ${i[0]} bits per sample.`)}S(n,a)}else 3===e&&(n=new Uint8Array(t,o*a*r*s,a*r*s),A(n,a,s))}return t}(r,n,e?t.TileWidth:t.ImageWidth,e?t.TileLength:t.RowsPerStrip||t.ImageLength,t.BitsPerSample,t.PlanarConfiguration)}return r}}class k extends E{decodeBlock(t){return t}}function T(t,e){for(let r=e.length-1;r>=0;r--)t.push(e[r]);return t}function O(t){const e=new Uint16Array(4093),r=new Uint8Array(4093);for(let t=0;t<=257;t++)e[t]=4096,r[t]=t;let n=258,i=9,o=0;function s(){n=258,i=9}function a(t){const e=function(t,e,r){const n=e%8,i=Math.floor(e/8),o=8-n,s=e+r-8*(i+1);let a=8*(i+2)-(e+r);const u=8*(i+2)-e;if(a=Math.max(0,a),i>=t.length)return console.warn(\"ran off the end of the buffer before finding EOI_CODE (end on input code)\"),257;let c=t[i]&2**(8-n)-1;c<<=r-o;let l=c;if(i+1>>a;e<<=Math.max(0,r-u),l+=e}if(s>8&&i+2>>n}return l}(t,o,i);return o+=i,e}function u(t,i){return r[n]=i,e[n]=t,n++,n-1}function c(t){const n=[];for(let i=t;4096!==i;i=e[i])n.push(r[i]);return n}const l=[];s();const f=new Uint8Array(t);let h,d=a(f);for(;257!==d;){if(256===d){for(s(),d=a(f);256===d;)d=a(f);if(257===d)break;if(d>256)throw new Error(\"corrupted code at scanline \"+d);T(l,c(d)),h=d}else if(d=2**i&&(12===i?h=void 0:i++),d=a(f)}return new Uint8Array(l)}class C extends E{decodeBlock(t){return O(t).buffer}}const P=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);function I(t,e){let r=0;const n=[];let i=16;for(;i>0&&!t[i-1];)--i;n.push({children:[],index:0});let o,s=n[0];for(let a=0;a0;)s=n.pop();for(s.index++,n.push(s);n.length<=a;)n.push(o={children:[],index:0}),s.children[s.index]=o.children,s=o;r++}a+10)return p--,d>>p&1;if(d=t[h++],255===d){const e=t[h++];if(e)throw new Error(\"unexpected marker: \"+(d<<8|e).toString(16))}return p=7,d>>>7}function g(t){let e,r=t;for(;null!==(e=y());){if(r=r[e],\"number\"==typeof r)return r;if(\"object\"!=typeof r)throw new Error(\"invalid huffman sequence\")}return null}function m(t){let e=t,r=0;for(;e>0;){const t=y();if(null===t)return;r=r<<1|t,--e}return r}function b(t){const e=m(t);return e>=1<0)return void v--;let r=o;const n=s;for(;r<=n;){const n=g(t.huffmanTableAC),i=15&n,o=n>>4;if(0===i){if(o<15){v=m(o)+(1<>4,0===r)i<15?(v=m(i)+(1<>4;if(0===n){if(o<15)break;i+=16}else{i+=o;e[P[i]]=b(n),i++}}};let R,j,M=0;j=1===A?n[0].blocksPerLine*n[0].blocksPerColumn:c*r.mcusPerColumn;const L=i||j;for(;M=65488&&R<=65495))break;h+=2}return h-f}function j(t,e){const r=[],{blocksPerLine:n,blocksPerColumn:i}=e,o=n<<3,s=new Int32Array(64),a=new Uint8Array(64);function u(t,r,n){const i=e.quantizationTable;let o,s,a,u,c,l,f,h,d;const p=n;let y;for(y=0;y<64;y++)p[y]=t[y]*i[y];for(y=0;y<8;++y){const t=8*y;0!==p[1+t]||0!==p[2+t]||0!==p[3+t]||0!==p[4+t]||0!==p[5+t]||0!==p[6+t]||0!==p[7+t]?(o=5793*p[0+t]+128>>8,s=5793*p[4+t]+128>>8,a=p[2+t],u=p[6+t],c=2896*(p[1+t]-p[7+t])+128>>8,h=2896*(p[1+t]+p[7+t])+128>>8,l=p[3+t]<<4,f=p[5+t]<<4,d=o-s+1>>1,o=o+s+1>>1,s=d,d=3784*a+1567*u+128>>8,a=1567*a-3784*u+128>>8,u=d,d=c-f+1>>1,c=c+f+1>>1,f=d,d=h+l+1>>1,l=h-l+1>>1,h=d,d=o-u+1>>1,o=o+u+1>>1,u=d,d=s-a+1>>1,s=s+a+1>>1,a=d,d=2276*c+3406*h+2048>>12,c=3406*c-2276*h+2048>>12,h=d,d=799*l+4017*f+2048>>12,l=4017*l-799*f+2048>>12,f=d,p[0+t]=o+h,p[7+t]=o-h,p[1+t]=s+f,p[6+t]=s-f,p[2+t]=a+l,p[5+t]=a-l,p[3+t]=u+c,p[4+t]=u-c):(d=5793*p[0+t]+512>>10,p[0+t]=d,p[1+t]=d,p[2+t]=d,p[3+t]=d,p[4+t]=d,p[5+t]=d,p[6+t]=d,p[7+t]=d)}for(y=0;y<8;++y){const t=y;0!==p[8+t]||0!==p[16+t]||0!==p[24+t]||0!==p[32+t]||0!==p[40+t]||0!==p[48+t]||0!==p[56+t]?(o=5793*p[0+t]+2048>>12,s=5793*p[32+t]+2048>>12,a=p[16+t],u=p[48+t],c=2896*(p[8+t]-p[56+t])+2048>>12,h=2896*(p[8+t]+p[56+t])+2048>>12,l=p[24+t],f=p[40+t],d=o-s+1>>1,o=o+s+1>>1,s=d,d=3784*a+1567*u+2048>>12,a=1567*a-3784*u+2048>>12,u=d,d=c-f+1>>1,c=c+f+1>>1,f=d,d=h+l+1>>1,l=h-l+1>>1,h=d,d=o-u+1>>1,o=o+u+1>>1,u=d,d=s-a+1>>1,s=s+a+1>>1,a=d,d=2276*c+3406*h+2048>>12,c=3406*c-2276*h+2048>>12,h=d,d=799*l+4017*f+2048>>12,l=4017*l-799*f+2048>>12,f=d,p[0+t]=o+h,p[56+t]=o-h,p[8+t]=s+f,p[48+t]=s-f,p[16+t]=a+l,p[40+t]=a-l,p[24+t]=u+c,p[32+t]=u-c):(d=5793*n[y+0]+8192>>14,p[0+t]=d,p[8+t]=d,p[16+t]=d,p[24+t]=d,p[32+t]=d,p[40+t]=d,p[48+t]=d,p[56+t]=d)}for(y=0;y<64;++y){const t=128+(p[y]+8>>4);r[y]=t<0?0:t>255?255:t}}for(let t=0;t>4==0)for(let r=0;r<64;r++){i[P[r]]=t[e++]}else{if(n>>4!=1)throw new Error(\"DQT: invalid table spec\");for(let t=0;t<64;t++){i[P[t]]=r()}}this.quantizationTables[15&n]=i}break}case 65472:case 65473:case 65474:{r();const n={extended:65473===o,progressive:65474===o,precision:t[e++],scanLines:r(),samplesPerLine:r(),components:{},componentsOrder:[]},s=t[e++];let a;for(let r=0;r>4,i=15&t[e+1],o=t[e+2];n.componentsOrder.push(a),n.components[a]={h:r,v:i,quantizationIdx:o},e+=3}i(n),this.frames.push(n);break}case 65476:{const n=r();for(let r=2;r>4==0?this.huffmanTablesDC[15&n]=I(i,s):this.huffmanTablesAC[15&n]=I(i,s)}break}case 65501:r(),this.resetInterval=r();break;case 65498:{r();const n=t[e++],i=[],o=this.frames[0];for(let r=0;r>4],r.huffmanTableAC=this.huffmanTablesAC[15&n],i.push(r)}const s=t[e++],a=t[e++],u=t[e++],c=R(t,e,o,i,this.resetInterval,s,a,u>>4,15&u);e+=c;break}case 65535:255!==t[e]&&e--;break;default:if(255===t[e-3]&&t[e-2]>=192&&t[e-2]<=254){e-=3;break}throw new Error(\"unknown JPEG marker \"+o.toString(16))}o=r()}}getResult(){const{frames:t}=this;if(0===this.frames.length)throw new Error(\"no frames were decoded\");this.frames.length>1&&console.warn(\"more than one frame is not supported\");for(let t=0;t{const a=B(t,n,i);for(let u=0;u{const a=B(t,n,i);for(let u=0;u=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${t} is out of range.`);const e=this.fileDirectory.BitsPerSample[t];if(e%8!=0)throw new Error(`Sample bit-width of ${e} is not supported.`);return e/8}getReaderForSample(t){const e=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,r=this.fileDirectory.BitsPerSample[t];switch(e){case 1:switch(r){case 8:return DataView.prototype.getUint8;case 16:return DataView.prototype.getUint16;case 32:return DataView.prototype.getUint32}break;case 2:switch(r){case 8:return DataView.prototype.getInt8;case 16:return DataView.prototype.getInt16;case 32:return DataView.prototype.getInt32}break;case 3:switch(r){case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error(\"Unsupported data format/bitsPerSample\")}getArrayForSample(t,e){return W(this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,this.fileDirectory.BitsPerSample[t],e)}async getTileOrStrip(t,e,r,n){const i=Math.ceil(this.getWidth()/this.getTileWidth()),o=Math.ceil(this.getHeight()/this.getTileHeight());let s;const{tiles:a}=this;let u,c;1===this.planarConfiguration?s=e*i+t:2===this.planarConfiguration&&(s=r*i*o+e*i+t),this.isTiled?(u=this.fileDirectory.TileOffsets[s],c=this.fileDirectory.TileByteCounts[s]):(u=this.fileDirectory.StripOffsets[s],c=this.fileDirectory.StripByteCounts[s]);const l=await this.source.fetch(u,c);let f;return null===a?f=n.decode(this.fileDirectory,l):a[s]||(f=n.decode(this.fileDirectory,l),a[s]=f),{x:t,y:e,sample:r,data:await f}}async _readRaster(t,e,r,n,i,o,s,a){const u=this.getTileWidth(),c=this.getTileHeight(),l=Math.max(Math.floor(t[0]/u),0),f=Math.min(Math.ceil(t[2]/u),Math.ceil(this.getWidth()/this.getTileWidth())),h=Math.max(Math.floor(t[1]/c),0),d=Math.min(Math.ceil(t[3]/c),Math.ceil(this.getHeight()/this.getTileHeight())),p=t[2]-t[0];let y=this.getBytesPerPixel();const g=[],m=[];for(let t=0;t{const o=i.data,s=new DataView(o),a=i.y*c,f=i.x*u,h=(i.y+1)*c,d=(i.x+1)*u,b=m[l],w=Math.min(c,c-(h-t[3])),x=Math.min(u,u-(d-t[2]));for(let i=Math.max(0,t[1]-a);iu[2]||u[1]>u[3])throw new Error(\"Invalid subsets\");const c=(u[2]-u[0])*(u[3]-u[1]);if(e&&e.length){for(let t=0;t=this.fileDirectory.SamplesPerPixel)return Promise.reject(new RangeError(`Invalid sample index '${e[t]}'.`))}else for(let t=0;ts[2]||s[1]>s[3])throw new Error(\"Invalid subsets\");const a=this.fileDirectory.PhotometricInterpretation;if(a===d.RGB){let i=[0,1,2];if(this.fileDirectory.ExtraSamples!==p.Unspecified&&o){i=[];for(let t=0;t\"Item\"===t.tagName);t&&(o=o.filter(e=>Number(e.attributes.sample)===t));for(let t=0;t0;let i=!0;for(let o=0;o<8;o++){let s=this._dataView.getUint8(t+(e?o:7-o));n&&(i?0!==s&&(s=255&~(s-1),i=!1):s=255&~s),r+=s*256**o}return n&&(r=-r),r}getUint8(t,e){return this._dataView.getUint8(t,e)}getInt8(t,e){return this._dataView.getInt8(t,e)}getUint16(t,e){return this._dataView.getUint16(t,e)}getInt16(t,e){return this._dataView.getInt16(t,e)}getUint32(t,e){return this._dataView.getUint32(t,e)}getInt32(t,e){return this._dataView.getInt32(t,e)}getFloat32(t,e){return this._dataView.getFloat32(t,e)}getFloat64(t,e){return this._dataView.getFloat64(t,e)}}class K{constructor(t,e,r,n){this._dataView=new DataView(t),this._sliceOffset=e,this._littleEndian=r,this._bigTiff=n}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(t,e){return this.sliceOffset<=t&&this.sliceTop>=t+e}readUint8(t){return this._dataView.getUint8(t-this._sliceOffset,this._littleEndian)}readInt8(t){return this._dataView.getInt8(t-this._sliceOffset,this._littleEndian)}readUint16(t){return this._dataView.getUint16(t-this._sliceOffset,this._littleEndian)}readInt16(t){return this._dataView.getInt16(t-this._sliceOffset,this._littleEndian)}readUint32(t){return this._dataView.getUint32(t-this._sliceOffset,this._littleEndian)}readInt32(t){return this._dataView.getInt32(t-this._sliceOffset,this._littleEndian)}readFloat32(t){return this._dataView.getFloat32(t-this._sliceOffset,this._littleEndian)}readFloat64(t){return this._dataView.getFloat64(t-this._sliceOffset,this._littleEndian)}readUint64(t){const e=this.readUint32(t),r=this.readUint32(t+4);let n;if(this._littleEndian){if(n=e+2**32*r,!Number.isSafeInteger(n))throw new Error(n+\" exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues\");return n}if(n=2**32*e+r,!Number.isSafeInteger(n))throw new Error(n+\" exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues\");return n}readInt64(t){let e=0;const r=(128&this._dataView.getUint8(t+(this._littleEndian?7:0)))>0;let n=!0;for(let i=0;i<8;i++){let o=this._dataView.getUint8(t+(this._littleEndian?i:7-i));r&&(n?0!==o&&(o=255&~(o-1),n=!1):o=255&~o),e+=o*256**i}return r&&(e=-e),e}readOffset(t){return this._bigTiff?this.readUint64(t):this.readUint32(t)}}var Y=r(68),Z=r(7),X=r(25),Q=r(40),J=r.n(Q),tt=r(106),et=r.n(tt),rt=r(39),nt=r.n(rt);class it{constructor(t,{blockSize:e=65536}={}){this.retrievalFunction=t,this.blockSize=e,this.blockRequests=new Map,this.blocks=new Map,this.blockIdsAwaitingRequest=null}async fetch(t,e,r=!1){const n=t+e,i=[],o=[],s=[];for(let e=Math.floor(t/this.blockSize)*this.blockSize;esetTimeout(e,t))}(),this.blockIdsAwaitingRequest){const t=function(t){if(0===t.length)return[];const e=[];let r=[];e.push(r);for(let n=0;n{const e=await t,i=r*this.blockSize,o=Math.min(i+this.blockSize,e.data.byteLength),s=e.data.slice(i,o);this.blockRequests.delete(n),this.blocks.set(n,{data:s,offset:e.offset+i,length:s.byteLength,top:e.offset+o})})())}}this.blockIdsAwaitingRequest=null}const a=[];for(const t of o)this.blockRequests.has(t)&&a.push(this.blockRequests.get(t));await Promise.all(a),await Promise.all(s);return function(t,e,r){const n=e+r,i=new ArrayBuffer(r),o=new Uint8Array(i);for(const r of t){const t=r.offset-e,i=r.top-n;let s,a=0,u=0;t<0?a=-t:t>0&&(u=t),s=i<0?r.length-a:n-r.offset-a;const c=new Uint8Array(r.data,a,s);o.set(c,u)}return i}(i.map(t=>this.blocks.get(t)),t,e)}async requestData(t,e){const r=await this.retrievalFunction(t,e);return r.length?r.length!==r.data.byteLength&&(r.data=r.data.slice(0,r.length)):r.length=r.data.byteLength,r.top=r.offset+r.length,r}}function ot(t,e){const{forceXHR:r}=e;if(\"function\"==typeof fetch&&!r)return function(t,{headers:e={},blockSize:r}={}){return new it(async(r,n)=>{const i=await fetch(t,{headers:{...e,Range:`bytes=${r}-${r+n-1}`}});if(i.ok){if(206===i.status){return{data:i.arrayBuffer?await i.arrayBuffer():(await i.buffer()).buffer,offset:r,length:n}}{const t=i.arrayBuffer?await i.arrayBuffer():(await i.buffer()).buffer;return{data:t,offset:0,length:t.byteLength}}}throw new Error(\"Error fetching data.\")},{blockSize:r})}(t,e);if(\"undefined\"!=typeof XMLHttpRequest)return function(t,{headers:e={},blockSize:r}={}){return new it(async(r,n)=>new Promise((i,o)=>{const s=new XMLHttpRequest;s.open(\"GET\",t),s.responseType=\"arraybuffer\";const a={...e,Range:`bytes=${r}-${r+n-1}`};for(const[t,e]of Object.entries(a))s.setRequestHeader(t,e);s.onload=()=>{const t=s.response;206===s.status?i({data:t,offset:r,length:n}):i({data:t,offset:0,length:t.byteLength})},s.onerror=o,s.send()}),{blockSize:r})}(t,e);if(J.a.get)return function(t,{headers:e={},blockSize:r}={}){return new it(async(r,n)=>new Promise((i,o)=>{const s=nt.a.parse(t);(\"http:\"===s.protocol?J.a:et.a).get({...s,headers:{...e,Range:`bytes=${r}-${r+n-1}`}},t=>{const e=[];t.on(\"data\",t=>{e.push(t)}),t.on(\"end\",()=>{const t=Z.Buffer.concat(e).buffer;i({data:t,offset:r,length:t.byteLength})})}).on(\"error\",o)}),{blockSize:r})}(t,e);throw new Error(\"No remote source available\")}function st(t){const e=function(t,e,r){return new Promise((n,i)=>{Object(X.open)(t,e,r,(t,e)=>{t?i(t):n(e)})})}(t,\"r\");return{async fetch(t,r){const n=await e,{buffer:i}=await function(...t){return new Promise((e,r)=>{Object(X.read)(...t,(t,n,i)=>{t?r(t):e({bytesRead:n,buffer:i})})})}(n,Z.Buffer.alloc(r),0,r,t);return i.buffer},async close(){const t=await e;return await function(t){return new Promise((e,r)=>{Object(X.close)(t,t=>{t?r(t):e()})})}(t)}}}function at(t,e){for(const r in e)e.hasOwnProperty(r)&&(t[r]=e[r])}function ut(t,e){if(t.length{let r=e;for(;0!==t[r];)r++;return r},readUshort:(t,e)=>t[e]<<8|t[e+1],readShort:(t,e)=>{const r=yt.ui8;return r[0]=t[e+1],r[1]=t[e+0],yt.i16[0]},readInt:(t,e)=>{const r=yt.ui8;return r[0]=t[e+3],r[1]=t[e+2],r[2]=t[e+1],r[3]=t[e+0],yt.i32[0]},readUint:(t,e)=>{const r=yt.ui8;return r[0]=t[e+3],r[1]=t[e+2],r[2]=t[e+1],r[3]=t[e+0],yt.ui32[0]},readASCII:(t,e,r)=>r.map(r=>String.fromCharCode(t[e+r])).join(\"\"),readFloat:(t,e)=>{const r=yt.ui8;return lt(4,n=>{r[n]=t[e+3-n]}),yt.fl32[0]},readDouble:(t,e)=>{const r=yt.ui8;return lt(8,n=>{r[n]=t[e+7-n]}),yt.fl64[0]},writeUshort:(t,e,r)=>{t[e]=r>>8&255,t[e+1]=255&r},writeUint:(t,e,r)=>{t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r>>0&255},writeASCII:(t,e,r)=>{lt(r.length,n=>{t[e+n]=r.charCodeAt(n)})},ui8:new Uint8Array(8)};yt.fl64=new Float64Array(yt.ui8.buffer),yt.writeDouble=(t,e,r)=>{yt.fl64[0]=r,lt(8,r=>{t[e+r]=yt.ui8[7-r]})};const gt=t=>{const e=new Uint8Array(1e3);let r=4;const n=yt;e[0]=77,e[1]=77,e[3]=42;let i=8;if(n.writeUint(e,r,i),r+=4,t.forEach((r,o)=>{const s=((t,e,r,n)=>{let i=r;const o=Object.keys(n).filter(t=>null!=t&&\"undefined\"!==t);t.writeUshort(e,i,o.length),i+=2;let s=i+12*o.length+4;for(const r of o){let o=null;\"number\"==typeof r?o=r:\"string\"==typeof r&&(o=parseInt(r,10));const a=c[o],u=pt[a];if(null==a||void 0===a||void 0===a)throw new Error(\"unknown type of tag: \"+o);let l=n[r];if(void 0===l)throw new Error(\"failed to get value for key \"+r);\"ASCII\"===a&&\"string\"==typeof l&&!1===ut(l,\"\\0\")&&(l+=\"\\0\");const f=l.length;t.writeUshort(e,i,o),i+=2,t.writeUshort(e,i,u),i+=2,t.writeUint(e,i,f),i+=4;let h=[-1,1,1,2,4,8,0,0,0,0,0,0,8][u]*f,d=i;h>4&&(t.writeUint(e,i,s),d=s),\"ASCII\"===a?t.writeASCII(e,d,l):\"SHORT\"===a?lt(f,r=>{t.writeUshort(e,d+2*r,l[r])}):\"LONG\"===a?lt(f,r=>{t.writeUint(e,d+4*r,l[r])}):\"RATIONAL\"===a?lt(f,r=>{t.writeUint(e,d+8*r,Math.round(1e4*l[r])),t.writeUint(e,d+8*r+4,1e4)}):\"DOUBLE\"===a&<(f,r=>{t.writeDouble(e,d+8*r,l[r])}),h>4&&(h+=1&h,s+=h),i+=4}return[i,s]})(n,e,i,r);i=s[1],o{lt(i,r=>{lt(n,n=>{o.push(t[n][e][r])})})})),e.ImageLength=r,delete e.height,e.ImageWidth=i,delete e.width,e.BitsPerSample||(e.BitsPerSample=lt(n,()=>8)),mt.forEach(t=>{const r=t[0];if(!e[r]){const n=t[1];e[r]=n}}),e.PhotometricInterpretation||(e.PhotometricInterpretation=3===e.BitsPerSample.length?2:1),e.SamplesPerPixel||(e.SamplesPerPixel=[n]),e.StripByteCounts||(e.StripByteCounts=[n*r*i]),e.ModelPixelScale||(e.ModelPixelScale=[360/i,180/r,0]),e.SampleFormat||(e.SampleFormat=lt(n,()=>1));const s=Object.keys(e).filter(t=>ut(t,\"GeoKey\")).sort((t,e)=>dt[t]-dt[e]);if(!e.GeoKeyDirectory){const t=[1,1,0,s.length];s.forEach(r=>{const n=Number(dt[r]);let i,o,s;t.push(n),\"SHORT\"===c[n]?(i=1,o=0,s=e[r]):\"GeogCitationGeoKey\"===r?(i=e.GeoAsciiParams.length,o=Number(dt.GeoAsciiParams),s=0):console.log(\"[geotiff.js] couldn't get TIFFTagLocation for \"+r),t.push(o),t.push(i),t.push(s)}),e.GeoKeyDirectory=t}for(const t in s)s.hasOwnProperty(t)&&delete e[t];[\"Compression\",\"ExtraSamples\",\"GeographicTypeGeoKey\",\"GTModelTypeGeoKey\",\"GTRasterTypeGeoKey\",\"ImageLength\",\"ImageWidth\",\"PhotometricInterpretation\",\"PlanarConfiguration\",\"ResolutionUnit\",\"SamplesPerPixel\",\"XPosition\",\"YPosition\"].forEach(t=>{var r;e[t]&&(e[t]=(r=e[t],Array.isArray(r)?r:[r]))});const a=(t=>{const e={};for(const r in t)\"StripOffsets\"!==r&&(dt[r]||console.error(r,\"not in name2code:\",Object.keys(dt)),e[dt[r]]=t[r]);return e})(e);return((t,e,r,n)=>{if(null==r)throw new Error(\"you passed into encodeImage a width of type \"+r);if(null==e)throw new Error(\"you passed into encodeImage a width of type \"+e);const i={256:[e],257:[r],273:[1e3],278:[r],305:\"geotiff.js\"};if(n)for(const t in n)n.hasOwnProperty(t)&&(i[t]=n[t]);const o=new Uint8Array(gt([i])),s=new Uint8Array(t),a=i[277],u=new Uint8Array(1e3+e*r*a);return lt(o.length,t=>{u[t]=o[t]}),function(t,e){const{length:r}=t;for(let n=0;n{u[1e3+e]=t}),u.buffer})(o,i,r,a)}class vt{log(){}info(){}warn(){}error(){}time(){}timeEnd(){}}let wt=new vt;function xt(t=new vt){wt=t}function _t(t){switch(t){case h.BYTE:case h.ASCII:case h.SBYTE:case h.UNDEFINED:return 1;case h.SHORT:case h.SSHORT:return 2;case h.LONG:case h.SLONG:case h.FLOAT:case h.IFD:return 4;case h.RATIONAL:case h.SRATIONAL:case h.DOUBLE:case h.LONG8:case h.SLONG8:case h.IFD8:return 8;default:throw new RangeError(\"Invalid field type: \"+t)}}function St(t,e,r,n){let i=null,o=null;const s=_t(e);switch(e){case h.BYTE:case h.ASCII:case h.UNDEFINED:i=new Uint8Array(r),o=t.readUint8;break;case h.SBYTE:i=new Int8Array(r),o=t.readInt8;break;case h.SHORT:i=new Uint16Array(r),o=t.readUint16;break;case h.SSHORT:i=new Int16Array(r),o=t.readInt16;break;case h.LONG:case h.IFD:i=new Uint32Array(r),o=t.readUint32;break;case h.SLONG:i=new Int32Array(r),o=t.readInt32;break;case h.LONG8:case h.IFD8:i=new Array(r),o=t.readUint64;break;case h.SLONG8:i=new Array(r),o=t.readInt64;break;case h.RATIONAL:i=new Uint32Array(2*r),o=t.readUint32;break;case h.SRATIONAL:i=new Int32Array(2*r),o=t.readInt32;break;case h.FLOAT:i=new Float32Array(r),o=t.readFloat32;break;case h.DOUBLE:i=new Float64Array(r),o=t.readFloat64;break;default:throw new RangeError(\"Invalid field type: \"+e)}if(e!==h.RATIONAL&&e!==h.SRATIONAL)for(let e=0;et.getWidth()-e.getWidth());for(let e=0;en||o&&o>s)break}}let f=e;if(s){const[t,e]=a.getOrigin(),[r,n]=u.getResolution(a);f=[Math.round((s[0]-t)/r),Math.round((s[1]-e)/n),Math.round((s[2]-t)/r),Math.round((s[3]-e)/n)],f=[Math.min(f[0],f[2]),Math.min(f[1],f[3]),Math.max(f[0],f[2]),Math.max(f[1],f[3])]}return u.readRasters({...t,window:f})}}class Tt extends kt{constructor(t,e,r,n,i={}){super(),this.source=t,this.littleEndian=e,this.bigTiff=r,this.firstIFDOffset=n,this.cache=i.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(t,e){const r=this.bigTiff?4048:1024;return new K(await this.source.fetch(t,void 0!==e?e:r),t,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(t){const e=this.bigTiff?20:12,r=this.bigTiff?8:2;let n=await this.getSlice(t);const i=this.bigTiff?n.readUint64(t):n.readUint16(t),o=i*e+(this.bigTiff?16:6);n.covers(t,o)||(n=await this.getSlice(t,o));const s={};let u=t+(this.bigTiff?8:2);for(let t=0;t{const e=await this.ifdRequests[t-1];if(0===e.nextIFDByteOffset)throw new Et(t);return this.parseFileDirectoryAt(e.nextIFDByteOffset)})(),this.ifdRequests[t]}async getImage(t=0){const e=await this.requestIFD(t);return new V(e.fileDirectory,e.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let t=0,e=!0;for(;e;)try{await this.requestIFD(t),++t}catch(t){if(!(t instanceof Et))throw t;e=!1}return t}async getGhostValues(){const t=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const e=\"GDAL_STRUCTURAL_METADATA_SIZE=\",r=e.length+100;let n=await this.getSlice(t,r);if(e===St(n,h.ASCII,e.length,t)){const e=St(n,h.ASCII,r,t).split(\"\\n\")[0],i=Number(e.split(\"=\")[1].split(\" \")[0])+e.length;i>r&&(n=await this.getSlice(t,i));const o=St(n,h.ASCII,i,t);this.ghostValues={},o.split(\"\\n\").filter(t=>t.length>0).map(t=>t.split(\"=\")).forEach(([t,e])=>{this.ghostValues[t]=e})}return this.ghostValues}static async fromSource(t,e){const r=await t.fetch(0,1024),n=new $(r),i=n.getUint16(0,0);let o;if(18761===i)o=!0;else{if(19789!==i)throw new TypeError(\"Invalid byte order value.\");o=!1}const s=n.getUint16(2,o);let a;if(42===s)a=!1;else{if(43!==s)throw new TypeError(\"Invalid magic number.\");a=!0;if(8!==n.getUint16(4,o))throw new Error(\"Unsupported offset byte-size.\")}const u=a?n.getUint64(8,o):n.getUint32(4,o);return new Tt(t,o,a,u,e)}close(){return\"function\"==typeof this.source.close&&this.source.close()}}e.default=Tt;class Ot extends kt{constructor(t,e){super(),this.mainFile=t,this.overviewFiles=e,this.imageFiles=[t].concat(e),this.fileDirectoriesPerFile=null,this.fileDirectoriesPerFileParsing=null,this.imageCount=null}async parseFileDirectoriesPerFile(){const t=[this.mainFile.parseFileDirectoryAt(this.mainFile.firstIFDOffset)].concat(this.overviewFiles.map(t=>t.parseFileDirectoryAt(t.firstIFDOffset)));return this.fileDirectoriesPerFile=await Promise.all(t),this.fileDirectoriesPerFile}async getImage(t=0){await this.getImageCount(),await this.parseFileDirectoriesPerFile();let e=0,r=0;for(let n=0;nt.getImageCount()));return this.imageCounts=await Promise.all(t),this.imageCount=this.imageCounts.reduce((t,e)=>t+e,0),this.imageCount}}async function Ct(t,e={}){return Tt.fromSource(ot(t,e))}async function Pt(t){return Tt.fromSource(function(t){return{fetch:async(e,r)=>t.slice(e,e+r)}}(t))}async function It(t){return Tt.fromSource(st(t))}async function Rt(t){return Tt.fromSource((e=t,{fetch:async(t,r)=>new Promise((n,i)=>{const o=e.slice(t,t+r),s=new FileReader;s.onload=t=>n(t.target.result),s.onerror=i,s.readAsArrayBuffer(o)})}));var e}async function jt(t,e=[],r={}){const n=await Tt.fromSource(ot(t,r)),i=await Promise.all(e.map(t=>Tt.fromSource(ot(t,r))));return new Ot(n,i)}async function Mt(t,e){return bt(t,e)}},function(t,e,r){function n(t,e){\"use strict\";var r=(e=e||{}).pos||0,i=\"<\".charCodeAt(0),o=\">\".charCodeAt(0),s=\"-\".charCodeAt(0),a=\"/\".charCodeAt(0),u=\"!\".charCodeAt(0),c=\"'\".charCodeAt(0),l='\"'.charCodeAt(0);function f(){for(var e=[];t[r];)if(t.charCodeAt(r)==i){if(t.charCodeAt(r+1)===a)return(r=t.indexOf(\">\",r))+1&&(r+=1),e;if(t.charCodeAt(r+1)===u){if(t.charCodeAt(r+2)==s){for(;-1!==r&&(t.charCodeAt(r)!==o||t.charCodeAt(r-1)!=s||t.charCodeAt(r-2)!=s||-1==r);)r=t.indexOf(\">\",r+1);-1===r&&(r=t.length)}else for(r+=2;t.charCodeAt(r)!==o&&t[r];)r++;r++;continue}var n=y();e.push(n)}else{var c=h();c.trim().length>0&&e.push(c),r++}return e}function h(){var e=r;return-2===(r=t.indexOf(\"<\",r)-1)&&(r=t.length),t.slice(e,r+1)}function d(){for(var e=r;-1===\"\\n\\t>/= \".indexOf(t[r])&&t[r];)r++;return t.slice(e,r)}var p=e.noChildNodes||[\"img\",\"br\",\"input\",\"meta\",\"link\"];function y(){r++;const e=d(),n={};let i=[];for(;t.charCodeAt(r)!==o&&t[r];){var s=t.charCodeAt(r);if(s>64&&s<91||s>96&&s<123){for(var u=d(),h=t.charCodeAt(r);h&&h!==c&&h!==l&&!(h>64&&h<91||h>96&&h<123)&&h!==o;)r++,h=t.charCodeAt(r);if(h===c||h===l){var y=g();if(-1===r)return{tagName:e,attributes:n,children:i}}else y=null,r--;n[u]=y}r++}if(t.charCodeAt(r-1)!==a)if(\"script\"==e){var m=r+1;r=t.indexOf(\"<\\/script>\",r),i=[t.slice(m,r-1)],r+=9}else if(\"style\"==e){m=r+1;r=t.indexOf(\"\",r),i=[t.slice(m,r-1)],r+=8}else-1==p.indexOf(e)&&(r++,i=f());else r++;return{tagName:e,attributes:n,children:i}}function g(){var e=t[r],n=++r;return r=t.indexOf(e,n),t.slice(n,r)}var m,b=null;if(void 0!==e.attrValue){e.attrName=e.attrName||\"id\";for(b=[];-1!==(m=void 0,m=new RegExp(\"\\\\s\"+e.attrName+\"\\\\s*=['\\\"]\"+e.attrValue+\"['\\\"]\").exec(t),r=m?m.index:-1);)-1!==(r=t.lastIndexOf(\"<\",r))&&b.push(y()),t=t.substr(r),r=0}else b=e.parseNode?y():f();return e.filter&&(b=n.filter(b,e.filter)),e.setPos&&(b.pos=r),b}n.simplify=function(t){var e={};if(!t.length)return\"\";if(1===t.length&&\"string\"==typeof t[0])return t[0];for(var r in t.forEach((function(t){if(\"object\"==typeof t){e[t.tagName]||(e[t.tagName]=[]);var r=n.simplify(t.children||[]);e[t.tagName].push(r),t.attributes&&(r._attributes=t.attributes)}})),e)1==e[r].length&&(e[r]=e[r][0]);return e},n.filter=function(t,e){var r=[];return t.forEach((function(t){if(\"object\"==typeof t&&e(t)&&r.push(t),t.children){var i=n.filter(t.children,e);r=r.concat(i)}})),r},n.stringify=function(t){var e=\"\";function r(t){if(t)for(var r=0;r\",r(t.children),e+=\"\"}return r(t),e},n.toContentString=function(t){if(Array.isArray(t)){var e=\"\";return t.forEach((function(t){e=(e+=\" \"+n.toContentString(t)).trim()})),e}return\"object\"==typeof t?n.toContentString(t.children):\" \"+t},n.getElementById=function(t,e,r){var i=n(t,{attrValue:e});return r?n.simplify(i):i[0]},n.getElementsByClassName=function(t,e,r){const i=n(t,{attrName:\"class\",attrValue:\"[a-zA-Z0-9-s ]*\"+e+\"[a-zA-Z0-9-s ]*\"});return r?n.simplify(i):i},n.parseStream=function(t,e){if(\"string\"==typeof e&&(e=e.length+2),\"string\"==typeof t){var i=r(25);t=i.createReadStream(t,{start:e}),e=0}var o=e,s=\"\";return t.on(\"data\",(function(e){s+=e;for(var r=0;;){if(!(o=s.indexOf(\"<\",o)+1))return void(o=r);if(\"/\"!==s[o+1]){var i=n(s,{pos:o-1,parseNode:!0,setPos:!0});if((o=i.pos)>s.length-1||oo.length-1||i=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new u,this.strm.avail_out=0;var r=n.inflateInit2(this.strm,e.windowBits);if(r!==s.Z_OK)throw new Error(a[r]);if(this.header=new c,n.inflateGetHeader(this.strm,this.header),e.dictionary&&(\"string\"==typeof e.dictionary?e.dictionary=o.string2buf(e.dictionary):\"[object ArrayBuffer]\"===l.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=n.inflateSetDictionary(this.strm,e.dictionary))!==s.Z_OK))throw new Error(a[r])}function h(t,e){var r=new f(e);if(r.push(t,!0),r.err)throw r.msg||a[r.err];return r.result}f.prototype.push=function(t,e){var r,a,u,c,f,h=this.strm,d=this.options.chunkSize,p=this.options.dictionary,y=!1;if(this.ended)return!1;a=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,\"string\"==typeof t?h.input=o.binstring2buf(t):\"[object ArrayBuffer]\"===l.call(t)?h.input=new Uint8Array(t):h.input=t,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new i.Buf8(d),h.next_out=0,h.avail_out=d),(r=n.inflate(h,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&p&&(r=n.inflateSetDictionary(this.strm,p)),r===s.Z_BUF_ERROR&&!0===y&&(r=s.Z_OK,y=!1),r!==s.Z_STREAM_END&&r!==s.Z_OK)return this.onEnd(r),this.ended=!0,!1;h.next_out&&(0!==h.avail_out&&r!==s.Z_STREAM_END&&(0!==h.avail_in||a!==s.Z_FINISH&&a!==s.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(u=o.utf8border(h.output,h.next_out),c=h.next_out-u,f=o.buf2string(h.output,u),h.next_out=c,h.avail_out=d-c,c&&i.arraySet(h.output,h.output,u,c,0),this.onData(f)):this.onData(i.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(y=!0)}while((h.avail_in>0||0===h.avail_out)&&r!==s.Z_STREAM_END);return r===s.Z_STREAM_END&&(a=s.Z_FINISH),a===s.Z_FINISH?(r=n.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===s.Z_OK):a!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),h.avail_out=0,!0)},f.prototype.onData=function(t){this.chunks.push(t)},f.prototype.onEnd=function(t){t===s.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=f,e.inflate=h,e.inflateRaw=function(t,e){return(e=e||{}).raw=!0,h(t,e)},e.ungzip=h},function(t,e,r){\"use strict\";var n=r(26);class i extends n.a{constructor(){super(t=>(this._observers.add(t),()=>this._observers.delete(t))),this._observers=new Set}next(t){for(const e of this._observers)e.next(t)}error(t){for(const e of this._observers)e.error(t)}complete(){for(const t of this._observers)t.complete()}}e.a=i},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return i}));const n=()=>{};function i(){let t,e=!1,r=n;return[new Promise(n=>{e?n(t):r=n}),n=>{e=!0,t=n,r(t)}]}},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return i}));var n=r(2);function i(t){return t&&\"object\"==typeof t&&t[n.d]}},function(t,e,r){var n=r(40),i=r(39),o=t.exports;for(var s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);function a(t){if(\"string\"==typeof t&&(t=i.parse(t)),t.protocol||(t.protocol=\"https:\"),\"https:\"!==t.protocol)throw new Error('Protocol \"'+t.protocol+'\" not supported. Expected \"https:\"');return t}o.request=function(t,e){return t=a(t),n.request.call(this,t,e)},o.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},function(t,e,r){\"use strict\";(function(e){var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function t(t,e){for(var r=0;r0?s-4:s;for(r=0;r>16&255,u[l++]=e>>8&255,u[l++]=255&e;2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[l++]=255&e);1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e);return u},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],s=0,a=r-i;sa?a:s+16383));1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return o.join(\"\")};for(var n=[],i=[],o=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a=0,u=s.length;a0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function l(t,e,r){for(var i,o,s=[],a=e;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(t,e){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\ne.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,l=-7,f=r?i-1:0,h=r?-1:1,d=t[e+f];for(f+=h,o=d&(1<<-l)-1,d>>=-l,l+=a;l>0;o=256*o+t[e+f],f+=h,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,n),o-=c}return(d?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+f>=1?h/u:h*Math.pow(2,1-f))*u>=2&&(s++,u/=2),s+f>=l?(a=0,s=l):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+d]=255&a,d+=p,a/=256,i-=8);for(s=s<0;t[r+d]=255&s,d+=p,s/=256,c-=8);t[r+d-p]|=128*y}},function(t,e){var r=\"undefined\"!=typeof self?self:this,n=function(){function t(){this.fetch=!1,this.DOMException=r.DOMException}return t.prototype=r,new t}();!function(t){!function(e){var r=\"URLSearchParams\"in t,n=\"Symbol\"in t&&\"iterator\"in Symbol,i=\"FileReader\"in t&&\"Blob\"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),o=\"FormData\"in t,s=\"ArrayBuffer\"in t;if(s)var a=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],u=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function c(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError(\"Invalid character in header field name\");return t.toLowerCase()}function l(t){return\"string\"!=typeof t&&(t=String(t)),t}function f(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n&&(e[Symbol.iterator]=function(){return e}),e}function h(t){this.map={},t instanceof h?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function d(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function p(t){return new Promise((function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}}))}function y(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function g(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?\"string\"==typeof t?this._bodyText=t:i&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:o&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:r&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():s&&i&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=g(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(t)||u(t))?this._bodyArrayBuffer=g(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},i&&(this.blob=function(){var t=d(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var t,e,r,n=d(this);if(n)return n;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=p(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?n:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&i)throw new TypeError(\"Body not allowed for GET or HEAD requests\");this._initBody(i)}function w(t){var e=new FormData;return t.trim().split(\"&\").forEach((function(t){if(t){var r=t.split(\"=\"),n=r.shift().replace(/\\+/g,\" \"),i=r.join(\"=\").replace(/\\+/g,\" \");e.append(decodeURIComponent(n),decodeURIComponent(i))}})),e}function x(t,e){e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=\"statusText\"in e?e.statusText:\"OK\",this.headers=new h(e.headers),this.url=e.url||\"\",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(x.prototype),x.prototype.clone=function(){return new x(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},x.error=function(){var t=new x(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var _=[301,302,303,307,308];x.redirect=function(t,e){if(-1===_.indexOf(e))throw new RangeError(\"Invalid status code\");return new x(null,{status:e,headers:{location:t}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function S(t,r){return new Promise((function(n,o){var s=new v(t,r);if(s.signal&&s.signal.aborted)return o(new e.DOMException(\"Aborted\",\"AbortError\"));var a=new XMLHttpRequest;function u(){a.abort()}a.onload=function(){var t,e,r={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||\"\",e=new h,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(/\\r?\\n/).forEach((function(t){var r=t.split(\":\"),n=r.shift().trim();if(n){var i=r.join(\":\").trim();e.append(n,i)}})),e)};r.url=\"responseURL\"in a?a.responseURL:r.headers.get(\"X-Request-URL\");var i=\"response\"in a?a.response:a.responseText;n(new x(i,r))},a.onerror=function(){o(new TypeError(\"Network request failed\"))},a.ontimeout=function(){o(new TypeError(\"Network request failed\"))},a.onabort=function(){o(new e.DOMException(\"Aborted\",\"AbortError\"))},a.open(s.method,s.url,!0),\"include\"===s.credentials?a.withCredentials=!0:\"omit\"===s.credentials&&(a.withCredentials=!1),\"responseType\"in a&&i&&(a.responseType=\"blob\"),s.headers.forEach((function(t,e){a.setRequestHeader(e,t)})),s.signal&&(s.signal.addEventListener(\"abort\",u),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener(\"abort\",u)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}S.polyfill=!0,t.fetch||(t.fetch=S,t.Headers=h,t.Request=v,t.Response=x),e.Headers=h,e.Request=v,e.Response=x,e.fetch=S,Object.defineProperty(e,\"__esModule\",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=n;(e=i.fetch).default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,t.exports=e},function(t,e,r){\"use strict\";t.exports=function(){return r(112)('!function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=106)}([function(t,e,r){\"use strict\";const n=r(73);t.exports=function(t){return\"+\"===t[0]&&(t=t.substring(1)),(t=(t=n(t)).replace(/^0+(?=\\\\d)/,\"\")).includes(\".\")&&(t=t.replace(/\\\\.?0+$/,\"\")),\"\"===t&&(t=\"0\"),\"-0\"===t&&(t=\"0\"),t}},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(15),s=r(32);function a(t,e,r){t=i(t),e=i(e);const a=\"-\"!==t[0],u=\"-\"!==e[0],c=o(t),l=o(e);if(c||l)return a==u?\"Infinity\":\"-Infinity\";if(\"0\"===e)throw new Error(\"[preciso] division by zero\");if(\"\"===t||\"0\"===t)return\"0\";const f=a!==u?\"-\":\"\";return a||(t=n(t)),u||(e=n(e)),f+s(t,e,r)}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return n})),r.d(e,\"b\",(function(){return i})),r.d(e,\"c\",(function(){return o})),r.d(e,\"d\",(function(){return s})),r.d(e,\"e\",(function(){return a}));const n=Symbol(\"thread.errors\"),i=Symbol(\"thread.events\"),o=Symbol(\"thread.terminate\"),s=Symbol(\"thread.transferable\"),a=Symbol(\"thread.worker\")},function(t,e){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";const n=r(0);function i(t){return\"-\"===(t=n(t))[0]?t.substring(1):t}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";function n(t,e){const r=t.length,n=e.length,i=t.indexOf(\".\"),o=e.indexOf(\".\"),s=-1===i?r:i,a=-1===o?n:o,u=s-a;let c=u<0?-1*u:0,l=u<=0?0:u,f=Math.max(s,a)+1+Math.max(r-s,n-a)-1,h=0;for(;ho)return\">\";if(n\":return\"-\"+s(t,e)}else if(u&&!c)switch(e=e.substring(1),n(t,e)){case\"=\":return\"0\";case\"<\":return\"-\"+s(e,t);case\">\":return s(t,e)}}t.exports=u,t.exports.default=u},function(t,e){var r,n,i=t.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function s(){throw new Error(\"clearTimeout has not been defined\")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r=\"function\"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n=\"function\"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&d())}function d(){if(!l){var t=a(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f1)for(var r=1;r0){for(;m>p-f;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,\"\"===y&&0===i||(y=i+y),m--}y&&(y=\".\"+y),m--}if(l>0)for(;m>=0;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,y=i+y,m--}return 1===g&&(y=g+y),\".\"===y[0]&&(y=\"0\"+y),y}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";(function(t){\\n/*!\\n * The buffer module from node.js, for the browser.\\n *\\n * @author Feross Aboukhadijeh \\n * @license MIT\\n */\\nvar n=r(108),i=r(109),o=r(61);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function p(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return B(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return G(t).length;default:if(n)return B(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function y(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return O(this,e,r);case\"utf8\":case\"utf-8\":return k(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return C(this,e,r);case\"base64\":return E(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return I(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:b(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):b(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function b(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var l=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var f=!0,h=0;hi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function E(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function k(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n0&&(t=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(t+=\" ... \")),\"\"},u.prototype.compare=function(t,e,r,n,i){if(!u.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),c=this.slice(n,i),l=t.slice(e,r),f=0;fi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return v(this,t,e,r);case\"utf8\":case\"utf-8\":return w(this,t,e,r);case\"ascii\":return x(this,t,e,r);case\"latin1\":case\"binary\":return _(this,t,e,r);case\"base64\":return S(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return A(this,t,e,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i=\"\",o=e;or)throw new RangeError(\"Trying to access beyond buffer length\")}function R(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError(\\'\"buffer\" argument must be a Buffer instance\\');if(e>i||et.length)throw new RangeError(\"Index out of range\")}function j(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function M(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function L(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function F(t,e,r,n,o){return o||L(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function N(t,e,r,n,o){return o||L(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return e||P(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||P(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||P(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||P(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||P(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||P(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||P(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return e||P(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||P(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){e||P(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return e||P(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||P(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||P(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||P(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||P(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||P(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||R(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):j(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):j(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):M(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):M(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);R(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},u.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);R(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):j(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):j(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):M(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):M(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,r){return F(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return F(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return N(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return N(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\\\\s+|\\\\s+$/g,\"\")}(t).replace(D,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function q(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(3))},function(t,e){\"function\"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},function(t,e,r){\"use strict\";function n(t){return/^[-+]?0(\\\\.0+)?(e[\\\\.\\\\d]+)?$/.test(t)}t.exports=n,t.exports.default=n},function(t,e,r){(function(n){e.formatArgs=function(e){if(e[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+e[0]+(this.useColors?\"%c \":\" \")+\"+\"+t.exports.humanize(this.diff),!this.useColors)return;const r=\"color: \"+this.color;e.splice(1,0,r,\"color: inherit\");let n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,t=>{\"%%\"!==t&&(n++,\"%c\"===t&&(i=n))}),e.splice(i,0,r)},e.save=function(t){try{t?e.storage.setItem(\"debug\",t):e.storage.removeItem(\"debug\")}catch(t){}},e.load=function(){let t;try{t=e.storage.getItem(\"debug\")}catch(t){}!t&&void 0!==n&&\"env\"in n&&(t=n.env.DEBUG);return t},e.useColors=function(){if(\"undefined\"!=typeof window&&window.process&&(\"renderer\"===window.process.type||window.process.__nwjs))return!0;if(\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\\\/(\\\\d+)/))return!1;return\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\\\/(\\\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\\\/(\\\\d+)/)},e.storage=function(){try{return localStorage}catch(t){}}(),e.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})(),e.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],e.log=console.debug||console.log||(()=>{}),t.exports=r(129)(e);const{formatters:i}=t.exports;i.j=function(t){try{return JSON.stringify(t)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}}}).call(this,r(7))},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return o})),r.d(e,\"b\",(function(){return s}));const n={deserialize:t=>Object.assign(Error(t.message),{name:t.name,stack:t.stack}),serialize:t=>({__error_marker:\"$$error\",message:t.message,name:t.name,stack:t.stack})};let i={deserialize(t){return(e=t)&&\"object\"==typeof e&&\"__error_marker\"in e&&\"$$error\"===e.__error_marker?n.deserialize(t):t;var e},serialize:t=>t instanceof Error?n.serialize(t):t};function o(t){return i.deserialize(t)}function s(t){return i.serialize(t)}},function(t,e,r){\"use strict\";var n=r(28),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=f;var o=Object.create(r(21));o.inherits=r(10);var s=r(60),a=r(65);o.inherits(f,s);for(var u=i(a.prototype),c=0;c/^[a-zA-Z][a-zA-Z\\\\d+\\\\-.]*:/.test(t);function a(t){const e=new Blob([t],{type:\"application/javascript\"});return URL.createObjectURL(e)}let u;function c(){return u||(u=function(){if(\"undefined\"==typeof Worker)return class{constructor(){throw Error(\"No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn\\'t support workers in workers.\")}};class t extends Worker{constructor(t,e){var r,n;\"string\"==typeof t&&e&&e._baseURL?t=new URL(t,e._baseURL):\"string\"==typeof t&&!s(t)&&i().match(/^file:\\\\/\\\\//i)&&(t=new URL(t,i().replace(/\\\\/[^\\\\/]+$/,\"/\")),(null===(r=null==e?void 0:e.CORSWorkaround)||void 0===r||r)&&(t=a(`importScripts(${JSON.stringify(t)});`))),\"string\"==typeof t&&s(t)&&(null===(n=null==e?void 0:e.CORSWorkaround)||void 0===n||n)&&(t=a(`importScripts(${JSON.stringify(t)});`)),super(t,e)}}class e extends t{constructor(t,e){super(window.URL.createObjectURL(t),e)}static fromText(t,r){const n=new window.Blob([t],{type:\"text/javascript\"});return new e(n,r)}}return{blob:e,default:t}}()),u}},function(t,e,r){\"use strict\";var n,i;r.d(e,\"a\",(function(){return n})),r.d(e,\"b\",(function(){return i})),function(t){t.cancel=\"cancel\",t.run=\"run\"}(n||(n={})),function(t){t.error=\"error\",t.init=\"init\",t.result=\"result\",t.running=\"running\",t.uncaughtError=\"uncaughtError\"}(i||(i={}))},function(t,e,r){function n(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):\"[object Array]\"===n(t)},e.isBoolean=function(t){return\"boolean\"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return\"number\"==typeof t},e.isString=function(t){return\"string\"==typeof t},e.isSymbol=function(t){return\"symbol\"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return\"[object RegExp]\"===n(t)},e.isObject=function(t){return\"object\"==typeof t&&null!==t},e.isDate=function(t){return\"[object Date]\"===n(t)},e.isError=function(t){return\"[object Error]\"===n(t)||t instanceof Error},e.isFunction=function(t){return\"function\"==typeof t},e.isPrimitive=function(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||void 0===t},e.isBuffer=r(9).Buffer.isBuffer},function(t,e,r){\"use strict\";const n=r(11),i=r(50);function o(t){return n(t)?\"\":i(t)}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(35);function i(t,e){return n(t,\"2\",e)}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return o}));var n=r(2);function i(t){throw Error(t)}const o={errors:t=>t[n.a]||i(\"Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\"),events:t=>t[n.b]||i(\"Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\"),terminate:t=>t[n.c]()}},function(t,e){},function(t,e,r){\"use strict\";const n=()=>\"function\"==typeof Symbol,i=t=>n()&&Boolean(Symbol[t]),o=t=>i(t)?Symbol[t]:\"@@\"+t;i(\"asyncIterator\")||(Symbol.asyncIterator=Symbol.asyncIterator||Symbol.for(\"Symbol.asyncIterator\"));const s=o(\"iterator\"),a=o(\"observable\"),u=o(\"species\");function c(t,e){const r=t[e];if(null!=r){if(\"function\"!=typeof r)throw new TypeError(r+\" is not a function\");return r}}function l(t){let e=t.constructor;return void 0!==e&&(e=e[u],null===e&&(e=void 0)),void 0!==e?e:v}function f(t){f.log?f.log(t):setTimeout(()=>{throw t},0)}function h(t){Promise.resolve().then(()=>{try{t()}catch(t){f(t)}})}function d(t){const e=t._cleanup;if(void 0!==e&&(t._cleanup=void 0,e))try{if(\"function\"==typeof e)e();else{const t=c(e,\"unsubscribe\");t&&t.call(e)}}catch(t){f(t)}}function p(t){t._observer=void 0,t._queue=void 0,t._state=\"closed\"}function y(t,e,r){t._state=\"running\";const n=t._observer;try{const i=n?c(n,e):void 0;switch(e){case\"next\":i&&i.call(n,r);break;case\"error\":if(p(t),!i)throw r;i.call(n,r);break;case\"complete\":p(t),i&&i.call(n)}}catch(t){f(t)}\"closed\"===t._state?d(t):\"running\"===t._state&&(t._state=\"ready\")}function g(t,e,r){if(\"closed\"!==t._state)return\"buffering\"===t._state?(t._queue=t._queue||[],void t._queue.push({type:e,value:r})):\"ready\"!==t._state?(t._state=\"buffering\",t._queue=[{type:e,value:r}],void h(()=>function(t){const e=t._queue;if(e){t._queue=void 0,t._state=\"ready\";for(const r of e)if(y(t,r.type,r.value),\"closed\"===t._state)break}}(t))):void y(t,e,r)}class m{constructor(t,e){this._cleanup=void 0,this._observer=t,this._queue=void 0,this._state=\"initializing\";const r=new b(this);try{this._cleanup=e.call(void 0,r)}catch(t){r.error(t)}\"initializing\"===this._state&&(this._state=\"ready\")}get closed(){return\"closed\"===this._state}unsubscribe(){\"closed\"!==this._state&&(p(this),d(this))}}class b{constructor(t){this._subscription=t}get closed(){return\"closed\"===this._subscription._state}next(t){g(this._subscription,\"next\",t)}error(t){g(this._subscription,\"error\",t)}complete(){g(this._subscription,\"complete\")}}class v{constructor(t){if(!(this instanceof v))throw new TypeError(\"Observable cannot be called as a function\");if(\"function\"!=typeof t)throw new TypeError(\"Observable initializer must be a function\");this._subscriber=t}subscribe(t,e,r){return\"object\"==typeof t&&null!==t||(t={next:t,error:e,complete:r}),new m(t,this._subscriber)}pipe(t,...e){let r=this;for(const n of[t,...e])r=n(r);return r}tap(t,e,r){const n=\"object\"!=typeof t||null===t?{next:t,error:e,complete:r}:t;return new v(t=>this.subscribe({next(e){n.next&&n.next(e),t.next(e)},error(e){n.error&&n.error(e),t.error(e)},complete(){n.complete&&n.complete(),t.complete()},start(t){n.start&&n.start(t)}}))}forEach(t){return new Promise((e,r)=>{if(\"function\"!=typeof t)return void r(new TypeError(t+\" is not a function\"));function n(){i.unsubscribe(),e(void 0)}const i=this.subscribe({next(e){try{t(e,n)}catch(t){r(t),i.unsubscribe()}},error(t){r(t)},complete(){e(void 0)}})})}map(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");return new(l(this))(e=>this.subscribe({next(r){let n=r;try{n=t(r)}catch(t){return e.error(t)}e.next(n)},error(t){e.error(t)},complete(){e.complete()}}))}filter(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");return new(l(this))(e=>this.subscribe({next(r){try{if(!t(r))return}catch(t){return e.error(t)}e.next(r)},error(t){e.error(t)},complete(){e.complete()}}))}reduce(t,e){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");const r=l(this),n=arguments.length>1;let i=!1,o=e;return new r(e=>this.subscribe({next(r){const s=!i;if(i=!0,!s||n)try{o=t(o,r)}catch(t){return e.error(t)}else o=r},error(t){e.error(t)},complete(){if(!i&&!n)return e.error(new TypeError(\"Cannot reduce an empty sequence\"));e.next(o),e.complete()}}))}concat(...t){const e=l(this);return new e(r=>{let n,i=0;return function o(s){n=s.subscribe({next(t){r.next(t)},error(t){r.error(t)},complete(){i===t.length?(n=void 0,r.complete()):o(e.from(t[i++]))}})}(this),()=>{n&&(n.unsubscribe(),n=void 0)}})}flatMap(t){if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");const e=l(this);return new e(r=>{const n=[],i=this.subscribe({next(i){let s;if(t)try{s=t(i)}catch(t){return r.error(t)}else s=i;const a=e.from(s).subscribe({next(t){r.next(t)},error(t){r.error(t)},complete(){const t=n.indexOf(a);t>=0&&n.splice(t,1),o()}});n.push(a)},error(t){r.error(t)},complete(){o()}});function o(){i.closed&&0===n.length&&r.complete()}return()=>{n.forEach(t=>t.unsubscribe()),i.unsubscribe()}})}[(Symbol.observable,a)](){return this}static from(t){const e=\"function\"==typeof this?this:v;if(null==t)throw new TypeError(t+\" is not an object\");const r=c(t,a);if(r){const n=r.call(t);if(Object(n)!==n)throw new TypeError(n+\" is not an object\");return function(t){return t instanceof v}(n)&&n.constructor===e?n:new e(t=>n.subscribe(t))}if(i(\"iterator\")){const r=c(t,s);if(r)return new e(e=>{h(()=>{if(!e.closed){for(const n of r.call(t))if(e.next(n),e.closed)return;e.complete()}})})}if(Array.isArray(t))return new e(e=>{h(()=>{if(!e.closed){for(const r of t)if(e.next(r),e.closed)return;e.complete()}})});throw new TypeError(t+\" is not observable\")}static of(...t){return new(\"function\"==typeof this?this:v)(e=>{h(()=>{if(!e.closed){for(const r of t)if(e.next(r),e.closed)return;e.complete()}})})}static get[u](){return this}}n()&&Object.defineProperty(v,Symbol(\"extensions\"),{value:{symbol:a,hostReportError:f},configurable:!0});e.a=v},function(t,e,r){\"use strict\";var n;r.d(e,\"a\",(function(){return n})),function(t){t.internalError=\"internalError\",t.message=\"message\",t.termination=\"termination\"}(n||(n={}))},function(t,e,r){\"use strict\";(function(e){void 0===e||!e.version||0===e.version.indexOf(\"v0.\")||0===e.version.indexOf(\"v1.\")&&0!==e.version.indexOf(\"v1.8.\")?t.exports={nextTick:function(t,r,n,i){if(\"function\"!=typeof t)throw new TypeError(\\'\"callback\" argument must be a function\\');var o,s,a=arguments.length;switch(a){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick((function(){t.call(null,r)}));case 3:return e.nextTick((function(){t.call(null,r,n)}));case 4:return e.nextTick((function(){t.call(null,r,n,i)}));default:for(o=new Array(a-1),s=0;s0){for(;m>p-f;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;\"\"===y&&0===i||(y=i+y),m--}\"\"!==y&&(y=\".\"+y),m--}if(l>0){for(;m>0;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;y=i+y,m--}const r=t[0-h]||\"0\",n=e[0-d]||\"0\";let i=Number(r)-(g>0?1:0)-Number(n);0!==i&&(y=i+y),y=y.replace(/^0+/,\"\")}return\".\"===y[0]&&(y=\"0\"+y),y}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(5),i=r(6),o=r(33),s=r(49);function a(t,e,{format:r=\"string\",max_decimal_digits:a=100,ellipsis:u=!1}={}){\"0\"===t[0]&&(t=t.substring(1)),\"0\"===e[0]&&(e=e.substring(1));const c=t.indexOf(\".\"),l=e.indexOf(\".\"),f=-1===c?t.length:c,h=-1===l?0:e.length-1-l;let d=!1;t=t.replace(/\\\\./,\"\"),e=e.replace(/\\\\./,\"\");const p=t.length;let y,g=\"\",m=\"\",b=-1*h,v=0;for(let r=0;r\"===y){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,g);)t++,s=r,r=i(r,e);if(t=t.toString(),\"\"!==m)for(let e=t.length;e<=v;e++)m+=\"0\";m+=t,g=o(g,s),v=0}else{if(\"<\"===y){\"\"===m&&b++,v++;continue}if(\"=\"===y){if(\"\"!==m)for(let t=0;t3){m+=\"...\",d=!0;break}}else t[g]=1;const r=n(g,e);if(\">\"===r){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,g);)t++,s=r,r=i(r,e);t=t.toString();for(let e=t.length;e<=v;e++)m+=\"0\";if(m+=t,g=o(g,s),\"0\"===g)break;v=0}else{if(\"<\"===r){v++;continue}if(\"=\"===r){for(let t=0;tx){for(let t=x;t0&&(m=s(m.substring(0,m.length-S+1))),\".\"===m[0]&&(m=\"0\"+m),\"object\"===r?{quotient:m,extra_decimals:S}:m}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const n=r(0),i=r(5),o=r(15),s=r(8),a=r(31);function u(t,e,{infinity_minus_infinity:r=\"NaN\"}={}){t=n(t),e=n(e);const u=!(\"-\"===t[0]),c=!(\"-\"===e[0]),l=o(t),f=o(e);if(l&&f){if(u===c)return r;if(u)return\"Infinity\";if(c)return\"-Infinity\"}else{if(l)return t;if(f)return c?\"-Infinity\":\"Infinity\"}if(u){if(c){const r=i(t,e);return\">\"===r?a(t,e):\"<\"===r?\"-\"+a(e,t):\"0\"}return s(t,e.substring(1))}if(c)return\"-\"+s(t.substring(1),e);{t=t.substring(1),e=e.substring(1);const r=i(t,e);return\">\"===r?\"-\"+a(t,e):\"<\"===r?a(e,t):\"0\"}}t.exports=u,t.exports.default=u},function(t,e,r){\"use strict\";const n=r(0),i=r(5);function o(t,e){t=n(t),e=n(e);const r=\"-\"!==t[0],o=\"-\"!==e[0];return r?o?i(t,e):\">\":o?\"<\":i(e.substring(1),t.substring(1))}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(1),s=r(77),a=r(16),u=r(52),c=r(78),l=r(11),f=r(53),h=r(54),d=r(81),p=r(37),y=r(36),g=r(22),m=r(85);function b(t,e,{zero_to_the_power_of_zero:r=\"1\",ellipsis:b=!1,imaginary:v=!0,max_decimal_digits:w=100,fraction:x=!1}={}){t=i(t),e=i(e);const _=v&&u(t);_&&(t=t.replace(/i$/,\"\"));const S=l(t),A=l(e);if(S&&A)return r;if(A)return\"1\";const E=g(e);if(S){if(\"+\"===E)return\"0\";if(\"-\"===E)return\"Infinity\"}const k=a(e);if(\"+\"===E&&k){let r=h(t,e);return\"number\"==typeof w&&(r=y(r,{digits:w})),_&&c(e)&&(r+=\"i\"),r}if(\"-\"===E&&k){const r=\"1\",i=h(t,n(e));return o(r,i,{ellipsis:b,max_decimal_digits:w})}if(!k){e=n(e);let[r,i]=e.includes(\"/\")?e.split(\"/\"):s(e);[r,i]=m(r,i);let o=p(t,i,{imaginary:v}),a=f(r,o);return\"number\"==typeof w&&(a=y(a,{digits:w})),\"-\"===E&&(a=d(a,{fraction:x,max_decimal_digits:w})),a}}t.exports=b,t.exports.default=b},function(t,e,r){\"use strict\";const n=r(52),i=r(159);function o(t,{digits:e=0}={}){return n(t)?i(t.substring(0,t.length-1),{digits:e})+\"i\":i(t,{digits:e})}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(5),s=r(82),a=r(16),u=r(80),c=r(54),l=r(83);function f(t,e,{imaginary:r=!0,max_decimal_digits:f=100}={}){if(t=i(t),\"1\"===(e=i(e)))return t;if(\"1\"===t)return\"1\";if(!a(e))throw new Error(\"[preciso] can\\'t find fractional roots\");if(u(e))throw new Error(\"[preciso] can\\'t find root of negative indexes\");const h=n(t),d=u(t),p=s(e),y=d&&p;if(y&&!r)throw new Error(\"[preciso] root has an imaginary number\");const g=d&&!p?\"-\":\"\",m=l(h,e),b=[\"9\",\"8\",\"7\",\"6\",\"5\",\"4\",\"3\",\"2\",\"1\",\"0\"];let v=\"\";for(let t=0;to)return\">\";if(n\",\\'\"\\',\"`\",\" \",\"\\\\r\",\"\\\\n\",\"\\\\t\"]),c=[\"\\'\"].concat(u),l=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(c),f=[\"/\",\"?\",\"#\"],h=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,\"javascript:\":!0},y={javascript:!0,\"javascript:\":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},m=r(137);function b(t,e,r){if(t&&\"object\"==typeof t&&t instanceof i)return t;var n=new i;return n.parse(t,e,r),n}i.prototype.parse=function(t,e,r){if(\"string\"!=typeof t)throw new TypeError(\"Parameter \\'url\\' must be a string, not \"+typeof t);var i=t.indexOf(\"?\"),s=-1!==i&&i127?R+=\"x\":R+=P[j];if(!R.match(h)){var L=O.slice(0,k),F=O.slice(k+1),N=P.match(d);N&&(L.push(N[1]),F.unshift(N[2])),F.length&&(b=\"/\"+F.join(\".\")+b),this.hostname=L.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),C||(this.hostname=n.toASCII(this.hostname));var D=this.port?\":\"+this.port:\"\",U=this.hostname||\"\";this.host=U+D,this.href+=this.host,C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==b[0]&&(b=\"/\"+b))}if(!p[x])for(k=0,I=c.length;k0)&&r.host.split(\"@\"))&&(r.auth=C.shift(),r.hostname=C.shift(),r.host=r.hostname);return r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.href=r.format(),r}if(!_.length)return r.pathname=null,r.search?r.path=\"/\"+r.search:r.path=null,r.href=r.format(),r;for(var A=_.slice(-1)[0],E=(r.host||t.host||_.length>1)&&(\".\"===A||\"..\"===A)||\"\"===A,k=0,T=_.length;T>=0;T--)\".\"===(A=_[T])?_.splice(T,1):\"..\"===A?(_.splice(T,1),k++):k&&(_.splice(T,1),k--);if(!w&&!x)for(;k--;k)_.unshift(\"..\");!w||\"\"===_[0]||_[0]&&\"/\"===_[0].charAt(0)||_.unshift(\"\"),E&&\"/\"!==_.join(\"/\").substr(-1)&&_.push(\"\");var C,O=\"\"===_[0]||_[0]&&\"/\"===_[0].charAt(0);S&&(r.hostname=O?\"\":_.length?_.shift():\"\",r.host=r.hostname,(C=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=C.shift(),r.hostname=C.shift(),r.host=r.hostname));return(w=w||r.host&&_.length)&&!O&&_.unshift(\"\"),_.length>0?r.pathname=_.join(\"/\"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},i.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(\":\"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return\"string\"==typeof t&&(t=b(t)),t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i},function(t,e,r){(function(t){var n=r(131),i=r(70),o=r(133),s=r(134),a=r(39),u=e;u.request=function(e,r){e=\"string\"==typeof e?a.parse(e):o(e);var i=-1===t.location.protocol.search(/^https?:$/)?\"http:\":\"\",s=e.protocol||i,u=e.hostname||e.host,c=e.port,l=e.path||\"/\";u&&-1!==u.indexOf(\":\")&&(u=\"[\"+u+\"]\"),e.url=(u?s+\"//\"+u:\"\")+(c?\":\"+c:\"\")+l,e.method=(e.method||\"GET\").toUpperCase(),e.headers=e.headers||{};var f=new n(e);return r&&f.on(\"response\",r),f},u.get=function(t,e){var r=u.request(t,e);return r.end(),r},u.ClientRequest=n,u.IncomingMessage=i.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=s,u.METHODS=[\"CHECKOUT\",\"CONNECT\",\"COPY\",\"DELETE\",\"GET\",\"HEAD\",\"LOCK\",\"M-SEARCH\",\"MERGE\",\"MKACTIVITY\",\"MKCOL\",\"MOVE\",\"NOTIFY\",\"OPTIONS\",\"PATCH\",\"POST\",\"PROPFIND\",\"PROPPATCH\",\"PURGE\",\"PUT\",\"REPORT\",\"SEARCH\",\"SUBSCRIBE\",\"TRACE\",\"UNLOCK\",\"UNSUBSCRIBE\"]}).call(this,r(3))},,function(t,e,r){(e=t.exports=r(60)).Stream=e,e.Readable=e,e.Writable=r(65),e.Duplex=r(14),e.Transform=r(67),e.PassThrough=r(117)},function(t,e,r){var n=r(9),i=n.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,e),e.Buffer=s),o(i,s),s.from=function(t,e,r){if(\"number\"==typeof t)throw new TypeError(\"Argument must not be a number\");return i(t,e,r)},s.alloc=function(t,e,r){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");var n=i(t);return void 0!==e?\"string\"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},s.allocUnsafe=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return i(t)},s.allocUnsafeSlow=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(t)}},function(t,e,r){\"use strict\";var n=SyntaxError,i=Function,o=TypeError,s=function(t){try{return i(\\'\"use strict\"; return (\\'+t+\").constructor;\")()}catch(t){}},a=Object.getOwnPropertyDescriptor;if(a)try{a({},\"\")}catch(t){a=null}var u=function(){throw new o},c=a?function(){try{return u}catch(t){try{return a(arguments,\"callee\").get}catch(t){return u}}}():u,l=r(140)(),f=r(142)(),h=Object.getPrototypeOf||(f?function(t){return t.__proto__}:null),d={},p=\"undefined\"!=typeof Uint8Array&&h?h(Uint8Array):void 0,y={\"%AggregateError%\":\"undefined\"==typeof AggregateError?void 0:AggregateError,\"%Array%\":Array,\"%ArrayBuffer%\":\"undefined\"==typeof ArrayBuffer?void 0:ArrayBuffer,\"%ArrayIteratorPrototype%\":l&&h?h([][Symbol.iterator]()):void 0,\"%AsyncFromSyncIteratorPrototype%\":void 0,\"%AsyncFunction%\":d,\"%AsyncGenerator%\":d,\"%AsyncGeneratorFunction%\":d,\"%AsyncIteratorPrototype%\":d,\"%Atomics%\":\"undefined\"==typeof Atomics?void 0:Atomics,\"%BigInt%\":\"undefined\"==typeof BigInt?void 0:BigInt,\"%BigInt64Array%\":\"undefined\"==typeof BigInt64Array?void 0:BigInt64Array,\"%BigUint64Array%\":\"undefined\"==typeof BigUint64Array?void 0:BigUint64Array,\"%Boolean%\":Boolean,\"%DataView%\":\"undefined\"==typeof DataView?void 0:DataView,\"%Date%\":Date,\"%decodeURI%\":decodeURI,\"%decodeURIComponent%\":decodeURIComponent,\"%encodeURI%\":encodeURI,\"%encodeURIComponent%\":encodeURIComponent,\"%Error%\":Error,\"%eval%\":eval,\"%EvalError%\":EvalError,\"%Float32Array%\":\"undefined\"==typeof Float32Array?void 0:Float32Array,\"%Float64Array%\":\"undefined\"==typeof Float64Array?void 0:Float64Array,\"%FinalizationRegistry%\":\"undefined\"==typeof FinalizationRegistry?void 0:FinalizationRegistry,\"%Function%\":i,\"%GeneratorFunction%\":d,\"%Int8Array%\":\"undefined\"==typeof Int8Array?void 0:Int8Array,\"%Int16Array%\":\"undefined\"==typeof Int16Array?void 0:Int16Array,\"%Int32Array%\":\"undefined\"==typeof Int32Array?void 0:Int32Array,\"%isFinite%\":isFinite,\"%isNaN%\":isNaN,\"%IteratorPrototype%\":l&&h?h(h([][Symbol.iterator]())):void 0,\"%JSON%\":\"object\"==typeof JSON?JSON:void 0,\"%Map%\":\"undefined\"==typeof Map?void 0:Map,\"%MapIteratorPrototype%\":\"undefined\"!=typeof Map&&l&&h?h((new Map)[Symbol.iterator]()):void 0,\"%Math%\":Math,\"%Number%\":Number,\"%Object%\":Object,\"%parseFloat%\":parseFloat,\"%parseInt%\":parseInt,\"%Promise%\":\"undefined\"==typeof Promise?void 0:Promise,\"%Proxy%\":\"undefined\"==typeof Proxy?void 0:Proxy,\"%RangeError%\":RangeError,\"%ReferenceError%\":ReferenceError,\"%Reflect%\":\"undefined\"==typeof Reflect?void 0:Reflect,\"%RegExp%\":RegExp,\"%Set%\":\"undefined\"==typeof Set?void 0:Set,\"%SetIteratorPrototype%\":\"undefined\"!=typeof Set&&l&&h?h((new Set)[Symbol.iterator]()):void 0,\"%SharedArrayBuffer%\":\"undefined\"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,\"%String%\":String,\"%StringIteratorPrototype%\":l&&h?h(\"\"[Symbol.iterator]()):void 0,\"%Symbol%\":l?Symbol:void 0,\"%SyntaxError%\":n,\"%ThrowTypeError%\":c,\"%TypedArray%\":p,\"%TypeError%\":o,\"%Uint8Array%\":\"undefined\"==typeof Uint8Array?void 0:Uint8Array,\"%Uint8ClampedArray%\":\"undefined\"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,\"%Uint16Array%\":\"undefined\"==typeof Uint16Array?void 0:Uint16Array,\"%Uint32Array%\":\"undefined\"==typeof Uint32Array?void 0:Uint32Array,\"%URIError%\":URIError,\"%WeakMap%\":\"undefined\"==typeof WeakMap?void 0:WeakMap,\"%WeakRef%\":\"undefined\"==typeof WeakRef?void 0:WeakRef,\"%WeakSet%\":\"undefined\"==typeof WeakSet?void 0:WeakSet};if(h)try{null.error}catch(t){var g=h(h(t));y[\"%Error.prototype%\"]=g}var m={\"%ArrayBufferPrototype%\":[\"ArrayBuffer\",\"prototype\"],\"%ArrayPrototype%\":[\"Array\",\"prototype\"],\"%ArrayProto_entries%\":[\"Array\",\"prototype\",\"entries\"],\"%ArrayProto_forEach%\":[\"Array\",\"prototype\",\"forEach\"],\"%ArrayProto_keys%\":[\"Array\",\"prototype\",\"keys\"],\"%ArrayProto_values%\":[\"Array\",\"prototype\",\"values\"],\"%AsyncFunctionPrototype%\":[\"AsyncFunction\",\"prototype\"],\"%AsyncGenerator%\":[\"AsyncGeneratorFunction\",\"prototype\"],\"%AsyncGeneratorPrototype%\":[\"AsyncGeneratorFunction\",\"prototype\",\"prototype\"],\"%BooleanPrototype%\":[\"Boolean\",\"prototype\"],\"%DataViewPrototype%\":[\"DataView\",\"prototype\"],\"%DatePrototype%\":[\"Date\",\"prototype\"],\"%ErrorPrototype%\":[\"Error\",\"prototype\"],\"%EvalErrorPrototype%\":[\"EvalError\",\"prototype\"],\"%Float32ArrayPrototype%\":[\"Float32Array\",\"prototype\"],\"%Float64ArrayPrototype%\":[\"Float64Array\",\"prototype\"],\"%FunctionPrototype%\":[\"Function\",\"prototype\"],\"%Generator%\":[\"GeneratorFunction\",\"prototype\"],\"%GeneratorPrototype%\":[\"GeneratorFunction\",\"prototype\",\"prototype\"],\"%Int8ArrayPrototype%\":[\"Int8Array\",\"prototype\"],\"%Int16ArrayPrototype%\":[\"Int16Array\",\"prototype\"],\"%Int32ArrayPrototype%\":[\"Int32Array\",\"prototype\"],\"%JSONParse%\":[\"JSON\",\"parse\"],\"%JSONStringify%\":[\"JSON\",\"stringify\"],\"%MapPrototype%\":[\"Map\",\"prototype\"],\"%NumberPrototype%\":[\"Number\",\"prototype\"],\"%ObjectPrototype%\":[\"Object\",\"prototype\"],\"%ObjProto_toString%\":[\"Object\",\"prototype\",\"toString\"],\"%ObjProto_valueOf%\":[\"Object\",\"prototype\",\"valueOf\"],\"%PromisePrototype%\":[\"Promise\",\"prototype\"],\"%PromiseProto_then%\":[\"Promise\",\"prototype\",\"then\"],\"%Promise_all%\":[\"Promise\",\"all\"],\"%Promise_reject%\":[\"Promise\",\"reject\"],\"%Promise_resolve%\":[\"Promise\",\"resolve\"],\"%RangeErrorPrototype%\":[\"RangeError\",\"prototype\"],\"%ReferenceErrorPrototype%\":[\"ReferenceError\",\"prototype\"],\"%RegExpPrototype%\":[\"RegExp\",\"prototype\"],\"%SetPrototype%\":[\"Set\",\"prototype\"],\"%SharedArrayBufferPrototype%\":[\"SharedArrayBuffer\",\"prototype\"],\"%StringPrototype%\":[\"String\",\"prototype\"],\"%SymbolPrototype%\":[\"Symbol\",\"prototype\"],\"%SyntaxErrorPrototype%\":[\"SyntaxError\",\"prototype\"],\"%TypedArrayPrototype%\":[\"TypedArray\",\"prototype\"],\"%TypeErrorPrototype%\":[\"TypeError\",\"prototype\"],\"%Uint8ArrayPrototype%\":[\"Uint8Array\",\"prototype\"],\"%Uint8ClampedArrayPrototype%\":[\"Uint8ClampedArray\",\"prototype\"],\"%Uint16ArrayPrototype%\":[\"Uint16Array\",\"prototype\"],\"%Uint32ArrayPrototype%\":[\"Uint32Array\",\"prototype\"],\"%URIErrorPrototype%\":[\"URIError\",\"prototype\"],\"%WeakMapPrototype%\":[\"WeakMap\",\"prototype\"],\"%WeakSetPrototype%\":[\"WeakSet\",\"prototype\"]},b=r(45),v=r(144),w=b.call(Function.call,Array.prototype.concat),x=b.call(Function.apply,Array.prototype.splice),_=b.call(Function.call,String.prototype.replace),S=b.call(Function.call,String.prototype.slice),A=b.call(Function.call,RegExp.prototype.exec),E=/[^%.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|%$))/g,k=/\\\\\\\\(\\\\\\\\)?/g,T=function(t){var e=S(t,0,1),r=S(t,-1);if(\"%\"===e&&\"%\"!==r)throw new n(\"invalid intrinsic syntax, expected closing `%`\");if(\"%\"===r&&\"%\"!==e)throw new n(\"invalid intrinsic syntax, expected opening `%`\");var i=[];return _(t,E,(function(t,e,r,n){i[i.length]=r?_(n,k,\"$1\"):e||t})),i},C=function(t,e){var r,i=t;if(v(m,i)&&(i=\"%\"+(r=m[i])[0]+\"%\"),v(y,i)){var a=y[i];if(a===d&&(a=function t(e){var r;if(\"%AsyncFunction%\"===e)r=s(\"async function () {}\");else if(\"%GeneratorFunction%\"===e)r=s(\"function* () {}\");else if(\"%AsyncGeneratorFunction%\"===e)r=s(\"async function* () {}\");else if(\"%AsyncGenerator%\"===e){var n=t(\"%AsyncGeneratorFunction%\");n&&(r=n.prototype)}else if(\"%AsyncIteratorPrototype%\"===e){var i=t(\"%AsyncGenerator%\");i&&h&&(r=h(i.prototype))}return y[e]=r,r}(i)),void 0===a&&!e)throw new o(\"intrinsic \"+t+\" exists, but is not available. Please file an issue!\");return{alias:r,name:i,value:a}}throw new n(\"intrinsic \"+t+\" does not exist!\")};t.exports=function(t,e){if(\"string\"!=typeof t||0===t.length)throw new o(\"intrinsic name must be a non-empty string\");if(arguments.length>1&&\"boolean\"!=typeof e)throw new o(\\'\"allowMissing\" argument must be a boolean\\');if(null===A(/^%?[^%]*%?$/,t))throw new n(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\");var r=T(t),i=r.length>0?r[0]:\"\",s=C(\"%\"+i+\"%\",e),u=s.name,c=s.value,l=!1,f=s.alias;f&&(i=f[0],x(r,w([0,1],f)));for(var h=1,d=!0;h=r.length){var b=a(c,p);c=(d=!!b)&&\"get\"in b&&!(\"originalValue\"in b.get)?b.get:c[p]}else d=v(c,p),c=c[p];d&&!l&&(y[u]=c)}}return c}},function(t,e,r){\"use strict\";var n=r(143);t.exports=Function.prototype.bind||n},function(t,e,r){\"use strict\";var n=String.prototype.replace,i=/%20/g,o=\"RFC1738\",s=\"RFC3986\";t.exports={default:s,formatters:{RFC1738:function(t){return n.call(t,i,\"+\")},RFC3986:function(t){return String(t)}},RFC1738:o,RFC3986:s}},function(t,e,r){\"use strict\";const n=r(5),i=r(11),o=r(48),s=r(8);function a(t,e,r=\"1\"){if(i(t))return\"0\";let a=t,u=t;for(;\"<\"===n(u,e);)u=s(u,r),a=o(a,u);return a}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const{MAX_SAFE_INTEGER_LENGTH:n}=r(30);function i(t,e){if(\"0\"===t||\"0\"===e)return\"0\";const r=t.indexOf(\".\"),i=e.indexOf(\".\"),o=(-1===r?t.length:r)+(-1===i?e.length:i),s=(-1===r?0:t.length-1-r)+(-1===i?0:e.length-1-i);if(0===s&&o=0;){const t=h,e=h-=15,r=a.substring(e,t);f.push([Number(r),r.length])}const d=[],p=[];for(let t=0,e=l-1;e>=0;e--,t++){const r=u[e],n=Number(r);let i=0,o=\"\";const s=f.length-1;f.forEach(([t,e],r)=>{let a=(i+n*t).toString();const u=a.length;if(u>e&&r!==s){const t=-1*e;o=a.slice(t)+o,i=Number(a.slice(0,t))}else{const t=e-u;for(let e=0;eNumber(t)),o.length])}const y=d.length,g=p[p.length-1][1]+y;let m=\"\",b=0;for(let t=0;t=0&&(e+=r[o])}e>=10?(e=e.toString(),m=e[e.length-1]+m,b=Number(e.slice(0,-1))):(m=e+m,b=0)}if(0===s)m=m.replace(/^0+/,\"\");else{const t=m.length-s;m=m.substring(0,t)+\".\"+m.substring(t),m=m.replace(/^0+/,\"\"),m=m.replace(/\\\\.?0+$/,\"\"),\".\"===m[0]&&(m=\"0\"+m)}return m}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(6),i=r(155),o=[\"5\",\"6\",\"7\",\"8\",\"9\"];function s(t){if(t.match(/\\\\.9+$/))return n(i(t),\"1\");\"+\"===t[0]&&(t=t.substring(1));const e=t.length;let r=\"\";const s=t[t.length-1];if(o.includes(s)){let n;for(n=e-2;n>=0;n--){const e=t[n];if(\".\"===e||\"-\"===e)continue;const i=Number(e)+1;if(10!==i){r=i+r;break}r=\"0\"+r}n>0&&(r=t.substring(0,n)+r)}else r=t.substring(0,e-1);return\".\"===r[r.length-1]&&(r=r.substring(0,r.length-1)),r.indexOf(\".\")>-1&&(r=r.replace(/0+$/,\"\")),r}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";function n(t){return\"-\"===t[0]?\"-\":\"+\"}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const n=r(0);function i(t){const e=(t=n(t)).indexOf(\".\");return-1===e?\"0\":(t.length-e-1).toString()}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";function n(t){return t.includes(\"i\")}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const n=r(79);function i(){const t=Array.from(arguments),e=\"object\"==typeof t[t.length-1]?t[t.length-1]:void 0,r=Array.isArray(t[0])?t[0]:e?t.slice(0,t.length-1):t;return n(r,e)}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(17);function i(t,e){const r=Number(e);let i=t;for(let e=1;et.type===c.a.internalError).map(t=>t.error);return Object.assign(t,{[u.a]:i,[u.b]:r,[u.c]:n,[u.e]:e})}function m(t,e){return f(this,void 0,void 0,(function*(){d(\"Initializing new thread\");const r=e&&e.timeout?e.timeout:y,n=(yield function(t,e,r){return f(this,void 0,void 0,(function*(){let n;const i=new Promise((t,i)=>{n=setTimeout(()=>i(Error(r)),e)}),o=yield Promise.race([t,i]);return clearTimeout(n),o}))}(function(t){return new Promise((e,r)=>{const n=i=>{var o;h(\"Message from worker before finishing initialization:\",i.data),(o=i.data)&&\"init\"===o.type?(t.removeEventListener(\"message\",n),e(i.data)):(t=>t&&\"uncaughtError\"===t.type)(i.data)&&(t.removeEventListener(\"message\",n),r(Object(s.a)(i.data.error)))};t.addEventListener(\"message\",n)})}(t),r,`Timeout: Did not receive an init message from worker after ${r}ms. Make sure the worker calls expose().`)).exposed,{termination:i,terminate:u}=function(t){const[e,r]=Object(a.a)();return{terminate:()=>f(this,void 0,void 0,(function*(){p(\"Terminating worker\"),yield t.terminate(),r()})),termination:e}}(t),m=function(t,e){return new o.a(r=>{const n=t=>{const e={type:c.a.message,data:t.data};r.next(e)},i=t=>{p(\"Unhandled promise rejection event in thread:\",t);const e={type:c.a.internalError,error:Error(t.reason)};r.next(e)};t.addEventListener(\"message\",n),t.addEventListener(\"unhandledrejection\",i),e.then(()=>{const e={type:c.a.termination};t.removeEventListener(\"message\",n),t.removeEventListener(\"unhandledrejection\",i),r.next(e),r.complete()})})}(t,i);if(\"function\"===n.type){return g(Object(l.a)(t),t,m,u)}if(\"module\"===n.type){return g(Object(l.b)(t,n.methods),t,m,u)}{const t=n.type;throw Error(\"Worker init message states unexpected type of expose(): \"+t)}}))}}).call(this,r(7))},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return g}));var n=r(12),i=r.n(n),o=r(102),s=r(197),a=r(26);function u(t){return Promise.all(t.map(t=>{const e=t=>({status:\"fulfilled\",value:t}),r=t=>({status:\"rejected\",reason:t}),n=Promise.resolve(t);try{return n.then(e,r)}catch(t){return Promise.reject(t)}}))}var c,l=r(19);!function(t){t.initialized=\"initialized\",t.taskCanceled=\"taskCanceled\",t.taskCompleted=\"taskCompleted\",t.taskFailed=\"taskFailed\",t.taskQueued=\"taskQueued\",t.taskQueueDrained=\"taskQueueDrained\",t.taskStart=\"taskStart\",t.terminated=\"terminated\"}(c||(c={}));var f=r(24),h=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{u(n.next(t))}catch(t){o(t)}}function a(t){try{u(n.throw(t))}catch(t){o(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}u((n=n.apply(t,e||[])).next())}))};let d=1;class p{constructor(t,e){this.eventSubject=new o.a,this.initErrors=[],this.isClosing=!1,this.nextTaskID=1,this.taskQueue=[];const r=\"number\"==typeof e?{size:e}:e||{},{size:n=l.a}=r;this.debug=i()(\"threads:pool:\"+(r.name||String(d++)).replace(/\\\\W/g,\" \").trim().replace(/\\\\s+/g,\"-\")),this.options=r,this.workers=function(t,e){return function(t){const e=[];for(let r=0;r({init:t(),runningTasks:[]}))}(t,n),this.eventObservable=Object(s.a)(a.a.from(this.eventSubject)),Promise.all(this.workers.map(t=>t.init)).then(()=>this.eventSubject.next({type:c.initialized,size:this.workers.length}),t=>{this.debug(\"Error while initializing pool worker:\",t),this.eventSubject.error(t),this.initErrors.push(t)})}findIdlingWorker(){const{concurrency:t=1}=this.options;return this.workers.find(e=>e.runningTasks.lengthh(this,void 0,void 0,(function*(){var n;yield(n=0,new Promise(t=>setTimeout(t,n)));try{yield this.runPoolTask(t,e)}finally{t.runningTasks=t.runningTasks.filter(t=>t!==r),this.isClosing||this.scheduleWork()}})))();t.runningTasks.push(r)}))}scheduleWork(){this.debug(\"Attempt de-queueing a task in order to run it...\");const t=this.findIdlingWorker();if(!t)return;const e=this.taskQueue.shift();if(!e)return this.debug(\"Task queue is empty\"),void this.eventSubject.next({type:c.taskQueueDrained});this.run(t,e)}taskCompletion(t){return new Promise((e,r)=>{const n=this.events().subscribe(i=>{i.type===c.taskCompleted&&i.taskID===t?(n.unsubscribe(),e(i.returnValue)):i.type===c.taskFailed&&i.taskID===t?(n.unsubscribe(),r(i.error)):i.type===c.terminated&&(n.unsubscribe(),r(Error(\"Pool has been terminated before task was run.\")))})})}settled(t=!1){return h(this,void 0,void 0,(function*(){const e=()=>{return t=this.workers,e=t=>t.runningTasks,t.reduce((t,r)=>[...t,...e(r)],[]);var t,e},r=[],n=this.eventObservable.subscribe(t=>{t.type===c.taskFailed&&r.push(t.error)});return this.initErrors.length>0?Promise.reject(this.initErrors[0]):t&&0===this.taskQueue.length?(yield u(e()),r):(yield new Promise((t,e)=>{const r=this.eventObservable.subscribe({next(e){e.type===c.taskQueueDrained&&(r.unsubscribe(),t(void 0))},error:e})}),yield u(e()),n.unsubscribe(),r)}))}completed(t=!1){return h(this,void 0,void 0,(function*(){const e=this.settled(t),r=new Promise((t,r)=>{const n=this.eventObservable.subscribe({next(i){i.type===c.taskQueueDrained?(n.unsubscribe(),t(e)):i.type===c.taskFailed&&(n.unsubscribe(),r(i.error))},error:r})}),n=yield Promise.race([e,r]);if(n.length>0)throw n[0]}))}events(){return this.eventObservable}queue(t){const{maxQueuedJobs:e=1/0}=this.options;if(this.isClosing)throw Error(\"Cannot schedule pool tasks after terminate() has been called.\");if(this.initErrors.length>0)throw this.initErrors[0];const r=this.nextTaskID++,n=this.taskCompletion(r);n.catch(t=>{this.debug(`Task #${r} errored:`,t)});const i={id:r,run:t,cancel:()=>{-1!==this.taskQueue.indexOf(i)&&(this.taskQueue=this.taskQueue.filter(t=>t!==i),this.eventSubject.next({type:c.taskCanceled,taskID:i.id}))},then:n.then.bind(n)};if(this.taskQueue.length>=e)throw Error(\"Maximum number of pool tasks queued. Refusing to queue another one.\\\\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won\\'t finish, thus blocking the pool.\");return this.debug(`Queueing task #${i.id}...`),this.taskQueue.push(i),this.eventSubject.next({type:c.taskQueued,taskID:i.id}),this.scheduleWork(),i}terminate(t){return h(this,void 0,void 0,(function*(){this.isClosing=!0,t||(yield this.completed(!0)),this.eventSubject.next({type:c.terminated,remainingQueue:[...this.taskQueue]}),this.eventSubject.complete(),yield Promise.all(this.workers.map(t=>h(this,void 0,void 0,(function*(){return f.a.terminate(yield t.init)}))))}))}}function y(t,e){return new p(t,e)}p.EventType=c,y.EventType=c;const g=y},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return b})),r.d(e,\"b\",(function(){return v}));var n=r(12),i=r.n(n),o=r(26),s=r(197),a=r(13);const u=()=>{},c=t=>t,l=t=>Promise.resolve().then(t);function f(t){throw t}class h extends o.a{constructor(t){super(e=>{const r=this,n=Object.assign(Object.assign({},e),{complete(){e.complete(),r.onCompletion()},error(t){e.error(t),r.onError(t)},next(t){e.next(t),r.onNext(t)}});try{return this.initHasRun=!0,t(n)}catch(t){n.error(t)}}),this.initHasRun=!1,this.fulfillmentCallbacks=[],this.rejectionCallbacks=[],this.firstValueSet=!1,this.state=\"pending\"}onNext(t){this.firstValueSet||(this.firstValue=t,this.firstValueSet=!0)}onError(t){this.state=\"rejected\",this.rejection=t;for(const e of this.rejectionCallbacks)l(()=>e(t))}onCompletion(){this.state=\"fulfilled\";for(const t of this.fulfillmentCallbacks)l(()=>t(this.firstValue))}then(t,e){const r=t||c,n=e||f;let i=!1;return new Promise((t,e)=>{const o=r=>{if(!i){i=!0;try{t(n(r))}catch(t){e(t)}}};return this.initHasRun||this.subscribe({error:o}),\"fulfilled\"===this.state?t(r(this.firstValue)):\"rejected\"===this.state?(i=!0,t(n(this.rejection))):(this.fulfillmentCallbacks.push(e=>{try{t(r(e))}catch(t){o(t)}}),void this.rejectionCallbacks.push(o))})}catch(t){return this.then(void 0,t)}finally(t){const e=t||u;return this.then(t=>(e(),t),()=>e())}static from(t){return function(t){return t&&\"function\"==typeof t.then}(t)?new h(e=>{t.then(t=>{e.next(t),e.complete()},t=>{e.error(t)})}):super.from(t)}}var d=r(104),p=r(20);const y=i()(\"threads:master:messages\");let g=1;function m(t,e){return new o.a(r=>{let n;const i=o=>{var s;if(y(\"Message from worker:\",o.data),o.data&&o.data.uid===e)if((s=o.data)&&s.type===p.b.running)n=o.data.resultType;else if((t=>t&&t.type===p.b.result)(o.data))\"promise\"===n?(void 0!==o.data.payload&&r.next(Object(a.a)(o.data.payload)),r.complete(),t.removeEventListener(\"message\",i)):(o.data.payload&&r.next(Object(a.a)(o.data.payload)),o.data.complete&&(r.complete(),t.removeEventListener(\"message\",i)));else if((t=>t&&t.type===p.b.error)(o.data)){const e=Object(a.a)(o.data.error);r.error(e),t.removeEventListener(\"message\",i)}};return t.addEventListener(\"message\",i),()=>{if(\"observable\"===n||!n){const r={type:p.a.cancel,uid:e};t.postMessage(r)}t.removeEventListener(\"message\",i)}})}function b(t,e){return(...r)=>{const n=g++,{args:i,transferables:o}=function(t){if(0===t.length)return{args:[],transferables:[]};const e=[],r=[];for(const n of t)Object(d.a)(n)?(e.push(Object(a.b)(n.send)),r.push(...n.transferables)):e.push(Object(a.b)(n));return{args:e,transferables:0===r.length?r:(n=r,Array.from(new Set(n)))};var n}(r),u={type:p.a.run,uid:n,method:e,args:i};y(\"Sending command to run function to worker:\",u);try{t.postMessage(u,o)}catch(t){return h.from(Promise.reject(t))}return h.from(Object(s.a)(m(t,n)))}}function v(t,e){const r={};for(const n of e)r[n]=b(t,n);return r}},function(t,e,r){\"use strict\";(function(e,n){var i=r(28);t.exports=v;var o,s=r(61);v.ReadableState=b;r(62).EventEmitter;var a=function(t,e){return t.listeners(e).length},u=r(63),c=r(43).Buffer,l=(void 0!==e?e:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var f=Object.create(r(21));f.inherits=r(10);var h=r(110),d=void 0;d=h&&h.debuglog?h.debuglog(\"stream\"):function(){};var p,y=r(111),g=r(64);f.inherits(v,u);var m=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function b(t,e){t=t||{};var n=e instanceof(o=o||r(14));this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,s=t.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(s||0===s)?s:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new y,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(p||(p=r(66).StringDecoder),this.decoder=new p(t.encoding),this.encoding=t.encoding)}function v(t){if(o=o||r(14),!(this instanceof v))return new v(t);this._readableState=new b(t,this),this.readable=!0,t&&(\"function\"==typeof t.read&&(this._read=t.read),\"function\"==typeof t.destroy&&(this._destroy=t.destroy)),u.call(this)}function w(t,e,r,n,i){var o,s=t._readableState;null===e?(s.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,S(t)}(t,s)):(i||(o=function(t,e){var r;n=e,c.isBuffer(n)||n instanceof l||\"string\"==typeof e||void 0===e||t.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(s,e)),o?t.emit(\"error\",o):s.objectMode||e&&e.length>0?(\"string\"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),n?s.endEmitted?t.emit(\"error\",new Error(\"stream.unshift() after end event\")):x(t,s,e,!0):s.ended?t.emit(\"error\",new Error(\"stream.push() after EOF\")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?x(t,s,e,!1):E(t,s)):x(t,s,e,!1))):n||(s.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=8388608?t=8388608:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function S(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(d(\"emitReadable\",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(A,t):A(t))}function A(t){d(\"emit readable\"),t.emit(\"readable\"),O(t)}function E(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(k,t,e))}function k(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;to.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0===(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;for(;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0===(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e);return n}(t,e.buffer,e.decoder),r);var r}function P(t){var e=t._readableState;if(e.length>0)throw new Error(\\'\"endReadable()\" called on non-empty stream\\');e.endEmitted||(e.ended=!0,i.nextTick(R,e,t))}function R(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"))}function j(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return d(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?P(this):S(this),null;if(0===(t=_(t,e))&&e.ended)return 0===e.length&&P(this),null;var n,i=e.needReadable;return d(\"need readable\",i),(0===e.length||e.length-t0?I(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&P(this)),null!==n&&this.emit(\"data\",n),n},v.prototype._read=function(t){this.emit(\"error\",new Error(\"_read() is not implemented\"))},v.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,d(\"pipe count=%d opts=%j\",o.pipesCount,e);var u=(!e||!1!==e.end)&&t!==n.stdout&&t!==n.stderr?l:v;function c(e,n){d(\"onunpipe\"),e===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,d(\"cleanup\"),t.removeListener(\"close\",m),t.removeListener(\"finish\",b),t.removeListener(\"drain\",f),t.removeListener(\"error\",g),t.removeListener(\"unpipe\",c),r.removeListener(\"end\",l),r.removeListener(\"end\",v),r.removeListener(\"data\",y),h=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||f())}function l(){d(\"onend\"),t.end()}o.endEmitted?i.nextTick(u):r.once(\"end\",u),t.on(\"unpipe\",c);var f=function(t){return function(){var e=t._readableState;d(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,O(t))}}(r);t.on(\"drain\",f);var h=!1;var p=!1;function y(e){d(\"ondata\"),p=!1,!1!==t.write(e)||p||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==j(o.pipes,t))&&!h&&(d(\"false write response, pause\",o.awaitDrain),o.awaitDrain++,p=!0),r.pause())}function g(e){d(\"onerror\",e),v(),t.removeListener(\"error\",g),0===a(t,\"error\")&&t.emit(\"error\",e)}function m(){t.removeListener(\"finish\",b),v()}function b(){d(\"onfinish\"),t.removeListener(\"close\",m),v()}function v(){d(\"unpipe\"),r.unpipe(t)}return r.on(\"data\",y),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?s(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",g),t.once(\"close\",m),t.once(\"finish\",b),t.emit(\"pipe\",r),o.flowing||(d(\"pipe resume\"),r.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error(\"Possible EventEmitter memory leak detected. \"+s.length+\" \"+String(e)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");u.name=\"MaxListenersExceededWarning\",u.emitter=t,u.type=e,u.count=s.length,a=u,console&&console.warn&&console.warn(a)}return t}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=h.bind(n);return i.listener=r,n.wrapFn=i,i}function p(t,e,r){var n=t._events;if(void 0===n)return[];var i=n[e];return void 0===i?[]:\"function\"==typeof i?r?[i.listener||i]:[i]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error(\"Unhandled error.\"+(s?\" (\"+s.message+\")\":\"\"));throw a.context=s,a}var u=i[t];if(void 0===u)return!1;if(\"function\"==typeof u)o(u,this,e);else{var c=u.length,l=g(u,c);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return p(this,t,!0)},a.prototype.rawListeners=function(t){return p(this,t,!1)},a.listenerCount=function(t,e){return\"function\"==typeof t.listenerCount?t.listenerCount(e):y.call(t,e)},a.prototype.listenerCount=y,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,r){t.exports=r(62).EventEmitter},function(t,e,r){\"use strict\";var n=r(28);function i(t,e){t.emit(\"error\",e)}t.exports={destroy:function(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,s=this._writableState&&this._writableState.destroyed;return o||s?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(i,this,t)):n.nextTick(i,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted||(r._writableState.errorEmitted=!0,n.nextTick(i,r,t)):n.nextTick(i,r,t):e&&e(t)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,r){\"use strict\";(function(e,n,i){var o=r(28);function s(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var n=t.entry;t.entry=null;for(;n;){var i=n.callback;e.pendingcb--,i(r),n=n.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=b;var a,u=!e.browser&&[\"v0.10\",\"v0.9.\"].indexOf(e.version.slice(0,5))>-1?n:o.nextTick;b.WritableState=m;var c=Object.create(r(21));c.inherits=r(10);var l={deprecate:r(115)},f=r(63),h=r(43).Buffer,d=(void 0!==i?i:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var p,y=r(64);function g(){}function m(t,e){a=a||r(14),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===t.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?(o.nextTick(i,n),o.nextTick(A,t,e),t._writableState.errorEmitted=!0,t.emit(\"error\",n)):(i(n),t._writableState.errorEmitted=!0,t.emit(\"error\",n),A(t,e))}(t,r,n,e,i);else{var s=_(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||x(t,r),n?u(w,t,r,s,i):w(t,r,s,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function b(t){if(a=a||r(14),!(p.call(b,this)||this instanceof a))return new b(t);this._writableState=new m(t,this),this.writable=!0,t&&(\"function\"==typeof t.write&&(this._write=t.write),\"function\"==typeof t.writev&&(this._writev=t.writev),\"function\"==typeof t.destroy&&(this._destroy=t.destroy),\"function\"==typeof t.final&&(this._final=t.final)),f.call(this)}function v(t,e,r,n,i,o,s){e.writelen=n,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function w(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}(t,e),e.pendingcb--,n(),A(t,e)}function x(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),o=e.corkedRequestsFree;o.entry=r;for(var a=0,u=!0;r;)i[a]=r,r.isBuf||(u=!1),r=r.next,a+=1;i.allBuffers=u,v(t,e,!0,e.length,i,\"\",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new s(e),e.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,f=r.callback;if(v(t,e,!1,e.objectMode?1:c.length,c,l,f),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function _(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function S(t,e){t._final((function(r){e.pendingcb--,r&&t.emit(\"error\",r),e.prefinished=!0,t.emit(\"prefinish\"),A(t,e)}))}function A(t,e){var r=_(e);return r&&(!function(t,e){e.prefinished||e.finalCalled||(\"function\"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,o.nextTick(S,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit(\"finish\"))),r}c.inherits(b,f),m.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(m.prototype,\"buffer\",{get:l.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(t){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(t){return!!p.call(this,t)||this===b&&(t&&t._writableState instanceof m)}})):p=function(t){return t instanceof this},b.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},b.prototype.write=function(t,e,r){var n,i=this._writableState,s=!1,a=!i.objectMode&&(n=t,h.isBuffer(n)||n instanceof d);return a&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),\"function\"==typeof e&&(r=e,e=null),a?e=\"buffer\":e||(e=i.defaultEncoding),\"function\"!=typeof r&&(r=g),i.ended?function(t,e){var r=new Error(\"write after end\");t.emit(\"error\",r),o.nextTick(e,r)}(this,r):(a||function(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||e.objectMode||(s=new TypeError(\"Invalid non-string/buffer chunk\")),s&&(t.emit(\"error\",s),o.nextTick(n,s),i=!1),i}(this,i,t,r))&&(i.pendingcb++,s=function(t,e,r,n,i,o){if(!r){var s=function(t,e,r){t.objectMode||!1===t.decodeStrings||\"string\"!=typeof e||(e=h.from(e,r));return e}(e,n,i);n!==s&&(r=!0,i=\"buffer\",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length-1))throw new TypeError(\"Unknown encoding: \"+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(b.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),b.prototype._write=function(t,e,r){r(new Error(\"_write() is not implemented\"))},b.prototype._writev=null,b.prototype.end=function(t,e,r){var n=this._writableState;\"function\"==typeof t?(r=t,t=null,e=null):\"function\"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,A(t,e),r&&(e.finished?o.nextTick(r):t.once(\"finish\",r));e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(b.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),b.prototype.destroy=y.destroy,b.prototype._undestroy=y.undestroy,b.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r(7),r(113).setImmediate,r(3))},function(t,e,r){\"use strict\";var n=r(116).Buffer,i=n.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=u,this.end=c,e=4;break;case\"utf8\":this.fillLast=a,e=4;break;case\"base64\":this.text=l,this.end=f,e=3;break;default:return this.write=h,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:-1}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"�\".repeat(r);if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"�\".repeat(r+1);if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"�\".repeat(r+2)}}(this,t,e);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):\"\"}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(t.lastNeed=i-1),i;if(--n=0)return i>0&&(t.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString(\"utf8\",e,n)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,r){\"use strict\";t.exports=s;var n=r(14),i=Object.create(r(21));function o(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.lengthObject(o.a)(r),e)}async decode(t,e){return new Promise((r,n)=>{this.pool.queue(async i=>{try{const n=await i(t,e);r(n)}catch(t){n(t)}})})}destroy(){this.pool.terminate(!0)}}}).call(this,r(128))},function(t,e,r){(function(t){e.fetch=a(t.fetch)&&a(t.ReadableStream),e.writableStream=a(t.WritableStream),e.abortController=a(t.AbortController),e.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),e.blobConstructor=!0}catch(t){}var r;function n(){if(void 0!==r)return r;if(t.XMLHttpRequest){r=new t.XMLHttpRequest;try{r.open(\"GET\",t.XDomainRequest?\"/\":\"https://example.com\")}catch(t){r=null}}else r=null;return r}function i(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}var o=void 0!==t.ArrayBuffer,s=o&&a(t.ArrayBuffer.prototype.slice);function a(t){return\"function\"==typeof t}e.arraybuffer=e.fetch||o&&i(\"arraybuffer\"),e.msstream=!e.fetch&&s&&i(\"ms-stream\"),e.mozchunkedarraybuffer=!e.fetch&&o&&i(\"moz-chunked-arraybuffer\"),e.overrideMimeType=e.fetch||!!n()&&a(n().overrideMimeType),e.vbArray=a(t.VBArray),r=null}).call(this,r(3))},function(t,e,r){(function(t,n,i){var o=r(69),s=r(10),a=r(42),u=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(e,r,s,u){var c=this;if(a.Readable.call(c),c._mode=s,c.headers={},c.rawHeaders=[],c.trailers={},c.rawTrailers=[],c.on(\"end\",(function(){t.nextTick((function(){c.emit(\"close\")}))})),\"fetch\"===s){if(c._fetchResponse=r,c.url=r.url,c.statusCode=r.status,c.statusMessage=r.statusText,r.headers.forEach((function(t,e){c.headers[e.toLowerCase()]=t,c.rawHeaders.push(e,t)})),o.writableStream){var l=new WritableStream({write:function(t){return new Promise((function(e,r){c._destroyed?r():c.push(new n(t))?e():c._resumeFetch=e}))},close:function(){i.clearTimeout(u),c._destroyed||c.push(null)},abort:function(t){c._destroyed||c.emit(\"error\",t)}});try{return void r.body.pipeTo(l).catch((function(t){i.clearTimeout(u),c._destroyed||c.emit(\"error\",t)}))}catch(t){}}var f=r.body.getReader();!function t(){f.read().then((function(e){if(!c._destroyed){if(e.done)return i.clearTimeout(u),void c.push(null);c.push(new n(e.value)),t()}})).catch((function(t){i.clearTimeout(u),c._destroyed||c.emit(\"error\",t)}))}()}else{if(c._xhr=e,c._pos=0,c.url=e.responseURL,c.statusCode=e.status,c.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\\\\r?\\\\n/).forEach((function(t){var e=t.match(/^([^:]+):\\\\s*(.*)/);if(e){var r=e[1].toLowerCase();\"set-cookie\"===r?(void 0===c.headers[r]&&(c.headers[r]=[]),c.headers[r].push(e[2])):void 0!==c.headers[r]?c.headers[r]+=\", \"+e[2]:c.headers[r]=e[2],c.rawHeaders.push(e[1],e[2])}})),c._charset=\"x-user-defined\",!o.overrideMimeType){var h=c.rawHeaders[\"mime-type\"];if(h){var d=h.match(/;\\\\s*charset=([^;])(;|$)/);d&&(c._charset=d[1].toLowerCase())}c._charset||(c._charset=\"utf-8\")}}};s(c,a.Readable),c.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},c.prototype._onXHRProgress=function(){var t=this,e=t._xhr,r=null;switch(t._mode){case\"text:vbarray\":if(e.readyState!==u.DONE)break;try{r=new i.VBArray(e.responseBody).toArray()}catch(t){}if(null!==r){t.push(new n(r));break}case\"text\":try{r=e.responseText}catch(e){t._mode=\"text:vbarray\";break}if(r.length>t._pos){var o=r.substr(t._pos);if(\"x-user-defined\"===t._charset){for(var s=new n(o.length),a=0;at._pos&&(t.push(new n(new Uint8Array(c.result.slice(t._pos)))),t._pos=c.result.byteLength)},c.onload=function(){t.push(null)},c.readAsArrayBuffer(r)}t._xhr.readyState===u.DONE&&\"ms-stream\"!==t._mode&&t.push(null)}}).call(this,r(7),r(9).Buffer,r(3))},function(t,e,r){\"use strict\";var n=r(46),i=Object.prototype.hasOwnProperty,o=Array.isArray,s=function(){for(var t=[],e=0;e<256;++e)t.push(\"%\"+((e<16?\"0\":\"\")+e.toString(16)).toUpperCase());return t}(),a=function(t,e){for(var r=e&&e.plainObjects?Object.create(null):{},n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(o(r)){for(var n=[],i=0;i=48&&l<=57||l>=65&&l<=90||l>=97&&l<=122||o===n.RFC1738&&(40===l||41===l)?u+=a.charAt(c):l<128?u+=s[l]:l<2048?u+=s[192|l>>6]+s[128|63&l]:l<55296||l>=57344?u+=s[224|l>>12]+s[128|l>>6&63]+s[128|63&l]:(c+=1,l=65536+((1023&l)<<10|1023&a.charCodeAt(c)),u+=s[240|l>>18]+s[128|l>>12&63]+s[128|l>>6&63]+s[128|63&l])}return u},isBuffer:function(t){return!(!t||\"object\"!=typeof t)&&!!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t))},isRegExp:function(t){return\"[object RegExp]\"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(o(t)){for(var r=[],n=0;ne++t.next());return e.every(({done:t})=>t)?{done:!0}:{done:!1,value:e.map(({value:t})=>t)}}))}}},function(t,e,r){\"use strict\";function n(t){\"+\"===t[0]&&(t=t.substring(1));const e=\"-\"===t[0]?\"-\":\"\";\"-\"===e&&(t=t.substring(1));const r=t.indexOf(\"e\");if(-1===r)return e+t;let n=t.indexOf(\".\");-1===n&&(n=r);const i=Number(t.substring(r+1)),o=t.substring(0,r).replace(\".\",\"\"),s=n+i,a=o.length;if(s>=a){const t=s-a;let r=o;for(let e=0;es;e--)t+=\"0\";return t+=o,e+t}return e+o.substring(0,s)+\".\"+o.substring(s)}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";t.exports={MAX_SAFE_INTEGER:9007199254740991}},function(t,e,r){\"use strict\";const n=r(47);function i(t){return\"0\"===t?\"1\":n(\"1\",t)}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(4),i=r(0),o=r(8),s=r(22);function a(t){if(-1===(t=i(t)).indexOf(\".\"))return t;const e=s(t);return t=n(t).split(\".\")[0],\"+\"===e?o(t,\"1\"):\"-\"===e?\"0\"===t||\"\"===t?\"0\":\"-\"+t:void 0}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const n=r(51);function i(t){const e=n(t);return[t.replace(/\\\\./g,\"\").replace(/^0/,\"\"),1+\"0\".repeat(e)]}t.exports=i,t.exports.default=i},function(t,e,r){const n=r(0),i=r(16);function o(t){if(t=n(t),!i(t))throw new Error(\"can\\'t call is_odd on decimal\");return[\"1\",\"3\",\"5\",\"7\",\"9\"].includes(t.charAt(t.length-1))}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(52),i=r(15),o=r(78),s=r(11),a=r(17),u=r(50);function c(t,{max_decimal_digits:e,infinity_times_zero:r=\"NaN\"}={}){const c=t.some(t=>i(t)),l=t.some(t=>s(t));if(c&&l)return r;if(c){return t.filter(t=>\"-\"===u(t)).length%2==0?\"Infinity\":\"-Infinity\"}if(l)return\"0\";const f=o(t.filter(t=>n(t)).length.toString());let h=a(t.map(t=>t.replace(/i$/,\"\")),{max_decimal_digits:e});return f&&(h+=\"i\"),h}t.exports=c,t.exports.default=c},function(t,e,r){\"use strict\";const n=r(0);function i(t){return\"-\"===(t=n(t))[0]}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";const n=r(1),i=r(160),o=r(161);function s(t,{max_decimal_digits:e=100,fraction:r=!1}={}){if(i(t)){const[i,s]=o(t);return r?s+\"/\"+i:n(s,i,{max_decimal_digits:e})}return r?\"1/\"+t:n(\"1\",t,{max_decimal_digits:e})}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";const n=r(0),i=r(16);function o(t){if(t=n(t),!i(t))throw new Error(\"can\\'t call is_even on decimal\");return[\"0\",\"2\",\"4\",\"6\",\"8\"].includes(t.charAt(t.length-1))}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(76),i=r(84),o=r(1);function s(t,e){const r=i(t);return\"0\"===r?\"0\":n(o(r,e,{max_decimal_digits:1}))}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";const n=r(4),i=r(0);function o(t){const e=(t=n(i(t))).indexOf(\".\");return(-1===e?t.length:e).toString()}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(1),i=r(82),o=r(86),s=r(87);function a(t,e){const r=s(\"2\",o([\"1000\",e,e]));for(;t.endsWith(\"0\")&&e.endsWith(\"0\");)t=t.substring(0,t.length-1),e=e.substring(0,e.length-1);for(;i(t)&&i(e);)t=n(t,\"2\"),e=n(e,\"2\");let a=!0;for(;a;){a=!1;for(let i=0;i\"<\"!==n(r,t)&&\">\"!==n(r,e));let a=\"13\";for(;\">\"!==n(a,e);)/^\\\\d+5/.test(a)||/^(\\\\d)\\\\1+/.test(a)||[\"9\",\"7\",\"3\"].every(t=>!o(i(a,t)))&&r.push(a),a=s(a,\"2\");return r}t.exports=a,t.exports.default=a},function(t,e,r){\"use strict\";const n=r(6),i=r(1);function o({max_decimal_digits:t=100,steps:e=100}={}){let r=\"1\",o=\"1\";for(let s=1;s\":return\"-\"+s(t,e)}else if(r&&!a)switch(e=e.substring(1),n(t,e)){case\"=\":return\"0\";case\"<\":return\"-\"+s(e,t);case\">\":return s(t,e)}}t.exports=a,t.exports.default=a},function(t,e,r){const{MAX_SAFE_INTEGER_LENGTH:n}=r(56);t.exports=function(t,e){const r=t.length,i=e.length,o=t.indexOf(\".\"),s=e.indexOf(\".\"),a=-1===o?r:o,u=-1===s?i:s;if(-1===o&&-1===s&&r0){for(;m>p-f;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,\"\"===y&&0===i||(y=i+y),m--}y&&(y=\".\"+y),m--}if(l>0)for(;m>=0;){const r=t[m-h]||\"0\",n=e[m-d]||\"0\";let i=Number(r)+Number(n)+g;i>=10?(i-=10,g=1):g=0,y=i+y,m--}return 1===g&&(y=g+y),\".\"===y[0]&&(y=\"0\"+y),y}},function(t,e,r){const{MAX_SAFE_INTEGER_LENGTH:n}=r(56);t.exports=function(t,e){const r=t.length,i=e.length,o=t.indexOf(\".\"),s=e.indexOf(\".\"),a=-1===o?r:o,u=-1===s?i:s;if(-1===o&&-1===s&&r0){for(;m>p-f;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;\"\"===y&&0===i||(y=i+y),m--}\"\"!==y&&(y=\".\"+y),m--}if(l>0){for(;m>0;){let r=t[m-h]||\"0\",n=e[m-d]||\"0\";r-=g,g=0;let i=r-n;if(i<0)for(;i<0;)g++,i+=10;else g&&g--;y=i+y,m--}const r=t[0-h]||\"0\",n=e[0-d]||\"0\";let i=Number(r)-(g>0?1:0)-Number(n);0!==i&&(y=i+y),y=y.replace(/^0+/,\"\")}return\".\"===y[0]&&(y=\"0\"+y),y}},function(t,e,r){const n=r(18);function i(t){return\"-\"===(t=n(t))[0]?t.substring(1):t}t.exports=i,t.exports.default=i},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var r=[],n=!0,i=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);n=!0);}catch(t){i=!0,o=t}finally{try{!n&&a.return&&a.return()}finally{if(i)throw o}}return r}(t,e);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};e.default=function(t,e){return new Promise((function(r,o){try{e&&console.log(\"starting parseData with\",t),e&&console.log(\"\\\\tGeoTIFF:\",\"undefined\"==typeof GeoTIFF?\"undefined\":i(GeoTIFF));var u={},c=void 0,h=void 0;if(\"object\"===t.rasterType)u.values=t.data,u.height=c=t.metadata.height||u.values[0].length,u.width=h=t.metadata.width||u.values[0][0].length,u.pixelHeight=t.metadata.pixelHeight,u.pixelWidth=t.metadata.pixelWidth,u.projection=t.metadata.projection,u.xmin=t.metadata.xmin,u.ymax=t.metadata.ymax,u.noDataValue=t.metadata.noDataValue,u.numberOfRasters=u.values.length,u.xmax=u.xmin+u.width*u.pixelWidth,u.ymin=u.ymax-u.height*u.pixelHeight,u._data=null,r(f(u));else if(\"geotiff\"===t.rasterType){u._data=t.data;var d=s.fromArrayBuffer;\"url\"===t.sourceType?d=s.fromUrl:\"Blob\"===t.sourceType&&(d=s.fromBlob),e&&console.log(\"data.rasterType is geotiff\"),r(d(t.data).then((function(r){return e&&console.log(\"geotiff:\",r),r.getImage().then((function(r){try{e&&console.log(\"image:\",r);var i=r.fileDirectory,s=r.getGeoKeys()||{},d=s.GeographicTypeGeoKey,p=s.ProjectedCSTypeGeoKey;u.projection=p||d||t.metadata.projection,e&&console.log(\"projection:\",u.projection),u.height=c=r.getHeight(),e&&console.log(\"result.height:\",u.height),u.width=h=r.getWidth(),e&&console.log(\"result.width:\",u.width);var y=r.getResolution(),g=n(y,2),m=g[0],b=g[1];u.pixelHeight=Math.abs(b),u.pixelWidth=Math.abs(m);var v=r.getOrigin(),w=n(v,2),x=w[0],_=w[1];return u.xmin=x,u.xmax=u.xmin+h*u.pixelWidth,u.ymax=_,u.ymin=u.ymax-c*u.pixelHeight,u.noDataValue=i.GDAL_NODATA?parseFloat(i.GDAL_NODATA):null,u.numberOfRasters=i.SamplesPerPixel,i.ColorMap&&(u.palette=(0,a.getPalette)(r)),\"url\"!==t.sourceType?r.readRasters().then((function(t){return u.values=t.map((function(t){return(0,l.unflatten)(t,{height:c,width:h})})),f(u)})):u}catch(t){o(t),console.error(\"[georaster] error parsing georaster:\",t)}}))})))}}catch(t){o(t),console.error(\"[georaster] error parsing georaster:\",t)}}))};var o,s=r(193),a=r(150),u=r(151),c=(o=u)&&o.__esModule?o:{default:o},l=r(192);function f(t){var e=(0,c.default)(t.values,{height:t.height,layout:\"[band][row][column]\",noData:t.noDataValue,precise:!1,stats:[\"max\",\"min\",\"range\"],width:t.width});return t.maxs=e.bands.map((function(t){return t.max})),t.mins=e.bands.map((function(t){return t.min})),t.ranges=e.bands.map((function(t){return t.range})),t}},function(t,e,r){function n(t,e){\"use strict\";var r=(e=e||{}).pos||0,i=\"<\".charCodeAt(0),o=\">\".charCodeAt(0),s=\"-\".charCodeAt(0),a=\"/\".charCodeAt(0),u=\"!\".charCodeAt(0),c=\"\\'\".charCodeAt(0),l=\\'\"\\'.charCodeAt(0);function f(){for(var e=[];t[r];)if(t.charCodeAt(r)==i){if(t.charCodeAt(r+1)===a)return(r=t.indexOf(\">\",r))+1&&(r+=1),e;if(t.charCodeAt(r+1)===u){if(t.charCodeAt(r+2)==s){for(;-1!==r&&(t.charCodeAt(r)!==o||t.charCodeAt(r-1)!=s||t.charCodeAt(r-2)!=s||-1==r);)r=t.indexOf(\">\",r+1);-1===r&&(r=t.length)}else for(r+=2;t.charCodeAt(r)!==o&&t[r];)r++;r++;continue}var n=y();e.push(n)}else{var c=h();c.trim().length>0&&e.push(c),r++}return e}function h(){var e=r;return-2===(r=t.indexOf(\"<\",r)-1)&&(r=t.length),t.slice(e,r+1)}function d(){for(var e=r;-1===\"\\\\n\\\\t>/= \".indexOf(t[r])&&t[r];)r++;return t.slice(e,r)}var p=e.noChildNodes||[\"img\",\"br\",\"input\",\"meta\",\"link\"];function y(){r++;const e=d(),n={};let i=[];for(;t.charCodeAt(r)!==o&&t[r];){var s=t.charCodeAt(r);if(s>64&&s<91||s>96&&s<123){for(var u=d(),h=t.charCodeAt(r);h&&h!==c&&h!==l&&!(h>64&&h<91||h>96&&h<123)&&h!==o;)r++,h=t.charCodeAt(r);if(h===c||h===l){var y=g();if(-1===r)return{tagName:e,attributes:n,children:i}}else y=null,r--;n[u]=y}r++}if(t.charCodeAt(r-1)!==a)if(\"script\"==e){var m=r+1;r=t.indexOf(\"<\\\\/script>\",r),i=[t.slice(m,r-1)],r+=9}else if(\"style\"==e){m=r+1;r=t.indexOf(\"\",r),i=[t.slice(m,r-1)],r+=8}else-1==p.indexOf(e)&&(r++,i=f());else r++;return{tagName:e,attributes:n,children:i}}function g(){var e=t[r],n=++r;return r=t.indexOf(e,n),t.slice(n,r)}var m,b=null;if(void 0!==e.attrValue){e.attrName=e.attrName||\"id\";for(b=[];-1!==(m=void 0,m=new RegExp(\"\\\\\\\\s\"+e.attrName+\"\\\\\\\\s*=[\\'\\\\\"]\"+e.attrValue+\"[\\'\\\\\"]\").exec(t),r=m?m.index:-1);)-1!==(r=t.lastIndexOf(\"<\",r))&&b.push(y()),t=t.substr(r),r=0}else b=e.parseNode?y():f();return e.filter&&(b=n.filter(b,e.filter)),e.setPos&&(b.pos=r),b}n.simplify=function(t){var e={};if(!t.length)return\"\";if(1===t.length&&\"string\"==typeof t[0])return t[0];for(var r in t.forEach((function(t){if(\"object\"==typeof t){e[t.tagName]||(e[t.tagName]=[]);var r=n.simplify(t.children||[]);e[t.tagName].push(r),t.attributes&&(r._attributes=t.attributes)}})),e)1==e[r].length&&(e[r]=e[r][0]);return e},n.filter=function(t,e){var r=[];return t.forEach((function(t){if(\"object\"==typeof t&&e(t)&&r.push(t),t.children){var i=n.filter(t.children,e);r=r.concat(i)}})),r},n.stringify=function(t){var e=\"\";function r(t){if(t)for(var r=0;r\",r(t.children),e+=\"\"}return r(t),e},n.toContentString=function(t){if(Array.isArray(t)){var e=\"\";return t.forEach((function(t){e=(e+=\" \"+n.toContentString(t)).trim()})),e}return\"object\"==typeof t?n.toContentString(t.children):\" \"+t},n.getElementById=function(t,e,r){var i=n(t,{attrValue:e});return r?n.simplify(i):i[0]},n.getElementsByClassName=function(t,e,r){const i=n(t,{attrName:\"class\",attrValue:\"[a-zA-Z0-9-s ]*\"+e+\"[a-zA-Z0-9-s ]*\"});return r?n.simplify(i):i},n.parseStream=function(t,e){if(\"string\"==typeof e&&(e=e.length+2),\"string\"==typeof t){var i=r(25);t=i.createReadStream(t,{start:e}),e=0}var o=e,s=\"\";return t.on(\"data\",(function(e){s+=e;for(var r=0;;){if(!(o=s.indexOf(\"<\",o)+1))return void(o=r);if(\"/\"!==s[o+1]){var i=n(s,{pos:o-1,parseNode:!0,setPos:!0});if((o=i.pos)>s.length-1||oo.length-1||i=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new u,this.strm.avail_out=0;var r=n.inflateInit2(this.strm,e.windowBits);if(r!==s.Z_OK)throw new Error(a[r]);if(this.header=new c,n.inflateGetHeader(this.strm,this.header),e.dictionary&&(\"string\"==typeof e.dictionary?e.dictionary=o.string2buf(e.dictionary):\"[object ArrayBuffer]\"===l.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=n.inflateSetDictionary(this.strm,e.dictionary))!==s.Z_OK))throw new Error(a[r])}function h(t,e){var r=new f(e);if(r.push(t,!0),r.err)throw r.msg||a[r.err];return r.result}f.prototype.push=function(t,e){var r,a,u,c,f,h=this.strm,d=this.options.chunkSize,p=this.options.dictionary,y=!1;if(this.ended)return!1;a=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,\"string\"==typeof t?h.input=o.binstring2buf(t):\"[object ArrayBuffer]\"===l.call(t)?h.input=new Uint8Array(t):h.input=t,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new i.Buf8(d),h.next_out=0,h.avail_out=d),(r=n.inflate(h,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&p&&(r=n.inflateSetDictionary(this.strm,p)),r===s.Z_BUF_ERROR&&!0===y&&(r=s.Z_OK,y=!1),r!==s.Z_STREAM_END&&r!==s.Z_OK)return this.onEnd(r),this.ended=!0,!1;h.next_out&&(0!==h.avail_out&&r!==s.Z_STREAM_END&&(0!==h.avail_in||a!==s.Z_FINISH&&a!==s.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(u=o.utf8border(h.output,h.next_out),c=h.next_out-u,f=o.buf2string(h.output,u),h.next_out=c,h.avail_out=d-c,c&&i.arraySet(h.output,h.output,u,c,0),this.onData(f)):this.onData(i.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(y=!0)}while((h.avail_in>0||0===h.avail_out)&&r!==s.Z_STREAM_END);return r===s.Z_STREAM_END&&(a=s.Z_FINISH),a===s.Z_FINISH?(r=n.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===s.Z_OK):a!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),h.avail_out=0,!0)},f.prototype.onData=function(t){this.chunks.push(t)},f.prototype.onEnd=function(t){t===s.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=f,e.inflate=h,e.inflateRaw=function(t,e){return(e=e||{}).raw=!0,h(t,e)},e.ungzip=h},function(t,e,r){\"use strict\";var n=r(26);class i extends n.a{constructor(){super(t=>(this._observers.add(t),()=>this._observers.delete(t))),this._observers=new Set}next(t){for(const e of this._observers)e.next(t)}error(t){for(const e of this._observers)e.error(t)}complete(){for(const t of this._observers)t.complete()}}e.a=i},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return i}));const n=()=>{};function i(){let t,e=!1,r=n;return[new Promise(n=>{e?n(t):r=n}),n=>{e=!0,t=n,r(t)}]}},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return i}));var n=r(2);function i(t){return t&&\"object\"==typeof t&&t[n.d]}},function(t,e,r){var n=r(40),i=r(39),o=t.exports;for(var s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);function a(t){if(\"string\"==typeof t&&(t=i.parse(t)),t.protocol||(t.protocol=\"https:\"),\"https:\"!==t.protocol)throw new Error(\\'Protocol \"\\'+t.protocol+\\'\" not supported. Expected \"https:\"\\');return t}o.request=function(t,e){return t=a(t),n.request.call(this,t,e)},o.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},function(t,e,r){\"use strict\";r.r(e);var n=r(99),i=r.n(n);self;onmessage=t=>{const e=t.data;i()(e).then(t=>{const e=[];if(t.values){let r;t.values.forEach(t=>t.forEach(({buffer:t})=>{t instanceof ArrayBuffer&&t!==r&&(e.push(t),r=t)}))}t._data instanceof ArrayBuffer&&e.push(t._data),postMessage(t,e),close()})}},function(t,e,r){(function(e){var n=r(42).Transform,i=r(10);function o(t){n.call(this,t),this._destroyed=!1}function s(t,e,r){r(null,t)}function a(t){return function(e,r,n){return\"function\"==typeof e&&(n=r,r=e,e={}),\"function\"!=typeof r&&(r=s),\"function\"!=typeof n&&(n=null),t(e,r,n)}}i(o,n),o.prototype.destroy=function(t){if(!this._destroyed){this._destroyed=!0;var r=this;e.nextTick((function(){t&&r.emit(\"error\",t),r.emit(\"close\")}))}},t.exports=a((function(t,e,r){var n=new o(t);return n._transform=e,r&&(n._flush=r),n})),t.exports.ctor=a((function(t,e,r){function n(e){if(!(this instanceof n))return new n(e);this.options=Object.assign({},t,e),o.call(this,this.options)}return i(n,o),n.prototype._transform=e,r&&(n.prototype._flush=r),n})),t.exports.obj=a((function(t,e,r){var n=new o(Object.assign({objectMode:!0,highWaterMark:16},t));return n._transform=e,r&&(n._flush=r),n}))}).call(this,r(7))},function(t,e,r){\"use strict\";e.byteLength=function(t){var e=c(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,n=c(t),s=n[0],a=n[1],u=new o(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),l=0,f=a>0?s-4:s;for(r=0;r>16&255,u[l++]=e>>8&255,u[l++]=255&e;2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[l++]=255&e);1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e);return u},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],s=0,a=r-i;sa?a:s+16383));1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+\"==\")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+\"=\"));return o.join(\"\")};for(var n=[],i=[],o=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,s=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a=0,u=s.length;a0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function l(t,e,r){for(var i,o,s=[],a=e;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(t,e){\\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\\ne.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,l=-7,f=r?i-1:0,h=r?-1:1,d=t[e+f];for(f+=h,o=d&(1<<-l)-1,d>>=-l,l+=a;l>0;o=256*o+t[e+f],f+=h,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,n),o-=c}return(d?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+f>=1?h/u:h*Math.pow(2,1-f))*u>=2&&(s++,u/=2),s+f>=l?(a=0,s=l):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+d]=255&a,d+=p,a/=256,i-=8);for(s=s<0;t[r+d]=255&s,d+=p,s/=256,c-=8);t[r+d-p]|=128*y}},function(t,e){},function(t,e,r){\"use strict\";var n=r(43).Buffer,i=r(112);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return n.alloc(0);for(var e,r,i,o=n.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=o,i=a,e.copy(r,i),a+=s.data.length,s=s.next;return o},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+\" \"+t})},function(t,e){},function(t,e,r){(function(t){var n=void 0!==t&&t||\"undefined\"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r(114),e.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(3))},function(t,e,r){(function(t,e){!function(t,r){\"use strict\";if(!t.setImmediate){var n,i,o,s,a,u=1,c={},l=!1,f=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,\"[object process]\"==={}.toString.call(t.process)?n=function(t){e.nextTick((function(){p(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage(\"\",\"*\"),t.onmessage=r,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){p(t.data)},n=function(t){o.port2.postMessage(t)}):f&&\"onreadystatechange\"in f.createElement(\"script\")?(i=f.documentElement,n=function(t){var e=f.createElement(\"script\");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):n=function(t){setTimeout(p,0,t)}:(s=\"setImmediate$\"+Math.random()+\"$\",a=function(e){e.source===t&&\"string\"==typeof e.data&&0===e.data.indexOf(s)&&p(+e.data.slice(s.length))},t.addEventListener?t.addEventListener(\"message\",a,!1):t.attachEvent(\"onmessage\",a),n=function(e){t.postMessage(s+e,\"*\")}),h.setImmediate=function(t){\"function\"!=typeof t&&(t=new Function(\"\"+t));for(var e=new Array(arguments.length-1),r=0;r>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function c(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function l(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new n.Buf32(852),e.distcode=e.distdyn=new n.Buf32(592),e.sane=1,e.back=-1,0):-2}function f(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,l(t)):-2}function h(t,e){var r,n;return t&&t.state?(n=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?-2:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,f(t))):-2}function d(t,e){var r,n;return t?(n=new c,t.state=n,n.window=null,0!==(r=h(t,e))&&(t.state=null),r):-2}var p,y,g=!0;function m(t){if(g){var e;for(p=new n.Buf32(512),y=new n.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(a(1,t.lens,0,288,p,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;a(2,t.lens,0,32,y,0,t.work,{bits:5}),g=!1}t.lencode=p,t.lenbits=9,t.distcode=y,t.distbits=5}function b(t,e,r,i){var o,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(n.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((o=s.wsize-s.wnext)>i&&(o=i),n.arraySet(s.window,e,r-i,o,s.wnext),(i-=o)?(n.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=o,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=o(r.check,L,2,0),y=0,g=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&y)<<8)+(y>>8))%31){t.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&y)){t.msg=\"unknown compression method\",r.mode=30;break}if(g-=4,I=8+(15&(y>>>=4)),0===r.wbits)r.wbits=I;else if(I>r.wbits){t.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(L[0]=255&y,L[1]=y>>>8&255,r.check=o(r.check,L,2,0)),y=0,g=0,r.mode=3;case 3:for(;g<32;){if(0===d)break t;d--,y+=c[f++]<>>8&255,L[2]=y>>>16&255,L[3]=y>>>24&255,r.check=o(r.check,L,4,0)),y=0,g=0,r.mode=4;case 4:for(;g<16;){if(0===d)break t;d--,y+=c[f++]<>8),512&r.flags&&(L[0]=255&y,L[1]=y>>>8&255,r.check=o(r.check,L,2,0)),y=0,g=0,r.mode=5;case 5:if(1024&r.flags){for(;g<16;){if(0===d)break t;d--,y+=c[f++]<>>8&255,r.check=o(r.check,L,2,0)),y=0,g=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((x=r.length)>d&&(x=d),x&&(r.head&&(I=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,c,f,x,I)),512&r.flags&&(r.check=o(r.check,c,x,f)),d-=x,f+=x,r.length-=x),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===d)break t;x=0;do{I=c[f+x++],r.head&&I&&r.length<65536&&(r.head.name+=String.fromCharCode(I))}while(I&&x>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;g<32;){if(0===d)break t;d--,y+=c[f++]<>>=7&g,g-=7&g,r.mode=27;break}for(;g<3;){if(0===d)break t;d--,y+=c[f++]<>>=1)){case 0:r.mode=14;break;case 1:if(m(r),r.mode=20,6===e){y>>>=2,g-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg=\"invalid block type\",r.mode=30}y>>>=2,g-=2;break;case 14:for(y>>>=7&g,g-=7&g;g<32;){if(0===d)break t;d--,y+=c[f++]<>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&y,y=0,g=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(x=r.length){if(x>d&&(x=d),x>p&&(x=p),0===x)break t;n.arraySet(l,c,f,x,h),d-=x,f+=x,p-=x,h+=x,r.length-=x;break}r.mode=12;break;case 17:for(;g<14;){if(0===d)break t;d--,y+=c[f++]<>>=5,g-=5,r.ndist=1+(31&y),y>>>=5,g-=5,r.ncode=4+(15&y),y>>>=4,g-=4,r.nlen>286||r.ndist>30){t.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,g-=3}for(;r.have<19;)r.lens[F[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,R={bits:r.lenbits},P=a(0,r.lens,0,19,r.lencode,0,r.work,R),r.lenbits=R.bits,P){t.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,k=65535&M,!((A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>>=A,g-=A,r.lens[r.have++]=k;else{if(16===k){for(j=A+2;g>>=A,g-=A,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=30;break}I=r.lens[r.have-1],x=3+(3&y),y>>>=2,g-=2}else if(17===k){for(j=A+3;g>>=A)),y>>>=3,g-=3}else{for(j=A+7;g>>=A)),y>>>=7,g-=7}if(r.have+x>r.nlen+r.ndist){t.msg=\"invalid bit length repeat\",r.mode=30;break}for(;x--;)r.lens[r.have++]=I}}if(30===r.mode)break;if(0===r.lens[256]){t.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,R={bits:r.lenbits},P=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,R),r.lenbits=R.bits,P){t.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,R={bits:r.distbits},P=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,R),r.distbits=R.bits,P){t.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(d>=6&&p>=258){t.next_out=h,t.avail_out=p,t.next_in=f,t.avail_in=d,r.hold=y,r.bits=g,s(t,w),h=t.next_out,l=t.output,p=t.avail_out,f=t.next_in,c=t.input,d=t.avail_in,y=r.hold,g=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;E=(M=r.lencode[y&(1<>>16&255,k=65535&M,!((A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>T)])>>>16&255,k=65535&M,!(T+(A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>>=T,g-=T,r.back+=T}if(y>>>=A,g-=A,r.back+=A,r.length=k,0===E){r.mode=26;break}if(32&E){r.back=-1,r.mode=12;break}if(64&E){t.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&E,r.mode=22;case 22:if(r.extra){for(j=r.extra;g>>=r.extra,g-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;E=(M=r.distcode[y&(1<>>16&255,k=65535&M,!((A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>T)])>>>16&255,k=65535&M,!(T+(A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>>=T,g-=T,r.back+=T}if(y>>>=A,g-=A,r.back+=A,64&E){t.msg=\"invalid distance code\",r.mode=30;break}r.offset=k,r.extra=15&E,r.mode=24;case 24:if(r.extra){for(j=r.extra;g>>=r.extra,g-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===p)break t;if(x=w-p,r.offset>x){if((x=r.offset-x)>r.whave&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break}x>r.wnext?(x-=r.wnext,_=r.wsize-x):_=r.wnext-x,x>r.length&&(x=r.length),S=r.window}else S=l,_=h-r.offset,x=r.length;x>p&&(x=p),p-=x,r.length-=x;do{l[h++]=S[_++]}while(--x);0===r.length&&(r.mode=21);break;case 26:if(0===p)break t;l[h++]=r.length,p--,r.mode=21;break;case 27:if(r.wrap){for(;g<32;){if(0===d)break t;d--,y|=c[f++]<>>16&65535|0,s=0;0!==r;){r-=s=r>2e3?2e3:r;do{o=o+(i=i+e[n++]|0)|0}while(--s);i%=65521,o%=65521}return i|o<<16|0}},function(t,e,r){\"use strict\";var n=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();t.exports=function(t,e,r,i){var o=n,s=i+r;t^=-1;for(var a=i;a>>8^o[255&(t^e[a])];return-1^t}},function(t,e,r){\"use strict\";t.exports=function(t,e){var r,n,i,o,s,a,u,c,l,f,h,d,p,y,g,m,b,v,w,x,_,S,A,E,k;r=t.state,n=t.next_in,E=t.input,i=n+(t.avail_in-5),o=t.next_out,k=t.output,s=o-(e-t.avail_out),a=o+(t.avail_out-257),u=r.dmax,c=r.wsize,l=r.whave,f=r.wnext,h=r.window,d=r.hold,p=r.bits,y=r.lencode,g=r.distcode,m=(1<>>=w=v>>>24,p-=w,0===(w=v>>>16&255))k[o++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=y[(65535&v)+(d&(1<>>=w,p-=w),p<15&&(d+=E[n++]<>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=g[(65535&v)+(d&(1<u){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(d>>>=w,p-=w,_>(w=o-s)){if((w=_-w)>l&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(S=0,A=h,0===f){if(S+=c-w,w2;)k[o++]=A[S++],k[o++]=A[S++],k[o++]=A[S++],x-=3;x&&(k[o++]=A[S++],x>1&&(k[o++]=A[S++]))}else{S=o-_;do{k[o++]=k[S++],k[o++]=k[S++],k[o++]=k[S++],x-=3}while(x>2);x&&(k[o++]=k[S++],x>1&&(k[o++]=k[S++]))}break}}break}}while(n>3,d&=(1<<(p-=x<<3))-1,t.next_in=n,t.next_out=o,t.avail_in=n=1&&0===L[k];k--);if(T>k&&(T=k),0===k)return c[l++]=20971520,c[l++]=20971520,h.bits=1,0;for(E=1;E0&&(0===t||1!==k))return-1;for(F[1]=0,S=1;S<15;S++)F[S+1]=F[S]+L[S];for(A=0;A852||2===t&&P>592)return 1;for(;;){v=S-O,f[A]b?(w=N[D+f[A]],x=j[M+f[A]]):(w=96,x=0),d=1<>O)+(p-=d)]=v<<24|w<<16|x|0}while(0!==p);for(d=1<>=1;if(0!==d?(R&=d-1,R+=d):R=0,A++,0==--L[S]){if(S===k)break;S=e[r+f[A]]}if(S>T&&(R&g)!==y){for(0===O&&(O=T),m+=E,I=1<<(C=S-O);C+O852||2===t&&P>592)return 1;c[y=R&g]=T<<24|C<<16|m-l|0}}return 0!==R&&(c[m+R]=S-O<<24|64<<16|0),h.bits=T,0}},function(t,e,r){\"use strict\";var n=r(29),i=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch(t){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){o=!1}for(var s=new n.Buf8(256),a=0;a<256;a++)s[a]=a>=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;function u(t,e){if(e<65534&&(t.subarray&&o||!t.subarray&&i))return String.fromCharCode.apply(null,n.shrinkBuf(t,e));for(var r=\"\",s=0;s>>6,e[s++]=128|63&r):r<65536?(e[s++]=224|r>>>12,e[s++]=128|r>>>6&63,e[s++]=128|63&r):(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63,e[s++]=128|r>>>6&63,e[s++]=128|63&r);return e},e.buf2binstring=function(t){return u(t,t.length)},e.binstring2buf=function(t){for(var e=new n.Buf8(t.length),r=0,i=e.length;r4)c[n++]=65533,r+=o-1;else{for(i&=2===o?31:3===o?15:7;o>1&&r1?c[n++]=65533:i<65536?c[n++]=i:(i-=65536,c[n++]=55296|i>>10&1023,c[n++]=56320|1023&i)}return u(c,n)},e.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;r>=0&&128==(192&t[r]);)r--;return r<0||0===r?e:r+s[t[r]]>e?r:e}},function(t,e,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(t,e,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},function(t,e,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},function(t,e,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},function(t,e,r){t.exports=r.p+\"0.bce5ef15ddaa1e171e9d.worker.worker.js\"},function(t,e,r){t.exports=function(t){function e(t){let r,i,o,s=null;function a(...t){if(!a.enabled)return;const n=a,i=Number(new Date),o=i-(r||i);n.diff=o,n.prev=r,n.curr=i,r=i,t[0]=e.coerce(t[0]),\"string\"!=typeof t[0]&&t.unshift(\"%O\");let s=0;t[0]=t[0].replace(/%([a-zA-Z%])/g,(r,i)=>{if(\"%%\"===r)return\"%\";s++;const o=e.formatters[i];if(\"function\"==typeof o){const e=t[s];r=o.call(n,e),t.splice(s,1),s--}return r}),e.formatArgs.call(n,t);(n.log||e.log).apply(n,t)}return a.namespace=t,a.useColors=e.useColors(),a.color=e.selectColor(t),a.extend=n,a.destroy=e.destroy,Object.defineProperty(a,\"enabled\",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(i!==e.namespaces&&(i=e.namespaces,o=e.enabled(t)),o),set:t=>{s=t}}),\"function\"==typeof e.init&&e.init(a),a}function n(t,r){const n=e(this.namespace+(void 0===r?\":\":r)+t);return n.log=this.log,n}function i(t){return t.toString().substring(2,t.toString().length-2).replace(/\\\\.\\\\*\\\\?$/,\"*\")}return e.debug=e,e.default=e,e.coerce=function(t){if(t instanceof Error)return t.stack||t.message;return t},e.disable=function(){const t=[...e.names.map(i),...e.skips.map(i).map(t=>\"-\"+t)].join(\",\");return e.enable(\"\"),t},e.enable=function(t){let r;e.save(t),e.namespaces=t,e.names=[],e.skips=[];const n=(\"string\"==typeof t?t:\"\").split(/[\\\\s,]+/),i=n.length;for(r=0;r{e[r]=t[r]}),e.names=[],e.skips=[],e.formatters={},e.selectColor=function(t){let r=0;for(let e=0;e=1.5*r;return Math.round(t/r)+\" \"+n+(i?\"s\":\"\")}t.exports=function(t,e){e=e||{};var a=typeof t;if(\"string\"===a&&t.length>0)return function(t){if((t=String(t)).length>100)return;var e=/^(-?(?:\\\\d+)?\\\\.?\\\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(!e)return;var s=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*s;case\"weeks\":case\"week\":case\"w\":return 6048e5*s;case\"days\":case\"day\":case\"d\":return s*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return s*i;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return s*n;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return s*r;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return s;default:return}}(t);if(\"number\"===a&&isFinite(t))return e.long?function(t){var e=Math.abs(t);if(e>=o)return s(t,e,o,\"day\");if(e>=i)return s(t,e,i,\"hour\");if(e>=n)return s(t,e,n,\"minute\");if(e>=r)return s(t,e,r,\"second\");return t+\" ms\"}(t):function(t){var e=Math.abs(t);if(e>=o)return Math.round(t/o)+\"d\";if(e>=i)return Math.round(t/i)+\"h\";if(e>=n)return Math.round(t/n)+\"m\";if(e>=r)return Math.round(t/r)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},function(t,e,r){(function(e,n,i){var o=r(69),s=r(10),a=r(70),u=r(42),c=r(132),l=a.IncomingMessage,f=a.readyStates;var h=t.exports=function(t){var r,n=this;u.Writable.call(n),n._opts=t,n._body=[],n._headers={},t.auth&&n.setHeader(\"Authorization\",\"Basic \"+new e(t.auth).toString(\"base64\")),Object.keys(t.headers).forEach((function(e){n.setHeader(e,t.headers[e])}));var i=!0;if(\"disable-fetch\"===t.mode||\"requestTimeout\"in t&&!o.abortController)i=!1,r=!0;else if(\"prefer-streaming\"===t.mode)r=!1;else if(\"allow-wrong-content-type\"===t.mode)r=!o.overrideMimeType;else{if(t.mode&&\"default\"!==t.mode&&\"prefer-fast\"!==t.mode)throw new Error(\"Invalid value for opts.mode\");r=!0}n._mode=function(t,e){return o.fetch&&e?\"fetch\":o.mozchunkedarraybuffer?\"moz-chunked-arraybuffer\":o.msstream?\"ms-stream\":o.arraybuffer&&t?\"arraybuffer\":o.vbArray&&t?\"text:vbarray\":\"text\"}(r,i),n._fetchTimer=null,n.on(\"finish\",(function(){n._onFinish()}))};s(h,u.Writable),h.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===d.indexOf(r)&&(this._headers[r]={name:t,value:e})},h.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},h.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},h.prototype._onFinish=function(){var t=this;if(!t._destroyed){var r=t._opts,s=t._headers,a=null;\"GET\"!==r.method&&\"HEAD\"!==r.method&&(a=o.arraybuffer?c(e.concat(t._body)):o.blobConstructor?new n.Blob(t._body.map((function(t){return c(t)})),{type:(s[\"content-type\"]||{}).value||\"\"}):e.concat(t._body).toString());var u=[];if(Object.keys(s).forEach((function(t){var e=s[t].name,r=s[t].value;Array.isArray(r)?r.forEach((function(t){u.push([e,t])})):u.push([e,r])})),\"fetch\"===t._mode){var l=null;if(o.abortController){var h=new AbortController;l=h.signal,t._fetchAbortController=h,\"requestTimeout\"in r&&0!==r.requestTimeout&&(t._fetchTimer=n.setTimeout((function(){t.emit(\"requestTimeout\"),t._fetchAbortController&&t._fetchAbortController.abort()}),r.requestTimeout))}n.fetch(t._opts.url,{method:t._opts.method,headers:u,body:a||void 0,mode:\"cors\",credentials:r.withCredentials?\"include\":\"same-origin\",signal:l}).then((function(e){t._fetchResponse=e,t._connect()}),(function(e){n.clearTimeout(t._fetchTimer),t._destroyed||t.emit(\"error\",e)}))}else{var d=t._xhr=new n.XMLHttpRequest;try{d.open(t._opts.method,t._opts.url,!0)}catch(e){return void i.nextTick((function(){t.emit(\"error\",e)}))}\"responseType\"in d&&(d.responseType=t._mode.split(\":\")[0]),\"withCredentials\"in d&&(d.withCredentials=!!r.withCredentials),\"text\"===t._mode&&\"overrideMimeType\"in d&&d.overrideMimeType(\"text/plain; charset=x-user-defined\"),\"requestTimeout\"in r&&(d.timeout=r.requestTimeout,d.ontimeout=function(){t.emit(\"requestTimeout\")}),u.forEach((function(t){d.setRequestHeader(t[0],t[1])})),t._response=null,d.onreadystatechange=function(){switch(d.readyState){case f.LOADING:case f.DONE:t._onXHRProgress()}},\"moz-chunked-arraybuffer\"===t._mode&&(d.onprogress=function(){t._onXHRProgress()}),d.onerror=function(){t._destroyed||t.emit(\"error\",new Error(\"XHR error\"))};try{d.send(a)}catch(e){return void i.nextTick((function(){t.emit(\"error\",e)}))}}}},h.prototype._onXHRProgress=function(){(function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}})(this._xhr)&&!this._destroyed&&(this._response||this._connect(),this._response._onXHRProgress())},h.prototype._connect=function(){var t=this;t._destroyed||(t._response=new l(t._xhr,t._fetchResponse,t._mode,t._fetchTimer),t._response.on(\"error\",(function(e){t.emit(\"error\",e)})),t.emit(\"response\",t._response))},h.prototype._write=function(t,e,r){this._body.push(t),r()},h.prototype.abort=h.prototype.destroy=function(){this._destroyed=!0,n.clearTimeout(this._fetchTimer),this._response&&(this._response._destroyed=!0),this._xhr?this._xhr.abort():this._fetchAbortController&&this._fetchAbortController.abort()},h.prototype.end=function(t,e,r){\"function\"==typeof t&&(r=t,t=void 0),u.Writable.prototype.end.call(this,t,e,r)},h.prototype.flushHeaders=function(){},h.prototype.setTimeout=function(){},h.prototype.setNoDelay=function(){},h.prototype.setSocketKeepAlive=function(){};var d=[\"accept-charset\",\"accept-encoding\",\"access-control-request-headers\",\"access-control-request-method\",\"connection\",\"content-length\",\"cookie\",\"cookie2\",\"date\",\"dnt\",\"expect\",\"host\",\"keep-alive\",\"origin\",\"referer\",\"te\",\"trailer\",\"transfer-encoding\",\"upgrade\",\"via\"]}).call(this,r(9).Buffer,r(3),r(7))},function(t,e,r){var n=r(9).Buffer;t.exports=function(t){if(t instanceof Uint8Array){if(0===t.byteOffset&&t.byteLength===t.buffer.byteLength)return t.buffer;if(\"function\"==typeof t.buffer.slice)return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}if(n.isBuffer(t)){for(var e=new Uint8Array(t.length),r=t.length,i=0;i= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},d=Math.floor,p=String.fromCharCode;function y(t){throw new RangeError(h[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function m(t,e){var r=t.split(\"@\"),n=\"\";return r.length>1&&(n=r[0]+\"@\",t=r[1]),n+g((t=t.replace(f,\".\")).split(\".\"),e).join(\".\")}function b(t){for(var e,r,n=[],i=0,o=t.length;i=55296&&e<=56319&&i65535&&(e+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=p(t)})).join(\"\")}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function x(t,e,r){var n=0;for(t=r?d(t/700):t>>1,t+=d(t/e);t>455;n+=36)t=d(t/35);return d(n+36*t/(t+38))}function _(t){var e,r,n,i,o,s,a,c,l,f,h,p=[],g=t.length,m=0,b=128,w=72;for((r=t.lastIndexOf(\"-\"))<0&&(r=0),n=0;n=128&&y(\"not-basic\"),p.push(t.charCodeAt(n));for(i=r>0?r+1:0;i=g&&y(\"invalid-input\"),((c=(h=t.charCodeAt(i++))-48<10?h-22:h-65<26?h-65:h-97<26?h-97:36)>=36||c>d((u-m)/s))&&y(\"overflow\"),m+=c*s,!(c<(l=a<=w?1:a>=w+26?26:a-w));a+=36)s>d(u/(f=36-l))&&y(\"overflow\"),s*=f;w=x(m-o,e=p.length+1,0==o),d(m/e)>u-b&&y(\"overflow\"),b+=d(m/e),m%=e,p.splice(m++,0,b)}return v(p)}function S(t){var e,r,n,i,o,s,a,c,l,f,h,g,m,v,_,S=[];for(g=(t=b(t)).length,e=128,r=0,o=72,s=0;s=e&&hd((u-r)/(m=n+1))&&y(\"overflow\"),r+=(a-e)*m,e=a,s=0;su&&y(\"overflow\"),h==e){for(c=r,l=36;!(c<(f=l<=o?1:l>=o+26?26:l-o));l+=36)_=c-f,v=36-f,S.push(p(w(f+_%v,0))),c=d(_/v);S.push(p(w(c,0))),o=x(r,m,n==i),r=0,++n}++r,++e}return S.join(\"\")}a={version:\"1.4.1\",ucs2:{decode:b,encode:v},decode:_,encode:S,toASCII:function(t){return m(t,(function(t){return l.test(t)?\"xn--\"+S(t):t}))},toUnicode:function(t){return m(t,(function(t){return c.test(t)?_(t.slice(4).toLowerCase()):t}))}},void 0===(i=function(){return a}.call(e,r,e,t))||(t.exports=i)}()}).call(this,r(136)(t),r(3))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){\"use strict\";var n=r(138),i=r(149),o=r(46);t.exports={formats:o,parse:i,stringify:n}},function(t,e,r){\"use strict\";var n=r(139),i=r(71),o=r(46),s=Object.prototype.hasOwnProperty,a={brackets:function(t){return t+\"[]\"},comma:\"comma\",indices:function(t,e){return t+\"[\"+e+\"]\"},repeat:function(t){return t}},u=Array.isArray,c=Array.prototype.push,l=function(t,e){c.apply(t,u(e)?e:[e])},f=Date.prototype.toISOString,h=o.default,d={addQueryPrefix:!1,allowDots:!1,charset:\"utf-8\",charsetSentinel:!1,delimiter:\"&\",encode:!0,encoder:i.encode,encodeValuesOnly:!1,format:h,formatter:o.formatters[h],indices:!1,serializeDate:function(t){return f.call(t)},skipNulls:!1,strictNullHandling:!1},p={},y=function t(e,r,o,s,a,c,f,h,y,g,m,b,v,w,x,_){for(var S,A=e,E=_,k=0,T=!1;void 0!==(E=E.get(p))&&!T;){var C=E.get(e);if(k+=1,void 0!==C){if(C===k)throw new RangeError(\"Cyclic object value\");T=!0}void 0===E.get(p)&&(k=0)}if(\"function\"==typeof h?A=h(r,A):A instanceof Date?A=m(A):\"comma\"===o&&u(A)&&(A=i.maybeMap(A,(function(t){return t instanceof Date?m(t):t}))),null===A){if(a)return f&&!w?f(r,d.encoder,x,\"key\",b):r;A=\"\"}if(\"string\"==typeof(S=A)||\"number\"==typeof S||\"boolean\"==typeof S||\"symbol\"==typeof S||\"bigint\"==typeof S||i.isBuffer(A))return f?[v(w?r:f(r,d.encoder,x,\"key\",b))+\"=\"+v(f(A,d.encoder,x,\"value\",b))]:[v(r)+\"=\"+v(String(A))];var O,I=[];if(void 0===A)return I;if(\"comma\"===o&&u(A))w&&f&&(A=i.maybeMap(A,f)),O=[{value:A.length>0?A.join(\",\")||null:void 0}];else if(u(h))O=h;else{var P=Object.keys(A);O=y?P.sort(y):P}for(var R=s&&u(A)&&1===A.length?r+\"[]\":r,j=0;j0?x+w:\"\"}},function(t,e,r){\"use strict\";var n=r(44),i=r(145),o=r(147),s=n(\"%TypeError%\"),a=n(\"%WeakMap%\",!0),u=n(\"%Map%\",!0),c=i(\"WeakMap.prototype.get\",!0),l=i(\"WeakMap.prototype.set\",!0),f=i(\"WeakMap.prototype.has\",!0),h=i(\"Map.prototype.get\",!0),d=i(\"Map.prototype.set\",!0),p=i(\"Map.prototype.has\",!0),y=function(t,e){for(var r,n=t;null!==(r=n.next);n=r)if(r.key===e)return n.next=r.next,r.next=t.next,t.next=r,r};t.exports=function(){var t,e,r,n={assert:function(t){if(!n.has(t))throw new s(\"Side channel does not contain \"+o(t))},get:function(n){if(a&&n&&(\"object\"==typeof n||\"function\"==typeof n)){if(t)return c(t,n)}else if(u){if(e)return h(e,n)}else if(r)return function(t,e){var r=y(t,e);return r&&r.value}(r,n)},has:function(n){if(a&&n&&(\"object\"==typeof n||\"function\"==typeof n)){if(t)return f(t,n)}else if(u){if(e)return p(e,n)}else if(r)return function(t,e){return!!y(t,e)}(r,n);return!1},set:function(n,i){a&&n&&(\"object\"==typeof n||\"function\"==typeof n)?(t||(t=new a),l(t,n,i)):u?(e||(e=new u),d(e,n,i)):(r||(r={key:{},next:null}),function(t,e,r){var n=y(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(r,n,i))}};return n}},function(t,e,r){\"use strict\";var n=\"undefined\"!=typeof Symbol&&Symbol,i=r(141);t.exports=function(){return\"function\"==typeof n&&(\"function\"==typeof Symbol&&(\"symbol\"==typeof n(\"foo\")&&(\"symbol\"==typeof Symbol(\"bar\")&&i())))}},function(t,e,r){\"use strict\";t.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"==typeof Symbol.iterator)return!0;var t={},e=Symbol(\"test\"),r=Object(e);if(\"string\"==typeof e)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(e))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(t,e,r){\"use strict\";var n={foo:{}},i=Object;t.exports=function(){return{__proto__:n}.foo===n.foo&&!({__proto__:null}instanceof i)}},function(t,e,r){\"use strict\";var n=\"Function.prototype.bind called on incompatible \",i=Array.prototype.slice,o=Object.prototype.toString;t.exports=function(t){var e=this;if(\"function\"!=typeof e||\"[object Function]\"!==o.call(e))throw new TypeError(n+e);for(var r,s=i.call(arguments,1),a=function(){if(this instanceof r){var n=e.apply(this,s.concat(i.call(arguments)));return Object(n)===n?n:this}return e.apply(t,s.concat(i.call(arguments)))},u=Math.max(0,e.length-s.length),c=[],l=0;l-1?i(r):r}},function(t,e,r){\"use strict\";var n=r(45),i=r(44),o=i(\"%Function.prototype.apply%\"),s=i(\"%Function.prototype.call%\"),a=i(\"%Reflect.apply%\",!0)||n.call(s,o),u=i(\"%Object.getOwnPropertyDescriptor%\",!0),c=i(\"%Object.defineProperty%\",!0),l=i(\"%Math.max%\");if(c)try{c({},\"a\",{value:1})}catch(t){c=null}t.exports=function(t){var e=a(n,s,arguments);if(u&&c){var r=u(e,\"length\");r.configurable&&c(e,\"length\",{value:1+l(0,t.length-(arguments.length-1))})}return e};var f=function(){return a(n,o,arguments)};c?c(t.exports,\"apply\",{value:f}):t.exports.apply=f},function(t,e,r){var n=\"function\"==typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,\"size\"):null,o=n&&i&&\"function\"==typeof i.get?i.get:null,s=n&&Map.prototype.forEach,a=\"function\"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,\"size\"):null,c=a&&u&&\"function\"==typeof u.get?u.get:null,l=a&&Set.prototype.forEach,f=\"function\"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h=\"function\"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,d=\"function\"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,p=Boolean.prototype.valueOf,y=Object.prototype.toString,g=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,x=String.prototype.toLowerCase,_=RegExp.prototype.test,S=Array.prototype.concat,A=Array.prototype.join,E=Array.prototype.slice,k=Math.floor,T=\"function\"==typeof BigInt?BigInt.prototype.valueOf:null,C=Object.getOwnPropertySymbols,O=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?Symbol.prototype.toString:null,I=\"function\"==typeof Symbol&&\"object\"==typeof Symbol.iterator,P=\"function\"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===I||\"symbol\")?Symbol.toStringTag:null,R=Object.prototype.propertyIsEnumerable,j=(\"function\"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function M(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||_.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(\"number\"==typeof t){var n=t<0?-k(-t):k(t);if(n!==t){var i=String(n),o=b.call(e,i.length+1);return v.call(i,r,\"$&_\")+\".\"+v.call(v.call(o,/([0-9]{3})/g,\"$&_\"),/_$/,\"\")}}return v.call(e,r,\"$&_\")}var L=r(148),F=L.custom,N=q(F)?F:null;function D(t,e,r){var n=\"double\"===(r.quoteStyle||e)?\\'\"\\':\"\\'\";return n+t+n}function U(t){return v.call(String(t),/\"/g,\""\")}function B(t){return!(\"[object Array]\"!==W(t)||P&&\"object\"==typeof t&&P in t)}function G(t){return!(\"[object RegExp]\"!==W(t)||P&&\"object\"==typeof t&&P in t)}function q(t){if(I)return t&&\"object\"==typeof t&&t instanceof Symbol;if(\"symbol\"==typeof t)return!0;if(!t||\"object\"!=typeof t||!O)return!1;try{return O.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,i){var a=r||{};if(H(a,\"quoteStyle\")&&\"single\"!==a.quoteStyle&&\"double\"!==a.quoteStyle)throw new TypeError(\\'option \"quoteStyle\" must be \"single\" or \"double\"\\');if(H(a,\"maxStringLength\")&&(\"number\"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError(\\'option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`\\');var u=!H(a,\"customInspect\")||a.customInspect;if(\"boolean\"!=typeof u&&\"symbol\"!==u)throw new TypeError(\"option \\\\\"customInspect\\\\\", if provided, must be `true`, `false`, or `\\'symbol\\'`\");if(H(a,\"indent\")&&null!==a.indent&&\"\\\\t\"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError(\\'option \"indent\" must be \"\\\\\\\\t\", an integer > 0, or `null`\\');if(H(a,\"numericSeparator\")&&\"boolean\"!=typeof a.numericSeparator)throw new TypeError(\\'option \"numericSeparator\", if provided, must be `true` or `false`\\');var y=a.numericSeparator;if(void 0===e)return\"undefined\";if(null===e)return\"null\";if(\"boolean\"==typeof e)return e?\"true\":\"false\";if(\"string\"==typeof e)return function t(e,r){if(e.length>r.maxStringLength){var n=e.length-r.maxStringLength,i=\"... \"+n+\" more character\"+(n>1?\"s\":\"\");return t(b.call(e,0,r.maxStringLength),r)+i}return D(v.call(v.call(e,/([\\'\\\\\\\\])/g,\"\\\\\\\\$1\"),/[\\\\x00-\\\\x1f]/g,K),\"single\",r)}(e,a);if(\"number\"==typeof e){if(0===e)return 1/0/e>0?\"0\":\"-0\";var w=String(e);return y?M(e,w):w}if(\"bigint\"==typeof e){var _=String(e)+\"n\";return y?M(e,_):_}var k=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=k&&k>0&&\"object\"==typeof e)return B(e)?\"[Array]\":\"[Object]\";var C=function(t,e){var r;if(\"\\\\t\"===t.indent)r=\"\\\\t\";else{if(!(\"number\"==typeof t.indent&&t.indent>0))return null;r=A.call(Array(t.indent+1),\" \")}return{base:r,prev:A.call(Array(e+1),r)}}(a,n);if(void 0===i)i=[];else if(V(i,e)>=0)return\"[Circular]\";function F(e,r,o){if(r&&(i=E.call(i)).push(r),o){var s={depth:a.depth};return H(a,\"quoteStyle\")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,i)}return t(e,a,n+1,i)}if(\"function\"==typeof e&&!G(e)){var z=function(t){if(t.name)return t.name;var e=m.call(g.call(t),/^function\\\\s*([\\\\w$]+)/);if(e)return e[1];return null}(e),J=Q(e,F);return\"[Function\"+(z?\": \"+z:\" (anonymous)\")+\"]\"+(J.length>0?\" { \"+A.call(J,\", \")+\" }\":\"\")}if(q(e)){var tt=I?v.call(String(e),/^(Symbol\\\\(.*\\\\))_[^)]*$/,\"$1\"):O.call(e);return\"object\"!=typeof e||I?tt:$(tt)}if(function(t){if(!t||\"object\"!=typeof t)return!1;if(\"undefined\"!=typeof HTMLElement&&t instanceof HTMLElement)return!0;return\"string\"==typeof t.nodeName&&\"function\"==typeof t.getAttribute}(e)){for(var et=\"<\"+x.call(String(e.nodeName)),rt=e.attributes||[],nt=0;nt\",e.childNodes&&e.childNodes.length&&(et+=\"...\"),et+=\"\"}if(B(e)){if(0===e.length)return\"[]\";var it=Q(e,F);return C&&!function(t){for(var e=0;e=0)return!1;return!0}(it)?\"[\"+X(it,C)+\"]\":\"[ \"+A.call(it,\", \")+\" ]\"}if(function(t){return!(\"[object Error]\"!==W(t)||P&&\"object\"==typeof t&&P in t)}(e)){var ot=Q(e,F);return\"cause\"in Error.prototype||!(\"cause\"in e)||R.call(e,\"cause\")?0===ot.length?\"[\"+String(e)+\"]\":\"{ [\"+String(e)+\"] \"+A.call(ot,\", \")+\" }\":\"{ [\"+String(e)+\"] \"+A.call(S.call(\"[cause]: \"+F(e.cause),ot),\", \")+\" }\"}if(\"object\"==typeof e&&u){if(N&&\"function\"==typeof e[N]&&L)return L(e,{depth:k-n});if(\"symbol\"!==u&&\"function\"==typeof e.inspect)return e.inspect()}if(function(t){if(!o||!t||\"object\"!=typeof t)return!1;try{o.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var st=[];return s&&s.call(e,(function(t,r){st.push(F(r,e,!0)+\" => \"+F(t,e))})),Z(\"Map\",o.call(e),st,C)}if(function(t){if(!c||!t||\"object\"!=typeof t)return!1;try{c.call(t);try{o.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var at=[];return l&&l.call(e,(function(t){at.push(F(t,e))})),Z(\"Set\",c.call(e),at,C)}if(function(t){if(!f||!t||\"object\"!=typeof t)return!1;try{f.call(t,f);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return Y(\"WeakMap\");if(function(t){if(!h||!t||\"object\"!=typeof t)return!1;try{h.call(t,h);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return Y(\"WeakSet\");if(function(t){if(!d||!t||\"object\"!=typeof t)return!1;try{return d.call(t),!0}catch(t){}return!1}(e))return Y(\"WeakRef\");if(function(t){return!(\"[object Number]\"!==W(t)||P&&\"object\"==typeof t&&P in t)}(e))return $(F(Number(e)));if(function(t){if(!t||\"object\"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return $(F(T.call(e)));if(function(t){return!(\"[object Boolean]\"!==W(t)||P&&\"object\"==typeof t&&P in t)}(e))return $(p.call(e));if(function(t){return!(\"[object String]\"!==W(t)||P&&\"object\"==typeof t&&P in t)}(e))return $(F(String(e)));if(!function(t){return!(\"[object Date]\"!==W(t)||P&&\"object\"==typeof t&&P in t)}(e)&&!G(e)){var ut=Q(e,F),ct=j?j(e)===Object.prototype:e instanceof Object||e.constructor===Object,lt=e instanceof Object?\"\":\"null prototype\",ft=!ct&&P&&Object(e)===e&&P in e?b.call(W(e),8,-1):lt?\"Object\":\"\",ht=(ct||\"function\"!=typeof e.constructor?\"\":e.constructor.name?e.constructor.name+\" \":\"\")+(ft||lt?\"[\"+A.call(S.call([],ft||[],lt||[]),\": \")+\"] \":\"\");return 0===ut.length?ht+\"{}\":C?ht+\"{\"+X(ut,C)+\"}\":ht+\"{ \"+A.call(ut,\", \")+\" }\"}return String(e)};var z=Object.prototype.hasOwnProperty||function(t){return t in this};function H(t,e){return z.call(t,e)}function W(t){return y.call(t)}function V(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;r-1?t.split(\",\"):t},c=function(t,e,r,n){if(t){var o=r.allowDots?t.replace(/\\\\.([^.[]+)/g,\"[$1]\"):t,s=/(\\\\[[^[\\\\]]*])/g,a=r.depth>0&&/(\\\\[[^[\\\\]]*])/.exec(o),c=a?o.slice(0,a.index):o,l=[];if(c){if(!r.plainObjects&&i.call(Object.prototype,c)&&!r.allowPrototypes)return;l.push(c)}for(var f=0;r.depth>0&&null!==(a=s.exec(o))&&f=0;--o){var s,a=t[o];if(\"[]\"===a&&r.parseArrays)s=[].concat(i);else{s=r.plainObjects?Object.create(null):{};var c=\"[\"===a.charAt(0)&&\"]\"===a.charAt(a.length-1)?a.slice(1,-1):a,l=parseInt(c,10);r.parseArrays||\"\"!==c?!isNaN(l)&&a!==c&&String(l)===c&&l>=0&&r.parseArrays&&l<=r.arrayLimit?(s=[])[l]=i:\"__proto__\"!==c&&(s[c]=i):s={0:i}}i=s}return i}(l,e,r,n)}};t.exports=function(t,e){var r=function(t){if(!t)return s;if(null!==t.decoder&&void 0!==t.decoder&&\"function\"!=typeof t.decoder)throw new TypeError(\"Decoder has to be a function.\");if(void 0!==t.charset&&\"utf-8\"!==t.charset&&\"iso-8859-1\"!==t.charset)throw new TypeError(\"The charset option must be either utf-8, iso-8859-1, or undefined\");var e=void 0===t.charset?s.charset:t.charset;return{allowDots:void 0===t.allowDots?s.allowDots:!!t.allowDots,allowPrototypes:\"boolean\"==typeof t.allowPrototypes?t.allowPrototypes:s.allowPrototypes,allowSparse:\"boolean\"==typeof t.allowSparse?t.allowSparse:s.allowSparse,arrayLimit:\"number\"==typeof t.arrayLimit?t.arrayLimit:s.arrayLimit,charset:e,charsetSentinel:\"boolean\"==typeof t.charsetSentinel?t.charsetSentinel:s.charsetSentinel,comma:\"boolean\"==typeof t.comma?t.comma:s.comma,decoder:\"function\"==typeof t.decoder?t.decoder:s.decoder,delimiter:\"string\"==typeof t.delimiter||n.isRegExp(t.delimiter)?t.delimiter:s.delimiter,depth:\"number\"==typeof t.depth||!1===t.depth?+t.depth:s.depth,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:\"boolean\"==typeof t.interpretNumericEntities?t.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:\"number\"==typeof t.parameterLimit?t.parameterLimit:s.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:\"boolean\"==typeof t.plainObjects?t.plainObjects:s.plainObjects,strictNullHandling:\"boolean\"==typeof t.strictNullHandling?t.strictNullHandling:s.strictNullHandling}}(e);if(\"\"===t||null==t)return r.plainObjects?Object.create(null):{};for(var l=\"string\"==typeof t?function(t,e){var r,c={__proto__:null},l=e.ignoreQueryPrefix?t.replace(/^\\\\?/,\"\"):t,f=e.parameterLimit===1/0?void 0:e.parameterLimit,h=l.split(e.delimiter,f),d=-1,p=e.charset;if(e.charsetSentinel)for(r=0;r-1&&(g=o(g)?[g]:g),i.call(c,y)?c[y]=n.combine(c[y],g):c[y]=g}return c}(t,r):t,f=r.plainObjects?Object.create(null):{},h=Object.keys(l),d=0;d{e&&console.log(\"starting getPalette with image\",t);const{fileDirectory:r}=t,{BitsPerSample:n,ColorMap:i,ImageLength:o,ImageWidth:s,PhotometricInterpretation:a,SampleFormat:u,SamplesPerPixel:c}=r;if(!i)throw new Error(\"[geotiff-palette]: the image does not contain a color map, so we can\\'t make a palette.\");const l=Math.pow(2,n);e&&console.log(\"[geotiff-palette]: count:\",l);const f=i.length/3;if(e&&console.log(\"[geotiff-palette]: bandSize:\",f),f!==l)throw new Error(\"[geotiff-palette]: can\\'t handle situations where the color map has more or less values than the number of possible values in a raster\");const h=f,d=h+f,p=[];for(let t=0;te in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,c=(t,e)=>i(t,\"name\",{value:e,configurable:!0});const l=r(152),f=r(187),h=r(189),d=c(t=>new Array(t).fill(0).map((t,e)=>e),\"range\");function p(t,e={}){var r=e,{bands:n,height:i,precise:c=!1,stats:p,width:y,layout:g}=r,m=((t,e)=>{var r={};for(var n in t)s.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&o)for(var n of o(t))e.indexOf(n)<0&&a.call(t,n)&&(r[n]=t[n]);return r})(r,[\"bands\",\"height\",\"precise\",\"stats\",\"width\",\"layout\"]);if(\"function\"==typeof t.then)throw new Error(\"[calc-image-stats] you passed in a promise as the data values. please resolve the promise first before calling calcImageStats\");const b=f({bands:n,data:t,height:i,layout:g,width:y});null!=n||(n=b.bands),null!=i||(i=b.height),null!=g||(g=b.layout),null!=y||(y=b.width);const v=d(n).map(e=>{let r;const f=((t,e)=>{for(var r in e||(e={}))s.call(e,r)&&u(t,r,e[r]);if(o)for(var r of o(e))a.call(e,r)&&u(t,r,e[r]);return t})({precise:c,stats:p},m);if([\"[band][row,column]\",\"[band][column,row]\"].includes(g))r=t[e];else if([\"[band][row][column]\",\"[band][column][row]\"].includes(g))r=t[e],f.chunked=!0;else if(1===n&&[\"[band,row,column]\",\"[row,column,band]\",\"[column,band,row]\",\"[column,row,band]\"].includes(g))r=t;else{const o={band:[e,e]},s={band:n,column:y,row:i};r=h.iterClip({data:t,layout:g,rect:o,sizes:s})}return l(r,f)});return{depth:n,height:i,width:y,bands:v}}c(p,\"calcImageStats\"),void 0!==(n=function(){return p}.call(e,r,e,t))&&(t.exports=n),t.exports=p,t.exports.default=p,t.exports.calcImageStats=p,\"object\"==typeof self&&(self.calcImageStats=p),\"object\"==typeof window&&(self.calcImageStats=p)},function(t,e,r){var n;const{getOrCreateIterator:i}=r(72),{add:o,compare:s,divide:a,mean:u,multiply:c,pow:l,sort:f,subtract:h,sum:d}=r(153),p=r(176);function y(t,{async:e=!1,chunked:r=!1,noData:n,filter:d,calcCount:y=!0,calcHistogram:g=!0,calcInvalid:m=!0,calcMax:b=!0,calcMean:v=!0,calcMedian:w=!0,calcMin:x=!0,calcMode:_=!0,calcModes:S=!0,calcProduct:A=!0,calcRange:E=!0,calcStd:k=!0,calcSum:T=!0,calcValid:C=!0,calcVariance:O=!0,calcUniques:I=!0,precise:P=!1,precise_max_decimal_digits:R=100,stats:j}={debugLevel:0}){j&&(j.forEach(t=>{[\"count\",\"histogram\",\"invalid\",\"max\",\"mean\",\"median\",\"min\",\"mode\",\"modes\",\"product\",\"range\",\"sum\",\"std\",\"valid\",\"variance\",\"uniques\"].includes(t)||console.warn(`[calc-stats] skipping unknown stat \"${t}\"`)}),y=j.includes(\"count\"),g=j.includes(\"histogram\"),m=j.includes(\"invalid\"),b=j.includes(\"max\"),v=j.includes(\"mean\"),w=j.includes(\"median\"),x=j.includes(\"min\"),_=j.includes(\"mode\"),S=j.includes(\"modes\"),A=j.includes(\"product\"),E=j.includes(\"range\"),k=j.includes(\"std\"),T=j.includes(\"sum\"),C=j.includes(\"valid\"),O=j.includes(\"variance\"),I=j.includes(\"uniques\"));const M=i(t);let L,F,N,D=g||w||_||S||O||k||I,U=y||v||w||A||C||O||k||\"function\"==typeof d,B=y||m||\"function\"==typeof d,G=T||v||O||k,q=x||E,z=b||E,H=A,W=0,V=0,K=0,$=P?\"0\":0;const Y={};let Z,X;Z=P?t=>{t=t.toString(),U&&W++,!q||void 0!==L&&\"<\"!==s(t,L)||(L=t),!z||void 0!==F&&\">\"!==s(t,F)||(F=t),H&&(N=1===W?t:c(N,t)),G&&($=o($,t)),D&&(t in Y?Y[t].ct++:Y[t]={n:t.toString(),ct:1})}:t=>{U&&W++,q&&(void 0===L||tF)&&(F=t),H&&(N=1===W?t:N*t),G&&($+=t),D&&(t in Y?Y[t].ct++:Y[t]={n:t,ct:1})},X=\"number\"==typeof n&&\"function\"==typeof d?t=>{K++,\"number\"!=typeof t||isNaN(t)||t===n||!0!==d({valid:W,index:K,value:t})?B&&V++:Z(t)}:\"number\"==typeof n?t=>{\"number\"!=typeof t||isNaN(t)||t===n?B&&V++:Z(t)}:\"function\"==typeof d?t=>{K++,\"number\"!=typeof t||isNaN(t)||!0!==d({valid:W,index:K,value:t})?B&&V++:Z(t)}:t=>{\"number\"!=typeof t||isNaN(t)?B&&V++:Z(t)};const Q=()=>{const t={};if(y&&(t.count=P?o(V.toString(),W.toString()):V+W),C&&(t.valid=P?W.toString():W),m&&(t.invalid=P?V.toString():V),w&&(t.median=p.calculate({counts:Y,precise:P,total:W})),x&&(t.min=L),b&&(t.max=F),A&&(t.product=N),T&&(t.sum=$),E&&(t.range=P?h(F.toString(),L.toString()):F-L),v||O||k){const e=P?a($,W.toString(),{max_decimal_digits:R}):$/W;if(v&&(t.mean=e),O||k){const r=(({count:t,histogram:e,mean_value:r,precise:n=!1})=>{if(n){r=r.toString();const n=Object.values(e).reduce((t,{n:e,ct:n})=>{const i=h(e.toString(),r);return o(t,c(n.toString(),l(i,\"2\")))},\"0\");return a(n,t.toString())}return Object.values(e).reduce((t,{n:e,ct:n})=>t+n*Math.pow(e-r,2),0)/t})({count:W,histogram:Y,mean_value:e,precise:P});O&&(t.variance=r),k&&(t.std=P?Math.sqrt(Number(r)).toString():Math.sqrt(r))}}if(g&&(P&&Object.values(Y).forEach(t=>{t.ct=t.ct.toString()}),t.histogram=Y),_||S){let e=0,r=[];for(let t in Y){const{n:n,ct:i}=Y[t];i===e?r.push(P?n.toString():n):i>e&&(e=i,r=[P?n.toString():n])}S&&(t.modes=r),_&&(t.mode=P?u(r):r.reduce((t,e)=>t+e,0)/r.length)}return I&&(t.uniques=P?f(Object.keys(Y)):Object.values(Y).map(({n:t})=>t).sort((t,e)=>t-e)),t};if(r){if(e)return(async()=>{for await(let t of M)for(let e of t)X(e);return Q()})();for(let t of M)for(let e of t)X(e);return Q()}if(e)return(async()=>{for await(let t of M)X(t);return Q()})();for(let t of M)X(t);return Q()}void 0===(n=function(){return y}.call(e,r,e,t))||(t.exports=n),t.exports=y,t.exports.default=y,t.exports.calcStats=y,\"object\"==typeof self&&(self.calcStats=y),\"object\"==typeof window&&(window.calcStats=y)},function(t,e,r){\"use strict\";var n;const i=r(4),o=r(6),s=r(154),a=r(76),u=r(0),c=r(34),l=r(5),f=r(156),h=r(158),d=r(51),p=r(84),y=r(162),g=r(163),m=r(1),b=r(88),v=r(89),w=r(73),x=r(75),_=r(164),S=r(165),A=r(77),E=r(166),k=r(167),T=r(15),C=r(16),O=r(90),I=r(91),P=r(11),R=r(8),j=r(32),M=r(48),L=r(31),F=r(168),N={absolute:i,add:o,binomial_coefficient:s,ceil:a,clean:u,compare:c,compare_positive:l,constants:f,cosine_radians:h,count_decimal_digits:d,count_integer_digits:p,cube:y,cube_root:g,divide:m,eulers_number:b,exp:v,expand:w,factorial:x,flip_sign:_,floor:S,fraction:A,hypotenuse:E,is_infinity:T,is_integer:C,is_factorial:k,is_negative_infinity:O,is_positive_infinity:I,is_zero:P,long_addition:R,long_division:j,long_multiplication:M,long_subtraction:L,mean:r(169),max:F,min:r(86),multiply:r(53),multiply_array:r(79),multiply_range:r(47),nilakantha:r(170),ols:r(171),pow:r(35),pow_positive:r(54),primes:r(87),reciprocal:r(81),remainder:r(172),root:r(37),root_integer_digits:r(83),round:r(36),round_last_decimal:r(49),sign:r(22),sign_nonzero:r(50),simplify_fraction:r(85),sine_radians:r(173),softmax:r(174),sort:r(175),square:r(23),square_root:r(92),subtract:r(33),sum:r(55),truncate:r(93)};void 0===(n=function(){return N}.call(e,r,e,t))||(t.exports=n),t.exports=N,t.exports.default=N,\"object\"==typeof window&&(window.preciso=N),\"object\"==typeof self&&(self.preciso=N)},function(t,e,r){\"use strict\";const n=r(0),i=r(5),o=r(75),s=r(8),a=r(31),u=r(32),c=r(47);function l(t,e){switch(t=n(t),e=n(e),i(t,e)){case\"=\":return\"1\";case\">\":{const r=a(t,e),n=c(s(e,\"1\"),t),i=o(r);return u(n,i)}case\"<\":throw new Error(\"[binominal_coefficient] unsupported\")}}t.exports=l,t.exports.default=l},function(t,e,r){\"use strict\";function n(t){return t.substring(0,t.indexOf(\".\"))}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const{MAX_SAFE_INTEGER:n}=r(74),{MAX_SAFE_INTEGER_LENGTH:i}=r(30),{PI:o}=r(157);t.exports={MAX_SAFE_INTEGER:n,MAX_SAFE_INTEGER_LENGTH:i,PI:o}},function(t,e){t.exports={PI_100:\"3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679\"}},function(t,e,r){\"use strict\";const n=r(6),i=r(11),o=r(23),s=r(17),a=r(1);function u(t,{steps:e=100,max_decimal_digits:r=100}={}){if(i(t))return\"0\";let u,c=\"-\",l=\"1\",f=e,h=o(t),d=\"1\",p=\"1\",y=\"0\";for(let t=0;tn(t));return i(o(s),e)}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";function n(t){return!!t.match(/^\\\\d+!$/i)}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const n=r(0),i=r(34);function o(t){\"string\"==typeof t&&(t=Array.prototype.slice.call(arguments));let e=n(t[0]);const r=t.length;for(let n=1;n\"===i(r,e)&&(e=r)}return e}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(6),i=r(1);function o(t,e){let r=0,o=\"0\";for(let e of t)r++,o=n(o,e);return i(o,r.toString(),e)}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(6),i=r(8),o=r(1),s=r(17);function a(t=100,{divide_options:e}={}){let r=\"+\",a=\"3\",u=\"2\",c=\"3\",l=\"4\";for(let f=1;fi(t,{max_decimal_digits:e}));const r=o(t);return t.map(t=>n(t,r,{max_decimal_digits:e,ellipsis:!1}))}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";const n=r(34);function i(t,{direction:e=\"ascending\"}={direction:\"ascending\"}){const r=\"desc\"===e||\"descending\"===e?\"<\":\">\";return t.sort((t,e)=>n(t,e)===r?1:-1)}t.exports=i,t.exports.default=i},function(t,e,r){var n;const i=r(177),o=r(186);function s({counts:t,nums:e,no_data:r,precise:n,threshold:s=50,total:a}){return void 0!==t||void 0!==a||e.length>s?i({counts:t,no_data:r,nums:e,precise:n,total:a}):o({no_data:r,nums:e,precise:n})}const a={calculate:s};void 0===(n=function(){return a}.call(e,r,e,t))||(t.exports=n),t.exports=a,t.exports.default={calculate:s},\"object\"==typeof window&&(window.mediana=a),\"object\"==typeof self&&(self.mediana=a)},function(t,e,r){const n=r(178),i=r(94);function o({counts:t,nums:e,no_data:r,precise:o=!1,total:s}){void 0!==t&&void 0!==s||({counts:t,total:s}=n({nums:e,no_data:r}));const a=Object.values(t).sort((t,e)=>t.n-e.n),u=s/2,c=a.length;if(0!==c){if(1===c)return o?a[0].n.toString():a[0].n;{let t=0;if(s%2==0)for(let e=0;eu)return t-n===u?i(a[e-1].n,r,{precise:o}):o?r.toString():r}else for(let e=0;eu)return o?r.toString():r}}}}t.exports=o,t.exports.default=o},function(t,e){function r({nums:t,no_data:e}){let r=t.length;const n={};let i=0;if(void 0!==e)for(let o=0;o=a){const t=s-a;let r=o;for(let e=0;es;t--)result+=\"0\";return result+=o,e+result}return e+o.substring(0,s)+\".\"+o.substring(s)}t.exports=r,t.exports.default=r},function(t,e,r){const n=r(98),i=r(18),o=r(181);function s(t,e,r){if(t=i(t),\"0\"===(e=i(e)))throw new Error(\"[preciso] division by zero\");if(\"\"===t||\"0\"===t)return\"0\";const s=\"-\"!==t[0],a=\"-\"!==e[0],u=s!==a?\"-\":\"\";return s||(t=n(t)),a||(e=n(e)),u+o(t,e,r)}t.exports=s,t.exports.default=s},function(t,e,r){const n=r(38),i=r(95),o=(r(182),r(184)),s=r(185);t.exports=function(t,e,{max_decimal_digits:r=100,ellipsis:a=!1}={}){\"0\"===t[0]&&(t=t.substring(1)),\"0\"===e[0]&&(e=e.substring(1));const u=t.indexOf(\".\"),c=e.indexOf(\".\"),l=-1===u?t.length:u,f=-1===c?0:e.length-1-c;let h=!1;t=t.replace(/\\\\./,\"\"),e=e.replace(/\\\\./,\"\");const d=t.length;let p,y=\"\",g=\"\",m=-1*f,b=0;for(let r=0;r\"===p){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,y);)t++,s=r,r=i(r,e);if(t=t.toString(),\"\"!==g)for(let e=t.length;e<=b;e++)g+=\"0\";g+=t,y=o(y,s),b=0}else{if(\"<\"===p){\"\"===g&&m++,b++;continue}if(\"=\"===p){if(\"\"!==g)for(let t=0;t3){g+=\"...\",h=!0;break}}else t[y]=1;const r=n(y,e);if(\">\"===r){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,y);)t++,s=r,r=i(r,e);t=t.toString();for(let e=t.length;e<=b;e++)g+=\"0\";if(g+=t,y=o(y,s),\"0\"===y)break;b=0}else{if(\"<\"===r){b++;continue}if(\"=\"===r){for(let t=0;tw){for(let t=w;t0&&(g=s(g.substring(0,g.length-t+1)))}return\".\"===g[0]&&(g=\"0\"+g),g}},function(t,e,r){const n=r(98),i=r(18),o=r(38),s=r(183);function a(t,e){t=i(t),e=i(e);const r=\"-\"!==t[0]!==(\"-\"!==e[0])?\"-\":\"\";t=n(t),e=n(e);if(\"<\"===o(t,e)){const r=t;t=e,e=r}return r+s(t,e)}t.exports=a,t.exports.default=a},function(t,e,r){const{MAX_SAFE_INTEGER_LENGTH:n}=r(56);t.exports=function(t,e){if(\"0\"===t||\"0\"===e)return\"0\";const r=t.indexOf(\".\"),i=e.indexOf(\".\"),o=(-1===r?t.length:r)+(-1===i?e.length:i),s=(-1===r?0:t.length-1-r)+(-1===i?0:e.length-1-i);if(0===s&&o=0;){const t=h,e=h-=15,r=a.substring(e,t);f.push([Number(r),r.length])}const d=[],p=[];for(let t=0,e=l-1;e>=0;e--,t++){const r=u[e],n=Number(r);let i=0,o=\"\";const s=f.length-1;f.forEach(([t,e],r)=>{let a=(i+n*t).toString();const u=a.length;if(u>e&&r!==s){const t=-1*e;o=a.slice(t)+o,i=Number(a.slice(0,t))}else{const t=e-u;for(let e=0;eNumber(t)),o.length])}const y=d.length,g=p[p.length-1][1]+y;let m=\"\",b=0;for(let t=0;t=0&&(e+=r[o])}e>=10?(e=e.toString(),m=e[e.length-1]+m,b=Number(e.slice(0,-1))):(m=e+m,b=0)}if(0===s)m=m.replace(/^0+/,\"\");else{const t=m.length-s;m=m.substring(0,t)+\".\"+m.substring(t),m=m.replace(/^0+/,\"\"),m=m.replace(/\\\\.?0+$/,\"\"),\".\"===m[0]&&(m=\"0\"+m)}return m}},function(t,e,r){const n=r(18),i=r(38),o=r(96),s=r(97);function a(t,e){t=n(t),e=n(e);const r=\"-\"!==t[0],a=\"-\"!==e[0];if(r){if(a){const r=i(t,e);return\">\"===r?s(t,e):\"<\"===r?\"-\"+s(e,t):\"0\"}return o(t,e.substring(1))}if(a)return\"-\"+o(t.substring(1),e);{t=t.substring(1),e=e.substring(1);const r=i(t,e);return\">\"===r?\"-\"+s(t,e):\"<\"===r?s(e,t):\"0\"}}t.exports=a,t.exports.default=a},function(t,e){const r=[\"5\",\"6\",\"7\",\"8\",\"9\"];t.exports=function(t){\"+\"===t[0]&&(t=t.substring(1));const e=t.length;let n=\"\";const i=t[t.length-1];if(r.includes(i)){let r;for(r=e-2;r>=0;r--){const e=t[r];if(\".\"===e||\"-\"===e)continue;const i=Number(e)+1;if(10!==i){n=i+n;break}n=\"0\"+n}r>0&&(n=t.substring(0,r)+n)}else n=t.substring(0,e-1);return\".\"===n[n.length-1]&&(n=n.substring(0,n.length-1)),n.indexOf(\".\")>-1&&(n=n.replace(/0+$/,\"\")),n}},function(t,e,r){const n=r(94);function i({nums:t,no_data:e,precise:r=!1}){switch((t=t.filter(t=>t!==e).sort((t,e)=>t-e)).length){case 0:return;case 1:return r?t[0].toString():t[0];default:const e=t.length/2;if(t.length%2==0)return n(t[e-1],t[e],{precise:r});{const n=Math.floor(e);return r?t[n].toString():t[n]}}}t.exports=i,t.exports.default=i},function(t,e,r){var n;const i=r(188);function o({bands:t,data:e,height:r,layout:n,width:o}){const s=i(e);if(\"[row,column,band]\"===n||1===s)return{layout:\"[row,column,band]\",bands:t||(r&&o?e.length/(r*o):void 0),height:r||(t&&o?e.length/(t*o):void 0),width:o||(t&&r?e.length/(t*r):void 0)};if(2===s){if(!r||!o)return e.lengthArray.isArray(t)||t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array||t instanceof BigInt64Array||t instanceof BigUint64Array;let r=0,n=t;for(;e(n);)r++,n=n[0];return r}},function(t,e,r){const n={},{wrapNextFunction:i}=r(72),o=r(190),s=r(191),a={Array:Array,Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Float32Array:Float32Array,Float64Array:Float64Array};try{a.BigInt64Array=BigInt64Array,a.BigUint64Array=BigUint64Array}catch(t){}const u=t=>t.match(/\\\\[[^\\\\]]+\\\\]/g),c=t=>t.startsWith(\"[\")&&t.endsWith(\"]\")?t.substring(1,t.length-1):t,l=t=>t.startsWith(\"(\")&&t.endsWith(\")\")?t.substring(1,t.length-1):t,f=t=>t.match(/(\\\\(.*?\\\\)|[^\\\\(,\\\\s]+)(?=\\\\s*,|\\\\s*$)/g),h=t=>{t=c(t),t=l(t);const e=f(t);return 1===e.length?{type:\"Vector\",dim:e[0]}:{type:\"Matrix\",parts:e.map(h)}};function d(t){const e=t.match(/[^ A-Za-z,\\\\[\\\\]]/g);if(e)throw new Error(\"The following invalid characters were used: \"+e.map(t=>`\"${t}\"`).join(\", \"));return!0}function p(t,{useLayoutCache:e=!0}={useLayoutCache:!0}){if(e&&t in n)return n[t];d(t);const r=u(t).map(h),i={type:\"Layout\",summary:r.map(t=>\"Matrix\"===t.type?t.parts.length:1),dims:r};return e&&(n[t]=i),i}function y({useLayoutCache:t=!0,data:e,layout:r,sizes:n={}}){\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));const{dims:i}=r,o=i.length,a=m({useLayoutCache:t,layout:r,sizes:n}),u=o-1,c=r.summary.toString();if(c in s){const t={data:e};return r.dims.map((e,r)=>{\"Vector\"===e.type?t[`d${r}v0`]=e.dim:\"Matrix\"===e.type&&e.parts.forEach((e,n)=>{t[`d${r}v${n}`]=e.dim,t[`m${r}v${n}`]=a[e.dim]})}),s[c].bind(t)}return({point:t,value:r})=>{let n=e;for(let e=0;ee+a[r]*t[r],0),o?n[c]=r:n=n[c]}}}function g({rect:t={}}){if(t)for(let e in t){const r=t[e];if(2!==r.length)throw new Error(\"[xdim] uh oh. invalid hyper-rectangle\");const[n,i]=r;if(n>i)throw new Error(`[xdim] uh oh. invalid range for \"${e}\". Start of ${n} can\\'t be greater than end of ${i}.`);if(n<0)throw new Error(\"[xdim] uh oh. invalid hyper-rectangle with start \"+n)}}function m({useLayoutCache:t=!0,layout:e,sizes:r}){\"string\"==typeof e&&(e=p(e,{useLayoutCache:t}));const{dims:n}=e,i=n.length;let o={};for(let t=0;t=0;e--){const{dim:i}=t[e];o[i]=n,n*=r[t[e].dim]}}}return o}function b({useLayoutCache:t=!0,data:e,layout:r,point:n,sizes:i={}}){let o,s;\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));let a=e;const{dims:u}=r,c=u.length;for(let t=0;t=0;e--){const o=t[e];if(\"Vector\"===o.type){const{dim:t}=o;if(r+=u*n[t],e>0){if(!(t in i))throw new Error(`you cannot calculate the location without knowing the size of the \"${t}\" dimension.`);u*=i[t]}}}o=a,s=r,a=a[r]}}return{index:s,value:a,parent:o}}function v({arr:t,fill:e,lens:r,arrayTypes:n}){if(0===r.length)return t;const i=r[0];if(1===r.length){const r=n?n[n.length-1]:\"Array\";for(let n=0;n\"Vector\"===t.type?n[t.dim]:\"Matrix\"===t.type?t.parts.reduce((t,e)=>{if(!(e.dim in n))throw new Error(`[xdim] could not find \"${e.dim}\" in sizes: { ${Object.keys(n).join(\", \")} }`);return t*n[e.dim]},1):void 0);return{data:w({fill:t,shape:o,arrayTypes:i}),shape:o,arrayTypes:i}}function _({start:t=0,end:e=100}){let r=t-1;return e+=1,i((function(){return r++,r===e?{done:!0}:{done:!1,value:r}}))}function S({order:t,sizes:e,rect:r={}}){const n=Array.isArray(t)?t:Object.keys(e).sort((t,r)=>e[t]-e[r]),o=new Array(n.length),s={};for(let t=0;t=0;t--){const{value:i,done:a}=o[t].next();if(!a){for(let i=t+1;i{\"Vector\"===e.type?t[`d${r}v0`]=e.dim:\"Matrix\"===e.type&&e.parts.forEach((e,n)=>{t[`d${r}v${n}`]=e.dim,t[`m${r}v${n}`]=a[e.dim]})}),o[c].bind(t)}return({point:t})=>{let r=e;for(let e=0;ee+a[r]*t[r],0),n)return{index:s,parent:r,value:r[s]};r=r[s]}}},prepareUpdate:y,removeBraces:c,removeParentheses:l,select:b,transform:function({data:t,fill:e,from:r,to:n,sizes:i,useLayoutCache:o=!0}){\"string\"==typeof r&&(r=p(r,{useLayoutCache:o})),\"string\"==typeof n&&(n=p(n,{useLayoutCache:o}));const{data:s}=x({fill:e,layout:n,sizes:i}),a=y({useLayoutCache:o,data:s,layout:n,sizes:i}),u=S({sizes:i});for(point of u){const{value:e}=b({data:t,layout:r,point:point,sizes:i});a({point:point,value:e})}return{data:s}},update:function({useLayoutCache:t=!0,data:e,layout:r,point:n,sizes:i={},value:o}){\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));const{dims:s}=r;for(let t=0;t=0;r--){const o=t[r],{dim:s}=o;if(u+=e*n[s],r>0){if(!(s in i))throw new Error(`you cannot calculate the location without knowing the size of the \"${s}\" dimension.`);e*=i[s]}}}r?e[u]=o:e=e[u]}},clip:function({useLayoutCache:t=!0,data:e,layout:r,rect:n,sizes:i={},flat:o=!1,validate:s=!0}){s&&g({rect:n}),\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));let a=[e];if(r.dims.forEach(t=>{let e=[];a.forEach(r=>{if(\"Vector\"===t.type){const[i,o]=n[t.dim];e=e.concat(r.slice(i,o+1))}else{const{parts:o}=t;let s=[0],a=1;for(let t=o.length-1;t>=0;t--){const e=o[t],{dim:r}=e,[u,c]=n[r],l=[];for(let t=u;t<=c;t++)s.forEach(e=>{l.push(e+a*t)});s=l,a*=i[r]}s.forEach(t=>{e.push(r[t])})}}),a=e}),o)return{data:a};const u=Object.fromEntries(Object.entries(n).map(([t,[e,r]])=>[t,r-e+1])),{data:c}=x({layout:r,sizes:u}),l=r.dims.length,f=(t,e)=>{if(e===l)for(let e=0;ef(t,e+1))};return f(c,1),{data:c}},validateRect:g}},function(t,e){t.exports={1:function({point:t}){const e=this.data,r=t[this.d0v0];return{parent:e,index:r,value:e[r]}},2:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1];return{parent:e,index:r,value:e[r]}},3:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2];return{parent:e,index:r,value:e[r]}},4:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3];return{parent:e,index:r,value:e[r]}},5:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]+this.m0v4*t[this.d0v4];return{parent:e,index:r,value:e[r]}},\"1,1\":function({point:t}){const e=this.data[t[this.d0v0]],r=t[this.d1v0];return{parent:e,index:r,value:e[r]}},\"1,2\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1];return{parent:e,index:r,value:e[r]}},\"1,3\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2];return{parent:e,index:r,value:e[r]}},\"1,4\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3];return{parent:e,index:r,value:e[r]}},\"1,5\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]+this.m1v4*t[this.d1v4];return{parent:e,index:r,value:e[r]}},\"1,1,1\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=t[this.d2v0];return{parent:e,index:r,value:e[r]}},\"1,1,2\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1];return{parent:e,index:r,value:e[r]}},\"1,1,3\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2];return{parent:e,index:r,value:e[r]}},\"1,1,4\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3];return{parent:e,index:r,value:e[r]}},\"1,1,5\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]+this.m2v4*t[this.d2v4];return{parent:e,index:r,value:e[r]}},\"1,1,1,1\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=t[this.d3v0];return{parent:e,index:r,value:e[r]}},\"1,1,1,2\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1];return{parent:e,index:r,value:e[r]}},\"1,1,1,3\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2];return{parent:e,index:r,value:e[r]}},\"1,1,1,4\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3];return{parent:e,index:r,value:e[r]}},\"1,1,1,5\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]+this.m3v4*t[this.d3v4];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,1\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=t[this.d4v0];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,2\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,3\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,4\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,5\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]+this.m4v4*t[this.d4v4];return{parent:e,index:r,value:e[r]}}}},function(t,e){t.exports={1:function({point:t,value:e}){this.data[t[this.d0v0]]=e},2:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]]=e},3:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]]=e},4:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]]=e},5:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]+this.m0v4*t[this.d0v4]]=e},\"1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]]=e},\"1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]]=e},\"1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]]=e},\"1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]]=e},\"1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]+this.m1v4*t[this.d1v4]]=e},\"1,1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]]=e},\"1,1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]]=e},\"1,1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]]=e},\"1,1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]]=e},\"1,1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]+this.m2v4*t[this.d2v4]]=e},\"1,1,1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]]=e},\"1,1,1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]]=e},\"1,1,1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]]=e},\"1,1,1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]]=e},\"1,1,1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]+this.m3v4*t[this.d3v4]]=e},\"1,1,1,1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][t[this.d4v0]]=e},\"1,1,1,1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]]=e},\"1,1,1,1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]]=e},\"1,1,1,1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]]=e},\"1,1,1,1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]+this.m4v4*t[this.d4v4]]=e}}},function(t,e,r){\"use strict\";t.exports={countIn1D:function(t){return t.reduce((function(t,e){return void 0===t[e]?t[e]=1:t[e]++,t}),{})},countIn2D:function(t){return t.reduce((function(t,e){return e.forEach((function(e){void 0===t[e]?t[e]=1:t[e]++})),t}),{})},unflatten:function(t,e){for(var r=e.height,n=e.width,i=[],o=0;o>24)/500+a,c=a-(t[e+2]<<24>>24)/200;u=.95047*(u*u*u>.008856?u*u*u:(u-16/116)/7.787),a=1*(a*a*a>.008856?a*a*a:(a-16/116)/7.787),c=1.08883*(c*c*c>.008856?c*c*c:(c-16/116)/7.787),i=3.2406*u+-1.5372*a+-.4986*c,o=-.9689*u+1.8758*a+.0415*c,s=.0557*u+-.204*a+1.057*c,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,n[r]=255*Math.max(0,Math.min(1,i)),n[r+1]=255*Math.max(0,Math.min(1,o)),n[r+2]=255*Math.max(0,Math.min(1,s))}return n}function S(t,e){let r=t.length-e,n=0;do{for(let r=e;r>0;r--)t[n+e]+=t[n],n++;r-=e}while(r>0)}function A(t,e,r){let n=0,i=t.length;const o=i/r;for(;i>e;){for(let r=e;r>0;--r)t[n+e]+=t[n],++n;i-=e}const s=t.slice();for(let e=0;e=t.byteLength);++o){let n;if(2===e){switch(i[0]){case 8:n=new Uint8Array(t,o*a*r*s,a*r*s);break;case 16:n=new Uint16Array(t,o*a*r*s,a*r*s/2);break;case 32:n=new Uint32Array(t,o*a*r*s,a*r*s/4);break;default:throw new Error(`Predictor 2 not allowed with ${i[0]} bits per sample.`)}S(n,a)}else 3===e&&(n=new Uint8Array(t,o*a*r*s,a*r*s),A(n,a,s))}return t}(r,n,e?t.TileWidth:t.ImageWidth,e?t.TileLength:t.RowsPerStrip||t.ImageLength,t.BitsPerSample,t.PlanarConfiguration)}return r}}class k extends E{decodeBlock(t){return t}}function T(t,e){for(let r=e.length-1;r>=0;r--)t.push(e[r]);return t}function C(t){const e=new Uint16Array(4093),r=new Uint8Array(4093);for(let t=0;t<=257;t++)e[t]=4096,r[t]=t;let n=258,i=9,o=0;function s(){n=258,i=9}function a(t){const e=function(t,e,r){const n=e%8,i=Math.floor(e/8),o=8-n,s=e+r-8*(i+1);let a=8*(i+2)-(e+r);const u=8*(i+2)-e;if(a=Math.max(0,a),i>=t.length)return console.warn(\"ran off the end of the buffer before finding EOI_CODE (end on input code)\"),257;let c=t[i]&2**(8-n)-1;c<<=r-o;let l=c;if(i+1>>a;e<<=Math.max(0,r-u),l+=e}if(s>8&&i+2>>n}return l}(t,o,i);return o+=i,e}function u(t,i){return r[n]=i,e[n]=t,n++,n-1}function c(t){const n=[];for(let i=t;4096!==i;i=e[i])n.push(r[i]);return n}const l=[];s();const f=new Uint8Array(t);let h,d=a(f);for(;257!==d;){if(256===d){for(s(),d=a(f);256===d;)d=a(f);if(257===d)break;if(d>256)throw new Error(\"corrupted code at scanline \"+d);T(l,c(d)),h=d}else if(d=2**i&&(12===i?h=void 0:i++),d=a(f)}return new Uint8Array(l)}class O extends E{decodeBlock(t){return C(t).buffer}}const I=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);function P(t,e){let r=0;const n=[];let i=16;for(;i>0&&!t[i-1];)--i;n.push({children:[],index:0});let o,s=n[0];for(let a=0;a0;)s=n.pop();for(s.index++,n.push(s);n.length<=a;)n.push(o={children:[],index:0}),s.children[s.index]=o.children,s=o;r++}a+10)return p--,d>>p&1;if(d=t[h++],255===d){const e=t[h++];if(e)throw new Error(\"unexpected marker: \"+(d<<8|e).toString(16))}return p=7,d>>>7}function g(t){let e,r=t;for(;null!==(e=y());){if(r=r[e],\"number\"==typeof r)return r;if(\"object\"!=typeof r)throw new Error(\"invalid huffman sequence\")}return null}function m(t){let e=t,r=0;for(;e>0;){const t=y();if(null===t)return;r=r<<1|t,--e}return r}function b(t){const e=m(t);return e>=1<0)return void v--;let r=o;const n=s;for(;r<=n;){const n=g(t.huffmanTableAC),i=15&n,o=n>>4;if(0===i){if(o<15){v=m(o)+(1<>4,0===r)i<15?(v=m(i)+(1<>4;if(0===n){if(o<15)break;i+=16}else{i+=o;e[I[i]]=b(n),i++}}};let R,j,M=0;j=1===A?n[0].blocksPerLine*n[0].blocksPerColumn:c*r.mcusPerColumn;const L=i||j;for(;M=65488&&R<=65495))break;h+=2}return h-f}function j(t,e){const r=[],{blocksPerLine:n,blocksPerColumn:i}=e,o=n<<3,s=new Int32Array(64),a=new Uint8Array(64);function u(t,r,n){const i=e.quantizationTable;let o,s,a,u,c,l,f,h,d;const p=n;let y;for(y=0;y<64;y++)p[y]=t[y]*i[y];for(y=0;y<8;++y){const t=8*y;0!==p[1+t]||0!==p[2+t]||0!==p[3+t]||0!==p[4+t]||0!==p[5+t]||0!==p[6+t]||0!==p[7+t]?(o=5793*p[0+t]+128>>8,s=5793*p[4+t]+128>>8,a=p[2+t],u=p[6+t],c=2896*(p[1+t]-p[7+t])+128>>8,h=2896*(p[1+t]+p[7+t])+128>>8,l=p[3+t]<<4,f=p[5+t]<<4,d=o-s+1>>1,o=o+s+1>>1,s=d,d=3784*a+1567*u+128>>8,a=1567*a-3784*u+128>>8,u=d,d=c-f+1>>1,c=c+f+1>>1,f=d,d=h+l+1>>1,l=h-l+1>>1,h=d,d=o-u+1>>1,o=o+u+1>>1,u=d,d=s-a+1>>1,s=s+a+1>>1,a=d,d=2276*c+3406*h+2048>>12,c=3406*c-2276*h+2048>>12,h=d,d=799*l+4017*f+2048>>12,l=4017*l-799*f+2048>>12,f=d,p[0+t]=o+h,p[7+t]=o-h,p[1+t]=s+f,p[6+t]=s-f,p[2+t]=a+l,p[5+t]=a-l,p[3+t]=u+c,p[4+t]=u-c):(d=5793*p[0+t]+512>>10,p[0+t]=d,p[1+t]=d,p[2+t]=d,p[3+t]=d,p[4+t]=d,p[5+t]=d,p[6+t]=d,p[7+t]=d)}for(y=0;y<8;++y){const t=y;0!==p[8+t]||0!==p[16+t]||0!==p[24+t]||0!==p[32+t]||0!==p[40+t]||0!==p[48+t]||0!==p[56+t]?(o=5793*p[0+t]+2048>>12,s=5793*p[32+t]+2048>>12,a=p[16+t],u=p[48+t],c=2896*(p[8+t]-p[56+t])+2048>>12,h=2896*(p[8+t]+p[56+t])+2048>>12,l=p[24+t],f=p[40+t],d=o-s+1>>1,o=o+s+1>>1,s=d,d=3784*a+1567*u+2048>>12,a=1567*a-3784*u+2048>>12,u=d,d=c-f+1>>1,c=c+f+1>>1,f=d,d=h+l+1>>1,l=h-l+1>>1,h=d,d=o-u+1>>1,o=o+u+1>>1,u=d,d=s-a+1>>1,s=s+a+1>>1,a=d,d=2276*c+3406*h+2048>>12,c=3406*c-2276*h+2048>>12,h=d,d=799*l+4017*f+2048>>12,l=4017*l-799*f+2048>>12,f=d,p[0+t]=o+h,p[56+t]=o-h,p[8+t]=s+f,p[48+t]=s-f,p[16+t]=a+l,p[40+t]=a-l,p[24+t]=u+c,p[32+t]=u-c):(d=5793*n[y+0]+8192>>14,p[0+t]=d,p[8+t]=d,p[16+t]=d,p[24+t]=d,p[32+t]=d,p[40+t]=d,p[48+t]=d,p[56+t]=d)}for(y=0;y<64;++y){const t=128+(p[y]+8>>4);r[y]=t<0?0:t>255?255:t}}for(let t=0;t>4==0)for(let r=0;r<64;r++){i[I[r]]=t[e++]}else{if(n>>4!=1)throw new Error(\"DQT: invalid table spec\");for(let t=0;t<64;t++){i[I[t]]=r()}}this.quantizationTables[15&n]=i}break}case 65472:case 65473:case 65474:{r();const n={extended:65473===o,progressive:65474===o,precision:t[e++],scanLines:r(),samplesPerLine:r(),components:{},componentsOrder:[]},s=t[e++];let a;for(let r=0;r>4,i=15&t[e+1],o=t[e+2];n.componentsOrder.push(a),n.components[a]={h:r,v:i,quantizationIdx:o},e+=3}i(n),this.frames.push(n);break}case 65476:{const n=r();for(let r=2;r>4==0?this.huffmanTablesDC[15&n]=P(i,s):this.huffmanTablesAC[15&n]=P(i,s)}break}case 65501:r(),this.resetInterval=r();break;case 65498:{r();const n=t[e++],i=[],o=this.frames[0];for(let r=0;r>4],r.huffmanTableAC=this.huffmanTablesAC[15&n],i.push(r)}const s=t[e++],a=t[e++],u=t[e++],c=R(t,e,o,i,this.resetInterval,s,a,u>>4,15&u);e+=c;break}case 65535:255!==t[e]&&e--;break;default:if(255===t[e-3]&&t[e-2]>=192&&t[e-2]<=254){e-=3;break}throw new Error(\"unknown JPEG marker \"+o.toString(16))}o=r()}}getResult(){const{frames:t}=this;if(0===this.frames.length)throw new Error(\"no frames were decoded\");this.frames.length>1&&console.warn(\"more than one frame is not supported\");for(let t=0;t{const a=B(t,n,i);for(let u=0;u{const a=B(t,n,i);for(let u=0;u=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${t} is out of range.`);const e=this.fileDirectory.BitsPerSample[t];if(e%8!=0)throw new Error(`Sample bit-width of ${e} is not supported.`);return e/8}getReaderForSample(t){const e=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,r=this.fileDirectory.BitsPerSample[t];switch(e){case 1:switch(r){case 8:return DataView.prototype.getUint8;case 16:return DataView.prototype.getUint16;case 32:return DataView.prototype.getUint32}break;case 2:switch(r){case 8:return DataView.prototype.getInt8;case 16:return DataView.prototype.getInt16;case 32:return DataView.prototype.getInt32}break;case 3:switch(r){case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error(\"Unsupported data format/bitsPerSample\")}getArrayForSample(t,e){return W(this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,this.fileDirectory.BitsPerSample[t],e)}async getTileOrStrip(t,e,r,n){const i=Math.ceil(this.getWidth()/this.getTileWidth()),o=Math.ceil(this.getHeight()/this.getTileHeight());let s;const{tiles:a}=this;let u,c;1===this.planarConfiguration?s=e*i+t:2===this.planarConfiguration&&(s=r*i*o+e*i+t),this.isTiled?(u=this.fileDirectory.TileOffsets[s],c=this.fileDirectory.TileByteCounts[s]):(u=this.fileDirectory.StripOffsets[s],c=this.fileDirectory.StripByteCounts[s]);const l=await this.source.fetch(u,c);let f;return null===a?f=n.decode(this.fileDirectory,l):a[s]||(f=n.decode(this.fileDirectory,l),a[s]=f),{x:t,y:e,sample:r,data:await f}}async _readRaster(t,e,r,n,i,o,s,a){const u=this.getTileWidth(),c=this.getTileHeight(),l=Math.max(Math.floor(t[0]/u),0),f=Math.min(Math.ceil(t[2]/u),Math.ceil(this.getWidth()/this.getTileWidth())),h=Math.max(Math.floor(t[1]/c),0),d=Math.min(Math.ceil(t[3]/c),Math.ceil(this.getHeight()/this.getTileHeight())),p=t[2]-t[0];let y=this.getBytesPerPixel();const g=[],m=[];for(let t=0;t{const o=i.data,s=new DataView(o),a=i.y*c,f=i.x*u,h=(i.y+1)*c,d=(i.x+1)*u,b=m[l],w=Math.min(c,c-(h-t[3])),x=Math.min(u,u-(d-t[2]));for(let i=Math.max(0,t[1]-a);iu[2]||u[1]>u[3])throw new Error(\"Invalid subsets\");const c=(u[2]-u[0])*(u[3]-u[1]);if(e&&e.length){for(let t=0;t=this.fileDirectory.SamplesPerPixel)return Promise.reject(new RangeError(`Invalid sample index \\'${e[t]}\\'.`))}else for(let t=0;ts[2]||s[1]>s[3])throw new Error(\"Invalid subsets\");const a=this.fileDirectory.PhotometricInterpretation;if(a===d.RGB){let i=[0,1,2];if(this.fileDirectory.ExtraSamples!==p.Unspecified&&o){i=[];for(let t=0;t\"Item\"===t.tagName);t&&(o=o.filter(e=>Number(e.attributes.sample)===t));for(let t=0;t0;let i=!0;for(let o=0;o<8;o++){let s=this._dataView.getUint8(t+(e?o:7-o));n&&(i?0!==s&&(s=255&~(s-1),i=!1):s=255&~s),r+=s*256**o}return n&&(r=-r),r}getUint8(t,e){return this._dataView.getUint8(t,e)}getInt8(t,e){return this._dataView.getInt8(t,e)}getUint16(t,e){return this._dataView.getUint16(t,e)}getInt16(t,e){return this._dataView.getInt16(t,e)}getUint32(t,e){return this._dataView.getUint32(t,e)}getInt32(t,e){return this._dataView.getInt32(t,e)}getFloat32(t,e){return this._dataView.getFloat32(t,e)}getFloat64(t,e){return this._dataView.getFloat64(t,e)}}class ${constructor(t,e,r,n){this._dataView=new DataView(t),this._sliceOffset=e,this._littleEndian=r,this._bigTiff=n}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(t,e){return this.sliceOffset<=t&&this.sliceTop>=t+e}readUint8(t){return this._dataView.getUint8(t-this._sliceOffset,this._littleEndian)}readInt8(t){return this._dataView.getInt8(t-this._sliceOffset,this._littleEndian)}readUint16(t){return this._dataView.getUint16(t-this._sliceOffset,this._littleEndian)}readInt16(t){return this._dataView.getInt16(t-this._sliceOffset,this._littleEndian)}readUint32(t){return this._dataView.getUint32(t-this._sliceOffset,this._littleEndian)}readInt32(t){return this._dataView.getInt32(t-this._sliceOffset,this._littleEndian)}readFloat32(t){return this._dataView.getFloat32(t-this._sliceOffset,this._littleEndian)}readFloat64(t){return this._dataView.getFloat64(t-this._sliceOffset,this._littleEndian)}readUint64(t){const e=this.readUint32(t),r=this.readUint32(t+4);let n;if(this._littleEndian){if(n=e+2**32*r,!Number.isSafeInteger(n))throw new Error(n+\" exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues\");return n}if(n=2**32*e+r,!Number.isSafeInteger(n))throw new Error(n+\" exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues\");return n}readInt64(t){let e=0;const r=(128&this._dataView.getUint8(t+(this._littleEndian?7:0)))>0;let n=!0;for(let i=0;i<8;i++){let o=this._dataView.getUint8(t+(this._littleEndian?i:7-i));r&&(n?0!==o&&(o=255&~(o-1),n=!1):o=255&~o),e+=o*256**i}return r&&(e=-e),e}readOffset(t){return this._bigTiff?this.readUint64(t):this.readUint32(t)}}var Y=r(68),Z=r(9),X=r(25),Q=r(40),J=r.n(Q),tt=r(105),et=r.n(tt),rt=r(39),nt=r.n(rt);class it{constructor(t,{blockSize:e=65536}={}){this.retrievalFunction=t,this.blockSize=e,this.blockRequests=new Map,this.blocks=new Map,this.blockIdsAwaitingRequest=null}async fetch(t,e,r=!1){const n=t+e,i=[],o=[],s=[];for(let e=Math.floor(t/this.blockSize)*this.blockSize;esetTimeout(e,t))}(),this.blockIdsAwaitingRequest){const t=function(t){if(0===t.length)return[];const e=[];let r=[];e.push(r);for(let n=0;n{const e=await t,i=r*this.blockSize,o=Math.min(i+this.blockSize,e.data.byteLength),s=e.data.slice(i,o);this.blockRequests.delete(n),this.blocks.set(n,{data:s,offset:e.offset+i,length:s.byteLength,top:e.offset+o})})())}}this.blockIdsAwaitingRequest=null}const a=[];for(const t of o)this.blockRequests.has(t)&&a.push(this.blockRequests.get(t));await Promise.all(a),await Promise.all(s);return function(t,e,r){const n=e+r,i=new ArrayBuffer(r),o=new Uint8Array(i);for(const r of t){const t=r.offset-e,i=r.top-n;let s,a=0,u=0;t<0?a=-t:t>0&&(u=t),s=i<0?r.length-a:n-r.offset-a;const c=new Uint8Array(r.data,a,s);o.set(c,u)}return i}(i.map(t=>this.blocks.get(t)),t,e)}async requestData(t,e){const r=await this.retrievalFunction(t,e);return r.length?r.length!==r.data.byteLength&&(r.data=r.data.slice(0,r.length)):r.length=r.data.byteLength,r.top=r.offset+r.length,r}}function ot(t,e){const{forceXHR:r}=e;if(\"function\"==typeof fetch&&!r)return function(t,{headers:e={},blockSize:r}={}){return new it(async(r,n)=>{const i=await fetch(t,{headers:{...e,Range:`bytes=${r}-${r+n-1}`}});if(i.ok){if(206===i.status){return{data:i.arrayBuffer?await i.arrayBuffer():(await i.buffer()).buffer,offset:r,length:n}}{const t=i.arrayBuffer?await i.arrayBuffer():(await i.buffer()).buffer;return{data:t,offset:0,length:t.byteLength}}}throw new Error(\"Error fetching data.\")},{blockSize:r})}(t,e);if(\"undefined\"!=typeof XMLHttpRequest)return function(t,{headers:e={},blockSize:r}={}){return new it(async(r,n)=>new Promise((i,o)=>{const s=new XMLHttpRequest;s.open(\"GET\",t),s.responseType=\"arraybuffer\";const a={...e,Range:`bytes=${r}-${r+n-1}`};for(const[t,e]of Object.entries(a))s.setRequestHeader(t,e);s.onload=()=>{const t=s.response;206===s.status?i({data:t,offset:r,length:n}):i({data:t,offset:0,length:t.byteLength})},s.onerror=o,s.send()}),{blockSize:r})}(t,e);if(J.a.get)return function(t,{headers:e={},blockSize:r}={}){return new it(async(r,n)=>new Promise((i,o)=>{const s=nt.a.parse(t);(\"http:\"===s.protocol?J.a:et.a).get({...s,headers:{...e,Range:`bytes=${r}-${r+n-1}`}},t=>{const e=[];t.on(\"data\",t=>{e.push(t)}),t.on(\"end\",()=>{const t=Z.Buffer.concat(e).buffer;i({data:t,offset:r,length:t.byteLength})})}).on(\"error\",o)}),{blockSize:r})}(t,e);throw new Error(\"No remote source available\")}function st(t){const e=function(t,e,r){return new Promise((n,i)=>{Object(X.open)(t,e,r,(t,e)=>{t?i(t):n(e)})})}(t,\"r\");return{async fetch(t,r){const n=await e,{buffer:i}=await function(...t){return new Promise((e,r)=>{Object(X.read)(...t,(t,n,i)=>{t?r(t):e({bytesRead:n,buffer:i})})})}(n,Z.Buffer.alloc(r),0,r,t);return i.buffer},async close(){const t=await e;return await function(t){return new Promise((e,r)=>{Object(X.close)(t,t=>{t?r(t):e()})})}(t)}}}function at(t,e){for(const r in e)e.hasOwnProperty(r)&&(t[r]=e[r])}function ut(t,e){if(t.length{let r=e;for(;0!==t[r];)r++;return r},readUshort:(t,e)=>t[e]<<8|t[e+1],readShort:(t,e)=>{const r=yt.ui8;return r[0]=t[e+1],r[1]=t[e+0],yt.i16[0]},readInt:(t,e)=>{const r=yt.ui8;return r[0]=t[e+3],r[1]=t[e+2],r[2]=t[e+1],r[3]=t[e+0],yt.i32[0]},readUint:(t,e)=>{const r=yt.ui8;return r[0]=t[e+3],r[1]=t[e+2],r[2]=t[e+1],r[3]=t[e+0],yt.ui32[0]},readASCII:(t,e,r)=>r.map(r=>String.fromCharCode(t[e+r])).join(\"\"),readFloat:(t,e)=>{const r=yt.ui8;return lt(4,n=>{r[n]=t[e+3-n]}),yt.fl32[0]},readDouble:(t,e)=>{const r=yt.ui8;return lt(8,n=>{r[n]=t[e+7-n]}),yt.fl64[0]},writeUshort:(t,e,r)=>{t[e]=r>>8&255,t[e+1]=255&r},writeUint:(t,e,r)=>{t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r>>0&255},writeASCII:(t,e,r)=>{lt(r.length,n=>{t[e+n]=r.charCodeAt(n)})},ui8:new Uint8Array(8)};yt.fl64=new Float64Array(yt.ui8.buffer),yt.writeDouble=(t,e,r)=>{yt.fl64[0]=r,lt(8,r=>{t[e+r]=yt.ui8[7-r]})};const gt=t=>{const e=new Uint8Array(1e3);let r=4;const n=yt;e[0]=77,e[1]=77,e[3]=42;let i=8;if(n.writeUint(e,r,i),r+=4,t.forEach((r,o)=>{const s=((t,e,r,n)=>{let i=r;const o=Object.keys(n).filter(t=>null!=t&&\"undefined\"!==t);t.writeUshort(e,i,o.length),i+=2;let s=i+12*o.length+4;for(const r of o){let o=null;\"number\"==typeof r?o=r:\"string\"==typeof r&&(o=parseInt(r,10));const a=c[o],u=pt[a];if(null==a||void 0===a||void 0===a)throw new Error(\"unknown type of tag: \"+o);let l=n[r];if(void 0===l)throw new Error(\"failed to get value for key \"+r);\"ASCII\"===a&&\"string\"==typeof l&&!1===ut(l,\"\\\\0\")&&(l+=\"\\\\0\");const f=l.length;t.writeUshort(e,i,o),i+=2,t.writeUshort(e,i,u),i+=2,t.writeUint(e,i,f),i+=4;let h=[-1,1,1,2,4,8,0,0,0,0,0,0,8][u]*f,d=i;h>4&&(t.writeUint(e,i,s),d=s),\"ASCII\"===a?t.writeASCII(e,d,l):\"SHORT\"===a?lt(f,r=>{t.writeUshort(e,d+2*r,l[r])}):\"LONG\"===a?lt(f,r=>{t.writeUint(e,d+4*r,l[r])}):\"RATIONAL\"===a?lt(f,r=>{t.writeUint(e,d+8*r,Math.round(1e4*l[r])),t.writeUint(e,d+8*r+4,1e4)}):\"DOUBLE\"===a&<(f,r=>{t.writeDouble(e,d+8*r,l[r])}),h>4&&(h+=1&h,s+=h),i+=4}return[i,s]})(n,e,i,r);i=s[1],o{lt(i,r=>{lt(n,n=>{o.push(t[n][e][r])})})})),e.ImageLength=r,delete e.height,e.ImageWidth=i,delete e.width,e.BitsPerSample||(e.BitsPerSample=lt(n,()=>8)),mt.forEach(t=>{const r=t[0];if(!e[r]){const n=t[1];e[r]=n}}),e.PhotometricInterpretation||(e.PhotometricInterpretation=3===e.BitsPerSample.length?2:1),e.SamplesPerPixel||(e.SamplesPerPixel=[n]),e.StripByteCounts||(e.StripByteCounts=[n*r*i]),e.ModelPixelScale||(e.ModelPixelScale=[360/i,180/r,0]),e.SampleFormat||(e.SampleFormat=lt(n,()=>1));const s=Object.keys(e).filter(t=>ut(t,\"GeoKey\")).sort((t,e)=>dt[t]-dt[e]);if(!e.GeoKeyDirectory){const t=[1,1,0,s.length];s.forEach(r=>{const n=Number(dt[r]);let i,o,s;t.push(n),\"SHORT\"===c[n]?(i=1,o=0,s=e[r]):\"GeogCitationGeoKey\"===r?(i=e.GeoAsciiParams.length,o=Number(dt.GeoAsciiParams),s=0):console.log(\"[geotiff.js] couldn\\'t get TIFFTagLocation for \"+r),t.push(o),t.push(i),t.push(s)}),e.GeoKeyDirectory=t}for(const t in s)s.hasOwnProperty(t)&&delete e[t];[\"Compression\",\"ExtraSamples\",\"GeographicTypeGeoKey\",\"GTModelTypeGeoKey\",\"GTRasterTypeGeoKey\",\"ImageLength\",\"ImageWidth\",\"PhotometricInterpretation\",\"PlanarConfiguration\",\"ResolutionUnit\",\"SamplesPerPixel\",\"XPosition\",\"YPosition\"].forEach(t=>{var r;e[t]&&(e[t]=(r=e[t],Array.isArray(r)?r:[r]))});const a=(t=>{const e={};for(const r in t)\"StripOffsets\"!==r&&(dt[r]||console.error(r,\"not in name2code:\",Object.keys(dt)),e[dt[r]]=t[r]);return e})(e);return((t,e,r,n)=>{if(null==r)throw new Error(\"you passed into encodeImage a width of type \"+r);if(null==e)throw new Error(\"you passed into encodeImage a width of type \"+e);const i={256:[e],257:[r],273:[1e3],278:[r],305:\"geotiff.js\"};if(n)for(const t in n)n.hasOwnProperty(t)&&(i[t]=n[t]);const o=new Uint8Array(gt([i])),s=new Uint8Array(t),a=i[277],u=new Uint8Array(1e3+e*r*a);return lt(o.length,t=>{u[t]=o[t]}),function(t,e){const{length:r}=t;for(let n=0;n{u[1e3+e]=t}),u.buffer})(o,i,r,a)}class vt{log(){}info(){}warn(){}error(){}time(){}timeEnd(){}}let wt=new vt;function xt(t=new vt){wt=t}function _t(t){switch(t){case h.BYTE:case h.ASCII:case h.SBYTE:case h.UNDEFINED:return 1;case h.SHORT:case h.SSHORT:return 2;case h.LONG:case h.SLONG:case h.FLOAT:case h.IFD:return 4;case h.RATIONAL:case h.SRATIONAL:case h.DOUBLE:case h.LONG8:case h.SLONG8:case h.IFD8:return 8;default:throw new RangeError(\"Invalid field type: \"+t)}}function St(t,e,r,n){let i=null,o=null;const s=_t(e);switch(e){case h.BYTE:case h.ASCII:case h.UNDEFINED:i=new Uint8Array(r),o=t.readUint8;break;case h.SBYTE:i=new Int8Array(r),o=t.readInt8;break;case h.SHORT:i=new Uint16Array(r),o=t.readUint16;break;case h.SSHORT:i=new Int16Array(r),o=t.readInt16;break;case h.LONG:case h.IFD:i=new Uint32Array(r),o=t.readUint32;break;case h.SLONG:i=new Int32Array(r),o=t.readInt32;break;case h.LONG8:case h.IFD8:i=new Array(r),o=t.readUint64;break;case h.SLONG8:i=new Array(r),o=t.readInt64;break;case h.RATIONAL:i=new Uint32Array(2*r),o=t.readUint32;break;case h.SRATIONAL:i=new Int32Array(2*r),o=t.readInt32;break;case h.FLOAT:i=new Float32Array(r),o=t.readFloat32;break;case h.DOUBLE:i=new Float64Array(r),o=t.readFloat64;break;default:throw new RangeError(\"Invalid field type: \"+e)}if(e!==h.RATIONAL&&e!==h.SRATIONAL)for(let e=0;et.getWidth()-e.getWidth());for(let e=0;en||o&&o>s)break}}let f=e;if(s){const[t,e]=a.getOrigin(),[r,n]=u.getResolution(a);f=[Math.round((s[0]-t)/r),Math.round((s[1]-e)/n),Math.round((s[2]-t)/r),Math.round((s[3]-e)/n)],f=[Math.min(f[0],f[2]),Math.min(f[1],f[3]),Math.max(f[0],f[2]),Math.max(f[1],f[3])]}return u.readRasters({...t,window:f})}}class Tt extends kt{constructor(t,e,r,n,i={}){super(),this.source=t,this.littleEndian=e,this.bigTiff=r,this.firstIFDOffset=n,this.cache=i.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(t,e){const r=this.bigTiff?4048:1024;return new $(await this.source.fetch(t,void 0!==e?e:r),t,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(t){const e=this.bigTiff?20:12,r=this.bigTiff?8:2;let n=await this.getSlice(t);const i=this.bigTiff?n.readUint64(t):n.readUint16(t),o=i*e+(this.bigTiff?16:6);n.covers(t,o)||(n=await this.getSlice(t,o));const s={};let u=t+(this.bigTiff?8:2);for(let t=0;t{const e=await this.ifdRequests[t-1];if(0===e.nextIFDByteOffset)throw new Et(t);return this.parseFileDirectoryAt(e.nextIFDByteOffset)})(),this.ifdRequests[t]}async getImage(t=0){const e=await this.requestIFD(t);return new V(e.fileDirectory,e.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let t=0,e=!0;for(;e;)try{await this.requestIFD(t),++t}catch(t){if(!(t instanceof Et))throw t;e=!1}return t}async getGhostValues(){const t=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const e=\"GDAL_STRUCTURAL_METADATA_SIZE=\",r=e.length+100;let n=await this.getSlice(t,r);if(e===St(n,h.ASCII,e.length,t)){const e=St(n,h.ASCII,r,t).split(\"\\\\n\")[0],i=Number(e.split(\"=\")[1].split(\" \")[0])+e.length;i>r&&(n=await this.getSlice(t,i));const o=St(n,h.ASCII,i,t);this.ghostValues={},o.split(\"\\\\n\").filter(t=>t.length>0).map(t=>t.split(\"=\")).forEach(([t,e])=>{this.ghostValues[t]=e})}return this.ghostValues}static async fromSource(t,e){const r=await t.fetch(0,1024),n=new K(r),i=n.getUint16(0,0);let o;if(18761===i)o=!0;else{if(19789!==i)throw new TypeError(\"Invalid byte order value.\");o=!1}const s=n.getUint16(2,o);let a;if(42===s)a=!1;else{if(43!==s)throw new TypeError(\"Invalid magic number.\");a=!0;if(8!==n.getUint16(4,o))throw new Error(\"Unsupported offset byte-size.\")}const u=a?n.getUint64(8,o):n.getUint32(4,o);return new Tt(t,o,a,u,e)}close(){return\"function\"==typeof this.source.close&&this.source.close()}}e.default=Tt;class Ct extends kt{constructor(t,e){super(),this.mainFile=t,this.overviewFiles=e,this.imageFiles=[t].concat(e),this.fileDirectoriesPerFile=null,this.fileDirectoriesPerFileParsing=null,this.imageCount=null}async parseFileDirectoriesPerFile(){const t=[this.mainFile.parseFileDirectoryAt(this.mainFile.firstIFDOffset)].concat(this.overviewFiles.map(t=>t.parseFileDirectoryAt(t.firstIFDOffset)));return this.fileDirectoriesPerFile=await Promise.all(t),this.fileDirectoriesPerFile}async getImage(t=0){await this.getImageCount(),await this.parseFileDirectoriesPerFile();let e=0,r=0;for(let n=0;nt.getImageCount()));return this.imageCounts=await Promise.all(t),this.imageCount=this.imageCounts.reduce((t,e)=>t+e,0),this.imageCount}}async function Ot(t,e={}){return Tt.fromSource(ot(t,e))}async function It(t){return Tt.fromSource(function(t){return{fetch:async(e,r)=>t.slice(e,e+r)}}(t))}async function Pt(t){return Tt.fromSource(st(t))}async function Rt(t){return Tt.fromSource((e=t,{fetch:async(t,r)=>new Promise((n,i)=>{const o=e.slice(t,t+r),s=new FileReader;s.onload=t=>n(t.target.result),s.onerror=i,s.readAsArrayBuffer(o)})}));var e}async function jt(t,e=[],r={}){const n=await Tt.fromSource(ot(t,r)),i=await Promise.all(e.map(t=>Tt.fromSource(ot(t,r))));return new Ct(n,i)}async function Mt(t,e){return bt(t,e)}},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return i}));var n=r(19);Object(n.b)().blob;const i=Object(n.b)().default},,,function(t,e,r){\"use strict\";var n=r(26),i=r(102);var o=function(t){\"function\"==typeof t?t():t&&\"function\"==typeof t.unsubscribe&&t.unsubscribe()};e.a=function(t){const e=new i.a;let r,s=0;return new n.a(n=>{r||(r=t.subscribe(e));const i=e.subscribe(n);return s++,()=>{s--,i.unsubscribe(),0===s&&(o(r),r=void 0)}})}}]);',null)}},function(t,e,r){\"use strict\";var n=window.URL||window.webkitURL;t.exports=function(t,e){try{try{var r;try{(r=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder)).append(t),r=r.getBlob()}catch(e){r=new Blob([t])}return new Worker(n.createObjectURL(r))}catch(e){return new Worker(\"data:application/javascript,\"+encodeURIComponent(t))}}catch(t){if(!e)throw Error(\"Inline worker is not supported\");return new Worker(e)}}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var r=[],n=!0,i=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);n=!0);}catch(t){i=!0,o=t}finally{try{!n&&a.return&&a.return()}finally{if(i)throw o}}return r}(t,e);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};e.default=function(t,e){return new Promise((function(r,o){try{e&&console.log(\"starting parseData with\",t),e&&console.log(\"\\tGeoTIFF:\",\"undefined\"==typeof GeoTIFF?\"undefined\":i(GeoTIFF));var u={},c=void 0,h=void 0;if(\"object\"===t.rasterType)u.values=t.data,u.height=c=t.metadata.height||u.values[0].length,u.width=h=t.metadata.width||u.values[0][0].length,u.pixelHeight=t.metadata.pixelHeight,u.pixelWidth=t.metadata.pixelWidth,u.projection=t.metadata.projection,u.xmin=t.metadata.xmin,u.ymax=t.metadata.ymax,u.noDataValue=t.metadata.noDataValue,u.numberOfRasters=u.values.length,u.xmax=u.xmin+u.width*u.pixelWidth,u.ymin=u.ymax-u.height*u.pixelHeight,u._data=null,r(f(u));else if(\"geotiff\"===t.rasterType){u._data=t.data;var d=s.fromArrayBuffer;\"url\"===t.sourceType?d=s.fromUrl:\"Blob\"===t.sourceType&&(d=s.fromBlob),e&&console.log(\"data.rasterType is geotiff\"),r(d(t.data).then((function(r){return e&&console.log(\"geotiff:\",r),r.getImage().then((function(r){try{e&&console.log(\"image:\",r);var i=r.fileDirectory,s=r.getGeoKeys()||{},d=s.GeographicTypeGeoKey,p=s.ProjectedCSTypeGeoKey;u.projection=p||d||t.metadata.projection,e&&console.log(\"projection:\",u.projection),u.height=c=r.getHeight(),e&&console.log(\"result.height:\",u.height),u.width=h=r.getWidth(),e&&console.log(\"result.width:\",u.width);var y=r.getResolution(),g=n(y,2),m=g[0],b=g[1];u.pixelHeight=Math.abs(b),u.pixelWidth=Math.abs(m);var v=r.getOrigin(),w=n(v,2),x=w[0],_=w[1];return u.xmin=x,u.xmax=u.xmin+h*u.pixelWidth,u.ymax=_,u.ymin=u.ymax-c*u.pixelHeight,u.noDataValue=i.GDAL_NODATA?parseFloat(i.GDAL_NODATA):null,u.numberOfRasters=i.SamplesPerPixel,i.ColorMap&&(u.palette=(0,a.getPalette)(r)),\"url\"!==t.sourceType?r.readRasters().then((function(t){return u.values=t.map((function(t){return(0,l.unflatten)(t,{height:c,width:h})})),f(u)})):u}catch(t){o(t),console.error(\"[georaster] error parsing georaster:\",t)}}))})))}}catch(t){o(t),console.error(\"[georaster] error parsing georaster:\",t)}}))};var o,s=r(100),a=r(155),u=r(156),c=(o=u)&&o.__esModule?o:{default:o},l=r(99);function f(t){var e=(0,c.default)(t.values,{height:t.height,layout:\"[band][row][column]\",noData:t.noDataValue,precise:!1,stats:[\"max\",\"min\",\"range\"],width:t.width});return t.maxs=e.bands.map((function(t){return t.max})),t.mins=e.bands.map((function(t){return t.min})),t.ranges=e.bands.map((function(t){return t.range})),t}},function(t,e,r){(function(e){var n=r(42).Transform,i=r(10);function o(t){n.call(this,t),this._destroyed=!1}function s(t,e,r){r(null,t)}function a(t){return function(e,r,n){return\"function\"==typeof e&&(n=r,r=e,e={}),\"function\"!=typeof r&&(r=s),\"function\"!=typeof n&&(n=null),t(e,r,n)}}i(o,n),o.prototype.destroy=function(t){if(!this._destroyed){this._destroyed=!0;var r=this;e.nextTick((function(){t&&r.emit(\"error\",t),r.emit(\"close\")}))}},t.exports=a((function(t,e,r){var n=new o(t);return n._transform=e,r&&(n._flush=r),n})),t.exports.ctor=a((function(t,e,r){function n(e){if(!(this instanceof n))return new n(e);this.options=Object.assign({},t,e),o.call(this,this.options)}return i(n,o),n.prototype._transform=e,r&&(n.prototype._flush=r),n})),t.exports.obj=a((function(t,e,r){var n=new o(Object.assign({objectMode:!0,highWaterMark:16},t));return n._transform=e,r&&(n._flush=r),n}))}).call(this,r(8))},function(t,e){},function(t,e,r){\"use strict\";var n=r(43).Buffer,i=r(117);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return n.alloc(0);for(var e,r,i,o=n.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=o,i=a,e.copy(r,i),a+=s.data.length,s=s.next;return o},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+\" \"+t})},function(t,e){},function(t,e,r){(function(t){var n=void 0!==t&&t||\"undefined\"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r(119),e.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(3))},function(t,e,r){(function(t,e){!function(t,r){\"use strict\";if(!t.setImmediate){var n,i,o,s,a,u=1,c={},l=!1,f=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,\"[object process]\"==={}.toString.call(t.process)?n=function(t){e.nextTick((function(){p(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage(\"\",\"*\"),t.onmessage=r,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){p(t.data)},n=function(t){o.port2.postMessage(t)}):f&&\"onreadystatechange\"in f.createElement(\"script\")?(i=f.documentElement,n=function(t){var e=f.createElement(\"script\");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):n=function(t){setTimeout(p,0,t)}:(s=\"setImmediate$\"+Math.random()+\"$\",a=function(e){e.source===t&&\"string\"==typeof e.data&&0===e.data.indexOf(s)&&p(+e.data.slice(s.length))},t.addEventListener?t.addEventListener(\"message\",a,!1):t.attachEvent(\"onmessage\",a),n=function(e){t.postMessage(s+e,\"*\")}),h.setImmediate=function(t){\"function\"!=typeof t&&(t=new Function(\"\"+t));for(var e=new Array(arguments.length-1),r=0;r>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function c(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function l(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new n.Buf32(852),e.distcode=e.distdyn=new n.Buf32(592),e.sane=1,e.back=-1,0):-2}function f(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,l(t)):-2}function h(t,e){var r,n;return t&&t.state?(n=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?-2:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,f(t))):-2}function d(t,e){var r,n;return t?(n=new c,t.state=n,n.window=null,0!==(r=h(t,e))&&(t.state=null),r):-2}var p,y,g=!0;function m(t){if(g){var e;for(p=new n.Buf32(512),y=new n.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(a(1,t.lens,0,288,p,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;a(2,t.lens,0,32,y,0,t.work,{bits:5}),g=!1}t.lencode=p,t.lenbits=9,t.distcode=y,t.distbits=5}function b(t,e,r,i){var o,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(n.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((o=s.wsize-s.wnext)>i&&(o=i),n.arraySet(s.window,e,r-i,o,s.wnext),(i-=o)?(n.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=o,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=o(r.check,L,2,0),y=0,g=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&y)<<8)+(y>>8))%31){t.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&y)){t.msg=\"unknown compression method\",r.mode=30;break}if(g-=4,P=8+(15&(y>>>=4)),0===r.wbits)r.wbits=P;else if(P>r.wbits){t.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(L[0]=255&y,L[1]=y>>>8&255,r.check=o(r.check,L,2,0)),y=0,g=0,r.mode=3;case 3:for(;g<32;){if(0===d)break t;d--,y+=c[f++]<>>8&255,L[2]=y>>>16&255,L[3]=y>>>24&255,r.check=o(r.check,L,4,0)),y=0,g=0,r.mode=4;case 4:for(;g<16;){if(0===d)break t;d--,y+=c[f++]<>8),512&r.flags&&(L[0]=255&y,L[1]=y>>>8&255,r.check=o(r.check,L,2,0)),y=0,g=0,r.mode=5;case 5:if(1024&r.flags){for(;g<16;){if(0===d)break t;d--,y+=c[f++]<>>8&255,r.check=o(r.check,L,2,0)),y=0,g=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((x=r.length)>d&&(x=d),x&&(r.head&&(P=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,c,f,x,P)),512&r.flags&&(r.check=o(r.check,c,x,f)),d-=x,f+=x,r.length-=x),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===d)break t;x=0;do{P=c[f+x++],r.head&&P&&r.length<65536&&(r.head.name+=String.fromCharCode(P))}while(P&&x>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;g<32;){if(0===d)break t;d--,y+=c[f++]<>>=7&g,g-=7&g,r.mode=27;break}for(;g<3;){if(0===d)break t;d--,y+=c[f++]<>>=1)){case 0:r.mode=14;break;case 1:if(m(r),r.mode=20,6===e){y>>>=2,g-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg=\"invalid block type\",r.mode=30}y>>>=2,g-=2;break;case 14:for(y>>>=7&g,g-=7&g;g<32;){if(0===d)break t;d--,y+=c[f++]<>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&y,y=0,g=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(x=r.length){if(x>d&&(x=d),x>p&&(x=p),0===x)break t;n.arraySet(l,c,f,x,h),d-=x,f+=x,p-=x,h+=x,r.length-=x;break}r.mode=12;break;case 17:for(;g<14;){if(0===d)break t;d--,y+=c[f++]<>>=5,g-=5,r.ndist=1+(31&y),y>>>=5,g-=5,r.ncode=4+(15&y),y>>>=4,g-=4,r.nlen>286||r.ndist>30){t.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,g-=3}for(;r.have<19;)r.lens[F[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,R={bits:r.lenbits},I=a(0,r.lens,0,19,r.lencode,0,r.work,R),r.lenbits=R.bits,I){t.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,k=65535&M,!((A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>>=A,g-=A,r.lens[r.have++]=k;else{if(16===k){for(j=A+2;g>>=A,g-=A,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=30;break}P=r.lens[r.have-1],x=3+(3&y),y>>>=2,g-=2}else if(17===k){for(j=A+3;g>>=A)),y>>>=3,g-=3}else{for(j=A+7;g>>=A)),y>>>=7,g-=7}if(r.have+x>r.nlen+r.ndist){t.msg=\"invalid bit length repeat\",r.mode=30;break}for(;x--;)r.lens[r.have++]=P}}if(30===r.mode)break;if(0===r.lens[256]){t.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,R={bits:r.lenbits},I=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,R),r.lenbits=R.bits,I){t.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,R={bits:r.distbits},I=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,R),r.distbits=R.bits,I){t.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(d>=6&&p>=258){t.next_out=h,t.avail_out=p,t.next_in=f,t.avail_in=d,r.hold=y,r.bits=g,s(t,w),h=t.next_out,l=t.output,p=t.avail_out,f=t.next_in,c=t.input,d=t.avail_in,y=r.hold,g=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;E=(M=r.lencode[y&(1<>>16&255,k=65535&M,!((A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>T)])>>>16&255,k=65535&M,!(T+(A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>>=T,g-=T,r.back+=T}if(y>>>=A,g-=A,r.back+=A,r.length=k,0===E){r.mode=26;break}if(32&E){r.back=-1,r.mode=12;break}if(64&E){t.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&E,r.mode=22;case 22:if(r.extra){for(j=r.extra;g>>=r.extra,g-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;E=(M=r.distcode[y&(1<>>16&255,k=65535&M,!((A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>T)])>>>16&255,k=65535&M,!(T+(A=M>>>24)<=g);){if(0===d)break t;d--,y+=c[f++]<>>=T,g-=T,r.back+=T}if(y>>>=A,g-=A,r.back+=A,64&E){t.msg=\"invalid distance code\",r.mode=30;break}r.offset=k,r.extra=15&E,r.mode=24;case 24:if(r.extra){for(j=r.extra;g>>=r.extra,g-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===p)break t;if(x=w-p,r.offset>x){if((x=r.offset-x)>r.whave&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break}x>r.wnext?(x-=r.wnext,_=r.wsize-x):_=r.wnext-x,x>r.length&&(x=r.length),S=r.window}else S=l,_=h-r.offset,x=r.length;x>p&&(x=p),p-=x,r.length-=x;do{l[h++]=S[_++]}while(--x);0===r.length&&(r.mode=21);break;case 26:if(0===p)break t;l[h++]=r.length,p--,r.mode=21;break;case 27:if(r.wrap){for(;g<32;){if(0===d)break t;d--,y|=c[f++]<>>16&65535|0,s=0;0!==r;){r-=s=r>2e3?2e3:r;do{o=o+(i=i+e[n++]|0)|0}while(--s);i%=65521,o%=65521}return i|o<<16|0}},function(t,e,r){\"use strict\";var n=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();t.exports=function(t,e,r,i){var o=n,s=i+r;t^=-1;for(var a=i;a>>8^o[255&(t^e[a])];return-1^t}},function(t,e,r){\"use strict\";t.exports=function(t,e){var r,n,i,o,s,a,u,c,l,f,h,d,p,y,g,m,b,v,w,x,_,S,A,E,k;r=t.state,n=t.next_in,E=t.input,i=n+(t.avail_in-5),o=t.next_out,k=t.output,s=o-(e-t.avail_out),a=o+(t.avail_out-257),u=r.dmax,c=r.wsize,l=r.whave,f=r.wnext,h=r.window,d=r.hold,p=r.bits,y=r.lencode,g=r.distcode,m=(1<>>=w=v>>>24,p-=w,0===(w=v>>>16&255))k[o++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=y[(65535&v)+(d&(1<>>=w,p-=w),p<15&&(d+=E[n++]<>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=g[(65535&v)+(d&(1<u){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(d>>>=w,p-=w,_>(w=o-s)){if((w=_-w)>l&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(S=0,A=h,0===f){if(S+=c-w,w2;)k[o++]=A[S++],k[o++]=A[S++],k[o++]=A[S++],x-=3;x&&(k[o++]=A[S++],x>1&&(k[o++]=A[S++]))}else{S=o-_;do{k[o++]=k[S++],k[o++]=k[S++],k[o++]=k[S++],x-=3}while(x>2);x&&(k[o++]=k[S++],x>1&&(k[o++]=k[S++]))}break}}break}}while(n>3,d&=(1<<(p-=x<<3))-1,t.next_in=n,t.next_out=o,t.avail_in=n=1&&0===L[k];k--);if(T>k&&(T=k),0===k)return c[l++]=20971520,c[l++]=20971520,h.bits=1,0;for(E=1;E0&&(0===t||1!==k))return-1;for(F[1]=0,S=1;S<15;S++)F[S+1]=F[S]+L[S];for(A=0;A852||2===t&&I>592)return 1;for(;;){v=S-C,f[A]b?(w=N[D+f[A]],x=j[M+f[A]]):(w=96,x=0),d=1<>C)+(p-=d)]=v<<24|w<<16|x|0}while(0!==p);for(d=1<>=1;if(0!==d?(R&=d-1,R+=d):R=0,A++,0==--L[S]){if(S===k)break;S=e[r+f[A]]}if(S>T&&(R&g)!==y){for(0===C&&(C=T),m+=E,P=1<<(O=S-C);O+C852||2===t&&I>592)return 1;c[y=R&g]=T<<24|O<<16|m-l|0}}return 0!==R&&(c[m+R]=S-C<<24|64<<16|0),h.bits=T,0}},function(t,e,r){\"use strict\";var n=r(29),i=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch(t){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){o=!1}for(var s=new n.Buf8(256),a=0;a<256;a++)s[a]=a>=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;function u(t,e){if(e<65534&&(t.subarray&&o||!t.subarray&&i))return String.fromCharCode.apply(null,n.shrinkBuf(t,e));for(var r=\"\",s=0;s>>6,e[s++]=128|63&r):r<65536?(e[s++]=224|r>>>12,e[s++]=128|r>>>6&63,e[s++]=128|63&r):(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63,e[s++]=128|r>>>6&63,e[s++]=128|63&r);return e},e.buf2binstring=function(t){return u(t,t.length)},e.binstring2buf=function(t){for(var e=new n.Buf8(t.length),r=0,i=e.length;r4)c[n++]=65533,r+=o-1;else{for(i&=2===o?31:3===o?15:7;o>1&&r1?c[n++]=65533:i<65536?c[n++]=i:(i-=65536,c[n++]=55296|i>>10&1023,c[n++]=56320|1023&i)}return u(c,n)},e.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;r>=0&&128==(192&t[r]);)r--;return r<0||0===r?e:r+s[t[r]]>e?r:e}},function(t,e,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(t,e,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},function(t,e,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},function(t,e,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},function(t,e,r){t.exports=r.p+\"0.georaster.browser.bundle.min.worker.js\"},function(t,e,r){t.exports=function(t){function e(t){let r,i,o,s=null;function a(...t){if(!a.enabled)return;const n=a,i=Number(new Date),o=i-(r||i);n.diff=o,n.prev=r,n.curr=i,r=i,t[0]=e.coerce(t[0]),\"string\"!=typeof t[0]&&t.unshift(\"%O\");let s=0;t[0]=t[0].replace(/%([a-zA-Z%])/g,(r,i)=>{if(\"%%\"===r)return\"%\";s++;const o=e.formatters[i];if(\"function\"==typeof o){const e=t[s];r=o.call(n,e),t.splice(s,1),s--}return r}),e.formatArgs.call(n,t);(n.log||e.log).apply(n,t)}return a.namespace=t,a.useColors=e.useColors(),a.color=e.selectColor(t),a.extend=n,a.destroy=e.destroy,Object.defineProperty(a,\"enabled\",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(i!==e.namespaces&&(i=e.namespaces,o=e.enabled(t)),o),set:t=>{s=t}}),\"function\"==typeof e.init&&e.init(a),a}function n(t,r){const n=e(this.namespace+(void 0===r?\":\":r)+t);return n.log=this.log,n}function i(t){return t.toString().substring(2,t.toString().length-2).replace(/\\.\\*\\?$/,\"*\")}return e.debug=e,e.default=e,e.coerce=function(t){if(t instanceof Error)return t.stack||t.message;return t},e.disable=function(){const t=[...e.names.map(i),...e.skips.map(i).map(t=>\"-\"+t)].join(\",\");return e.enable(\"\"),t},e.enable=function(t){let r;e.save(t),e.namespaces=t,e.names=[],e.skips=[];const n=(\"string\"==typeof t?t:\"\").split(/[\\s,]+/),i=n.length;for(r=0;r{e[r]=t[r]}),e.names=[],e.skips=[],e.formatters={},e.selectColor=function(t){let r=0;for(let e=0;e=1.5*r;return Math.round(t/r)+\" \"+n+(i?\"s\":\"\")}t.exports=function(t,e){e=e||{};var a=typeof t;if(\"string\"===a&&t.length>0)return function(t){if((t=String(t)).length>100)return;var e=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(!e)return;var s=parseFloat(e[1]);switch((e[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*s;case\"weeks\":case\"week\":case\"w\":return 6048e5*s;case\"days\":case\"day\":case\"d\":return s*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return s*i;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return s*n;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return s*r;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return s;default:return}}(t);if(\"number\"===a&&isFinite(t))return e.long?function(t){var e=Math.abs(t);if(e>=o)return s(t,e,o,\"day\");if(e>=i)return s(t,e,i,\"hour\");if(e>=n)return s(t,e,n,\"minute\");if(e>=r)return s(t,e,r,\"second\");return t+\" ms\"}(t):function(t){var e=Math.abs(t);if(e>=o)return Math.round(t/o)+\"d\";if(e>=i)return Math.round(t/i)+\"h\";if(e>=n)return Math.round(t/n)+\"m\";if(e>=r)return Math.round(t/r)+\"s\";return t+\"ms\"}(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},function(t,e,r){(function(e,n,i){var o=r(69),s=r(10),a=r(70),u=r(42),c=r(137),l=a.IncomingMessage,f=a.readyStates;var h=t.exports=function(t){var r,n=this;u.Writable.call(n),n._opts=t,n._body=[],n._headers={},t.auth&&n.setHeader(\"Authorization\",\"Basic \"+new e(t.auth).toString(\"base64\")),Object.keys(t.headers).forEach((function(e){n.setHeader(e,t.headers[e])}));var i=!0;if(\"disable-fetch\"===t.mode||\"requestTimeout\"in t&&!o.abortController)i=!1,r=!0;else if(\"prefer-streaming\"===t.mode)r=!1;else if(\"allow-wrong-content-type\"===t.mode)r=!o.overrideMimeType;else{if(t.mode&&\"default\"!==t.mode&&\"prefer-fast\"!==t.mode)throw new Error(\"Invalid value for opts.mode\");r=!0}n._mode=function(t,e){return o.fetch&&e?\"fetch\":o.mozchunkedarraybuffer?\"moz-chunked-arraybuffer\":o.msstream?\"ms-stream\":o.arraybuffer&&t?\"arraybuffer\":o.vbArray&&t?\"text:vbarray\":\"text\"}(r,i),n._fetchTimer=null,n.on(\"finish\",(function(){n._onFinish()}))};s(h,u.Writable),h.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===d.indexOf(r)&&(this._headers[r]={name:t,value:e})},h.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},h.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},h.prototype._onFinish=function(){var t=this;if(!t._destroyed){var r=t._opts,s=t._headers,a=null;\"GET\"!==r.method&&\"HEAD\"!==r.method&&(a=o.arraybuffer?c(e.concat(t._body)):o.blobConstructor?new n.Blob(t._body.map((function(t){return c(t)})),{type:(s[\"content-type\"]||{}).value||\"\"}):e.concat(t._body).toString());var u=[];if(Object.keys(s).forEach((function(t){var e=s[t].name,r=s[t].value;Array.isArray(r)?r.forEach((function(t){u.push([e,t])})):u.push([e,r])})),\"fetch\"===t._mode){var l=null;if(o.abortController){var h=new AbortController;l=h.signal,t._fetchAbortController=h,\"requestTimeout\"in r&&0!==r.requestTimeout&&(t._fetchTimer=n.setTimeout((function(){t.emit(\"requestTimeout\"),t._fetchAbortController&&t._fetchAbortController.abort()}),r.requestTimeout))}n.fetch(t._opts.url,{method:t._opts.method,headers:u,body:a||void 0,mode:\"cors\",credentials:r.withCredentials?\"include\":\"same-origin\",signal:l}).then((function(e){t._fetchResponse=e,t._connect()}),(function(e){n.clearTimeout(t._fetchTimer),t._destroyed||t.emit(\"error\",e)}))}else{var d=t._xhr=new n.XMLHttpRequest;try{d.open(t._opts.method,t._opts.url,!0)}catch(e){return void i.nextTick((function(){t.emit(\"error\",e)}))}\"responseType\"in d&&(d.responseType=t._mode.split(\":\")[0]),\"withCredentials\"in d&&(d.withCredentials=!!r.withCredentials),\"text\"===t._mode&&\"overrideMimeType\"in d&&d.overrideMimeType(\"text/plain; charset=x-user-defined\"),\"requestTimeout\"in r&&(d.timeout=r.requestTimeout,d.ontimeout=function(){t.emit(\"requestTimeout\")}),u.forEach((function(t){d.setRequestHeader(t[0],t[1])})),t._response=null,d.onreadystatechange=function(){switch(d.readyState){case f.LOADING:case f.DONE:t._onXHRProgress()}},\"moz-chunked-arraybuffer\"===t._mode&&(d.onprogress=function(){t._onXHRProgress()}),d.onerror=function(){t._destroyed||t.emit(\"error\",new Error(\"XHR error\"))};try{d.send(a)}catch(e){return void i.nextTick((function(){t.emit(\"error\",e)}))}}}},h.prototype._onXHRProgress=function(){(function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}})(this._xhr)&&!this._destroyed&&(this._response||this._connect(),this._response._onXHRProgress())},h.prototype._connect=function(){var t=this;t._destroyed||(t._response=new l(t._xhr,t._fetchResponse,t._mode,t._fetchTimer),t._response.on(\"error\",(function(e){t.emit(\"error\",e)})),t.emit(\"response\",t._response))},h.prototype._write=function(t,e,r){this._body.push(t),r()},h.prototype.abort=h.prototype.destroy=function(){this._destroyed=!0,n.clearTimeout(this._fetchTimer),this._response&&(this._response._destroyed=!0),this._xhr?this._xhr.abort():this._fetchAbortController&&this._fetchAbortController.abort()},h.prototype.end=function(t,e,r){\"function\"==typeof t&&(r=t,t=void 0),u.Writable.prototype.end.call(this,t,e,r)},h.prototype.flushHeaders=function(){},h.prototype.setTimeout=function(){},h.prototype.setNoDelay=function(){},h.prototype.setSocketKeepAlive=function(){};var d=[\"accept-charset\",\"accept-encoding\",\"access-control-request-headers\",\"access-control-request-method\",\"connection\",\"content-length\",\"cookie\",\"cookie2\",\"date\",\"dnt\",\"expect\",\"host\",\"keep-alive\",\"origin\",\"referer\",\"te\",\"trailer\",\"transfer-encoding\",\"upgrade\",\"via\"]}).call(this,r(7).Buffer,r(3),r(8))},function(t,e,r){var n=r(7).Buffer;t.exports=function(t){if(t instanceof Uint8Array){if(0===t.byteOffset&&t.byteLength===t.buffer.byteLength)return t.buffer;if(\"function\"==typeof t.buffer.slice)return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}if(n.isBuffer(t)){for(var e=new Uint8Array(t.length),r=t.length,i=0;i= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},d=Math.floor,p=String.fromCharCode;function y(t){throw new RangeError(h[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function m(t,e){var r=t.split(\"@\"),n=\"\";return r.length>1&&(n=r[0]+\"@\",t=r[1]),n+g((t=t.replace(f,\".\")).split(\".\"),e).join(\".\")}function b(t){for(var e,r,n=[],i=0,o=t.length;i=55296&&e<=56319&&i65535&&(e+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=p(t)})).join(\"\")}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function x(t,e,r){var n=0;for(t=r?d(t/700):t>>1,t+=d(t/e);t>455;n+=36)t=d(t/35);return d(n+36*t/(t+38))}function _(t){var e,r,n,i,o,s,a,c,l,f,h,p=[],g=t.length,m=0,b=128,w=72;for((r=t.lastIndexOf(\"-\"))<0&&(r=0),n=0;n=128&&y(\"not-basic\"),p.push(t.charCodeAt(n));for(i=r>0?r+1:0;i=g&&y(\"invalid-input\"),((c=(h=t.charCodeAt(i++))-48<10?h-22:h-65<26?h-65:h-97<26?h-97:36)>=36||c>d((u-m)/s))&&y(\"overflow\"),m+=c*s,!(c<(l=a<=w?1:a>=w+26?26:a-w));a+=36)s>d(u/(f=36-l))&&y(\"overflow\"),s*=f;w=x(m-o,e=p.length+1,0==o),d(m/e)>u-b&&y(\"overflow\"),b+=d(m/e),m%=e,p.splice(m++,0,b)}return v(p)}function S(t){var e,r,n,i,o,s,a,c,l,f,h,g,m,v,_,S=[];for(g=(t=b(t)).length,e=128,r=0,o=72,s=0;s=e&&hd((u-r)/(m=n+1))&&y(\"overflow\"),r+=(a-e)*m,e=a,s=0;su&&y(\"overflow\"),h==e){for(c=r,l=36;!(c<(f=l<=o?1:l>=o+26?26:l-o));l+=36)_=c-f,v=36-f,S.push(p(w(f+_%v,0))),c=d(_/v);S.push(p(w(c,0))),o=x(r,m,n==i),r=0,++n}++r,++e}return S.join(\"\")}a={version:\"1.4.1\",ucs2:{decode:b,encode:v},decode:_,encode:S,toASCII:function(t){return m(t,(function(t){return l.test(t)?\"xn--\"+S(t):t}))},toUnicode:function(t){return m(t,(function(t){return c.test(t)?_(t.slice(4).toLowerCase()):t}))}},void 0===(i=function(){return a}.call(e,r,e,t))||(t.exports=i)}()}).call(this,r(141)(t),r(3))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){\"use strict\";var n=r(143),i=r(154),o=r(46);t.exports={formats:o,parse:i,stringify:n}},function(t,e,r){\"use strict\";var n=r(144),i=r(71),o=r(46),s=Object.prototype.hasOwnProperty,a={brackets:function(t){return t+\"[]\"},comma:\"comma\",indices:function(t,e){return t+\"[\"+e+\"]\"},repeat:function(t){return t}},u=Array.isArray,c=Array.prototype.push,l=function(t,e){c.apply(t,u(e)?e:[e])},f=Date.prototype.toISOString,h=o.default,d={addQueryPrefix:!1,allowDots:!1,charset:\"utf-8\",charsetSentinel:!1,delimiter:\"&\",encode:!0,encoder:i.encode,encodeValuesOnly:!1,format:h,formatter:o.formatters[h],indices:!1,serializeDate:function(t){return f.call(t)},skipNulls:!1,strictNullHandling:!1},p={},y=function t(e,r,o,s,a,c,f,h,y,g,m,b,v,w,x,_){for(var S,A=e,E=_,k=0,T=!1;void 0!==(E=E.get(p))&&!T;){var O=E.get(e);if(k+=1,void 0!==O){if(O===k)throw new RangeError(\"Cyclic object value\");T=!0}void 0===E.get(p)&&(k=0)}if(\"function\"==typeof h?A=h(r,A):A instanceof Date?A=m(A):\"comma\"===o&&u(A)&&(A=i.maybeMap(A,(function(t){return t instanceof Date?m(t):t}))),null===A){if(a)return f&&!w?f(r,d.encoder,x,\"key\",b):r;A=\"\"}if(\"string\"==typeof(S=A)||\"number\"==typeof S||\"boolean\"==typeof S||\"symbol\"==typeof S||\"bigint\"==typeof S||i.isBuffer(A))return f?[v(w?r:f(r,d.encoder,x,\"key\",b))+\"=\"+v(f(A,d.encoder,x,\"value\",b))]:[v(r)+\"=\"+v(String(A))];var C,P=[];if(void 0===A)return P;if(\"comma\"===o&&u(A))w&&f&&(A=i.maybeMap(A,f)),C=[{value:A.length>0?A.join(\",\")||null:void 0}];else if(u(h))C=h;else{var I=Object.keys(A);C=y?I.sort(y):I}for(var R=s&&u(A)&&1===A.length?r+\"[]\":r,j=0;j0?x+w:\"\"}},function(t,e,r){\"use strict\";var n=r(44),i=r(150),o=r(152),s=n(\"%TypeError%\"),a=n(\"%WeakMap%\",!0),u=n(\"%Map%\",!0),c=i(\"WeakMap.prototype.get\",!0),l=i(\"WeakMap.prototype.set\",!0),f=i(\"WeakMap.prototype.has\",!0),h=i(\"Map.prototype.get\",!0),d=i(\"Map.prototype.set\",!0),p=i(\"Map.prototype.has\",!0),y=function(t,e){for(var r,n=t;null!==(r=n.next);n=r)if(r.key===e)return n.next=r.next,r.next=t.next,t.next=r,r};t.exports=function(){var t,e,r,n={assert:function(t){if(!n.has(t))throw new s(\"Side channel does not contain \"+o(t))},get:function(n){if(a&&n&&(\"object\"==typeof n||\"function\"==typeof n)){if(t)return c(t,n)}else if(u){if(e)return h(e,n)}else if(r)return function(t,e){var r=y(t,e);return r&&r.value}(r,n)},has:function(n){if(a&&n&&(\"object\"==typeof n||\"function\"==typeof n)){if(t)return f(t,n)}else if(u){if(e)return p(e,n)}else if(r)return function(t,e){return!!y(t,e)}(r,n);return!1},set:function(n,i){a&&n&&(\"object\"==typeof n||\"function\"==typeof n)?(t||(t=new a),l(t,n,i)):u?(e||(e=new u),d(e,n,i)):(r||(r={key:{},next:null}),function(t,e,r){var n=y(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(r,n,i))}};return n}},function(t,e,r){\"use strict\";var n=\"undefined\"!=typeof Symbol&&Symbol,i=r(146);t.exports=function(){return\"function\"==typeof n&&(\"function\"==typeof Symbol&&(\"symbol\"==typeof n(\"foo\")&&(\"symbol\"==typeof Symbol(\"bar\")&&i())))}},function(t,e,r){\"use strict\";t.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"==typeof Symbol.iterator)return!0;var t={},e=Symbol(\"test\"),r=Object(e);if(\"string\"==typeof e)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(e))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(t,e,r){\"use strict\";var n={foo:{}},i=Object;t.exports=function(){return{__proto__:n}.foo===n.foo&&!({__proto__:null}instanceof i)}},function(t,e,r){\"use strict\";var n=\"Function.prototype.bind called on incompatible \",i=Array.prototype.slice,o=Object.prototype.toString;t.exports=function(t){var e=this;if(\"function\"!=typeof e||\"[object Function]\"!==o.call(e))throw new TypeError(n+e);for(var r,s=i.call(arguments,1),a=function(){if(this instanceof r){var n=e.apply(this,s.concat(i.call(arguments)));return Object(n)===n?n:this}return e.apply(t,s.concat(i.call(arguments)))},u=Math.max(0,e.length-s.length),c=[],l=0;l-1?i(r):r}},function(t,e,r){\"use strict\";var n=r(45),i=r(44),o=i(\"%Function.prototype.apply%\"),s=i(\"%Function.prototype.call%\"),a=i(\"%Reflect.apply%\",!0)||n.call(s,o),u=i(\"%Object.getOwnPropertyDescriptor%\",!0),c=i(\"%Object.defineProperty%\",!0),l=i(\"%Math.max%\");if(c)try{c({},\"a\",{value:1})}catch(t){c=null}t.exports=function(t){var e=a(n,s,arguments);if(u&&c){var r=u(e,\"length\");r.configurable&&c(e,\"length\",{value:1+l(0,t.length-(arguments.length-1))})}return e};var f=function(){return a(n,o,arguments)};c?c(t.exports,\"apply\",{value:f}):t.exports.apply=f},function(t,e,r){var n=\"function\"==typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,\"size\"):null,o=n&&i&&\"function\"==typeof i.get?i.get:null,s=n&&Map.prototype.forEach,a=\"function\"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,\"size\"):null,c=a&&u&&\"function\"==typeof u.get?u.get:null,l=a&&Set.prototype.forEach,f=\"function\"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h=\"function\"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,d=\"function\"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,p=Boolean.prototype.valueOf,y=Object.prototype.toString,g=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,x=String.prototype.toLowerCase,_=RegExp.prototype.test,S=Array.prototype.concat,A=Array.prototype.join,E=Array.prototype.slice,k=Math.floor,T=\"function\"==typeof BigInt?BigInt.prototype.valueOf:null,O=Object.getOwnPropertySymbols,C=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?Symbol.prototype.toString:null,P=\"function\"==typeof Symbol&&\"object\"==typeof Symbol.iterator,I=\"function\"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===P||\"symbol\")?Symbol.toStringTag:null,R=Object.prototype.propertyIsEnumerable,j=(\"function\"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function M(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||_.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(\"number\"==typeof t){var n=t<0?-k(-t):k(t);if(n!==t){var i=String(n),o=b.call(e,i.length+1);return v.call(i,r,\"$&_\")+\".\"+v.call(v.call(o,/([0-9]{3})/g,\"$&_\"),/_$/,\"\")}}return v.call(e,r,\"$&_\")}var L=r(153),F=L.custom,N=q(F)?F:null;function D(t,e,r){var n=\"double\"===(r.quoteStyle||e)?'\"':\"'\";return n+t+n}function U(t){return v.call(String(t),/\"/g,\""\")}function B(t){return!(\"[object Array]\"!==W(t)||I&&\"object\"==typeof t&&I in t)}function G(t){return!(\"[object RegExp]\"!==W(t)||I&&\"object\"==typeof t&&I in t)}function q(t){if(P)return t&&\"object\"==typeof t&&t instanceof Symbol;if(\"symbol\"==typeof t)return!0;if(!t||\"object\"!=typeof t||!C)return!1;try{return C.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,i){var a=r||{};if(H(a,\"quoteStyle\")&&\"single\"!==a.quoteStyle&&\"double\"!==a.quoteStyle)throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');if(H(a,\"maxStringLength\")&&(\"number\"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');var u=!H(a,\"customInspect\")||a.customInspect;if(\"boolean\"!=typeof u&&\"symbol\"!==u)throw new TypeError(\"option \\\"customInspect\\\", if provided, must be `true`, `false`, or `'symbol'`\");if(H(a,\"indent\")&&null!==a.indent&&\"\\t\"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');if(H(a,\"numericSeparator\")&&\"boolean\"!=typeof a.numericSeparator)throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');var y=a.numericSeparator;if(void 0===e)return\"undefined\";if(null===e)return\"null\";if(\"boolean\"==typeof e)return e?\"true\":\"false\";if(\"string\"==typeof e)return function t(e,r){if(e.length>r.maxStringLength){var n=e.length-r.maxStringLength,i=\"... \"+n+\" more character\"+(n>1?\"s\":\"\");return t(b.call(e,0,r.maxStringLength),r)+i}return D(v.call(v.call(e,/(['\\\\])/g,\"\\\\$1\"),/[\\x00-\\x1f]/g,$),\"single\",r)}(e,a);if(\"number\"==typeof e){if(0===e)return 1/0/e>0?\"0\":\"-0\";var w=String(e);return y?M(e,w):w}if(\"bigint\"==typeof e){var _=String(e)+\"n\";return y?M(e,_):_}var k=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=k&&k>0&&\"object\"==typeof e)return B(e)?\"[Array]\":\"[Object]\";var O=function(t,e){var r;if(\"\\t\"===t.indent)r=\"\\t\";else{if(!(\"number\"==typeof t.indent&&t.indent>0))return null;r=A.call(Array(t.indent+1),\" \")}return{base:r,prev:A.call(Array(e+1),r)}}(a,n);if(void 0===i)i=[];else if(V(i,e)>=0)return\"[Circular]\";function F(e,r,o){if(r&&(i=E.call(i)).push(r),o){var s={depth:a.depth};return H(a,\"quoteStyle\")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,i)}return t(e,a,n+1,i)}if(\"function\"==typeof e&&!G(e)){var z=function(t){if(t.name)return t.name;var e=m.call(g.call(t),/^function\\s*([\\w$]+)/);if(e)return e[1];return null}(e),J=Q(e,F);return\"[Function\"+(z?\": \"+z:\" (anonymous)\")+\"]\"+(J.length>0?\" { \"+A.call(J,\", \")+\" }\":\"\")}if(q(e)){var tt=P?v.call(String(e),/^(Symbol\\(.*\\))_[^)]*$/,\"$1\"):C.call(e);return\"object\"!=typeof e||P?tt:K(tt)}if(function(t){if(!t||\"object\"!=typeof t)return!1;if(\"undefined\"!=typeof HTMLElement&&t instanceof HTMLElement)return!0;return\"string\"==typeof t.nodeName&&\"function\"==typeof t.getAttribute}(e)){for(var et=\"<\"+x.call(String(e.nodeName)),rt=e.attributes||[],nt=0;nt\",e.childNodes&&e.childNodes.length&&(et+=\"...\"),et+=\"\"}if(B(e)){if(0===e.length)return\"[]\";var it=Q(e,F);return O&&!function(t){for(var e=0;e=0)return!1;return!0}(it)?\"[\"+X(it,O)+\"]\":\"[ \"+A.call(it,\", \")+\" ]\"}if(function(t){return!(\"[object Error]\"!==W(t)||I&&\"object\"==typeof t&&I in t)}(e)){var ot=Q(e,F);return\"cause\"in Error.prototype||!(\"cause\"in e)||R.call(e,\"cause\")?0===ot.length?\"[\"+String(e)+\"]\":\"{ [\"+String(e)+\"] \"+A.call(ot,\", \")+\" }\":\"{ [\"+String(e)+\"] \"+A.call(S.call(\"[cause]: \"+F(e.cause),ot),\", \")+\" }\"}if(\"object\"==typeof e&&u){if(N&&\"function\"==typeof e[N]&&L)return L(e,{depth:k-n});if(\"symbol\"!==u&&\"function\"==typeof e.inspect)return e.inspect()}if(function(t){if(!o||!t||\"object\"!=typeof t)return!1;try{o.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var st=[];return s&&s.call(e,(function(t,r){st.push(F(r,e,!0)+\" => \"+F(t,e))})),Z(\"Map\",o.call(e),st,O)}if(function(t){if(!c||!t||\"object\"!=typeof t)return!1;try{c.call(t);try{o.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var at=[];return l&&l.call(e,(function(t){at.push(F(t,e))})),Z(\"Set\",c.call(e),at,O)}if(function(t){if(!f||!t||\"object\"!=typeof t)return!1;try{f.call(t,f);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return Y(\"WeakMap\");if(function(t){if(!h||!t||\"object\"!=typeof t)return!1;try{h.call(t,h);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return Y(\"WeakSet\");if(function(t){if(!d||!t||\"object\"!=typeof t)return!1;try{return d.call(t),!0}catch(t){}return!1}(e))return Y(\"WeakRef\");if(function(t){return!(\"[object Number]\"!==W(t)||I&&\"object\"==typeof t&&I in t)}(e))return K(F(Number(e)));if(function(t){if(!t||\"object\"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return K(F(T.call(e)));if(function(t){return!(\"[object Boolean]\"!==W(t)||I&&\"object\"==typeof t&&I in t)}(e))return K(p.call(e));if(function(t){return!(\"[object String]\"!==W(t)||I&&\"object\"==typeof t&&I in t)}(e))return K(F(String(e)));if(!function(t){return!(\"[object Date]\"!==W(t)||I&&\"object\"==typeof t&&I in t)}(e)&&!G(e)){var ut=Q(e,F),ct=j?j(e)===Object.prototype:e instanceof Object||e.constructor===Object,lt=e instanceof Object?\"\":\"null prototype\",ft=!ct&&I&&Object(e)===e&&I in e?b.call(W(e),8,-1):lt?\"Object\":\"\",ht=(ct||\"function\"!=typeof e.constructor?\"\":e.constructor.name?e.constructor.name+\" \":\"\")+(ft||lt?\"[\"+A.call(S.call([],ft||[],lt||[]),\": \")+\"] \":\"\");return 0===ut.length?ht+\"{}\":O?ht+\"{\"+X(ut,O)+\"}\":ht+\"{ \"+A.call(ut,\", \")+\" }\"}return String(e)};var z=Object.prototype.hasOwnProperty||function(t){return t in this};function H(t,e){return z.call(t,e)}function W(t){return y.call(t)}function V(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;r-1?t.split(\",\"):t},c=function(t,e,r,n){if(t){var o=r.allowDots?t.replace(/\\.([^.[]+)/g,\"[$1]\"):t,s=/(\\[[^[\\]]*])/g,a=r.depth>0&&/(\\[[^[\\]]*])/.exec(o),c=a?o.slice(0,a.index):o,l=[];if(c){if(!r.plainObjects&&i.call(Object.prototype,c)&&!r.allowPrototypes)return;l.push(c)}for(var f=0;r.depth>0&&null!==(a=s.exec(o))&&f=0;--o){var s,a=t[o];if(\"[]\"===a&&r.parseArrays)s=[].concat(i);else{s=r.plainObjects?Object.create(null):{};var c=\"[\"===a.charAt(0)&&\"]\"===a.charAt(a.length-1)?a.slice(1,-1):a,l=parseInt(c,10);r.parseArrays||\"\"!==c?!isNaN(l)&&a!==c&&String(l)===c&&l>=0&&r.parseArrays&&l<=r.arrayLimit?(s=[])[l]=i:\"__proto__\"!==c&&(s[c]=i):s={0:i}}i=s}return i}(l,e,r,n)}};t.exports=function(t,e){var r=function(t){if(!t)return s;if(null!==t.decoder&&void 0!==t.decoder&&\"function\"!=typeof t.decoder)throw new TypeError(\"Decoder has to be a function.\");if(void 0!==t.charset&&\"utf-8\"!==t.charset&&\"iso-8859-1\"!==t.charset)throw new TypeError(\"The charset option must be either utf-8, iso-8859-1, or undefined\");var e=void 0===t.charset?s.charset:t.charset;return{allowDots:void 0===t.allowDots?s.allowDots:!!t.allowDots,allowPrototypes:\"boolean\"==typeof t.allowPrototypes?t.allowPrototypes:s.allowPrototypes,allowSparse:\"boolean\"==typeof t.allowSparse?t.allowSparse:s.allowSparse,arrayLimit:\"number\"==typeof t.arrayLimit?t.arrayLimit:s.arrayLimit,charset:e,charsetSentinel:\"boolean\"==typeof t.charsetSentinel?t.charsetSentinel:s.charsetSentinel,comma:\"boolean\"==typeof t.comma?t.comma:s.comma,decoder:\"function\"==typeof t.decoder?t.decoder:s.decoder,delimiter:\"string\"==typeof t.delimiter||n.isRegExp(t.delimiter)?t.delimiter:s.delimiter,depth:\"number\"==typeof t.depth||!1===t.depth?+t.depth:s.depth,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:\"boolean\"==typeof t.interpretNumericEntities?t.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:\"number\"==typeof t.parameterLimit?t.parameterLimit:s.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:\"boolean\"==typeof t.plainObjects?t.plainObjects:s.plainObjects,strictNullHandling:\"boolean\"==typeof t.strictNullHandling?t.strictNullHandling:s.strictNullHandling}}(e);if(\"\"===t||null==t)return r.plainObjects?Object.create(null):{};for(var l=\"string\"==typeof t?function(t,e){var r,c={__proto__:null},l=e.ignoreQueryPrefix?t.replace(/^\\?/,\"\"):t,f=e.parameterLimit===1/0?void 0:e.parameterLimit,h=l.split(e.delimiter,f),d=-1,p=e.charset;if(e.charsetSentinel)for(r=0;r-1&&(g=o(g)?[g]:g),i.call(c,y)?c[y]=n.combine(c[y],g):c[y]=g}return c}(t,r):t,f=r.plainObjects?Object.create(null):{},h=Object.keys(l),d=0;d{e&&console.log(\"starting getPalette with image\",t);const{fileDirectory:r}=t,{BitsPerSample:n,ColorMap:i,ImageLength:o,ImageWidth:s,PhotometricInterpretation:a,SampleFormat:u,SamplesPerPixel:c}=r;if(!i)throw new Error(\"[geotiff-palette]: the image does not contain a color map, so we can't make a palette.\");const l=Math.pow(2,n);e&&console.log(\"[geotiff-palette]: count:\",l);const f=i.length/3;if(e&&console.log(\"[geotiff-palette]: bandSize:\",f),f!==l)throw new Error(\"[geotiff-palette]: can't handle situations where the color map has more or less values than the number of possible values in a raster\");const h=f,d=h+f,p=[];for(let t=0;te in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,c=(t,e)=>i(t,\"name\",{value:e,configurable:!0});const l=r(157),f=r(192),h=r(194),d=c(t=>new Array(t).fill(0).map((t,e)=>e),\"range\");function p(t,e={}){var r=e,{bands:n,height:i,precise:c=!1,stats:p,width:y,layout:g}=r,m=((t,e)=>{var r={};for(var n in t)s.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&o)for(var n of o(t))e.indexOf(n)<0&&a.call(t,n)&&(r[n]=t[n]);return r})(r,[\"bands\",\"height\",\"precise\",\"stats\",\"width\",\"layout\"]);if(\"function\"==typeof t.then)throw new Error(\"[calc-image-stats] you passed in a promise as the data values. please resolve the promise first before calling calcImageStats\");const b=f({bands:n,data:t,height:i,layout:g,width:y});null!=n||(n=b.bands),null!=i||(i=b.height),null!=g||(g=b.layout),null!=y||(y=b.width);const v=d(n).map(e=>{let r;const f=((t,e)=>{for(var r in e||(e={}))s.call(e,r)&&u(t,r,e[r]);if(o)for(var r of o(e))a.call(e,r)&&u(t,r,e[r]);return t})({precise:c,stats:p},m);if([\"[band][row,column]\",\"[band][column,row]\"].includes(g))r=t[e];else if([\"[band][row][column]\",\"[band][column][row]\"].includes(g))r=t[e],f.chunked=!0;else if(1===n&&[\"[band,row,column]\",\"[row,column,band]\",\"[column,band,row]\",\"[column,row,band]\"].includes(g))r=t;else{const o={band:[e,e]},s={band:n,column:y,row:i};r=h.iterClip({data:t,layout:g,rect:o,sizes:s})}return l(r,f)});return{depth:n,height:i,width:y,bands:v}}c(p,\"calcImageStats\"),void 0!==(n=function(){return p}.call(e,r,e,t))&&(t.exports=n),t.exports=p,t.exports.default=p,t.exports.calcImageStats=p,\"object\"==typeof self&&(self.calcImageStats=p),\"object\"==typeof window&&(self.calcImageStats=p)},function(t,e,r){var n;const{getOrCreateIterator:i}=r(72),{add:o,compare:s,divide:a,mean:u,multiply:c,pow:l,sort:f,subtract:h,sum:d}=r(158),p=r(181);function y(t,{async:e=!1,chunked:r=!1,noData:n,filter:d,calcCount:y=!0,calcHistogram:g=!0,calcInvalid:m=!0,calcMax:b=!0,calcMean:v=!0,calcMedian:w=!0,calcMin:x=!0,calcMode:_=!0,calcModes:S=!0,calcProduct:A=!0,calcRange:E=!0,calcStd:k=!0,calcSum:T=!0,calcValid:O=!0,calcVariance:C=!0,calcUniques:P=!0,precise:I=!1,precise_max_decimal_digits:R=100,stats:j}={debugLevel:0}){j&&(j.forEach(t=>{[\"count\",\"histogram\",\"invalid\",\"max\",\"mean\",\"median\",\"min\",\"mode\",\"modes\",\"product\",\"range\",\"sum\",\"std\",\"valid\",\"variance\",\"uniques\"].includes(t)||console.warn(`[calc-stats] skipping unknown stat \"${t}\"`)}),y=j.includes(\"count\"),g=j.includes(\"histogram\"),m=j.includes(\"invalid\"),b=j.includes(\"max\"),v=j.includes(\"mean\"),w=j.includes(\"median\"),x=j.includes(\"min\"),_=j.includes(\"mode\"),S=j.includes(\"modes\"),A=j.includes(\"product\"),E=j.includes(\"range\"),k=j.includes(\"std\"),T=j.includes(\"sum\"),O=j.includes(\"valid\"),C=j.includes(\"variance\"),P=j.includes(\"uniques\"));const M=i(t);let L,F,N,D=g||w||_||S||C||k||P,U=y||v||w||A||O||C||k||\"function\"==typeof d,B=y||m||\"function\"==typeof d,G=T||v||C||k,q=x||E,z=b||E,H=A,W=0,V=0,$=0,K=I?\"0\":0;const Y={};let Z,X;Z=I?t=>{t=t.toString(),U&&W++,!q||void 0!==L&&\"<\"!==s(t,L)||(L=t),!z||void 0!==F&&\">\"!==s(t,F)||(F=t),H&&(N=1===W?t:c(N,t)),G&&(K=o(K,t)),D&&(t in Y?Y[t].ct++:Y[t]={n:t.toString(),ct:1})}:t=>{U&&W++,q&&(void 0===L||tF)&&(F=t),H&&(N=1===W?t:N*t),G&&(K+=t),D&&(t in Y?Y[t].ct++:Y[t]={n:t,ct:1})},X=\"number\"==typeof n&&\"function\"==typeof d?t=>{$++,\"number\"!=typeof t||isNaN(t)||t===n||!0!==d({valid:W,index:$,value:t})?B&&V++:Z(t)}:\"number\"==typeof n?t=>{\"number\"!=typeof t||isNaN(t)||t===n?B&&V++:Z(t)}:\"function\"==typeof d?t=>{$++,\"number\"!=typeof t||isNaN(t)||!0!==d({valid:W,index:$,value:t})?B&&V++:Z(t)}:t=>{\"number\"!=typeof t||isNaN(t)?B&&V++:Z(t)};const Q=()=>{const t={};if(y&&(t.count=I?o(V.toString(),W.toString()):V+W),O&&(t.valid=I?W.toString():W),m&&(t.invalid=I?V.toString():V),w&&(t.median=p.calculate({counts:Y,precise:I,total:W})),x&&(t.min=L),b&&(t.max=F),A&&(t.product=N),T&&(t.sum=K),E&&(t.range=I?h(F.toString(),L.toString()):F-L),v||C||k){const e=I?a(K,W.toString(),{max_decimal_digits:R}):K/W;if(v&&(t.mean=e),C||k){const r=(({count:t,histogram:e,mean_value:r,precise:n=!1})=>{if(n){r=r.toString();const n=Object.values(e).reduce((t,{n:e,ct:n})=>{const i=h(e.toString(),r);return o(t,c(n.toString(),l(i,\"2\")))},\"0\");return a(n,t.toString())}return Object.values(e).reduce((t,{n:e,ct:n})=>t+n*Math.pow(e-r,2),0)/t})({count:W,histogram:Y,mean_value:e,precise:I});C&&(t.variance=r),k&&(t.std=I?Math.sqrt(Number(r)).toString():Math.sqrt(r))}}if(g&&(I&&Object.values(Y).forEach(t=>{t.ct=t.ct.toString()}),t.histogram=Y),_||S){let e=0,r=[];for(let t in Y){const{n:n,ct:i}=Y[t];i===e?r.push(I?n.toString():n):i>e&&(e=i,r=[I?n.toString():n])}S&&(t.modes=r),_&&(t.mode=I?u(r):r.reduce((t,e)=>t+e,0)/r.length)}return P&&(t.uniques=I?f(Object.keys(Y)):Object.values(Y).map(({n:t})=>t).sort((t,e)=>t-e)),t};if(r){if(e)return(async()=>{for await(let t of M)for(let e of t)X(e);return Q()})();for(let t of M)for(let e of t)X(e);return Q()}if(e)return(async()=>{for await(let t of M)X(t);return Q()})();for(let t of M)X(t);return Q()}void 0===(n=function(){return y}.call(e,r,e,t))||(t.exports=n),t.exports=y,t.exports.default=y,t.exports.calcStats=y,\"object\"==typeof self&&(self.calcStats=y),\"object\"==typeof window&&(window.calcStats=y)},function(t,e,r){\"use strict\";var n;const i=r(4),o=r(6),s=r(159),a=r(76),u=r(0),c=r(34),l=r(5),f=r(161),h=r(163),d=r(51),p=r(84),y=r(167),g=r(168),m=r(1),b=r(88),v=r(89),w=r(73),x=r(75),_=r(169),S=r(170),A=r(77),E=r(171),k=r(172),T=r(15),O=r(16),C=r(90),P=r(91),I=r(11),R=r(9),j=r(32),M=r(48),L=r(31),F=r(173),N={absolute:i,add:o,binomial_coefficient:s,ceil:a,clean:u,compare:c,compare_positive:l,constants:f,cosine_radians:h,count_decimal_digits:d,count_integer_digits:p,cube:y,cube_root:g,divide:m,eulers_number:b,exp:v,expand:w,factorial:x,flip_sign:_,floor:S,fraction:A,hypotenuse:E,is_infinity:T,is_integer:O,is_factorial:k,is_negative_infinity:C,is_positive_infinity:P,is_zero:I,long_addition:R,long_division:j,long_multiplication:M,long_subtraction:L,mean:r(174),max:F,min:r(86),multiply:r(53),multiply_array:r(79),multiply_range:r(47),nilakantha:r(175),ols:r(176),pow:r(35),pow_positive:r(54),primes:r(87),reciprocal:r(81),remainder:r(177),root:r(37),root_integer_digits:r(83),round:r(36),round_last_decimal:r(49),sign:r(22),sign_nonzero:r(50),simplify_fraction:r(85),sine_radians:r(178),softmax:r(179),sort:r(180),square:r(23),square_root:r(92),subtract:r(33),sum:r(55),truncate:r(93)};void 0===(n=function(){return N}.call(e,r,e,t))||(t.exports=n),t.exports=N,t.exports.default=N,\"object\"==typeof window&&(window.preciso=N),\"object\"==typeof self&&(self.preciso=N)},function(t,e,r){\"use strict\";const n=r(0),i=r(5),o=r(75),s=r(9),a=r(31),u=r(32),c=r(47);function l(t,e){switch(t=n(t),e=n(e),i(t,e)){case\"=\":return\"1\";case\">\":{const r=a(t,e),n=c(s(e,\"1\"),t),i=o(r);return u(n,i)}case\"<\":throw new Error(\"[binominal_coefficient] unsupported\")}}t.exports=l,t.exports.default=l},function(t,e,r){\"use strict\";function n(t){return t.substring(0,t.indexOf(\".\"))}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const{MAX_SAFE_INTEGER:n}=r(74),{MAX_SAFE_INTEGER_LENGTH:i}=r(30),{PI:o}=r(162);t.exports={MAX_SAFE_INTEGER:n,MAX_SAFE_INTEGER_LENGTH:i,PI:o}},function(t,e){t.exports={PI_100:\"3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679\"}},function(t,e,r){\"use strict\";const n=r(6),i=r(11),o=r(23),s=r(17),a=r(1);function u(t,{steps:e=100,max_decimal_digits:r=100}={}){if(i(t))return\"0\";let u,c=\"-\",l=\"1\",f=e,h=o(t),d=\"1\",p=\"1\",y=\"0\";for(let t=0;tn(t));return i(o(s),e)}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";function n(t){return!!t.match(/^\\d+!$/i)}t.exports=n,t.exports.default=n},function(t,e,r){\"use strict\";const n=r(0),i=r(34);function o(t){\"string\"==typeof t&&(t=Array.prototype.slice.call(arguments));let e=n(t[0]);const r=t.length;for(let n=1;n\"===i(r,e)&&(e=r)}return e}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(6),i=r(1);function o(t,e){let r=0,o=\"0\";for(let e of t)r++,o=n(o,e);return i(o,r.toString(),e)}t.exports=o,t.exports.default=o},function(t,e,r){\"use strict\";const n=r(6),i=r(9),o=r(1),s=r(17);function a(t=100,{divide_options:e}={}){let r=\"+\",a=\"3\",u=\"2\",c=\"3\",l=\"4\";for(let f=1;fi(t,{max_decimal_digits:e}));const r=o(t);return t.map(t=>n(t,r,{max_decimal_digits:e,ellipsis:!1}))}t.exports=s,t.exports.default=s},function(t,e,r){\"use strict\";const n=r(34);function i(t,{direction:e=\"ascending\"}={direction:\"ascending\"}){const r=\"desc\"===e||\"descending\"===e?\"<\":\">\";return t.sort((t,e)=>n(t,e)===r?1:-1)}t.exports=i,t.exports.default=i},function(t,e,r){var n;const i=r(182),o=r(191);function s({counts:t,nums:e,no_data:r,precise:n,threshold:s=50,total:a}){return void 0!==t||void 0!==a||e.length>s?i({counts:t,no_data:r,nums:e,precise:n,total:a}):o({no_data:r,nums:e,precise:n})}const a={calculate:s};void 0===(n=function(){return a}.call(e,r,e,t))||(t.exports=n),t.exports=a,t.exports.default={calculate:s},\"object\"==typeof window&&(window.mediana=a),\"object\"==typeof self&&(self.mediana=a)},function(t,e,r){const n=r(183),i=r(94);function o({counts:t,nums:e,no_data:r,precise:o=!1,total:s}){void 0!==t&&void 0!==s||({counts:t,total:s}=n({nums:e,no_data:r}));const a=Object.values(t).sort((t,e)=>t.n-e.n),u=s/2,c=a.length;if(0!==c){if(1===c)return o?a[0].n.toString():a[0].n;{let t=0;if(s%2==0)for(let e=0;eu)return t-n===u?i(a[e-1].n,r,{precise:o}):o?r.toString():r}else for(let e=0;eu)return o?r.toString():r}}}}t.exports=o,t.exports.default=o},function(t,e){function r({nums:t,no_data:e}){let r=t.length;const n={};let i=0;if(void 0!==e)for(let o=0;o=a){const t=s-a;let r=o;for(let e=0;es;t--)result+=\"0\";return result+=o,e+result}return e+o.substring(0,s)+\".\"+o.substring(s)}t.exports=r,t.exports.default=r},function(t,e,r){const n=r(98),i=r(18),o=r(186);function s(t,e,r){if(t=i(t),\"0\"===(e=i(e)))throw new Error(\"[preciso] division by zero\");if(\"\"===t||\"0\"===t)return\"0\";const s=\"-\"!==t[0],a=\"-\"!==e[0],u=s!==a?\"-\":\"\";return s||(t=n(t)),a||(e=n(e)),u+o(t,e,r)}t.exports=s,t.exports.default=s},function(t,e,r){const n=r(38),i=r(95),o=(r(187),r(189)),s=r(190);t.exports=function(t,e,{max_decimal_digits:r=100,ellipsis:a=!1}={}){\"0\"===t[0]&&(t=t.substring(1)),\"0\"===e[0]&&(e=e.substring(1));const u=t.indexOf(\".\"),c=e.indexOf(\".\"),l=-1===u?t.length:u,f=-1===c?0:e.length-1-c;let h=!1;t=t.replace(/\\./,\"\"),e=e.replace(/\\./,\"\");const d=t.length;let p,y=\"\",g=\"\",m=-1*f,b=0;for(let r=0;r\"===p){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,y);)t++,s=r,r=i(r,e);if(t=t.toString(),\"\"!==g)for(let e=t.length;e<=b;e++)g+=\"0\";g+=t,y=o(y,s),b=0}else{if(\"<\"===p){\"\"===g&&m++,b++;continue}if(\"=\"===p){if(\"\"!==g)for(let t=0;t3){g+=\"...\",h=!0;break}}else t[y]=1;const r=n(y,e);if(\">\"===r){let t=1,r=i(e,e),s=e;for(;\">\"!==n(r,y);)t++,s=r,r=i(r,e);t=t.toString();for(let e=t.length;e<=b;e++)g+=\"0\";if(g+=t,y=o(y,s),\"0\"===y)break;b=0}else{if(\"<\"===r){b++;continue}if(\"=\"===r){for(let t=0;tw){for(let t=w;t0&&(g=s(g.substring(0,g.length-t+1)))}return\".\"===g[0]&&(g=\"0\"+g),g}},function(t,e,r){const n=r(98),i=r(18),o=r(38),s=r(188);function a(t,e){t=i(t),e=i(e);const r=\"-\"!==t[0]!==(\"-\"!==e[0])?\"-\":\"\";t=n(t),e=n(e);if(\"<\"===o(t,e)){const r=t;t=e,e=r}return r+s(t,e)}t.exports=a,t.exports.default=a},function(t,e,r){const{MAX_SAFE_INTEGER_LENGTH:n}=r(56);t.exports=function(t,e){if(\"0\"===t||\"0\"===e)return\"0\";const r=t.indexOf(\".\"),i=e.indexOf(\".\"),o=(-1===r?t.length:r)+(-1===i?e.length:i),s=(-1===r?0:t.length-1-r)+(-1===i?0:e.length-1-i);if(0===s&&o=0;){const t=h,e=h-=15,r=a.substring(e,t);f.push([Number(r),r.length])}const d=[],p=[];for(let t=0,e=l-1;e>=0;e--,t++){const r=u[e],n=Number(r);let i=0,o=\"\";const s=f.length-1;f.forEach(([t,e],r)=>{let a=(i+n*t).toString();const u=a.length;if(u>e&&r!==s){const t=-1*e;o=a.slice(t)+o,i=Number(a.slice(0,t))}else{const t=e-u;for(let e=0;eNumber(t)),o.length])}const y=d.length,g=p[p.length-1][1]+y;let m=\"\",b=0;for(let t=0;t=0&&(e+=r[o])}e>=10?(e=e.toString(),m=e[e.length-1]+m,b=Number(e.slice(0,-1))):(m=e+m,b=0)}if(0===s)m=m.replace(/^0+/,\"\");else{const t=m.length-s;m=m.substring(0,t)+\".\"+m.substring(t),m=m.replace(/^0+/,\"\"),m=m.replace(/\\.?0+$/,\"\"),\".\"===m[0]&&(m=\"0\"+m)}return m}},function(t,e,r){const n=r(18),i=r(38),o=r(96),s=r(97);function a(t,e){t=n(t),e=n(e);const r=\"-\"!==t[0],a=\"-\"!==e[0];if(r){if(a){const r=i(t,e);return\">\"===r?s(t,e):\"<\"===r?\"-\"+s(e,t):\"0\"}return o(t,e.substring(1))}if(a)return\"-\"+o(t.substring(1),e);{t=t.substring(1),e=e.substring(1);const r=i(t,e);return\">\"===r?\"-\"+s(t,e):\"<\"===r?s(e,t):\"0\"}}t.exports=a,t.exports.default=a},function(t,e){const r=[\"5\",\"6\",\"7\",\"8\",\"9\"];t.exports=function(t){\"+\"===t[0]&&(t=t.substring(1));const e=t.length;let n=\"\";const i=t[t.length-1];if(r.includes(i)){let r;for(r=e-2;r>=0;r--){const e=t[r];if(\".\"===e||\"-\"===e)continue;const i=Number(e)+1;if(10!==i){n=i+n;break}n=\"0\"+n}r>0&&(n=t.substring(0,r)+n)}else n=t.substring(0,e-1);return\".\"===n[n.length-1]&&(n=n.substring(0,n.length-1)),n.indexOf(\".\")>-1&&(n=n.replace(/0+$/,\"\")),n}},function(t,e,r){const n=r(94);function i({nums:t,no_data:e,precise:r=!1}){switch((t=t.filter(t=>t!==e).sort((t,e)=>t-e)).length){case 0:return;case 1:return r?t[0].toString():t[0];default:const e=t.length/2;if(t.length%2==0)return n(t[e-1],t[e],{precise:r});{const n=Math.floor(e);return r?t[n].toString():t[n]}}}t.exports=i,t.exports.default=i},function(t,e,r){var n;const i=r(193);function o({bands:t,data:e,height:r,layout:n,width:o}){const s=i(e);if(\"[row,column,band]\"===n||1===s)return{layout:\"[row,column,band]\",bands:t||(r&&o?e.length/(r*o):void 0),height:r||(t&&o?e.length/(t*o):void 0),width:o||(t&&r?e.length/(t*r):void 0)};if(2===s){if(!r||!o)return e.lengthArray.isArray(t)||t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array||t instanceof BigInt64Array||t instanceof BigUint64Array;let r=0,n=t;for(;e(n);)r++,n=n[0];return r}},function(t,e,r){const n={},{wrapNextFunction:i}=r(72),o=r(195),s=r(196),a={Array:Array,Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Float32Array:Float32Array,Float64Array:Float64Array};try{a.BigInt64Array=BigInt64Array,a.BigUint64Array=BigUint64Array}catch(t){}const u=t=>t.match(/\\[[^\\]]+\\]/g),c=t=>t.startsWith(\"[\")&&t.endsWith(\"]\")?t.substring(1,t.length-1):t,l=t=>t.startsWith(\"(\")&&t.endsWith(\")\")?t.substring(1,t.length-1):t,f=t=>t.match(/(\\(.*?\\)|[^\\(,\\s]+)(?=\\s*,|\\s*$)/g),h=t=>{t=c(t),t=l(t);const e=f(t);return 1===e.length?{type:\"Vector\",dim:e[0]}:{type:\"Matrix\",parts:e.map(h)}};function d(t){const e=t.match(/[^ A-Za-z,\\[\\]]/g);if(e)throw new Error(\"The following invalid characters were used: \"+e.map(t=>`\"${t}\"`).join(\", \"));return!0}function p(t,{useLayoutCache:e=!0}={useLayoutCache:!0}){if(e&&t in n)return n[t];d(t);const r=u(t).map(h),i={type:\"Layout\",summary:r.map(t=>\"Matrix\"===t.type?t.parts.length:1),dims:r};return e&&(n[t]=i),i}function y({useLayoutCache:t=!0,data:e,layout:r,sizes:n={}}){\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));const{dims:i}=r,o=i.length,a=m({useLayoutCache:t,layout:r,sizes:n}),u=o-1,c=r.summary.toString();if(c in s){const t={data:e};return r.dims.map((e,r)=>{\"Vector\"===e.type?t[`d${r}v0`]=e.dim:\"Matrix\"===e.type&&e.parts.forEach((e,n)=>{t[`d${r}v${n}`]=e.dim,t[`m${r}v${n}`]=a[e.dim]})}),s[c].bind(t)}return({point:t,value:r})=>{let n=e;for(let e=0;ee+a[r]*t[r],0),o?n[c]=r:n=n[c]}}}function g({rect:t={}}){if(t)for(let e in t){const r=t[e];if(2!==r.length)throw new Error(\"[xdim] uh oh. invalid hyper-rectangle\");const[n,i]=r;if(n>i)throw new Error(`[xdim] uh oh. invalid range for \"${e}\". Start of ${n} can't be greater than end of ${i}.`);if(n<0)throw new Error(\"[xdim] uh oh. invalid hyper-rectangle with start \"+n)}}function m({useLayoutCache:t=!0,layout:e,sizes:r}){\"string\"==typeof e&&(e=p(e,{useLayoutCache:t}));const{dims:n}=e,i=n.length;let o={};for(let t=0;t=0;e--){const{dim:i}=t[e];o[i]=n,n*=r[t[e].dim]}}}return o}function b({useLayoutCache:t=!0,data:e,layout:r,point:n,sizes:i={}}){let o,s;\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));let a=e;const{dims:u}=r,c=u.length;for(let t=0;t=0;e--){const o=t[e];if(\"Vector\"===o.type){const{dim:t}=o;if(r+=u*n[t],e>0){if(!(t in i))throw new Error(`you cannot calculate the location without knowing the size of the \"${t}\" dimension.`);u*=i[t]}}}o=a,s=r,a=a[r]}}return{index:s,value:a,parent:o}}function v({arr:t,fill:e,lens:r,arrayTypes:n}){if(0===r.length)return t;const i=r[0];if(1===r.length){const r=n?n[n.length-1]:\"Array\";for(let n=0;n\"Vector\"===t.type?n[t.dim]:\"Matrix\"===t.type?t.parts.reduce((t,e)=>{if(!(e.dim in n))throw new Error(`[xdim] could not find \"${e.dim}\" in sizes: { ${Object.keys(n).join(\", \")} }`);return t*n[e.dim]},1):void 0);return{data:w({fill:t,shape:o,arrayTypes:i}),shape:o,arrayTypes:i}}function _({start:t=0,end:e=100}){let r=t-1;return e+=1,i((function(){return r++,r===e?{done:!0}:{done:!1,value:r}}))}function S({order:t,sizes:e,rect:r={}}){const n=Array.isArray(t)?t:Object.keys(e).sort((t,r)=>e[t]-e[r]),o=new Array(n.length),s={};for(let t=0;t=0;t--){const{value:i,done:a}=o[t].next();if(!a){for(let i=t+1;i{\"Vector\"===e.type?t[`d${r}v0`]=e.dim:\"Matrix\"===e.type&&e.parts.forEach((e,n)=>{t[`d${r}v${n}`]=e.dim,t[`m${r}v${n}`]=a[e.dim]})}),o[c].bind(t)}return({point:t})=>{let r=e;for(let e=0;ee+a[r]*t[r],0),n)return{index:s,parent:r,value:r[s]};r=r[s]}}},prepareUpdate:y,removeBraces:c,removeParentheses:l,select:b,transform:function({data:t,fill:e,from:r,to:n,sizes:i,useLayoutCache:o=!0}){\"string\"==typeof r&&(r=p(r,{useLayoutCache:o})),\"string\"==typeof n&&(n=p(n,{useLayoutCache:o}));const{data:s}=x({fill:e,layout:n,sizes:i}),a=y({useLayoutCache:o,data:s,layout:n,sizes:i}),u=S({sizes:i});for(point of u){const{value:e}=b({data:t,layout:r,point:point,sizes:i});a({point:point,value:e})}return{data:s}},update:function({useLayoutCache:t=!0,data:e,layout:r,point:n,sizes:i={},value:o}){\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));const{dims:s}=r;for(let t=0;t=0;r--){const o=t[r],{dim:s}=o;if(u+=e*n[s],r>0){if(!(s in i))throw new Error(`you cannot calculate the location without knowing the size of the \"${s}\" dimension.`);e*=i[s]}}}r?e[u]=o:e=e[u]}},clip:function({useLayoutCache:t=!0,data:e,layout:r,rect:n,sizes:i={},flat:o=!1,validate:s=!0}){s&&g({rect:n}),\"string\"==typeof r&&(r=p(r,{useLayoutCache:t}));let a=[e];if(r.dims.forEach(t=>{let e=[];a.forEach(r=>{if(\"Vector\"===t.type){const[i,o]=n[t.dim];e=e.concat(r.slice(i,o+1))}else{const{parts:o}=t;let s=[0],a=1;for(let t=o.length-1;t>=0;t--){const e=o[t],{dim:r}=e,[u,c]=n[r],l=[];for(let t=u;t<=c;t++)s.forEach(e=>{l.push(e+a*t)});s=l,a*=i[r]}s.forEach(t=>{e.push(r[t])})}}),a=e}),o)return{data:a};const u=Object.fromEntries(Object.entries(n).map(([t,[e,r]])=>[t,r-e+1])),{data:c}=x({layout:r,sizes:u}),l=r.dims.length,f=(t,e)=>{if(e===l)for(let e=0;ef(t,e+1))};return f(c,1),{data:c}},validateRect:g}},function(t,e){t.exports={1:function({point:t}){const e=this.data,r=t[this.d0v0];return{parent:e,index:r,value:e[r]}},2:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1];return{parent:e,index:r,value:e[r]}},3:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2];return{parent:e,index:r,value:e[r]}},4:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3];return{parent:e,index:r,value:e[r]}},5:function({point:t}){const e=this.data,r=this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]+this.m0v4*t[this.d0v4];return{parent:e,index:r,value:e[r]}},\"1,1\":function({point:t}){const e=this.data[t[this.d0v0]],r=t[this.d1v0];return{parent:e,index:r,value:e[r]}},\"1,2\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1];return{parent:e,index:r,value:e[r]}},\"1,3\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2];return{parent:e,index:r,value:e[r]}},\"1,4\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3];return{parent:e,index:r,value:e[r]}},\"1,5\":function({point:t}){const e=this.data[t[this.d0v0]],r=this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]+this.m1v4*t[this.d1v4];return{parent:e,index:r,value:e[r]}},\"1,1,1\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=t[this.d2v0];return{parent:e,index:r,value:e[r]}},\"1,1,2\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1];return{parent:e,index:r,value:e[r]}},\"1,1,3\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2];return{parent:e,index:r,value:e[r]}},\"1,1,4\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3];return{parent:e,index:r,value:e[r]}},\"1,1,5\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]],r=this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]+this.m2v4*t[this.d2v4];return{parent:e,index:r,value:e[r]}},\"1,1,1,1\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=t[this.d3v0];return{parent:e,index:r,value:e[r]}},\"1,1,1,2\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1];return{parent:e,index:r,value:e[r]}},\"1,1,1,3\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2];return{parent:e,index:r,value:e[r]}},\"1,1,1,4\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3];return{parent:e,index:r,value:e[r]}},\"1,1,1,5\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]],r=this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]+this.m3v4*t[this.d3v4];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,1\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=t[this.d4v0];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,2\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,3\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,4\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3];return{parent:e,index:r,value:e[r]}},\"1,1,1,1,5\":function({point:t}){const e=this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]],r=this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]+this.m4v4*t[this.d4v4];return{parent:e,index:r,value:e[r]}}}},function(t,e){t.exports={1:function({point:t,value:e}){this.data[t[this.d0v0]]=e},2:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]]=e},3:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]]=e},4:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]]=e},5:function({point:t,value:e}){this.data[this.m0v0*t[this.d0v0]+this.m0v1*t[this.d0v1]+this.m0v2*t[this.d0v2]+this.m0v3*t[this.d0v3]+this.m0v4*t[this.d0v4]]=e},\"1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]]=e},\"1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]]=e},\"1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]]=e},\"1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]]=e},\"1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][this.m1v0*t[this.d1v0]+this.m1v1*t[this.d1v1]+this.m1v2*t[this.d1v2]+this.m1v3*t[this.d1v3]+this.m1v4*t[this.d1v4]]=e},\"1,1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]]=e},\"1,1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]]=e},\"1,1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]]=e},\"1,1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]]=e},\"1,1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][this.m2v0*t[this.d2v0]+this.m2v1*t[this.d2v1]+this.m2v2*t[this.d2v2]+this.m2v3*t[this.d2v3]+this.m2v4*t[this.d2v4]]=e},\"1,1,1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]]=e},\"1,1,1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]]=e},\"1,1,1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]]=e},\"1,1,1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]]=e},\"1,1,1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][this.m3v0*t[this.d3v0]+this.m3v1*t[this.d3v1]+this.m3v2*t[this.d3v2]+this.m3v3*t[this.d3v3]+this.m3v4*t[this.d3v4]]=e},\"1,1,1,1,1\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][t[this.d4v0]]=e},\"1,1,1,1,2\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]]=e},\"1,1,1,1,3\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]]=e},\"1,1,1,1,4\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]]=e},\"1,1,1,1,5\":function({point:t,value:e}){this.data[t[this.d0v0]][t[this.d1v0]][t[this.d2v0]][t[this.d3v0]][this.m4v0*t[this.d4v0]+this.m4v1*t[this.d4v1]+this.m4v2*t[this.d4v2]+this.m4v3*t[this.d4v3]+this.m4v4*t[this.d4v4]]=e}}},function(t,e,r){\"use strict\";function n(t,e){if(\"undefined\"==typeof ImageData)throw\"toCanvas is not supported in your environment\";{const r=document.createElement(\"CANVAS\"),n=e&&e.height?Math.min(t.height,e.height):Math.min(t.height,100),i=e&&e.width?Math.min(t.width,e.width):Math.min(t.width,100);r.height=n,r.width=i,r.style.minHeight=\"200px\",r.style.minWidth=\"400px\",r.style.maxWidth=\"100%\";const o=r.getContext(\"2d\"),s=function(t,e,r){if(t.values){const{noDataValue:n,mins:i,ranges:o,values:s}=t,a=s.length,u=t.width/e,c=t.height/r,l=new Uint8ClampedArray(e*r*4);for(let t=0;t{try{return t[f][h]}catch(t){console.error(t)}});if(d.every(t=>void 0!==t&&t!==n)){const n=t*(4*e)+4*r;if(1===a){const t=Math.round(d[0]),e=Math.round((t-i[0])/o[0]*255);l[n]=e,l[n+1]=e,l[n+2]=e,l[n+3]=255}else if(3===a)try{const[t,e,r]=d;l[n]=t,l[n+1]=e,l[n+2]=r,l[n+3]=255}catch(t){console.error(t)}else if(4===a)try{const[t,e,r,i]=d;l[n]=t,l[n+1]=e,l[n+2]=r,l[n+3]=i}catch(t){console.error(t)}}}return new ImageData(l,e,r)}}(t,i,n);return o.putImageData(s,0,0),r}}r.r(e),r.d(e,\"default\",(function(){return n}))},function(t,e,r){\"use strict\";r.d(e,\"a\",(function(){return i}));var n=r(19);Object(n.b)().blob;const i=Object(n.b)().default},,,function(t,e,r){\"use strict\";var n=r(26),i=r(103);var o=function(t){\"function\"==typeof t?t():t&&\"function\"==typeof t.unsubscribe&&t.unsubscribe()};e.a=function(t){const e=new i.a;let r,s=0;return new n.a(n=>{r||(r=t.subscribe(e));const i=e.subscribe(n);return s++,()=>{s--,i.unsubscribe(),0===s&&(o(r),r=void 0)}})}}])}));","module.exports = function getDepth(arr) {\n const isArray = (arr) =>\n Array.isArray(arr) ||\n arr instanceof Int8Array ||\n arr instanceof Uint8Array ||\n arr instanceof Uint8ClampedArray ||\n arr instanceof Int16Array ||\n arr instanceof Uint16Array ||\n arr instanceof Int32Array ||\n arr instanceof Uint32Array ||\n arr instanceof Float32Array ||\n arr instanceof Float64Array ||\n arr instanceof BigInt64Array ||\n arr instanceof BigUint64Array;\n\n let depth = 0;\n let part = arr;\n while (isArray(part)) {\n depth++;\n part = part[0];\n }\n return depth;\n};\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports[\"get-epsg-code\"]=e():t[\"get-epsg-code\"]=e()}(\"undefined\"!=typeof self?self:this,(function(){return function(t){var e={};function o(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=t,o.c=e,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=1)}([function(t,e,o){const r=o(5);t.exports=function(t,e,o){const n=o&&o.debug||!1,a=o&&o.startIndex||0;n&&console.log(\"starting findTag with\",e,\" and \",o);const i=r(t,`<${e}[ >]`,a);if(n&&console.log(\"start:\",i),-1===i)return;const s=i+e.length+r(t.slice(i+e.length),\"[ /]\"+e+\">\",0)+1+e.length+1;if(n&&console.log(\"end:\",s),-1===s)return;const C=t.slice(i,s);return{inner:C.slice(C.indexOf(\">\")+1,C.lastIndexOf(\"<\")),outer:C,start:i,end:s}}},function(t,e,o){var r=o(2),n=o(0),a=o(6),i=o(12).default,s=o(7),C=o(8),E=(C.ARRAY_TYPE,C.EXCLUDED_FORMATS),d=C.BYTES_PER_VALUE,f=C.DATA_VIEW_READER_NAME,D=C.FORMATS,c=C.HASHED_FIELDS,g=C.NUM_FIELDS,l=(C.NUM_HASHED_FIELDS,C.UNSUPPORTED_MSG),p=D.ESRI_WKT,A=D.GEOSERVER,u=D.MAPFILE,Q=D.MAPNIK,h=D.OGC_GML,R=D.OGC_XML,G=D.OGC_WKT,I=D.POSTGIS,x=D.PROJ_4,w=D.PROJ_4_JS,M=o(9),m=new DataView(M),B=o(11).hash,F=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];function O(t){return function(t){return!(!(t=t.trim()).startsWith(\"PROJCS[\")&&!t.startsWith(\"GEOGCS[\"))&&F.some((function(e){return t.includes(e)}))}(t)?t.includes(\"AUTHORITY\")?G:p:t.includes(\"gml:ProjectedCRS\")||t.includes(\"gml:GeodeticCRS\")||t.includes(\"gml:GeographicCRS\")?t.includes(\"gml:srsID\")?R:h:t.startsWith(\"+proj=\")?x:t.startsWith('proj4.defs(\"EPSG:')?w:/^\\d{1,6}\\=(PROJCS|GEOGCS)/.test(t)?A:t.startsWith(\"PROJECTION\")&&t.endsWith(\"END\")?u:t.endsWith(\"\")?Q:t.startsWith(\"INSERT\")?I:\"SOMETHING ELSE\"}function k(t,e,o){o&&console.log(\"looking up \"+e);var r=B(t);o&&console.log(\"hashed:\",r);var n=c.indexOf(e)+1;o&&console.log(\"offset:\",n);for(var a=n*d;a0){if(d.forEach(t=>{t.start+=E.start,t.end+=E.start}),a&&t===e.length-1)return[d[0]];s=s.concat(d)}}i=s}return i}},function(t,e,o){const r=o(0);t.exports=function(t,e,o){const n=[],a=o&&o.debug||!1;let i,s=o&&o.startIndex||0;for(;i=r(t,e,{debug:a,startIndex:s});)s=i.end,n.push(i);return n}},function(t,e){t.exports=function(t,e,o){const r=new RegExp(e).exec(t.slice(o));return r?o+r.index:-1}},function(t,e){t.exports=function(t,e,o){const r=o&&o.debug||!1;r&&console.log(\"getting \"+e+\" in \"+t);const n=\"object\"==typeof t?t.outer:t,a=`${e}\\\\=\"(.*)\"`;r&&console.log(\"pattern:\",a);const i=new RegExp(a).exec(n);if(i)return i[1]}},function(t,e){t.exports=function(t){return t=(t=t.replace('DATUM[\"D_','DATUM[\"')).replace(/\\.\\d{16,}/g,(function(t){return t.substr(0,16)}))}},function(t,e){var o=[\"esriwkt\",\"mapfile\",\"proj4\"],r=o;\"undefined\"!=typeof process&&process.env;var n=[];\"undefined\"!=typeof process&&process.env,r.includes(\"esriwkt\")||n.push(\"esriwkt\"),r.includes(\"mapfile\")||n.push(\"mapfile\"),r.includes(\"proj4\")||(n.push(\"mapnik\"),n.push(\"proj4\")),n.sort();var a=r.length,i=a+1,s=Int16Array;t.exports={ARRAY_TYPE:s,DATA_VIEW_READER_NAME:\"getInt16\",BYTES_PER_VALUE:2,DEFAULT_HASHED_FIELDS:o,EXCLUDED_FORMATS:n,FORMATS:{ESRI_WKT:\"esriwkt\",GEOSERVER:\"geoserver\",MAPFILE:\"mapfile\",MAPNIK:\"mapnik\",OGC_GML:\"gml\",OGC_XML:\"xml\",OGC_WKT:\"wkt\",POSTGIS:\"postgis\",PROJ_4:\"proj4\",PROJ_4_JS:\"js\"},HASHED_FIELDS:r,NUM_HASHED_FIELDS:a,NUM_FIELDS:i,UNSUPPORTED_MSG:\"[get-epsg-code] {} format not supported\"}},function(t,e,o){t.exports=o(10)(\"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\")},function(t,e,o){\"use strict\";t.exports=function(t){for(var e=\"undefined\"!=typeof window&&\"function\"==typeof window.atob?window.atob(t):Buffer.from(t,\"base64\").toString(\"binary\"),o=new Uint8Array(e.length),r=0;r=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},E.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(s.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},E.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},E.prototype.number=function(t){if(!C.test(t)){if(s.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},E.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},E.prototype.keyword=function(t){if(i.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!s.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},E.prototype.neutral=function(t){if(a.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(C.test(t))return this.word=t,void(this.state=3);if(!s.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},E.prototype.output=function(){for(;this.place0?90:-90),t.lat_ts=t.lat1)}(a),a}}])}));\n//# sourceMappingURL=get-epsg-code-all.node.min.js.map","function addSymbolIterator(obj) {\n try {\n obj[Symbol.iterator] = function () {\n return this;\n };\n } catch (error) {\n // pass\n }\n}\n\nfunction addSymbolIteratorFallback(obj) {\n obj[\"@@iterator\"] = function () {\n return this;\n };\n}\n\nfunction wrapNextFunction(next) {\n const iter = { next };\n addSymbolIterator(iter);\n addSymbolIteratorFallback(iter);\n return iter;\n}\n\nfunction isArray(data) {\n try {\n return data.constructor.name.endsWith(\"Array\");\n } catch {\n return false;\n }\n}\n\nfunction hasNext(data) {\n try {\n return typeof data.next === \"function\";\n } catch {\n return false;\n }\n}\n\nfunction hasIterator(data) {\n try {\n return \"@@iterator\" in data;\n } catch {\n return false;\n }\n}\n\nfunction hasSymbolIterator(data) {\n try {\n return Symbol.iterator in data.constructor.prototype;\n } catch {\n return false;\n }\n}\n\nfunction isIterator(data) {\n try {\n return (\n Symbol.iterator in data &&\n typeof data.next === \"function\" &&\n data.propertyIsEnumerable(\"next\") === false\n );\n } catch {\n return false;\n }\n}\n\nfunction getIterator(data) {\n const iter = data[\"@@iterator\"];\n if (hasNext(iter)) {\n return iter;\n } else if (typeof iter === \"function\") {\n return iter();\n }\n}\n\nfunction createIterator(data) {\n let i = 0;\n let len = data.length;\n const next = () =>\n i++ < len ? { value: data[i], done: false } : { done: true };\n return wrapNextFunction(next);\n}\n\nfunction getOrCreateIterator(data) {\n if (isIterator(data)) {\n return data;\n } else if (hasSymbolIterator(data)) {\n return data[Symbol.iterator]();\n } else if (hasNext(data)) {\n return wrapNextFunction(data.next);\n } else if (hasIterator(data)) {\n return getIterator(data);\n } else if (typeof data === \"string\" || isArray(data)) {\n return createIterator(data);\n } else {\n throw \"[iter-fun] unable to determine iterator\";\n }\n}\n\nfunction zip(iters) {\n // convert input to iters just in case\n iters = iters.map(getOrCreateIterator);\n\n return wrapNextFunction(function next() {\n const values = iters.map(iter => iter.next());\n // if they are all done, stop\n if (values.every(({ done }) => done)) {\n return { done: true };\n } else {\n return {\n done: false,\n value: values.map(({ value }) => value)\n };\n }\n });\n}\n\nif (typeof module === \"object\") {\n module.exports = {\n addSymbolIterator,\n addSymbolIteratorFallback,\n isIterator,\n isArray,\n hasNext,\n hasSymbolIterator,\n hasIterator,\n getIterator,\n createIterator,\n getOrCreateIterator,\n wrapNextFunction,\n zip\n };\n}\n","L.Control.Fullscreen = L.Control.extend({\n options: {\n position: 'topleft',\n title: {\n 'false': 'View Fullscreen',\n 'true': 'Exit Fullscreen'\n }\n },\n\n onAdd: function (map) {\n var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control');\n\n this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container);\n this.link.href = '#';\n\n this._map = map;\n this._map.on('fullscreenchange', this._toggleTitle, this);\n this._toggleTitle();\n\n L.DomEvent.on(this.link, 'click', this._click, this);\n\n return container;\n },\n\n _click: function (e) {\n L.DomEvent.stopPropagation(e);\n L.DomEvent.preventDefault(e);\n this._map.toggleFullscreen(this.options);\n },\n\n _toggleTitle: function() {\n this.link.title = this.options.title[this._map.isFullscreen()];\n }\n});\n\nL.Map.include({\n isFullscreen: function () {\n return this._isFullscreen || false;\n },\n\n toggleFullscreen: function (options) {\n var container = this.getContainer();\n if (this.isFullscreen()) {\n if (options && options.pseudoFullscreen) {\n this._disablePseudoFullscreen(container);\n } else if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n this._disablePseudoFullscreen(container);\n }\n } else {\n if (options && options.pseudoFullscreen) {\n this._enablePseudoFullscreen(container);\n } else if (container.requestFullscreen) {\n container.requestFullscreen();\n } else if (container.mozRequestFullScreen) {\n container.mozRequestFullScreen();\n } else if (container.webkitRequestFullscreen) {\n container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else if (container.msRequestFullscreen) {\n container.msRequestFullscreen();\n } else {\n this._enablePseudoFullscreen(container);\n }\n }\n\n },\n\n _enablePseudoFullscreen: function (container) {\n L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen');\n this._setFullscreen(true);\n this.fire('fullscreenchange');\n },\n\n _disablePseudoFullscreen: function (container) {\n L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen');\n this._setFullscreen(false);\n this.fire('fullscreenchange');\n },\n\n _setFullscreen: function(fullscreen) {\n this._isFullscreen = fullscreen;\n var container = this.getContainer();\n if (fullscreen) {\n L.DomUtil.addClass(container, 'leaflet-fullscreen-on');\n } else {\n L.DomUtil.removeClass(container, 'leaflet-fullscreen-on');\n }\n this.invalidateSize();\n },\n\n _onFullscreenChange: function (e) {\n var fullscreenElement =\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement;\n\n if (fullscreenElement === this.getContainer() && !this._isFullscreen) {\n this._setFullscreen(true);\n this.fire('fullscreenchange');\n } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) {\n this._setFullscreen(false);\n this.fire('fullscreenchange');\n }\n }\n});\n\nL.Map.mergeOptions({\n fullscreenControl: false\n});\n\nL.Map.addInitHook(function () {\n if (this.options.fullscreenControl) {\n this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl);\n this.addControl(this.fullscreenControl);\n }\n\n var fullscreenchange;\n\n if ('onfullscreenchange' in document) {\n fullscreenchange = 'fullscreenchange';\n } else if ('onmozfullscreenchange' in document) {\n fullscreenchange = 'mozfullscreenchange';\n } else if ('onwebkitfullscreenchange' in document) {\n fullscreenchange = 'webkitfullscreenchange';\n } else if ('onmsfullscreenchange' in document) {\n fullscreenchange = 'MSFullscreenChange';\n }\n\n if (fullscreenchange) {\n var onFullscreenChange = L.bind(this._onFullscreenChange, this);\n\n this.whenReady(function () {\n L.DomEvent.on(document, fullscreenchange, onFullscreenChange);\n });\n\n this.on('unload', function () {\n L.DomEvent.off(document, fullscreenchange, onFullscreenChange);\n });\n }\n});\n\nL.control.fullscreen = function (options) {\n return new L.Control.Fullscreen(options);\n};\n","/* @preserve\n * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.leaflet = {}));\n})(this, (function (exports) { 'use strict';\n\n var version = \"1.9.4\";\n\n /*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n // @function extend(dest: Object, src?: Object): Object\r\n // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\n function extend(dest) {\r\n \tvar i, j, len, src;\r\n\r\n \tfor (j = 1, len = arguments.length; j < len; j++) {\r\n \t\tsrc = arguments[j];\r\n \t\tfor (i in src) {\r\n \t\t\tdest[i] = src[i];\r\n \t\t}\r\n \t}\r\n \treturn dest;\r\n }\r\n\r\n // @function create(proto: Object, properties?: Object): Object\r\n // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\n var create$2 = Object.create || (function () {\r\n \tfunction F() {}\r\n \treturn function (proto) {\r\n \t\tF.prototype = proto;\r\n \t\treturn new F();\r\n \t};\r\n })();\r\n\r\n // @function bind(fn: Function, …): Function\r\n // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n // Has a `L.bind()` shortcut.\r\n function bind(fn, obj) {\r\n \tvar slice = Array.prototype.slice;\r\n\r\n \tif (fn.bind) {\r\n \t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n \t}\r\n\r\n \tvar args = slice.call(arguments, 2);\r\n\r\n \treturn function () {\r\n \t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n \t};\r\n }\r\n\r\n // @property lastId: Number\r\n // Last unique ID used by [`stamp()`](#util-stamp)\r\n var lastId = 0;\r\n\r\n // @function stamp(obj: Object): Number\r\n // Returns the unique ID of an object, assigning it one if it doesn't have it.\r\n function stamp(obj) {\r\n \tif (!('_leaflet_id' in obj)) {\r\n \t\tobj['_leaflet_id'] = ++lastId;\r\n \t}\r\n \treturn obj._leaflet_id;\r\n }\r\n\r\n // @function throttle(fn: Function, time: Number, context: Object): Function\r\n // Returns a function which executes function `fn` with the given scope `context`\r\n // (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n // `fn` will be called no more than one time per given amount of `time`. The arguments\r\n // received by the bound function will be any arguments passed when binding the\r\n // function, followed by any arguments passed when invoking the bound function.\r\n // Has an `L.throttle` shortcut.\r\n function throttle(fn, time, context) {\r\n \tvar lock, args, wrapperFn, later;\r\n\r\n \tlater = function () {\r\n \t\t// reset lock and call if queued\r\n \t\tlock = false;\r\n \t\tif (args) {\r\n \t\t\twrapperFn.apply(context, args);\r\n \t\t\targs = false;\r\n \t\t}\r\n \t};\r\n\r\n \twrapperFn = function () {\r\n \t\tif (lock) {\r\n \t\t\t// called too soon, queue to call later\r\n \t\t\targs = arguments;\r\n\r\n \t\t} else {\r\n \t\t\t// call and lock until later\r\n \t\t\tfn.apply(context, arguments);\r\n \t\t\tsetTimeout(later, time);\r\n \t\t\tlock = true;\r\n \t\t}\r\n \t};\r\n\r\n \treturn wrapperFn;\r\n }\r\n\r\n // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n // Returns the number `num` modulo `range` in such a way so it lies within\r\n // `range[0]` and `range[1]`. The returned value will be always smaller than\r\n // `range[1]` unless `includeMax` is set to `true`.\r\n function wrapNum(x, range, includeMax) {\r\n \tvar max = range[1],\r\n \t min = range[0],\r\n \t d = max - min;\r\n \treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n }\r\n\r\n // @function falseFn(): Function\r\n // Returns a function which always returns `false`.\r\n function falseFn() { return false; }\r\n\r\n // @function formatNum(num: Number, precision?: Number|false): Number\r\n // Returns the number `num` rounded with specified `precision`.\r\n // The default `precision` value is 6 decimal places.\r\n // `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\n function formatNum(num, precision) {\r\n \tif (precision === false) { return num; }\r\n \tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n \treturn Math.round(num * pow) / pow;\r\n }\r\n\r\n // @function trim(str: String): String\r\n // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\n function trim(str) {\r\n \treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n }\r\n\r\n // @function splitWords(str: String): String[]\r\n // Trims and splits the string on whitespace and returns the array of parts.\r\n function splitWords(str) {\r\n \treturn trim(str).split(/\\s+/);\r\n }\r\n\r\n // @function setOptions(obj: Object, options: Object): Object\r\n // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\n function setOptions(obj, options) {\r\n \tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n \t\tobj.options = obj.options ? create$2(obj.options) : {};\r\n \t}\r\n \tfor (var i in options) {\r\n \t\tobj.options[i] = options[i];\r\n \t}\r\n \treturn obj.options;\r\n }\r\n\r\n // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n // Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n // be appended at the end. If `uppercase` is `true`, the parameter names will\r\n // be uppercased (e.g. `'?A=foo&B=bar'`)\r\n function getParamString(obj, existingUrl, uppercase) {\r\n \tvar params = [];\r\n \tfor (var i in obj) {\r\n \t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n \t}\r\n \treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n }\r\n\r\n var templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n // @function template(str: String, data: Object): String\r\n // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n // `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n // data values — they will be evaluated passing `data` as an argument.\r\n function template(str, data) {\r\n \treturn str.replace(templateRe, function (str, key) {\r\n \t\tvar value = data[key];\r\n\r\n \t\tif (value === undefined) {\r\n \t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n \t\t} else if (typeof value === 'function') {\r\n \t\t\tvalue = value(data);\r\n \t\t}\r\n \t\treturn value;\r\n \t});\r\n }\r\n\r\n // @function isArray(obj): Boolean\r\n // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\n var isArray = Array.isArray || function (obj) {\r\n \treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n };\r\n\r\n // @function indexOf(array: Array, el: Object): Number\r\n // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\n function indexOf(array, el) {\r\n \tfor (var i = 0; i < array.length; i++) {\r\n \t\tif (array[i] === el) { return i; }\r\n \t}\r\n \treturn -1;\r\n }\r\n\r\n // @property emptyImageUrl: String\r\n // Data URI string containing a base64-encoded empty GIF image.\r\n // Used as a hack to free memory from unused images on WebKit-powered\r\n // mobile devices (by setting image `src` to this string).\r\n var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\n function getPrefixed(name) {\r\n \treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n }\r\n\r\n var lastTime = 0;\r\n\r\n // fallback for IE 7-8\r\n function timeoutDefer(fn) {\r\n \tvar time = +new Date(),\r\n \t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n \tlastTime = time + timeToCall;\r\n \treturn window.setTimeout(fn, timeToCall);\r\n }\r\n\r\n var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\n var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n \t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n // Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n // `context` if given. When `immediate` is set, `fn` is called immediately if\r\n // the browser doesn't have native support for\r\n // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n // otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\n function requestAnimFrame(fn, context, immediate) {\r\n \tif (immediate && requestFn === timeoutDefer) {\r\n \t\tfn.call(context);\r\n \t} else {\r\n \t\treturn requestFn.call(window, bind(fn, context));\r\n \t}\r\n }\r\n\r\n // @function cancelAnimFrame(id: Number): undefined\r\n // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\n function cancelAnimFrame(id) {\r\n \tif (id) {\r\n \t\tcancelFn.call(window, id);\r\n \t}\r\n }\n\n var Util = {\n __proto__: null,\n extend: extend,\n create: create$2,\n bind: bind,\n get lastId () { return lastId; },\n stamp: stamp,\n throttle: throttle,\n wrapNum: wrapNum,\n falseFn: falseFn,\n formatNum: formatNum,\n trim: trim,\n splitWords: splitWords,\n setOptions: setOptions,\n getParamString: getParamString,\n template: template,\n isArray: isArray,\n indexOf: indexOf,\n emptyImageUrl: emptyImageUrl,\n requestFn: requestFn,\n cancelFn: cancelFn,\n requestAnimFrame: requestAnimFrame,\n cancelAnimFrame: cancelAnimFrame\n };\n\n // @class Class\r\n // @aka L.Class\r\n\r\n // @section\r\n // @uninheritable\r\n\r\n // Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\n function Class() {}\r\n\r\n Class.extend = function (props) {\r\n\r\n \t// @function extend(props: Object): Function\r\n \t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n \t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n \tvar NewClass = function () {\r\n\r\n \t\tsetOptions(this);\r\n\r\n \t\t// call the constructor\r\n \t\tif (this.initialize) {\r\n \t\t\tthis.initialize.apply(this, arguments);\r\n \t\t}\r\n\r\n \t\t// call all constructor hooks\r\n \t\tthis.callInitHooks();\r\n \t};\r\n\r\n \tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n \tvar proto = create$2(parentProto);\r\n \tproto.constructor = NewClass;\r\n\r\n \tNewClass.prototype = proto;\r\n\r\n \t// inherit parent's statics\r\n \tfor (var i in this) {\r\n \t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n \t\t\tNewClass[i] = this[i];\r\n \t\t}\r\n \t}\r\n\r\n \t// mix static properties into the class\r\n \tif (props.statics) {\r\n \t\textend(NewClass, props.statics);\r\n \t}\r\n\r\n \t// mix includes into the prototype\r\n \tif (props.includes) {\r\n \t\tcheckDeprecatedMixinEvents(props.includes);\r\n \t\textend.apply(null, [proto].concat(props.includes));\r\n \t}\r\n\r\n \t// mix given properties into the prototype\r\n \textend(proto, props);\r\n \tdelete proto.statics;\r\n \tdelete proto.includes;\r\n\r\n \t// merge options\r\n \tif (proto.options) {\r\n \t\tproto.options = parentProto.options ? create$2(parentProto.options) : {};\r\n \t\textend(proto.options, props.options);\r\n \t}\r\n\r\n \tproto._initHooks = [];\r\n\r\n \t// add method for calling all hooks\r\n \tproto.callInitHooks = function () {\r\n\r\n \t\tif (this._initHooksCalled) { return; }\r\n\r\n \t\tif (parentProto.callInitHooks) {\r\n \t\t\tparentProto.callInitHooks.call(this);\r\n \t\t}\r\n\r\n \t\tthis._initHooksCalled = true;\r\n\r\n \t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n \t\t\tproto._initHooks[i].call(this);\r\n \t\t}\r\n \t};\r\n\r\n \treturn NewClass;\r\n };\r\n\r\n\r\n // @function include(properties: Object): this\r\n // [Includes a mixin](#class-includes) into the current class.\r\n Class.include = function (props) {\r\n \tvar parentOptions = this.prototype.options;\r\n \textend(this.prototype, props);\r\n \tif (props.options) {\r\n \t\tthis.prototype.options = parentOptions;\r\n \t\tthis.mergeOptions(props.options);\r\n \t}\r\n \treturn this;\r\n };\r\n\r\n // @function mergeOptions(options: Object): this\r\n // [Merges `options`](#class-options) into the defaults of the class.\r\n Class.mergeOptions = function (options) {\r\n \textend(this.prototype.options, options);\r\n \treturn this;\r\n };\r\n\r\n // @function addInitHook(fn: Function): this\r\n // Adds a [constructor hook](#class-constructor-hooks) to the class.\r\n Class.addInitHook = function (fn) { // (Function) || (String, args...)\r\n \tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n \tvar init = typeof fn === 'function' ? fn : function () {\r\n \t\tthis[fn].apply(this, args);\r\n \t};\r\n\r\n \tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n \tthis.prototype._initHooks.push(init);\r\n \treturn this;\r\n };\r\n\r\n function checkDeprecatedMixinEvents(includes) {\r\n \t/* global L: true */\r\n \tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n \tincludes = isArray(includes) ? includes : [includes];\r\n\r\n \tfor (var i = 0; i < includes.length; i++) {\r\n \t\tif (includes[i] === L.Mixin.Events) {\r\n \t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n \t\t\t\t'this property will be removed in future releases, ' +\r\n \t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n \t\t}\r\n \t}\r\n }\n\n /*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\n var Events = {\r\n \t/* @method on(type: String, fn: Function, context?: Object): this\r\n \t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n \t *\r\n \t * @alternative\r\n \t * @method on(eventMap: Object): this\r\n \t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n \t */\r\n \ton: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t/* @method off(type: String, fn?: Function, context?: Object): this\r\n \t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n \t *\r\n \t * @alternative\r\n \t * @method off(eventMap: Object): this\r\n \t * Removes a set of type/listener pairs.\r\n \t *\r\n \t * @alternative\r\n \t * @method off: this\r\n \t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n \t */\r\n \toff: function (types, fn, context) {\r\n\r\n \t\tif (!arguments.length) {\r\n \t\t\t// clear all listeners if called without arguments\r\n \t\t\tdelete this._events;\r\n\r\n \t\t} else if (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\tthis._off(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tvar removeAll = arguments.length === 1;\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tif (removeAll) {\r\n \t\t\t\t\tthis._off(types[i]);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tthis._off(types[i], fn, context);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// attach listener (without syntactic sugar now)\r\n \t_on: function (type, fn, context, _once) {\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// check if fn already there\r\n \t\tif (this._listens(type, fn, context) !== false) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar newListener = {fn: fn, ctx: context};\r\n \t\tif (_once) {\r\n \t\t\tnewListener.once = true;\r\n \t\t}\r\n\r\n \t\tthis._events = this._events || {};\r\n \t\tthis._events[type] = this._events[type] || [];\r\n \t\tthis._events[type].push(newListener);\r\n \t},\r\n\r\n \t_off: function (type, fn, context) {\r\n \t\tvar listeners,\r\n \t\t i,\r\n \t\t len;\r\n\r\n \t\tif (!this._events) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tlisteners = this._events[type];\r\n \t\tif (!listeners) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (arguments.length === 1) { // remove all\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// Set all removed listeners to noop\r\n \t\t\t\t// so they are not called if remove happens in fire\r\n \t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tlisteners[i].fn = falseFn;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\t// clear all listeners for a type if function isn't specified\r\n \t\t\tdelete this._events[type];\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// find fn and remove it\r\n \t\tvar index = this._listens(type, fn, context);\r\n \t\tif (index !== false) {\r\n \t\t\tvar listener = listeners[index];\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n \t\t\t\tlistener.fn = falseFn;\r\n\r\n \t\t\t\t/* copy array in case events are being fired */\r\n \t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n \t\t\t}\r\n \t\t\tlisteners.splice(index, 1);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n \t// Fires an event of the specified type. You can optionally provide a data\r\n \t// object — the first argument of the listener function will contain its\r\n \t// properties. The event can optionally be propagated to event parents.\r\n \tfire: function (type, data, propagate) {\r\n \t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n \t\tvar event = extend({}, data, {\r\n \t\t\ttype: type,\r\n \t\t\ttarget: this,\r\n \t\t\tsourceTarget: data && data.sourceTarget || this\r\n \t\t});\r\n\r\n \t\tif (this._events) {\r\n \t\t\tvar listeners = this._events[type];\r\n \t\t\tif (listeners) {\r\n \t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n \t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tvar l = listeners[i];\r\n \t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n \t\t\t\t\tvar fn = l.fn;\r\n \t\t\t\t\tif (l.once) {\r\n \t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tfn.call(l.ctx || this, event);\r\n \t\t\t\t}\r\n\r\n \t\t\t\tthis._firingCount--;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// propagate the event to parents (set with addEventParent)\r\n \t\t\tthis._propagateEvent(event);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method listens(type: String, propagate?: Boolean): Boolean\r\n \t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n \t// Returns `true` if a particular event type has any listeners attached to it.\r\n \t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n \tlistens: function (type, fn, context, propagate) {\r\n \t\tif (typeof type !== 'string') {\r\n \t\t\tconsole.warn('\"string\" type argument expected');\r\n \t\t}\r\n\r\n \t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n \t\tvar _fn = fn;\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tpropagate = !!fn;\r\n \t\t\t_fn = undefined;\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events && this._events[type];\r\n \t\tif (listeners && listeners.length) {\r\n \t\t\tif (this._listens(type, _fn, context) !== false) {\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// also check parents for listeners if event propagates\r\n \t\t\tfor (var id in this._eventParents) {\r\n \t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n \t},\r\n\r\n \t// returns the index (number) or false\r\n \t_listens: function (type, fn, context) {\r\n \t\tif (!this._events) {\r\n \t\t\treturn false;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events[type] || [];\r\n \t\tif (!fn) {\r\n \t\t\treturn !!listeners.length;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n \t\t\t\treturn i;\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n\r\n \t},\r\n\r\n \t// @method once(…): this\r\n \t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n \tonce: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn, true);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context, true);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method addEventParent(obj: Evented): this\r\n \t// Adds an event parent - an `Evented` that will receive propagated events\r\n \taddEventParent: function (obj) {\r\n \t\tthis._eventParents = this._eventParents || {};\r\n \t\tthis._eventParents[stamp(obj)] = obj;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeEventParent(obj: Evented): this\r\n \t// Removes an event parent, so it will stop receiving propagated events\r\n \tremoveEventParent: function (obj) {\r\n \t\tif (this._eventParents) {\r\n \t\t\tdelete this._eventParents[stamp(obj)];\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_propagateEvent: function (e) {\r\n \t\tfor (var id in this._eventParents) {\r\n \t\t\tthis._eventParents[id].fire(e.type, extend({\r\n \t\t\t\tlayer: e.target,\r\n \t\t\t\tpropagatedFrom: e.target\r\n \t\t\t}, e), true);\r\n \t\t}\r\n \t}\r\n };\r\n\r\n // aliases; we should ditch those eventually\r\n\r\n // @method addEventListener(…): this\r\n // Alias to [`on(…)`](#evented-on)\r\n Events.addEventListener = Events.on;\r\n\r\n // @method removeEventListener(…): this\r\n // Alias to [`off(…)`](#evented-off)\r\n\r\n // @method clearAllEventListeners(…): this\r\n // Alias to [`off()`](#evented-off)\r\n Events.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n // @method addOneTimeEventListener(…): this\r\n // Alias to [`once(…)`](#evented-once)\r\n Events.addOneTimeEventListener = Events.once;\r\n\r\n // @method fireEvent(…): this\r\n // Alias to [`fire(…)`](#evented-fire)\r\n Events.fireEvent = Events.fire;\r\n\r\n // @method hasEventListeners(…): Boolean\r\n // Alias to [`listens(…)`](#evented-listens)\r\n Events.hasEventListeners = Events.listens;\r\n\r\n var Evented = Class.extend(Events);\n\n /*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Point(x, y, round) {\r\n \t// @property x: Number; The `x` coordinate of the point\r\n \tthis.x = (round ? Math.round(x) : x);\r\n \t// @property y: Number; The `y` coordinate of the point\r\n \tthis.y = (round ? Math.round(y) : y);\r\n }\r\n\r\n var trunc = Math.trunc || function (v) {\r\n \treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n };\r\n\r\n Point.prototype = {\r\n\r\n \t// @method clone(): Point\r\n \t// Returns a copy of the current point.\r\n \tclone: function () {\r\n \t\treturn new Point(this.x, this.y);\r\n \t},\r\n\r\n \t// @method add(otherPoint: Point): Point\r\n \t// Returns the result of addition of the current and the given points.\r\n \tadd: function (point) {\r\n \t\t// non-destructive, returns a new point\r\n \t\treturn this.clone()._add(toPoint(point));\r\n \t},\r\n\r\n \t_add: function (point) {\r\n \t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n \t\tthis.x += point.x;\r\n \t\tthis.y += point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method subtract(otherPoint: Point): Point\r\n \t// Returns the result of subtraction of the given point from the current.\r\n \tsubtract: function (point) {\r\n \t\treturn this.clone()._subtract(toPoint(point));\r\n \t},\r\n\r\n \t_subtract: function (point) {\r\n \t\tthis.x -= point.x;\r\n \t\tthis.y -= point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method divideBy(num: Number): Point\r\n \t// Returns the result of division of the current point by the given number.\r\n \tdivideBy: function (num) {\r\n \t\treturn this.clone()._divideBy(num);\r\n \t},\r\n\r\n \t_divideBy: function (num) {\r\n \t\tthis.x /= num;\r\n \t\tthis.y /= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method multiplyBy(num: Number): Point\r\n \t// Returns the result of multiplication of the current point by the given number.\r\n \tmultiplyBy: function (num) {\r\n \t\treturn this.clone()._multiplyBy(num);\r\n \t},\r\n\r\n \t_multiplyBy: function (num) {\r\n \t\tthis.x *= num;\r\n \t\tthis.y *= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method scaleBy(scale: Point): Point\r\n \t// Multiply each coordinate of the current point by each coordinate of\r\n \t// `scale`. In linear algebra terms, multiply the point by the\r\n \t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n \t// defined by `scale`.\r\n \tscaleBy: function (point) {\r\n \t\treturn new Point(this.x * point.x, this.y * point.y);\r\n \t},\r\n\r\n \t// @method unscaleBy(scale: Point): Point\r\n \t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n \t// each coordinate of `scale`.\r\n \tunscaleBy: function (point) {\r\n \t\treturn new Point(this.x / point.x, this.y / point.y);\r\n \t},\r\n\r\n \t// @method round(): Point\r\n \t// Returns a copy of the current point with rounded coordinates.\r\n \tround: function () {\r\n \t\treturn this.clone()._round();\r\n \t},\r\n\r\n \t_round: function () {\r\n \t\tthis.x = Math.round(this.x);\r\n \t\tthis.y = Math.round(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method floor(): Point\r\n \t// Returns a copy of the current point with floored coordinates (rounded down).\r\n \tfloor: function () {\r\n \t\treturn this.clone()._floor();\r\n \t},\r\n\r\n \t_floor: function () {\r\n \t\tthis.x = Math.floor(this.x);\r\n \t\tthis.y = Math.floor(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method ceil(): Point\r\n \t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n \tceil: function () {\r\n \t\treturn this.clone()._ceil();\r\n \t},\r\n\r\n \t_ceil: function () {\r\n \t\tthis.x = Math.ceil(this.x);\r\n \t\tthis.y = Math.ceil(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method trunc(): Point\r\n \t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n \ttrunc: function () {\r\n \t\treturn this.clone()._trunc();\r\n \t},\r\n\r\n \t_trunc: function () {\r\n \t\tthis.x = trunc(this.x);\r\n \t\tthis.y = trunc(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method distanceTo(otherPoint: Point): Number\r\n \t// Returns the cartesian distance between the current and the given points.\r\n \tdistanceTo: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\tvar x = point.x - this.x,\r\n \t\t y = point.y - this.y;\r\n\r\n \t\treturn Math.sqrt(x * x + y * y);\r\n \t},\r\n\r\n \t// @method equals(otherPoint: Point): Boolean\r\n \t// Returns `true` if the given point has the same coordinates.\r\n \tequals: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn point.x === this.x &&\r\n \t\t point.y === this.y;\r\n \t},\r\n\r\n \t// @method contains(otherPoint: Point): Boolean\r\n \t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n \tcontains: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n \t\t Math.abs(point.y) <= Math.abs(this.y);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point for debugging purposes.\r\n \ttoString: function () {\r\n \t\treturn 'Point(' +\r\n \t\t formatNum(this.x) + ', ' +\r\n \t\t formatNum(this.y) + ')';\r\n \t}\r\n };\r\n\r\n // @factory L.point(x: Number, y: Number, round?: Boolean)\r\n // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Number[])\r\n // Expects an array of the form `[x, y]` instead.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Object)\r\n // Expects a plain object of the form `{x: Number, y: Number}` instead.\r\n function toPoint(x, y, round) {\r\n \tif (x instanceof Point) {\r\n \t\treturn x;\r\n \t}\r\n \tif (isArray(x)) {\r\n \t\treturn new Point(x[0], x[1]);\r\n \t}\r\n \tif (x === undefined || x === null) {\r\n \t\treturn x;\r\n \t}\r\n \tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n \t\treturn new Point(x.x, x.y);\r\n \t}\r\n \treturn new Point(x, y, round);\r\n }\n\n /*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Bounds(a, b) {\r\n \tif (!a) { return; }\r\n\r\n \tvar points = b ? [a, b] : a;\r\n\r\n \tfor (var i = 0, len = points.length; i < len; i++) {\r\n \t\tthis.extend(points[i]);\r\n \t}\r\n }\r\n\r\n Bounds.prototype = {\r\n \t// @method extend(point: Point): this\r\n \t// Extends the bounds to contain the given point.\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: Bounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar min2, max2;\r\n \t\tif (!obj) { return this; }\r\n\r\n \t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n \t\t\tmin2 = max2 = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t\tmin2 = obj.min;\r\n \t\t\tmax2 = obj.max;\r\n\r\n \t\t\tif (!min2 || !max2) { return this; }\r\n \t\t}\r\n\r\n \t\t// @property min: Point\r\n \t\t// The top left corner of the rectangle.\r\n \t\t// @property max: Point\r\n \t\t// The bottom right corner of the rectangle.\r\n \t\tif (!this.min && !this.max) {\r\n \t\t\tthis.min = min2.clone();\r\n \t\t\tthis.max = max2.clone();\r\n \t\t} else {\r\n \t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n \t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n \t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n \t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getCenter(round?: Boolean): Point\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function (round) {\r\n \t\treturn toPoint(\r\n \t\t (this.min.x + this.max.x) / 2,\r\n \t\t (this.min.y + this.max.y) / 2, round);\r\n \t},\r\n\r\n \t// @method getBottomLeft(): Point\r\n \t// Returns the bottom-left point of the bounds.\r\n \tgetBottomLeft: function () {\r\n \t\treturn toPoint(this.min.x, this.max.y);\r\n \t},\r\n\r\n \t// @method getTopRight(): Point\r\n \t// Returns the top-right point of the bounds.\r\n \tgetTopRight: function () { // -> Point\r\n \t\treturn toPoint(this.max.x, this.min.y);\r\n \t},\r\n\r\n \t// @method getTopLeft(): Point\r\n \t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n \tgetTopLeft: function () {\r\n \t\treturn this.min; // left, top\r\n \t},\r\n\r\n \t// @method getBottomRight(): Point\r\n \t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n \tgetBottomRight: function () {\r\n \t\treturn this.max; // right, bottom\r\n \t},\r\n\r\n \t// @method getSize(): Point\r\n \t// Returns the size of the given bounds\r\n \tgetSize: function () {\r\n \t\treturn this.max.subtract(this.min);\r\n \t},\r\n\r\n \t// @method contains(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n \t// @alternative\r\n \t// @method contains(point: Point): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) {\r\n \t\tvar min, max;\r\n\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n \t\t\tobj = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t}\r\n\r\n \t\tif (obj instanceof Bounds) {\r\n \t\t\tmin = obj.min;\r\n \t\t\tmax = obj.max;\r\n \t\t} else {\r\n \t\t\tmin = max = obj;\r\n \t\t}\r\n\r\n \t\treturn (min.x >= this.min.x) &&\r\n \t\t (max.x <= this.max.x) &&\r\n \t\t (min.y >= this.min.y) &&\r\n \t\t (max.y <= this.max.y);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n \t// intersect if they have at least one point in common.\r\n \tintersects: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n \t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n \t\treturn xIntersects && yIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n \t// overlap if their intersection is an area.\r\n \toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n \t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n \t\treturn xOverlaps && yOverlaps;\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this.min && this.max);\r\n \t},\r\n\r\n\r\n \t// @method pad(bufferRatio: Number): Bounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar min = this.min,\r\n \t\tmax = this.max,\r\n \t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n \t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n \t\treturn toBounds(\r\n \t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n \t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n \t},\r\n\r\n\r\n \t// @method equals(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n \tequals: function (bounds) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n \t\t\tthis.max.equals(bounds.getBottomRight());\r\n \t},\r\n };\r\n\r\n\r\n // @factory L.bounds(corner1: Point, corner2: Point)\r\n // Creates a Bounds object from two corners coordinate pairs.\r\n // @alternative\r\n // @factory L.bounds(points: Point[])\r\n // Creates a Bounds object from the given array of points.\r\n function toBounds(a, b) {\r\n \tif (!a || a instanceof Bounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new Bounds(a, b);\r\n }\n\n /*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n \tif (!corner1) { return; }\r\n\r\n \tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n \t\tthis.extend(latlngs[i]);\r\n \t}\r\n }\r\n\r\n LatLngBounds.prototype = {\r\n\r\n \t// @method extend(latlng: LatLng): this\r\n \t// Extend the bounds to contain the given point\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: LatLngBounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLng) {\r\n \t\t\tsw2 = obj;\r\n \t\t\tne2 = obj;\r\n\r\n \t\t} else if (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj._southWest;\r\n \t\t\tne2 = obj._northEast;\r\n\r\n \t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n \t\t} else {\r\n \t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n \t\t}\r\n\r\n \t\tif (!sw && !ne) {\r\n \t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n \t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n \t\t} else {\r\n \t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n \t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n \t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n \t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method pad(bufferRatio: Number): LatLngBounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n \t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n \t\treturn new LatLngBounds(\r\n \t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n \t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n \t},\r\n\r\n \t// @method getCenter(): LatLng\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function () {\r\n \t\treturn new LatLng(\r\n \t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n \t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n \t},\r\n\r\n \t// @method getSouthWest(): LatLng\r\n \t// Returns the south-west point of the bounds.\r\n \tgetSouthWest: function () {\r\n \t\treturn this._southWest;\r\n \t},\r\n\r\n \t// @method getNorthEast(): LatLng\r\n \t// Returns the north-east point of the bounds.\r\n \tgetNorthEast: function () {\r\n \t\treturn this._northEast;\r\n \t},\r\n\r\n \t// @method getNorthWest(): LatLng\r\n \t// Returns the north-west point of the bounds.\r\n \tgetNorthWest: function () {\r\n \t\treturn new LatLng(this.getNorth(), this.getWest());\r\n \t},\r\n\r\n \t// @method getSouthEast(): LatLng\r\n \t// Returns the south-east point of the bounds.\r\n \tgetSouthEast: function () {\r\n \t\treturn new LatLng(this.getSouth(), this.getEast());\r\n \t},\r\n\r\n \t// @method getWest(): Number\r\n \t// Returns the west longitude of the bounds\r\n \tgetWest: function () {\r\n \t\treturn this._southWest.lng;\r\n \t},\r\n\r\n \t// @method getSouth(): Number\r\n \t// Returns the south latitude of the bounds\r\n \tgetSouth: function () {\r\n \t\treturn this._southWest.lat;\r\n \t},\r\n\r\n \t// @method getEast(): Number\r\n \t// Returns the east longitude of the bounds\r\n \tgetEast: function () {\r\n \t\treturn this._northEast.lng;\r\n \t},\r\n\r\n \t// @method getNorth(): Number\r\n \t// Returns the north latitude of the bounds\r\n \tgetNorth: function () {\r\n \t\treturn this._northEast.lat;\r\n \t},\r\n\r\n \t// @method contains(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n\r\n \t// @alternative\r\n \t// @method contains (latlng: LatLng): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n \t\t\tobj = toLatLng(obj);\r\n \t\t} else {\r\n \t\t\tobj = toLatLngBounds(obj);\r\n \t\t}\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj.getSouthWest();\r\n \t\t\tne2 = obj.getNorthEast();\r\n \t\t} else {\r\n \t\t\tsw2 = ne2 = obj;\r\n \t\t}\r\n\r\n \t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n \t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n \tintersects: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n \t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n \t\treturn latIntersects && lngIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n \toverlaps: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n \t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n \t\treturn latOverlaps && lngOverlaps;\r\n \t},\r\n\r\n \t// @method toBBoxString(): String\r\n \t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n \ttoBBoxString: function () {\r\n \t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n \t},\r\n\r\n \t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (bounds, maxMargin) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n \t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this._southWest && this._northEast);\r\n \t}\r\n };\r\n\r\n // TODO International date line?\r\n\r\n // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n // @alternative\r\n // @factory L.latLngBounds(latlngs: LatLng[])\r\n // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\n function toLatLngBounds(a, b) {\r\n \tif (a instanceof LatLngBounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new LatLngBounds(a, b);\r\n }\n\n /* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLng(lat, lng, alt) {\r\n \tif (isNaN(lat) || isNaN(lng)) {\r\n \t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n \t}\r\n\r\n \t// @property lat: Number\r\n \t// Latitude in degrees\r\n \tthis.lat = +lat;\r\n\r\n \t// @property lng: Number\r\n \t// Longitude in degrees\r\n \tthis.lng = +lng;\r\n\r\n \t// @property alt: Number\r\n \t// Altitude in meters (optional)\r\n \tif (alt !== undefined) {\r\n \t\tthis.alt = +alt;\r\n \t}\r\n }\r\n\r\n LatLng.prototype = {\r\n \t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (obj, maxMargin) {\r\n \t\tif (!obj) { return false; }\r\n\r\n \t\tobj = toLatLng(obj);\r\n\r\n \t\tvar margin = Math.max(\r\n \t\t Math.abs(this.lat - obj.lat),\r\n \t\t Math.abs(this.lng - obj.lng));\r\n\r\n \t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point (for debugging purposes).\r\n \ttoString: function (precision) {\r\n \t\treturn 'LatLng(' +\r\n \t\t formatNum(this.lat, precision) + ', ' +\r\n \t\t formatNum(this.lng, precision) + ')';\r\n \t},\r\n\r\n \t// @method distanceTo(otherLatLng: LatLng): Number\r\n \t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n \tdistanceTo: function (other) {\r\n \t\treturn Earth.distance(this, toLatLng(other));\r\n \t},\r\n\r\n \t// @method wrap(): LatLng\r\n \t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n \twrap: function () {\r\n \t\treturn Earth.wrapLatLng(this);\r\n \t},\r\n\r\n \t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n \t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n \ttoBounds: function (sizeInMeters) {\r\n \t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n \t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n \t\treturn toLatLngBounds(\r\n \t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n \t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n \t},\r\n\r\n \tclone: function () {\r\n \t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n \t}\r\n };\r\n\r\n\r\n\r\n // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Array): LatLng\r\n // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Object): LatLng\r\n // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\n function toLatLng(a, b, c) {\r\n \tif (a instanceof LatLng) {\r\n \t\treturn a;\r\n \t}\r\n \tif (isArray(a) && typeof a[0] !== 'object') {\r\n \t\tif (a.length === 3) {\r\n \t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n \t\t}\r\n \t\tif (a.length === 2) {\r\n \t\t\treturn new LatLng(a[0], a[1]);\r\n \t\t}\r\n \t\treturn null;\r\n \t}\r\n \tif (a === undefined || a === null) {\r\n \t\treturn a;\r\n \t}\r\n \tif (typeof a === 'object' && 'lat' in a) {\r\n \t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n \t}\r\n \tif (b === undefined) {\r\n \t\treturn null;\r\n \t}\r\n \treturn new LatLng(a, b, c);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\n var CRS = {\r\n \t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n \t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n \tlatLngToPoint: function (latlng, zoom) {\r\n \t\tvar projectedPoint = this.projection.project(latlng),\r\n \t\t scale = this.scale(zoom);\r\n\r\n \t\treturn this.transformation._transform(projectedPoint, scale);\r\n \t},\r\n\r\n \t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n \t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n \t// zoom into geographical coordinates.\r\n \tpointToLatLng: function (point, zoom) {\r\n \t\tvar scale = this.scale(zoom),\r\n \t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n \t\treturn this.projection.unproject(untransformedPoint);\r\n \t},\r\n\r\n \t// @method project(latlng: LatLng): Point\r\n \t// Projects geographical coordinates into coordinates in units accepted for\r\n \t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n \tproject: function (latlng) {\r\n \t\treturn this.projection.project(latlng);\r\n \t},\r\n\r\n \t// @method unproject(point: Point): LatLng\r\n \t// Given a projected coordinate returns the corresponding LatLng.\r\n \t// The inverse of `project`.\r\n \tunproject: function (point) {\r\n \t\treturn this.projection.unproject(point);\r\n \t},\r\n\r\n \t// @method scale(zoom: Number): Number\r\n \t// Returns the scale used when transforming projected coordinates into\r\n \t// pixel coordinates for a particular zoom. For example, it returns\r\n \t// `256 * 2^zoom` for Mercator-based CRS.\r\n \tscale: function (zoom) {\r\n \t\treturn 256 * Math.pow(2, zoom);\r\n \t},\r\n\r\n \t// @method zoom(scale: Number): Number\r\n \t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n \t// factor of `scale`.\r\n \tzoom: function (scale) {\r\n \t\treturn Math.log(scale / 256) / Math.LN2;\r\n \t},\r\n\r\n \t// @method getProjectedBounds(zoom: Number): Bounds\r\n \t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n \tgetProjectedBounds: function (zoom) {\r\n \t\tif (this.infinite) { return null; }\r\n\r\n \t\tvar b = this.projection.bounds,\r\n \t\t s = this.scale(zoom),\r\n \t\t min = this.transformation.transform(b.min, s),\r\n \t\t max = this.transformation.transform(b.max, s);\r\n\r\n \t\treturn new Bounds(min, max);\r\n \t},\r\n\r\n \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n \t// Returns the distance between two geographical coordinates.\r\n\r\n \t// @property code: String\r\n \t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n \t//\r\n \t// @property wrapLng: Number[]\r\n \t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n \t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n \t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n \t//\r\n \t// @property wrapLat: Number[]\r\n \t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n \t// wrapLng: [min, max],\r\n \t// wrapLat: [min, max],\r\n\r\n \t// @property infinite: Boolean\r\n \t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n \tinfinite: false,\r\n\r\n \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n \t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n \t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n \twrapLatLng: function (latlng) {\r\n \t\tvar lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n \t\t lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n \t\t alt = latlng.alt;\r\n\r\n \t\treturn new LatLng(lat, lng, alt);\r\n \t},\r\n\r\n \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n \t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n \t// that its center is within the CRS's bounds.\r\n \t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n \twrapLatLngBounds: function (bounds) {\r\n \t\tvar center = bounds.getCenter(),\r\n \t\t newCenter = this.wrapLatLng(center),\r\n \t\t latShift = center.lat - newCenter.lat,\r\n \t\t lngShift = center.lng - newCenter.lng;\r\n\r\n \t\tif (latShift === 0 && lngShift === 0) {\r\n \t\t\treturn bounds;\r\n \t\t}\r\n\r\n \t\tvar sw = bounds.getSouthWest(),\r\n \t\t ne = bounds.getNorthEast(),\r\n \t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n \t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n \t\treturn new LatLngBounds(newSw, newNe);\r\n \t}\r\n };\n\n /*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\n var Earth = extend({}, CRS, {\n \twrapLng: [-180, 180],\n\n \t// Mean Earth Radius, as recommended for use by\n \t// the International Union of Geodesy and Geophysics,\n \t// see https://rosettacode.org/wiki/Haversine_formula\n \tR: 6371000,\n\n \t// distance between two geographical points using spherical law of cosines approximation\n \tdistance: function (latlng1, latlng2) {\n \t\tvar rad = Math.PI / 180,\n \t\t lat1 = latlng1.lat * rad,\n \t\t lat2 = latlng2.lat * rad,\n \t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n \t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n \t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n \t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n \t\treturn this.R * c;\n \t}\n });\n\n /*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\n var earthRadius = 6378137;\r\n\r\n var SphericalMercator = {\r\n\r\n \tR: earthRadius,\r\n \tMAX_LATITUDE: 85.0511287798,\r\n\r\n \tproject: function (latlng) {\r\n \t\tvar d = Math.PI / 180,\r\n \t\t max = this.MAX_LATITUDE,\r\n \t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n \t\t sin = Math.sin(lat * d);\r\n\r\n \t\treturn new Point(\r\n \t\t\tthis.R * latlng.lng * d,\r\n \t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n \t},\r\n\r\n \tunproject: function (point) {\r\n \t\tvar d = 180 / Math.PI;\r\n\r\n \t\treturn new LatLng(\r\n \t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n \t\t\tpoint.x * d / this.R);\r\n \t},\r\n\r\n \tbounds: (function () {\r\n \t\tvar d = earthRadius * Math.PI;\r\n \t\treturn new Bounds([-d, -d], [d, d]);\r\n \t})()\r\n };\n\n /*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Creates a `Transformation` object with the given coefficients.\r\n function Transformation(a, b, c, d) {\r\n \tif (isArray(a)) {\r\n \t\t// use array properties\r\n \t\tthis._a = a[0];\r\n \t\tthis._b = a[1];\r\n \t\tthis._c = a[2];\r\n \t\tthis._d = a[3];\r\n \t\treturn;\r\n \t}\r\n \tthis._a = a;\r\n \tthis._b = b;\r\n \tthis._c = c;\r\n \tthis._d = d;\r\n }\r\n\r\n Transformation.prototype = {\r\n \t// @method transform(point: Point, scale?: Number): Point\r\n \t// Returns a transformed point, optionally multiplied by the given scale.\r\n \t// Only accepts actual `L.Point` instances, not arrays.\r\n \ttransform: function (point, scale) { // (Point, Number) -> Point\r\n \t\treturn this._transform(point.clone(), scale);\r\n \t},\r\n\r\n \t// destructive transform (faster)\r\n \t_transform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\tpoint.x = scale * (this._a * point.x + this._b);\r\n \t\tpoint.y = scale * (this._c * point.y + this._d);\r\n \t\treturn point;\r\n \t},\r\n\r\n \t// @method untransform(point: Point, scale?: Number): Point\r\n \t// Returns the reverse transformation of the given point, optionally divided\r\n \t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n \tuntransform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\treturn new Point(\r\n \t\t (point.x / scale - this._b) / this._a,\r\n \t\t (point.y / scale - this._d) / this._c);\r\n \t}\r\n };\r\n\r\n // factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n // @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Instantiates a Transformation object with the given coefficients.\r\n\r\n // @alternative\r\n // @factory L.transformation(coefficients: Array): Transformation\r\n // Expects an coefficients array of the form\r\n // `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\n function toTransformation(a, b, c, d) {\r\n \treturn new Transformation(a, b, c, d);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\n var EPSG3857 = extend({}, Earth, {\r\n \tcode: 'EPSG:3857',\r\n \tprojection: SphericalMercator,\r\n\r\n \ttransformation: (function () {\r\n \t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n \t}())\r\n });\r\n\r\n var EPSG900913 = extend({}, EPSG3857, {\r\n \tcode: 'EPSG:900913'\r\n });\n\n // @namespace SVG; @section\n // There are several static functions which can be called without instantiating L.SVG:\n\n // @function create(name: String): SVGElement\n // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n // corresponding to the class name passed. For example, using 'line' will return\n // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\n function svgCreate(name) {\n \treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n }\n\n // @function pointsToPath(rings: Point[], closed: Boolean): String\n // Generates a SVG path string for multiple rings, with each ring turning\n // into \"M..L..L..\" instructions\n function pointsToPath(rings, closed) {\n \tvar str = '',\n \ti, j, len, len2, points, p;\n\n \tfor (i = 0, len = rings.length; i < len; i++) {\n \t\tpoints = rings[i];\n\n \t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n \t\t\tp = points[j];\n \t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n \t\t}\n\n \t\t// closes the ring for polygons; \"x\" is VML syntax\n \t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n \t}\n\n \t// SVG complains about empty path strings\n \treturn str || 'M0 0';\n }\n\n /*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\n var style = document.documentElement.style;\r\n\r\n // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\n var ie = 'ActiveXObject' in window;\r\n\r\n // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\n var ielt9 = ie && !document.addEventListener;\r\n\r\n // @property edge: Boolean; `true` for the Edge web browser.\r\n var edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n // @property webkit: Boolean;\r\n // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\n var webkit = userAgentContains('webkit');\r\n\r\n // @property android: Boolean\r\n // **Deprecated.** `true` for any browser running on an Android platform.\r\n var android = userAgentContains('android');\r\n\r\n // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\n var android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\n var webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\n var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n // @property opera: Boolean; `true` for the Opera browser\r\n var opera = !!window.opera;\r\n\r\n // @property chrome: Boolean; `true` for the Chrome browser.\r\n var chrome = !edge && userAgentContains('chrome');\r\n\r\n // @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\n var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n // @property safari: Boolean; `true` for the Safari browser.\r\n var safari = !chrome && userAgentContains('safari');\r\n\r\n var phantom = userAgentContains('phantom');\r\n\r\n // @property opera12: Boolean\r\n // `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\n var opera12 = 'OTransition' in style;\r\n\r\n // @property win: Boolean; `true` when the browser is running in a Windows platform\r\n var win = navigator.platform.indexOf('Win') === 0;\r\n\r\n // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\n var ie3d = ie && ('transition' in style);\r\n\r\n // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\n var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\n var gecko3d = 'MozPerspective' in style;\r\n\r\n // @property any3d: Boolean\r\n // `true` for all browsers supporting CSS transforms.\r\n var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n // @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\n var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\n var mobileWebkit = mobile && webkit;\r\n\r\n // @property mobileWebkit3d: Boolean\r\n // `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\n var mobileWebkit3d = mobile && webkit3d;\r\n\r\n // @property msPointer: Boolean\r\n // `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\n var msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n // @property pointer: Boolean\r\n // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\n var pointer = !!(window.PointerEvent || msPointer);\r\n\r\n // @property touchNative: Boolean\r\n // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n // **This does not necessarily mean** that the browser is running in a computer with\r\n // a touchscreen, it only means that the browser is capable of understanding\r\n // touch events.\r\n var touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n // @property touch: Boolean\r\n // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\n var touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\n var mobileOpera = mobile && opera;\r\n\r\n // @property mobileGecko: Boolean\r\n // `true` for gecko-based browsers running in a mobile device.\r\n var mobileGecko = mobile && gecko;\r\n\r\n // @property retina: Boolean\r\n // `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\n var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n // @property passiveEvents: Boolean\r\n // `true` for browsers that support passive events.\r\n var passiveEvents = (function () {\r\n \tvar supportsPassiveOption = false;\r\n \ttry {\r\n \t\tvar opts = Object.defineProperty({}, 'passive', {\r\n \t\t\tget: function () { // eslint-disable-line getter-return\r\n \t\t\t\tsupportsPassiveOption = true;\r\n \t\t\t}\r\n \t\t});\r\n \t\twindow.addEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t\twindow.removeEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t} catch (e) {\r\n \t\t// Errors can safely be ignored since this is only a browser support test.\r\n \t}\r\n \treturn supportsPassiveOption;\r\n }());\r\n\r\n // @property canvas: Boolean\r\n // `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\n var canvas$1 = (function () {\r\n \treturn !!document.createElement('canvas').getContext;\r\n }());\r\n\r\n // @property svg: Boolean\r\n // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\n var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n var inlineSvg = !!svg$1 && (function () {\r\n \tvar div = document.createElement('div');\r\n \tdiv.innerHTML = '';\r\n \treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n })();\r\n\r\n // @property vml: Boolean\r\n // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\n var vml = !svg$1 && (function () {\r\n \ttry {\r\n \t\tvar div = document.createElement('div');\r\n \t\tdiv.innerHTML = '';\r\n\r\n \t\tvar shape = div.firstChild;\r\n \t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n \t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n \t} catch (e) {\r\n \t\treturn false;\r\n \t}\r\n }());\r\n\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Mac platform\r\n var mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Linux platform\r\n var linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\n function userAgentContains(str) {\r\n \treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n }\r\n\r\n\r\n var Browser = {\r\n \tie: ie,\r\n \tielt9: ielt9,\r\n \tedge: edge,\r\n \twebkit: webkit,\r\n \tandroid: android,\r\n \tandroid23: android23,\r\n \tandroidStock: androidStock,\r\n \topera: opera,\r\n \tchrome: chrome,\r\n \tgecko: gecko,\r\n \tsafari: safari,\r\n \tphantom: phantom,\r\n \topera12: opera12,\r\n \twin: win,\r\n \tie3d: ie3d,\r\n \twebkit3d: webkit3d,\r\n \tgecko3d: gecko3d,\r\n \tany3d: any3d,\r\n \tmobile: mobile,\r\n \tmobileWebkit: mobileWebkit,\r\n \tmobileWebkit3d: mobileWebkit3d,\r\n \tmsPointer: msPointer,\r\n \tpointer: pointer,\r\n \ttouch: touch,\r\n \ttouchNative: touchNative,\r\n \tmobileOpera: mobileOpera,\r\n \tmobileGecko: mobileGecko,\r\n \tretina: retina,\r\n \tpassiveEvents: passiveEvents,\r\n \tcanvas: canvas$1,\r\n \tsvg: svg$1,\r\n \tvml: vml,\r\n \tinlineSvg: inlineSvg,\r\n \tmac: mac,\r\n \tlinux: linux\r\n };\n\n /*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\n var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\n var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\n var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\n var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\n var pEvent = {\n \ttouchstart : POINTER_DOWN,\n \ttouchmove : POINTER_MOVE,\n \ttouchend : POINTER_UP,\n \ttouchcancel : POINTER_CANCEL\n };\n var handle = {\n \ttouchstart : _onPointerStart,\n \ttouchmove : _handlePointer,\n \ttouchend : _handlePointer,\n \ttouchcancel : _handlePointer\n };\n var _pointers = {};\n var _pointerDocListener = false;\n\n // Provides a touch events wrapper for (ms)pointer events.\n // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\n function addPointerListener(obj, type, handler) {\n \tif (type === 'touchstart') {\n \t\t_addPointerDocListener();\n \t}\n \tif (!handle[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn falseFn;\n \t}\n \thandler = handle[type].bind(this, handler);\n \tobj.addEventListener(pEvent[type], handler, false);\n \treturn handler;\n }\n\n function removePointerListener(obj, type, handler) {\n \tif (!pEvent[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn;\n \t}\n \tobj.removeEventListener(pEvent[type], handler, false);\n }\n\n function _globalPointerDown(e) {\n \t_pointers[e.pointerId] = e;\n }\n\n function _globalPointerMove(e) {\n \tif (_pointers[e.pointerId]) {\n \t\t_pointers[e.pointerId] = e;\n \t}\n }\n\n function _globalPointerUp(e) {\n \tdelete _pointers[e.pointerId];\n }\n\n function _addPointerDocListener() {\n \t// need to keep track of what pointers and how many are active to provide e.touches emulation\n \tif (!_pointerDocListener) {\n \t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n \t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n \t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n \t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n \t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n \t\t_pointerDocListener = true;\n \t}\n }\n\n function _handlePointer(handler, e) {\n \tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n \te.touches = [];\n \tfor (var i in _pointers) {\n \t\te.touches.push(_pointers[i]);\n \t}\n \te.changedTouches = [e];\n\n \thandler(e);\n }\n\n function _onPointerStart(handler, e) {\n \t// IE10 specific: MsTouch needs preventDefault. See #2000\n \tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n \t\tpreventDefault(e);\n \t}\n \t_handlePointer(handler, e);\n }\n\n /*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\n function makeDblclick(event) {\r\n \t// in modern browsers `type` cannot be just overridden:\r\n \t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n \tvar newEvent = {},\r\n \t prop, i;\r\n \tfor (i in event) {\r\n \t\tprop = event[i];\r\n \t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n \t}\r\n \tevent = newEvent;\r\n \tnewEvent.type = 'dblclick';\r\n \tnewEvent.detail = 2;\r\n \tnewEvent.isTrusted = false;\r\n \tnewEvent._simulated = true; // for debug purposes\r\n \treturn newEvent;\r\n }\r\n\r\n var delay = 200;\r\n function addDoubleTapListener(obj, handler) {\r\n \t// Most browsers handle double tap natively\r\n \tobj.addEventListener('dblclick', handler);\r\n\r\n \t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n \t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n \t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n \tvar last = 0,\r\n \t detail;\r\n \tfunction simDblclick(e) {\r\n \t\tif (e.detail !== 1) {\r\n \t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (e.pointerType === 'mouse' ||\r\n \t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// When clicking on an , the browser generates a click on its\r\n \t\t//