From ca906081392a949462d05032b850c999b8836c5f Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Mon, 4 May 2026 18:26:00 +0100 Subject: [PATCH 01/34] Implementation plan for moving mizer extensions from `rates_funcs`-style single-function overrides to a composable extension chain. --- extension-chain-implementation-plan.md | 692 +++++++++++++++++++++++++ 1 file changed, 692 insertions(+) create mode 100644 extension-chain-implementation-plan.md diff --git a/extension-chain-implementation-plan.md b/extension-chain-implementation-plan.md new file mode 100644 index 000000000..f9de3419d --- /dev/null +++ b/extension-chain-implementation-plan.md @@ -0,0 +1,692 @@ +# Extension Chain Implementation Plan + +## Status + +Replacement implementation plan for moving mizer extensions from +`rates_funcs`-style single-function overrides to a composable extension chain. + +The design keeps `MizerParams` and `MizerSim` as the core S4 containers, but +uses dynamically registered S4 subclasses to expose an S3 class order. Rate +calculation hooks then become S3 generics, and extension packages compose by +calling `NextMethod()`. + +## Key Decisions + +- There is one maximal extension chain per R session. +- The extension vector order is the S3 dispatch order, from outermost to + innermost. +- A registered session can also handle suffix subchains of the maximal chain. +- Base mizer objects with no extensions remain valid in an extension session. +- `MizerSim` does not get an `@extensions` slot. Its chain is always read from + `sim@params@extensions`. +- Extension subclasses are marker classes for dispatch only. They must not add + extra slots. +- Saved objects are serialised as base `MizerParams` or `MizerSim` objects so + they can be read before dynamic subclass definitions exist. +- `rates_funcs` remains during the transition, but the new S3 dispatch path is + the architecture extension packages should use. + +## Extension Vector Semantics + +An extension chain is a named character vector: + +```r +c(mizerExtB = "1.2.0", mizerExtA = "0.4.1") +``` + +The names are logical extension identifiers and params-side S4 class names. The +values are package requirements or installation specifications. + +The order is left-to-right dispatch order: + +```r +c(mizerExtB = "1.2.0", mizerExtA = "0.4.1") +``` + +means: + +1. call `projectEncounter.mizerExtB()` +2. then `NextMethod()` calls `projectEncounter.mizerExtA()` +3. then `NextMethod()` calls `projectEncounter.MizerParams()` + +To achieve this, class definitions are built from right to left: + +```text +mizerExtB contains mizerExtA contains MizerParams +``` + +so the in-memory object class is `mizerExtB`, and the S3 class vector seen by +`UseMethod()` is effectively: + +```r +c("mizerExtB", "mizerExtA", "MizerParams") +``` + +## Subchains + +The active session chain is the maximal chain. A valid object chain is either: + +- identical to the active session chain, +- a suffix of the active session chain, +- or empty. + +For example, if the session chain is: + +```r +c(mizerExtB = "1.2.0", mizerExtA = "0.4.1") +``` + +then these object chains are valid in the same session: + +```r +c(mizerExtB = "1.2.0", mizerExtA = "0.4.1") +c(mizerExtA = "0.4.1") +character() +``` + +but these are not valid: + +```r +c(mizerExtB = "1.2.0") +c(otherExt = "1.0.0", mizerExtA = "0.4.1") +``` + +This supports the intended use case where one model uses an extra outer +extension and another model in the same session uses only the common inner +extension, or no extensions. + +`registerExtensions()` may also grow the session chain by prepending outer +extensions. For example: + +```r +registerExtensions(c(mizerExtA = "0.4.1")) +registerExtensions(c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")) +``` + +is allowed because the first chain is a suffix of the second. Appending, +reordering, removing inner extensions, or changing version/source values is an +error. + +## Session State + +Add a package-private environment: + +```r +.mizerSession <- new.env(parent = emptyenv()) +``` + +with these fields: + +- `.mizerSession$extensions`: the maximal active chain. + +The empty session chain is represented by `character()`. +All params-side and sim-side class names are derived from this vector when +needed. No separate cached class lists are required. + +## Class Naming + +Params-side class names are the extension identifiers: + +```r +mizerExtA +mizerExtB +``` + +Sim-side class names must be distinct from params-side class names because S4 +class names are global. Use a deterministic helper: + +```r +simExtensionClass <- function(extension) { + paste0(extension, "Sim") +} +``` + +For `mizerExtA`, the sim class is `mizerExtASim`. + +Extension classes must not add slots. They exist only to provide S3 dispatch +classes. Extension-specific persistent state should live in existing mizer +slots, such as `other_params`, `other_dynamics`, `other_encounter`, +`other_mort`, metadata, or other agreed extension storage. Adding slots would +make coercion from base objects, suffix subchains, save/load, and old-object +upgrade semantics much more complicated. + +## Public And Internal API + +### `registerExtensions()` + +Suggested API: + +```r +registerExtensions <- function(extensions, install = FALSE) { +} +``` + +Responsibilities: + +- validate the extension vector. +- check required extension namespaces are available. +- optionally install missing extension packages if `install = TRUE`. +- load extension namespaces so S3 methods are registered. +- define params and sim S4 subclass chains. +- update the maximal session chain. +- allow identical calls, suffix calls, and prepending outer extensions. +- reject incompatible chains with a clear restart-session message. +- return the maximal active chain invisibly. + +Implementation sketch: + +```r +registerExtensions <- function(extensions, install = FALSE) { + extensions <- validateExtensionsVector(extensions) + + old <- getRegisteredExtensions() + relation <- compareExtensionChains(old, extensions) + + if (relation == "identical" || relation == "new_is_suffix") { + ensureExtensionNamespaces(extensions, install = install) + return(invisible(old)) + } + + if (relation == "old_is_suffix" || length(old) == 0) { + ensureExtensionNamespaces(extensions, install = install) + defineExtensionClasses(extensions) + setRegisteredExtensions(extensions) + return(invisible(extensions)) + } + + stop( + "A different extension chain is already active in this session. ", + "Please restart R before registering this chain." + ) +} +``` + +### `getRegisteredExtensions()` + +Exported or internal helper returning the maximal active chain: + +```r +getRegisteredExtensions <- function() { + .mizerSession$extensions %||% character() +} +``` + +Extension packages can use this to copy the active chain into +`params@extensions`. + +### `coerceToExtensionClass()` + +Export this helper for extension-package constructors. + +Suggested API: + +```r +coerceToExtensionClass <- function(object, extensions = objectExtensions(object)) { +} +``` + +Behaviour: + +- for `MizerParams`, coerce to the first class in `params@extensions`. +- for `MizerSim`, coerce according to `sim@params@extensions`. +- for an empty chain, coerce to the base class. +- require the object chain to be valid for the active session. + +For a suffix subchain, coercion goes to the top class of that subchain, not the +top class of the maximal session chain. + +### `assertExtensionChain()` + +Internal helper called by public entry points after old-object upgrades. + +Rules for `MizerParams`: + +- `params@extensions` must be empty or a suffix of the active session chain. +- if `params@extensions` is non-empty and no compatible session chain is active, + error and ask the user to call `registerExtensions()` or use `readParams()`. +- the object must inherit from the top class of its own `@extensions` chain. +- base objects with empty `@extensions` are valid in any session. + +Rules for `MizerSim`: + +- apply the same checks to `sim@params`. +- if `sim@params@extensions` is non-empty, the sim object must inherit from the + corresponding sim-side top class. +- base `MizerSim` objects whose params have empty `@extensions` are valid in any + session. + +Do not put session-chain checks in the S4 validity functions. S4 validity +should continue to check structural object validity only. Session checks belong +in `validParams()`, `validSim()`, `readParams()`, `project()`, and other public +entry points. + +## Object Lifecycle + +### Creating Params Objects + +Core mizer constructors can keep returning plain `MizerParams` objects. + +Extension packages should follow this pattern: + +```r +params <- newMultispeciesParams(...) +params@extensions <- getRegisteredExtensions() +params <- coerceToExtensionClass(params) +``` + +If an extension package creates params for a suffix subchain, it should set +`params@extensions` to that suffix explicitly and then call +`coerceToExtensionClass()`. + +### Creating Sim Objects + +`MizerSim()` and `project()` should construct the base sim object first and then +coerce it according to `sim@params@extensions`. + +```r +sim <- methods::new("MizerSim", ...) +sim <- coerceToExtensionClass(sim) +``` + +This keeps sim dispatch aligned with the params object that produced the +simulation. + +### Saving Params Objects + +`saveParams()` should: + +1. call `validParams()`. +2. check required extension packages and custom functions as it does now. +3. coerce the object to plain `MizerParams`. +4. preserve `params@extensions`. +5. call `saveRDS()`. + +This avoids saved files depending on dynamic S4 subclass definitions. + +### Reading Params Objects + +`readParams()` should: + +1. call `readRDS()` without immediately calling `validParams()`. +2. upgrade old objects if needed. +3. inspect `params@extensions`. +4. if the chain is non-empty, call `registerExtensions(params@extensions)`. +5. require the saved chain to be compatible with the active session chain. +6. coerce the object to the top class of its own chain. +7. call `validParams()`. +8. return the coerced object. + +`readParams()` should not silently install packages by default. If installation +is desired, add an explicit argument such as: + +```r +readParams(file, install_extensions = FALSE) +``` + +and pass it through to `registerExtensions(..., install = install_extensions)`. + +### Saving And Reading Sim Objects + +If mizer adds first-class sim save/read helpers later, they should mirror the +params lifecycle: + +- save as plain `MizerSim`. +- preserve `sim@params@extensions`. +- read, register from `sim@params@extensions`, coerce params, coerce sim, then + validate. + +## Dispatch Refactor + +### Principle + +Every extension point should become an S3 generic whose first argument is the +`MizerParams` or `MizerSim` object. + +Base mizer provides methods on `MizerParams` and `MizerSim`. Extension packages +provide methods on their extension classes and call `NextMethod()` to compose. + +### Encounter Example + +```r +projectEncounter <- function(params, n, n_pp, n_other, t = 0, ...) { + UseMethod("projectEncounter") +} + +projectEncounter.MizerParams <- function(params, n, n_pp, n_other, t = 0, ...) { + mizerEncounter(params, n = n, n_pp = n_pp, n_other = n_other, t = t, ...) +} + +projectEncounter.mizerExtA <- function(params, n, n_pp, n_other, t = 0, ...) { + encounter <- NextMethod() + encounter + extraEncounter(params, n, n_pp, n_other, t) +} + +projectEncounter.mizerExtB <- function(params, n, n_pp, n_other, t = 0, ...) { + encounter <- NextMethod() + encounter * seasonalMultiplier(params, t) +} +``` + +With: + +```r +params@extensions <- c(mizerExtB = "1.2.0", mizerExtA = "0.4.1") +``` + +dispatch is: + +```r +mizerExtB -> mizerExtA -> MizerParams +``` + +### Rates Orchestrator + +Keep orchestration in core mizer: + +```r +projectRates <- function(params, n, n_pp, n_other, t = 0, effort, ...) { + UseMethod("projectRates") +} + +projectRates.MizerParams <- function(params, n, n_pp, n_other, + t = 0, effort, ...) { + r <- list() + r$encounter <- projectEncounter(params, n, n_pp, n_other, t = t, ...) + r$feeding_level <- projectFeedingLevel( + params, n, n_pp, n_other, + t = t, encounter = r$encounter, ... + ) + r$e <- projectEReproAndGrowth( + params, n, n_pp, n_other, + t = t, + encounter = r$encounter, + feeding_level = r$feeding_level, + ... + ) + r +} +``` + +Extensions may override `projectRates()`, but developer documentation should +recommend overriding lower-level generics where possible. + +### First Generics To Introduce + +Start with the simulation hot path: + +- `projectRates` +- `projectEncounter` +- `projectFeedingLevel` +- `projectEReproAndGrowth` +- `projectERepro` +- `projectEGrowth` +- `projectPredRate` +- `projectPredMort` +- `projectFMort` +- `projectMort` +- `projectDiffusion` +- `projectRDI` +- `projectRDD` +- `projectResourceMort` +- `projectResource` +- hooks for other component dynamics where the API is stable + +Then switch user-facing getters to call those same generics: + +- `getRates` +- `getEncounter` +- `getFeedingLevel` +- `getPredRate` +- `getPredMort` +- `getFMort` +- `getMort` +- `getERepro` +- `getEGrowth` +- `getRDI` +- `getRDD` +- `getResourceMort` + +This keeps simulation and diagnostic calculations consistent. + +## Interaction With `rates_funcs` + +### Phase 1 + +- keep `params@rates_funcs`. +- add extension-chain infrastructure. +- add S3 generics for one pilot rate, preferably encounter. +- base S3 methods may delegate to the function named in `rates_funcs`. + +### Phase 2 + +- convert the full `projectRates()` pipeline. +- switch `project_simple()` to call `projectRates()` instead of + `rates_fns$Rates()`. +- keep `rates_funcs` as a compatibility layer for single-function overrides. + +### Phase 3 + +- switch user-facing getters to the S3 path. +- document `setRateFunction()` as legacy for simple, non-composable overrides. +- decide later whether `rates_funcs` remains permanently as an escape hatch. + +If both mechanisms are active during transition, the S3 path is authoritative in +the simulation loop. Base S3 methods can still honour `rates_funcs`. + +## Files To Change + +### New Files + +- `R/registerExtensions.R` + - session-state environment. + - `registerExtensions()`. + - `getRegisteredExtensions()`. + - `coerceToExtensionClass()`. + - class-name helpers. + - chain comparison helpers. + - validation helpers. + +- `tests/testthat/test-registerExtensions.R` + - vector validation. + - class creation. + - identical registration. + - suffix registration. + - prepending outer extensions. + - incompatible-chain errors. + +- `tests/testthat/test-extension-dispatch.R` + - S3 dispatch order. + - `NextMethod()` chaining. + - params subchain coercion. + - sim subchain coercion via `sim@params@extensions`. + +### Existing Files + +- `DESCRIPTION` + - add `R/registerExtensions.R` to `Collate:`. + +- `NAMESPACE` + - regenerate with `devtools::document()`. + - do not edit directly. + +- `R/MizerParams-class.R` + - document `@extensions` order and suffix-subchain semantics. + - keep S4 validity structural. + - call extension-chain checks from `validParams.MizerParams()`. + +- `R/MizerSim-class.R` + - document that sim extension state lives in `sim@params@extensions`. + - coerce constructed sims to the correct sim subclass. + - call extension-chain checks from `validSim.MizerSim()`. + +- `R/saveParams.R` + - save base-class params. + - read before validation, register from `@extensions`, coerce, then validate. + +- `R/project.R` + - ensure `project()` validates extension compatibility early. + - ensure created `MizerSim` objects are coerced from `sim@params@extensions`. + - later replace `rates_fns` hot-path setup with S3 dispatch. + +- `R/project_methods.R` + - convert base rate implementations into S3 methods. + - preserve existing computational kernels where possible. + +- `R/rate_functions.R` + - rework getters to call project-rate generics. + - preserve return classes such as `ArraySpeciesBySize`. + +- `R/extension.R` + - document the new developer-facing extension model. + - reposition `setRateFunction()` as legacy or simple override API. + +- `R/upgrade.R` + - preserve `@extensions` during old-object upgrades. + - avoid coercing extension objects to base except in save paths. + +- `NEWS.md` + - describe the new extension chain and migration path. + +## Validation Details + +### Extension Vector + +`validateExtensionsVector()` should check: + +- the value is a character vector. +- names are present, non-empty, unique strings. +- names are syntactically valid S4 class names. +- values are length-one strings or `NA_character_`. +- values for common extension names match exactly when comparing chains. + +### Chain Comparison + +Implement helpers: + +```r +isSuffixChain <- function(candidate, chain) { +} + +compareExtensionChains <- function(old, new) { +} +``` + +Comparison must use both names and values. The same extension name with a +different version/source is incompatible. + +### Class Definitions + +`defineExtensionClasses(extensions)` should: + +- build classes from right to left. +- define params and sim classes in parallel. +- define marker subclasses only, with no additional slots. +- if a class already exists, verify it contains the expected parent. +- error immediately if a class exists with an incompatible definition. + +Pseudo-code: + +```r +defineExtensionClasses <- function(extensions) { + parent_params <- "MizerParams" + parent_sim <- "MizerSim" + + for (extension in rev(names(extensions))) { + defineOrCheckClass(extension, parent_params) + parent_params <- extension + + sim_class <- simExtensionClass(extension) + defineOrCheckClass(sim_class, parent_sim) + parent_sim <- sim_class + } +} +``` + +### Object Checks + +For `MizerParams`: + +- `params@extensions` must be empty or a suffix of the maximal session chain. +- class must be `MizerParams` for an empty chain. +- class must inherit from `names(params@extensions)[1]` for a non-empty chain. + +For `MizerSim`: + +- inspect `sim@params@extensions`. +- class must be `MizerSim` for an empty params chain. +- class must inherit from `simExtensionClass(names(sim@params@extensions)[1])` + for a non-empty params chain. + +## Testing Strategy + +Use unique fake extension class names in every test file, for example by adding +a random or process-specific suffix. S4 class definitions persist for the R +session and cannot be cleaned up reliably. + +### Registration Tests + +- empty registration leaves the chain empty and defines no classes. +- non-empty registration defines the expected params hierarchy. +- non-empty registration defines the expected sim hierarchy. +- repeated identical registration is a no-op. +- registering a suffix of the active chain is a no-op. +- registering a superchain by prepending outer extensions updates the maximal + chain. +- registering an incompatible chain errors. +- changing the value for an already-known extension errors. + +### Dispatch Tests + +- fake base method returns `"base"`. +- fake extension A appends `"A"` around `NextMethod()`. +- fake extension B appends `"B"` around `NextMethod()`. +- full chain dispatch follows vector order. +- suffix object dispatch starts at the suffix top class. +- base object dispatch reaches only the base method. + +### Lifecycle Tests + +- extension-aware params are coerced to the top class of their own chain. +- extension-aware sims are coerced according to `sim@params@extensions`. +- `saveParams()` writes a base `MizerParams` object with preserved + `@extensions`. +- `readParams()` registers and coerces saved extension params. +- `readParams()` accepts suffix chains in an already-registered session. +- `readParams()` rejects incompatible chains. + +### Backwards Compatibility Tests + +- existing models with empty `@extensions` behave unchanged. +- old saved params read correctly. +- existing `rates_funcs` overrides still work during the transition. +- tests that assign `params@rates_funcs` keep passing until the explicit + deprecation phase. + +## Implementation Order + +1. Add `R/registerExtensions.R` and its tests. +2. Add `R/registerExtensions.R` to `DESCRIPTION` `Collate:`. +3. Update `MizerParams` and `MizerSim` documentation for extension semantics. +4. Implement params and sim coercion helpers. +5. Add extension-chain checks to `validParams()` and `validSim()`. +6. Update `saveParams()` and `readParams()` lifecycle. +7. Add a pilot S3 rate generic for encounter. +8. Convert the full simulation rate pipeline. +9. Switch `project_simple()` and `project()` to the new path. +10. Switch user-facing getters to the same generic path. +11. Update extension developer docs and `NEWS.md`. +12. Run `devtools::document()`, targeted tests, then broader tests. + +## Immediate First Milestone + +Implement infrastructure only: + +- `registerExtensions()` +- chain comparison +- class definition +- params/sim coercion +- `saveParams()` and `readParams()` support +- tests proving full-chain, suffix-chain, and base-object lifecycles + +Do not refactor rate functions in the first milestone. The lifecycle and class +semantics should be locked down before changing the simulation hot path. From 3b393cb416b506780a3eb1b9dc3f9599b1636bbc Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Mon, 4 May 2026 18:41:48 +0100 Subject: [PATCH 02/34] Add extension chain registration infrastructure --- DESCRIPTION | 1 + NAMESPACE | 3 + NEWS.md | 6 + R/MizerParams-class.R | 11 +- R/MizerSim-class.R | 6 +- R/registerExtensions.R | 318 +++++++++++++++++++++++ R/saveParams.R | 31 ++- man/MizerParams-class.Rd | 10 +- man/MizerSim-class.Rd | 5 +- man/coerceToExtensionClass.Rd | 23 ++ man/getRegisteredExtensions.Rd | 15 ++ man/registerExtensions.Rd | 34 +++ man/saveParams.Rd | 5 +- tests/testthat/test-registerExtensions.R | 136 ++++++++++ 14 files changed, 584 insertions(+), 20 deletions(-) create mode 100644 R/registerExtensions.R create mode 100644 man/coerceToExtensionClass.Rd create mode 100644 man/getRegisteredExtensions.Rd create mode 100644 man/registerExtensions.Rd create mode 100644 tests/testthat/test-registerExtensions.R diff --git a/DESCRIPTION b/DESCRIPTION index 7b04e1a4d..30b41c71b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -56,6 +56,7 @@ Collate: 'helpers.R' 'MizerParams-class.R' 'MizerSim-class.R' + 'registerExtensions.R' 'ArraySpeciesBySize-class.R' 'ArraySpeciesByTime-class.R' 'background.R' diff --git a/NAMESPACE b/NAMESPACE index c485bc6ec..ce2770add 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -217,6 +217,7 @@ export(calibrateBiomass) export(calibrateNumber) export(calibrateYield) export(catchability) +export(coerceToExtensionClass) export(compareParams) export(completeSpeciesParams) export(constantEggRDI) @@ -283,6 +284,7 @@ export(getRDD) export(getRDI) export(getRateFunction) export(getRates) +export(getRegisteredExtensions) export(getReproductionLevel) export(getReproductionProportion) export(getRequiredRDD) @@ -381,6 +383,7 @@ export(projectToSteady) export(project_n) export(project_simple) export(readParams) +export(registerExtensions) export(removeBackgroundSpecies) export(removeComponent) export(removeSpecies) diff --git a/NEWS.md b/NEWS.md index c46313aae..8273c6a6e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,11 @@ # Development version 2.5.4.9102 +- Added first-stage infrastructure for composable extension chains: + `registerExtensions()`, `getRegisteredExtensions()`, and + `coerceToExtensionClass()`. Extension classes are marker classes for S3 + dispatch, with `MizerSim` deriving its extension chain from + `sim@params@extensions`. + - New `scaleRates(params, factor)` function that rescales all rates in a model by a given factor. This is equivalent to a time rescaling: it speeds up or slows down all dynamics without affecting the steady state. All rate slots diff --git a/R/MizerParams-class.R b/R/MizerParams-class.R index d739d8f3a..4ff19f77a 100644 --- a/R/MizerParams-class.R +++ b/R/MizerParams-class.R @@ -278,10 +278,12 @@ validMizerParams <- function(object) { #' @slot metadata A list with metadata information. See [setMetadata()]. #' @slot mizer_version The package version of mizer (as returned by #' `packageVersion("mizer")`) that created or upgraded the model. -#' @slot extensions A named vector of strings where each name is the name of -#' and extension package needed to run the model and each value is a string -#' giving the information that the remotes package needs to install the -#' correct version of the extension package, see https://remotes.r-lib.org/. +#' @slot extensions A named vector of strings describing the extension chain +#' needed to run the model. The names are extension identifiers and S4 marker +#' class names. The order is the S3 dispatch order, from outermost to +#' innermost extension. The values are version strings, installation +#' specifications, or `NA_character_`. Extension subclasses are marker +#' classes only and must not add slots. #' @slot time_created A POSIXct date-time object with the creation time. #' @slot time_modified A POSIXct date-time object with the last modified time. #' @slot w The size grid for the fish part of the spectrum. An increasing @@ -975,6 +977,7 @@ validParams.MizerParams <- function(params, info_level = 3) { if (!all(is.finite(params@intake_max) | is.infinite(params@intake_max))) { stop("intake_max must contain finite or infinite numeric values only") } + params <- coerceToExtensionClass(params) validObject(params) params } diff --git a/R/MizerSim-class.R b/R/MizerSim-class.R index a32d633e7..06a4f60e7 100644 --- a/R/MizerSim-class.R +++ b/R/MizerSim-class.R @@ -151,6 +151,9 @@ valid_MizerSim <- function(object) { #' with [validSim()]. #' #' @slot params An object of type \linkS4class{MizerParams}. +#' If this params object uses extensions, the `MizerSim` object uses the same +#' extension chain via `params@extensions`; `MizerSim` has no separate +#' extension slot. #' @slot n Three-dimensional array (time x species x size) that stores the #' projected community number densities. #' @slot n_pp An array (time x size) that stores the projected resource number @@ -238,7 +241,7 @@ MizerSim <- function(params, t_dimnames = NA, t_max = 100, t_save = 1) { n_pp = array_n_pp, n_other = list_n_other, effort = array_effort) - return(sim) + coerceToExtensionClass(sim) } #' Validate MizerSim object and upgrade if necessary @@ -300,6 +303,7 @@ validSim.MizerSim <- function(sim) { } sim <- truncateSim(sim, end_time = max_t) } + sim <- coerceToExtensionClass(sim) validObject(sim) sim } diff --git a/R/registerExtensions.R b/R/registerExtensions.R new file mode 100644 index 000000000..b2cdcd4a4 --- /dev/null +++ b/R/registerExtensions.R @@ -0,0 +1,318 @@ +# Extension chain registration and coercion helpers +# +# Copyright 2026 Gustav Delius. +# Distributed under the GPL 3 or later + +.mizerSession <- new.env(parent = emptyenv()) +.mizerSession$extensions <- character() + +#' Register mizer extensions for this R session +#' +#' Registers the maximal extension chain that mizer should use in the current +#' R session. The order of `extensions` is the S3 dispatch order, from +#' outermost to innermost extension. For example +#' `c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")` dispatches to +#' `mizerExtB` methods first, then `mizerExtA` methods, then base mizer +#' methods. +#' +#' A session can handle objects whose extension chain is a suffix of the +#' registered maximal chain. For example, after registering +#' `c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")`, objects using only +#' `c(mizerExtA = "0.4.1")` are also valid. +#' +#' @param extensions A named character vector. Names are extension identifiers +#' and S4 marker class names. Values are version strings, installation +#' specifications, or `NA_character_`. +#' @param install Logical. If `TRUE`, missing extension packages may be +#' installed. Installation support is intentionally conservative and currently +#' only supports CRAN-style package installation by extension name. +#' +#' @return The active maximal extension chain, invisibly. +#' @export +registerExtensions <- function(extensions, install = FALSE) { + extensions <- validateExtensionsVector(extensions) + old <- getRegisteredExtensions() + relation <- compareExtensionChains(old, extensions) + + if (relation %in% c("identical", "new_is_suffix")) { + ensureExtensionNamespaces(extensions, install = install) + return(invisible(old)) + } + + if (relation == "old_is_suffix") { + ensureExtensionNamespaces(extensions, install = install) + defineExtensionClasses(extensions) + .mizerSession$extensions <- extensions + return(invisible(extensions)) + } + + stop( + "A different extension chain is already active in this session. ", + "Please restart R before registering this chain." + ) +} + +#' Get the registered mizer extension chain +#' +#' @return A named character vector giving the maximal extension chain +#' registered for this R session. +#' @export +getRegisteredExtensions <- function() { + .mizerSession$extensions +} + +#' Coerce a mizer object to its registered extension class +#' +#' Coerces a `MizerParams` or `MizerSim` object to the S4 marker class +#' corresponding to the object's own extension chain. For `MizerSim`, the +#' extension chain is read from `sim@params@extensions`. +#' +#' @param object A `MizerParams` or `MizerSim` object. +#' @param extensions Optional extension chain. Defaults to the chain stored in +#' `object`, or in `object@params` for `MizerSim`. +#' +#' @return The same object coerced to the appropriate marker class, or to the +#' base class for an empty extension chain. +#' @export +coerceToExtensionClass <- function(object, extensions = objectExtensions(object)) { + if (is(object, "MizerParams")) { + family <- "params" + base_class <- "MizerParams" + } else if (is(object, "MizerSim")) { + family <- "sim" + base_class <- "MizerSim" + } else { + stop("Can only coerce MizerParams or MizerSim objects.") + } + + extensions <- validateExtensionsVector(extensions) + assertExtensionChain(object, extensions = extensions, check_class = FALSE) + + if (length(extensions) == 0) { + return(methods::as(object, base_class)) + } + + target_class <- names(extensions)[1] + if (family == "sim") { + target_class <- simExtensionClass(target_class) + } + + methods::as(object, target_class) +} + +objectExtensions <- function(object) { + if (is(object, "MizerParams")) { + return(object@extensions) + } + if (is(object, "MizerSim")) { + return(object@params@extensions) + } + stop("Can only get extensions for MizerParams or MizerSim objects.") +} + +assertExtensionChain <- function(object, extensions = objectExtensions(object), + check_class = TRUE) { + extensions <- validateExtensionsVector(extensions) + active <- getRegisteredExtensions() + + if (!isSuffixChain(extensions, active)) { + if (length(extensions) > 0 && length(active) == 0) { + stop( + "This object uses mizer extensions but no compatible ", + "extension chain is registered. Please call ", + "`registerExtensions()` first, or load the object with ", + "`readParams()`." + ) + } + stop( + "This object's extension chain is incompatible with the ", + "extension chain registered in this R session. Please restart R ", + "before using this object." + ) + } + + if (is(object, "MizerParams")) { + expected_class <- if (length(extensions) == 0) { + "MizerParams" + } else { + names(extensions)[1] + } + } else if (is(object, "MizerSim")) { + expected_class <- if (length(extensions) == 0) { + "MizerSim" + } else { + simExtensionClass(names(extensions)[1]) + } + } else { + stop("Can only check MizerParams or MizerSim objects.") + } + + if (isTRUE(check_class) && !is(object, expected_class)) { + stop( + "This object has extension chain ", + formatExtensionChain(extensions), + " but does not inherit from class `", expected_class, "`." + ) + } + + invisible(TRUE) +} + +validateExtensionsVector <- function(extensions) { + if (is.null(extensions)) { + extensions <- character() + } + if (!is.character(extensions)) { + stop("`extensions` must be a named character vector.") + } + if (length(extensions) == 0) { + return(character()) + } + if (is.null(names(extensions))) { + stop("`extensions` must be a named character vector.") + } + if (anyNA(names(extensions)) || any(names(extensions) == "")) { + stop("All entries in `extensions` must have non-empty names.") + } + if (anyDuplicated(names(extensions))) { + stop("Extension names must be unique.") + } + valid_names <- make.names(names(extensions)) == names(extensions) + if (!all(valid_names)) { + stop( + "Extension names must be syntactically valid S4 class names: ", + paste(names(extensions)[!valid_names], collapse = ", ") + ) + } + extensions +} + +compareExtensionChains <- function(old, new) { + if (identical(old, new)) { + return("identical") + } + if (isSuffixChain(new, old)) { + return("new_is_suffix") + } + if (isSuffixChain(old, new)) { + return("old_is_suffix") + } + "incompatible" +} + +isSuffixChain <- function(candidate, chain) { + candidate <- validateExtensionsVector(candidate) + chain <- validateExtensionsVector(chain) + + if (length(candidate) == 0) { + return(TRUE) + } + if (length(candidate) > length(chain)) { + return(FALSE) + } + + start <- length(chain) - length(candidate) + 1 + identical(candidate, chain[start:length(chain)]) +} + +defineExtensionClasses <- function(extensions) { + extensions <- validateExtensionsVector(extensions) + parent_params <- "MizerParams" + parent_sim <- "MizerSim" + + for (extension in rev(names(extensions))) { + defineOrCheckClass(extension, parent_params) + parent_params <- extension + + sim_class <- simExtensionClass(extension) + defineOrCheckClass(sim_class, parent_sim) + parent_sim <- sim_class + } + + invisible(extensions) +} + +defineOrCheckClass <- function(class, parent) { + if (!methods::isClass(class)) { + methods::setClass(class, contains = parent, where = .GlobalEnv) + return(invisible(class)) + } + + if (!methods::extends(class, parent)) { + stop( + "Class `", class, "` already exists but does not contain `", + parent, "`." + ) + } + + invisible(class) +} + +simExtensionClass <- function(extension) { + paste0(extension, "Sim") +} + +ensureExtensionNamespaces <- function(extensions, install = FALSE) { + extensions <- validateExtensionsVector(extensions) + if (length(extensions) == 0) { + return(invisible(TRUE)) + } + + for (extension in names(extensions)) { + requirement <- unname(extensions[[extension]]) + + # NA means "marker class only" for tests or in-development extensions. + if (is.na(requirement)) { + next + } + + if (!requireNamespace(extension, quietly = TRUE)) { + if (isTRUE(install)) { + utils::install.packages(extension) + } + if (!requireNamespace(extension, quietly = TRUE)) { + stop("Required extension package `", extension, "` is not installed.") + } + } + + if (isVersionRequirement(requirement) && + utils::packageVersion(extension) < package_version(requirement)) { + stop( + "Extension package `", extension, "` must be at least ", + "version ", requirement, "." + ) + } + + loadNamespace(extension) + } + + invisible(TRUE) +} + +isVersionRequirement <- function(requirement) { + grepl("^[0-9]+(\\.[0-9]+)*$", requirement) +} + +formatExtensionChain <- function(extensions) { + if (length(extensions) == 0) { + return("") + } + paste(names(extensions), collapse = " -> ") +} + +baseMizerClass <- function(object) { + if (is(object, "MizerParams")) { + methods::as(object, "MizerParams") + } else if (is(object, "MizerSim")) { + sim <- methods::as(object, "MizerSim") + sim@params <- methods::as(sim@params, "MizerParams") + sim + } else { + stop("Can only strip extension classes from MizerParams or MizerSim objects.") + } +} + +resetMizerSession <- function() { + .mizerSession$extensions <- character() + invisible(character()) +} diff --git a/R/saveParams.R b/R/saveParams.R index 5ee9d63f3..047aaaac3 100644 --- a/R/saveParams.R +++ b/R/saveParams.R @@ -11,6 +11,8 @@ #' @param params A MizerParams object #' @param file The name of the file or a connection where the MizerParams object #' is saved to or read from. +#' @param install_extensions Logical. Should [readParams()] attempt to install +#' missing extension packages before registering the saved extension chain? #' @return NULL invisibly #' @export saveParams <- function(params, file) { @@ -18,6 +20,13 @@ saveParams <- function(params, file) { } #' @export saveParams.MizerParams <- function(params, file) { + packages <- c("mizer", names(params@extensions)[!is.na(params@extensions)]) + missing <- !sapply(packages, requireNamespace, quietly = TRUE) + if (any(missing)) { + stop("Some required extension packages are not installed: ", + paste(packages[missing], collapse = ", ")) + } + params <- validParams(params) kernel_fns <- paste0(unique(params@species_params$pred_kernel_type), @@ -29,12 +38,6 @@ saveParams.MizerParams <- function(params, file) { params@other_mort, unique(params@gear_params$sel_func), kernel_fns) - packages <- c("mizer", names(params@extensions)) - missing <- !sapply(packages, requireNamespace, quietly = TRUE) - if (any(missing)) { - stop("Some required extension packages are not installed: ", - paste(packages[missing], collapse = ", ")) - } custom <- sapply(funs, is_custom, packages = packages) if (any(custom)) { warning("Your model is using the functions ", @@ -43,13 +46,23 @@ saveParams.MizerParams <- function(params, file) { "params object but also an R script or R Markdown file ", "defining these functions.") } - saveRDS(params, file = file) + saveRDS(baseMizerClass(params), file = file) } #' @rdname saveParams #' @export -readParams <- function(file) { - params <- validParams(readRDS(file)) +readParams <- function(file, install_extensions = FALSE) { + params <- readRDS(file) + if (needs_upgrading(params)) { + params <- suppressWarnings(upgradeParams(params)) + } + + if (length(params@extensions) > 0) { + registerExtensions(params@extensions, install = install_extensions) + } + + params <- coerceToExtensionClass(params) + params <- validParams(params) # # Check for missing packages # packages <- names(params@extensions) diff --git a/man/MizerParams-class.Rd b/man/MizerParams-class.Rd index 0bf576d6a..a04fd229e 100644 --- a/man/MizerParams-class.Rd +++ b/man/MizerParams-class.Rd @@ -29,10 +29,12 @@ abundances or harvest effort through time. These are held in \item{\code{mizer_version}}{The package version of mizer (as returned by \code{packageVersion("mizer")}) that created or upgraded the model.} -\item{\code{extensions}}{A named vector of strings where each name is the name of -and extension package needed to run the model and each value is a string -giving the information that the remotes package needs to install the -correct version of the extension package, see https://remotes.r-lib.org/.} +\item{\code{extensions}}{A named vector of strings describing the extension chain +needed to run the model. The names are extension identifiers and S4 marker +class names. The order is the S3 dispatch order, from outermost to +innermost extension. The values are version strings, installation +specifications, or \code{NA_character_}. Extension subclasses are marker +classes only and must not add slots.} \item{\code{time_created}}{A POSIXct date-time object with the creation time.} diff --git a/man/MizerSim-class.Rd b/man/MizerSim-class.Rd index 38a21ded4..a6c9fd4ba 100644 --- a/man/MizerSim-class.Rd +++ b/man/MizerSim-class.Rd @@ -44,7 +44,10 @@ with \code{\link[=validSim]{validSim()}}. \section{Slots}{ \describe{ -\item{\code{params}}{An object of type \linkS4class{MizerParams}.} +\item{\code{params}}{An object of type \linkS4class{MizerParams}. +If this params object uses extensions, the \code{MizerSim} object uses the same +extension chain via \code{params@extensions}; \code{MizerSim} has no separate +extension slot.} \item{\code{n}}{Three-dimensional array (time x species x size) that stores the projected community number densities.} diff --git a/man/coerceToExtensionClass.Rd b/man/coerceToExtensionClass.Rd new file mode 100644 index 000000000..94aa7e375 --- /dev/null +++ b/man/coerceToExtensionClass.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{coerceToExtensionClass} +\alias{coerceToExtensionClass} +\title{Coerce a mizer object to its registered extension class} +\usage{ +coerceToExtensionClass(object, extensions = objectExtensions(object)) +} +\arguments{ +\item{object}{A \code{MizerParams} or \code{MizerSim} object.} + +\item{extensions}{Optional extension chain. Defaults to the chain stored in +\code{object}, or in \code{object@params} for \code{MizerSim}.} +} +\value{ +The same object coerced to the appropriate marker class, or to the +base class for an empty extension chain. +} +\description{ +Coerces a \code{MizerParams} or \code{MizerSim} object to the S4 marker class +corresponding to the object's own extension chain. For \code{MizerSim}, the +extension chain is read from \code{sim@params@extensions}. +} diff --git a/man/getRegisteredExtensions.Rd b/man/getRegisteredExtensions.Rd new file mode 100644 index 000000000..9493e0786 --- /dev/null +++ b/man/getRegisteredExtensions.Rd @@ -0,0 +1,15 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{getRegisteredExtensions} +\alias{getRegisteredExtensions} +\title{Get the registered mizer extension chain} +\usage{ +getRegisteredExtensions() +} +\value{ +A named character vector giving the maximal extension chain +registered for this R session. +} +\description{ +Get the registered mizer extension chain +} diff --git a/man/registerExtensions.Rd b/man/registerExtensions.Rd new file mode 100644 index 000000000..8eb21cc77 --- /dev/null +++ b/man/registerExtensions.Rd @@ -0,0 +1,34 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{registerExtensions} +\alias{registerExtensions} +\title{Register mizer extensions for this R session} +\usage{ +registerExtensions(extensions, install = FALSE) +} +\arguments{ +\item{extensions}{A named character vector. Names are extension identifiers +and S4 marker class names. Values are version strings, installation +specifications, or \code{NA_character_}.} + +\item{install}{Logical. If \code{TRUE}, missing extension packages may be +installed. Installation support is intentionally conservative and currently +only supports CRAN-style package installation by extension name.} +} +\value{ +The active maximal extension chain, invisibly. +} +\description{ +Registers the maximal extension chain that mizer should use in the current +R session. The order of \code{extensions} is the S3 dispatch order, from +outermost to innermost extension. For example +\code{c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")} dispatches to +\code{mizerExtB} methods first, then \code{mizerExtA} methods, then base mizer +methods. +} +\details{ +A session can handle objects whose extension chain is a suffix of the +registered maximal chain. For example, after registering +\code{c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")}, objects using only +\code{c(mizerExtA = "0.4.1")} are also valid. +} diff --git a/man/saveParams.Rd b/man/saveParams.Rd index cc06eaa0c..5761c4b27 100644 --- a/man/saveParams.Rd +++ b/man/saveParams.Rd @@ -7,13 +7,16 @@ \usage{ saveParams(params, file) -readParams(file) +readParams(file, install_extensions = FALSE) } \arguments{ \item{params}{A MizerParams object} \item{file}{The name of the file or a connection where the MizerParams object is saved to or read from.} + +\item{install_extensions}{Logical. Should \code{\link[=readParams]{readParams()}} attempt to install +missing extension packages before registering the saved extension chain?} } \value{ NULL invisibly diff --git a/tests/testthat/test-registerExtensions.R b/tests/testthat/test-registerExtensions.R new file mode 100644 index 000000000..51b94a6a7 --- /dev/null +++ b/tests/testthat/test-registerExtensions.R @@ -0,0 +1,136 @@ +test_that("registerExtensions creates marker class chains in dispatch order", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestA", Sys.getpid()) + ext_b <- paste0("mizerTestB", Sys.getpid()) + chain <- setNames(c(NA_character_, NA_character_), c(ext_b, ext_a)) + + expect_invisible(registerExtensions(chain)) + expect_identical(getRegisteredExtensions(), chain) + expect_true(methods::extends(ext_b, ext_a)) + expect_true(methods::extends(ext_a, "MizerParams")) + expect_true(methods::extends(simExtensionClass(ext_b), simExtensionClass(ext_a))) + expect_true(methods::extends(simExtensionClass(ext_a), "MizerSim")) + + params <- NS_params + params@extensions <- chain + params <- coerceToExtensionClass(params) + expect_s4_class(params, ext_b) + expect_true(is(params, ext_a)) +}) + +test_that("registerExtensions accepts suffixes and prepended superchains", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestSuffixA", Sys.getpid()) + ext_b <- paste0("mizerTestSuffixB", Sys.getpid()) + ext_c <- paste0("mizerTestSuffixC", Sys.getpid()) + inner <- setNames(NA_character_, ext_a) + full <- setNames(rep(NA_character_, 2), c(ext_b, ext_a)) + incompatible <- setNames(rep(NA_character_, 2), c(ext_c, ext_a)) + + registerExtensions(inner) + expect_identical(getRegisteredExtensions(), inner) + + registerExtensions(full) + expect_identical(getRegisteredExtensions(), full) + + registerExtensions(inner) + expect_identical(getRegisteredExtensions(), full) + + expect_error(registerExtensions(incompatible), + "different extension chain is already active") +}) + +test_that("coercion uses the object's own suffix chain", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestCoerceA", Sys.getpid()) + ext_b <- paste0("mizerTestCoerceB", Sys.getpid()) + chain <- setNames(rep(NA_character_, 2), c(ext_b, ext_a)) + suffix <- setNames(NA_character_, ext_a) + registerExtensions(chain) + + params <- NS_params + params@extensions <- suffix + params <- coerceToExtensionClass(params) + expect_s4_class(params, ext_a) + expect_false(is(params, ext_b)) + + sim <- MizerSim(params, t_dimnames = 0) + expect_s4_class(sim, simExtensionClass(ext_a)) + expect_false(is(sim, simExtensionClass(ext_b))) +}) + +test_that("S3 dispatch follows registered extension order", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestDispatchA", Sys.getpid()) + ext_b <- paste0("mizerTestDispatchB", Sys.getpid()) + chain <- setNames(rep(NA_character_, 2), c(ext_b, ext_a)) + registerExtensions(chain) + + extensionChainTestDispatch <- function(params) { + UseMethod("extensionChainTestDispatch") + } + method_names <- c( + "extensionChainTestDispatch.MizerParams", + paste0("extensionChainTestDispatch.", ext_a), + paste0("extensionChainTestDispatch.", ext_b) + ) + assign(method_names[1], function(params) "base", envir = .GlobalEnv) + assign(method_names[2], function(params) paste("A", NextMethod()), + envir = .GlobalEnv) + assign(method_names[3], function(params) paste("B", NextMethod()), + envir = .GlobalEnv) + withr::defer(rm(list = method_names, envir = .GlobalEnv)) + + params <- NS_params + params@extensions <- chain + params <- coerceToExtensionClass(params) + expect_equal(extensionChainTestDispatch(params), "B A base") +}) + +test_that("base objects remain valid in extension sessions", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestBaseA", Sys.getpid()) + registerExtensions(setNames(NA_character_, ext_a)) + + params <- validParams(NS_params) + expect_s4_class(params, "MizerParams") + + sim <- MizerSim(params, t_dimnames = 0) + expect_s4_class(sim, "MizerSim") +}) + +test_that("readParams registers and coerces saved extension objects", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestReadA", Sys.getpid()) + chain <- setNames(NA_character_, ext_a) + registerExtensions(chain) + + params <- NS_params + params@extensions <- chain + params <- coerceToExtensionClass(params) + + tmp <- tempfile(fileext = ".rds") + withr::defer(unlink(tmp)) + saveParams(params, tmp) + + saved <- readRDS(tmp) + expect_s4_class(saved, "MizerParams") + expect_identical(saved@extensions, chain) + + resetMizerSession() + params2 <- readParams(tmp) + expect_identical(getRegisteredExtensions(), chain) + expect_s4_class(params2, ext_a) +}) From d072166bafb516240de0aa5e104703ac8201da97 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Mon, 4 May 2026 20:08:22 +0100 Subject: [PATCH 03/34] Add extension-aware projection rate hooks --- NAMESPACE | 4 + NEWS.md | 5 + R/project.R | 4 +- R/project_methods.R | 130 +++++++++++++++++++++-- R/rate_functions.R | 15 ++- R/steady.R | 2 +- man/getEncounter.Rd | 17 ++- man/mizerEGrowth.Rd | 3 +- man/mizerERepro.Rd | 3 +- man/mizerEReproAndGrowth.Rd | 3 +- man/mizerEncounter.Rd | 30 ++++-- man/mizerFMort.Rd | 3 +- man/mizerFMortGear.Rd | 3 +- man/mizerFeedingLevel.Rd | 3 +- man/mizerMort.Rd | 3 +- man/mizerPredMort.Rd | 3 +- man/mizerPredRate.Rd | 3 +- man/mizerRDI.Rd | 3 +- man/mizerRates.Rd | 3 +- man/mizerResourceMort.Rd | 3 +- man/projectRates.Rd | 55 ++++++++++ tests/testthat/test-extension-dispatch.R | 54 ++++++++++ 22 files changed, 316 insertions(+), 36 deletions(-) create mode 100644 man/projectRates.Rd create mode 100644 tests/testthat/test-extension-dispatch.R diff --git a/NAMESPACE b/NAMESPACE index ce2770add..d46545577 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -134,6 +134,8 @@ S3method(print,summary.ArraySpeciesBySize) S3method(print,summary.ArraySpeciesByTime) S3method(project,MizerParams) S3method(project,MizerSim) +S3method(projectEncounter,MizerParams) +S3method(projectRates,MizerParams) S3method(projectToSteady,MizerParams) S3method(project_simple,MizerParams) S3method(removeSpecies,MizerParams) @@ -379,6 +381,8 @@ export(plotlyYieldObservedVsModel) export(power_law_pred_kernel) export(pred_kernel) export(project) +export(projectEncounter) +export(projectRates) export(projectToSteady) export(project_n) export(project_simple) diff --git a/NEWS.md b/NEWS.md index 8273c6a6e..74609ee1b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,11 @@ dispatch, with `MizerSim` deriving its extension chain from `sim@params@extensions`. +- Added `projectRates()` and `projectEncounter()` as the first S3 hooks in the + extension-chain rate pipeline. Extension-aware projections dispatch through + `projectRates()`, while models without extensions keep using the pre-resolved + `mizerRates()` pipeline directly. + - New `scaleRates(params, factor)` function that rescales all rates in a model by a given factor. This is equivalent to a time rescaling: it speeds up or slows down all dynamics without affecting the steady state. All rate slots diff --git a/R/project.R b/R/project.R index 275dc9862..7895c84eb 100644 --- a/R/project.R +++ b/R/project.R @@ -287,7 +287,7 @@ project.MizerParams <- function(object, effort, # get functions resource_dynamics_fn <- get(params@resource_dynamics) other_dynamics_fns <- lapply(params@other_dynamics, get) - rates_fns <- lapply(params@rates_funcs, get) + rates_fns <- projectRateFunctions(params) # Set up progress bar if (is(progress_bar, "Progress")) { @@ -454,7 +454,7 @@ project_simple.MizerParams <- t = 0, dt = 0.1, steps, resource_dynamics_fn = get(params@resource_dynamics), other_dynamics_fns = lapply(params@other_dynamics, get), - rates_fns = lapply(params@rates_funcs, get), ...) { + rates_fns = projectRateFunctions(params), ...) { # Handy things ---- no_sp <- nrow(params@species_params) # number of species no_w <- length(params@w) # number of fish size bins diff --git a/R/project_methods.R b/R/project_methods.R index 57a510615..c21053611 100644 --- a/R/project_methods.R +++ b/R/project_methods.R @@ -113,7 +113,112 @@ mizerRates <- function(params, n, n_pp, n_other, return(r) } -#' Get encounter rate needed to project standard mizer model +#' Get all rates needed to project an extension-aware mizer model +#' +#' S3 generic used by extension-aware projections to calculate all rates. +#' Models without extensions keep using [mizerRates()] directly. The base +#' method mirrors [mizerRates()] but calls migrated projection hooks directly, +#' starting with [projectEncounter()]. +#' +#' @inheritParams mizerRates +#' +#' @return List of rates. +#' @export +#' @family mizer rate functions +projectRates <- function(params, n, n_pp, n_other, + t = 0, effort, rates_fns, ...) { + UseMethod("projectRates") +} + +#' @export +projectRates.MizerParams <- function(params, n, n_pp, n_other, + t = 0, effort, rates_fns, ...) { + r <- list() + + ## Growth ---- + # Calculate rate E_{e,i}(w) of encountered food + r$encounter <- projectEncounter( + params, n = n, n_pp = n_pp, n_other = n_other, t = t, ...) + # Calculate feeding level f_i(w) + r$feeding_level <- rates_fns$FeedingLevel( + params, n = n, n_pp = n_pp, n_other = n_other, + encounter = r$encounter, t = t, ...) + # Calculate the energy available for reproduction and growth + r$e <- rates_fns$EReproAndGrowth( + params, n = n, n_pp = n_pp, n_other = n_other, + encounter = r$encounter, feeding_level = r$feeding_level, t = t, ...) + # Calculate the energy for reproduction + r$e_repro <- rates_fns$ERepro( + params, n = n, n_pp = n_pp, n_other = n_other, + e = r$e, t = t, ...) + # Calculate the growth rate g_i(w) + r$e_growth <- rates_fns$EGrowth( + params, n = n, n_pp = n_pp, n_other = n_other, + e_repro = r$e_repro, e = r$e, t = t, ...) + # Calculate the diffusion rate D_i(w) + r$diffusion <- rates_fns$Diffusion( + params, n = n, n_pp = n_pp, n_other = n_other, + feeding_level = r$feeding_level, t = t, ...) + + ## Mortality ---- + # Calculate the predation rate + r$pred_rate <- rates_fns$PredRate( + params, n = n, n_pp = n_pp, n_other = n_other, + feeding_level = r$feeding_level, t = t, ...) + # Calculate predation mortality on fish \mu_{p,i}(w) + r$pred_mort <- rates_fns$PredMort( + params, n = n, n_pp = n_pp, n_other = n_other, + pred_rate = r$pred_rate, t = t, ...) + # Calculate fishing mortality + r$f_mort <- rates_fns$FMort( + params, n = n, n_pp = n_pp, n_other = n_other, + effort = effort, t = t, + e_growth = r$e_growth, pred_mort = r$pred_mort, ...) + # Calculate total mortality \mu_i(w) + r$mort <- rates_fns$Mort( + params, n = n, n_pp = n_pp, n_other = n_other, + f_mort = r$f_mort, pred_mort = r$pred_mort, t = t, ...) + + ## Reproduction ---- + # R_di + r$rdi <- rates_fns$RDI( + params, n = n, n_pp = n_pp, n_other = n_other, + e_growth = r$e_growth, + mort = r$mort, + e_repro = r$e_repro, t = t, ...) + # R_dd + r$rdd <- rates_fns$RDD( + rdi = r$rdi, species_params = params@species_params, + params = params, t = t, ...) + + ## Resource ---- + # Calculate mortality on the resource spectrum + r$resource_mort <- rates_fns$ResourceMort( + params, n = n, n_pp = n_pp, n_other = n_other, + pred_rate = r$pred_rate, t = t, ...) + + return(r) +} + +#' @name mizerEncounter +#' @rdname mizerEncounter +#' @export +projectEncounter <- function(params, n, n_pp, n_other, t = 0, ...) { + UseMethod("projectEncounter") +} + +# Resolve rate functions for projection. +projectRateFunctions <- function(params) { + rates_fns <- lapply(params@rates_funcs, get) + + if (length(params@extensions) > 0) { + rates_fns$Rates <- projectRates + } + + rates_fns +} + +#' Get encounter rate during projection #' #' Calculates the rate \eqn{E_i(w)} at which a predator of species \eqn{i} and #' weight \eqn{w} encounters food (grams/year). You would not usually call this @@ -156,11 +261,18 @@ mizerRates <- function(params, n, n_pp, n_other, #' [setComponent()] and for which you specified an `encounter_fun` function then #' the encounters of these components will be included in the returned value. #' +#' @section Extension hook: +#' `projectEncounter()` is the S3 generic used by extension-aware projections. +#' Extension packages can add methods for their marker classes and call +#' `NextMethod()` to compose encounter-rate changes. The `MizerParams` method +#' contains the standard mizer calculation and is also exported as +#' `mizerEncounter()` for compatibility. +#' #' @section Your own encounter function: -#' By default [getEncounter()] calls [mizerEncounter()]. However you can -#' replace this with your own alternative encounter function. If -#' your function is called `"myEncounter"` then you register it in a MizerParams -#' object `params` with +#' By default [getEncounter()] calls [mizerEncounter()] on models without +#' extensions. However you can replace this with your own alternative encounter +#' function. If your function is called `"myEncounter"` then you register it in +#' a MizerParams object `params` with #' ``` #' params <- setRateFunction(params, "Encounter", "myEncounter") #' ``` @@ -172,9 +284,11 @@ mizerRates <- function(params, n, n_pp, n_other, #' #' @return A named two dimensional array (predator species x predator size) with #' the encounter rates. +#' @rdname mizerEncounter #' @export #' @family mizer rate functions -mizerEncounter <- function(params, n, n_pp, n_other, t, ...) { +projectEncounter.MizerParams <- function(params, n, n_pp, n_other, + t = 0, ...) { # idx_sp are the index values of params@w_full such that # params@w_full[idx_sp] = params@w @@ -243,6 +357,10 @@ mizerEncounter <- function(params, n, n_pp, n_other, t, ...) { return(encounter + params@ext_encounter) } +#' @rdname mizerEncounter +#' @export +mizerEncounter <- projectEncounter.MizerParams + #' Get feeding level needed to project standard mizer model #' #' You would not usually call this function directly but instead use diff --git a/R/rate_functions.R b/R/rate_functions.R index cc6882414..0cb897b4e 100644 --- a/R/rate_functions.R +++ b/R/rate_functions.R @@ -46,10 +46,11 @@ getRates.MizerParams <- function(params, n = initialN(params), effort <- params@initial_effort } - get(params@rates_funcs$Rates)( + rates_fns <- projectRateFunctions(params) + rates_fns$Rates( params, n = n, n_pp = n_pp, n_other = n_other, t = t, effort = effort, - rates_fns = lapply(params@rates_funcs, get), ...) + rates_fns = rates_fns, ...) } #' Get encounter rate @@ -86,8 +87,14 @@ getEncounter.MizerParams <- function(params, n = initialN(params), identical(length(n_pp), length(params@initial_n_pp)), identical(length(n_other), length(params@initial_n_other)) ) - f <- get(params@rates_funcs$Encounter) - encounter <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t) + if (length(params@extensions) > 0) { + encounter <- projectEncounter(params, n = n, n_pp = n_pp, + n_other = n_other, t = t, ...) + } else { + encounter_fn <- get(params@rates_funcs$Encounter) + encounter <- encounter_fn(params, n = n, n_pp = n_pp, + n_other = n_other, t = t, ...) + } ArraySpeciesBySize(encounter, value_name = "Encounter rate", units = "g/year", params = params) } diff --git a/R/steady.R b/R/steady.R index 5e52f261a..746af6886 100644 --- a/R/steady.R +++ b/R/steady.R @@ -140,7 +140,7 @@ projectToSteady.MizerParams <- function(params, # get functions resource_dynamics_fn <- get(params@resource_dynamics) other_dynamics_fns <- lapply(params@other_dynamics, get) - rates_fns <- lapply(params@rates_funcs, get) + rates_fns <- projectRateFunctions(params) r <- rates_fns$Rates( params, n = params@initial_n, n_pp = params@initial_n_pp, diff --git a/man/getEncounter.Rd b/man/getEncounter.Rd index 5c7b08a37..ca140a5b8 100644 --- a/man/getEncounter.Rd +++ b/man/getEncounter.Rd @@ -77,12 +77,21 @@ If your model contains additional components that you added with the encounters of these components will be included in the returned value. } +\section{Extension hook}{ + +\code{projectEncounter()} is the S3 generic used by extension-aware projections. +Extension packages can add methods for their marker classes and call +\code{NextMethod()} to compose encounter-rate changes. The \code{MizerParams} method +contains the standard mizer calculation and is also exported as +\code{mizerEncounter()} for compatibility. +} + \section{Your own encounter function}{ -By default \code{\link[=getEncounter]{getEncounter()}} calls \code{\link[=mizerEncounter]{mizerEncounter()}}. However you can -replace this with your own alternative encounter function. If -your function is called \code{"myEncounter"} then you register it in a MizerParams -object \code{params} with +By default \code{\link[=getEncounter]{getEncounter()}} calls \code{\link[=mizerEncounter]{mizerEncounter()}} on models without +extensions. However you can replace this with your own alternative encounter +function. If your function is called \code{"myEncounter"} then you register it in +a MizerParams object \code{params} with \if{html}{\out{
}}\preformatted{params <- setRateFunction(params, "Encounter", "myEncounter") }\if{html}{\out{
}} diff --git a/man/mizerEGrowth.Rd b/man/mizerEGrowth.Rd index 1ac53ca26..a33db3e3d 100644 --- a/man/mizerEGrowth.Rd +++ b/man/mizerEGrowth.Rd @@ -72,6 +72,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerERepro.Rd b/man/mizerERepro.Rd index f9a75712b..e8a34d8ff 100644 --- a/man/mizerERepro.Rd +++ b/man/mizerERepro.Rd @@ -70,6 +70,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerEReproAndGrowth.Rd b/man/mizerEReproAndGrowth.Rd index 10918987f..bf55f326b 100644 --- a/man/mizerEReproAndGrowth.Rd +++ b/man/mizerEReproAndGrowth.Rd @@ -97,6 +97,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerEncounter.Rd b/man/mizerEncounter.Rd index 27f55f3fe..982b8fcc1 100644 --- a/man/mizerEncounter.Rd +++ b/man/mizerEncounter.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/project_methods.R \name{mizerEncounter} \alias{mizerEncounter} -\title{Get encounter rate needed to project standard mizer model} +\alias{projectEncounter} +\alias{projectEncounter.MizerParams} +\title{Get encounter rate during projection} \usage{ -mizerEncounter(params, n, n_pp, n_other, t, ...) +projectEncounter(params, n, n_pp, n_other, t = 0, ...) + +\method{projectEncounter}{MizerParams}(params, n, n_pp, n_other, t = 0, ...) + +mizerEncounter(params, n, n_pp, n_other, t = 0, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} @@ -72,12 +78,21 @@ If your model contains additional components that you added with the encounters of these components will be included in the returned value. } +\section{Extension hook}{ + +\code{projectEncounter()} is the S3 generic used by extension-aware projections. +Extension packages can add methods for their marker classes and call +\code{NextMethod()} to compose encounter-rate changes. The \code{MizerParams} method +contains the standard mizer calculation and is also exported as +\code{mizerEncounter()} for compatibility. +} + \section{Your own encounter function}{ -By default \code{\link[=getEncounter]{getEncounter()}} calls \code{\link[=mizerEncounter]{mizerEncounter()}}. However you can -replace this with your own alternative encounter function. If -your function is called \code{"myEncounter"} then you register it in a MizerParams -object \code{params} with +By default \code{\link[=getEncounter]{getEncounter()}} calls \code{\link[=mizerEncounter]{mizerEncounter()}} on models without +extensions. However you can replace this with your own alternative encounter +function. If your function is called \code{"myEncounter"} then you register it in +a MizerParams object \code{params} with \if{html}{\out{
}}\preformatted{params <- setRateFunction(params, "Encounter", "myEncounter") }\if{html}{\out{
}} @@ -99,6 +114,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerFMort.Rd b/man/mizerFMort.Rd index 33ff6c505..2ca591d87 100644 --- a/man/mizerFMort.Rd +++ b/man/mizerFMort.Rd @@ -72,6 +72,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerFMortGear.Rd b/man/mizerFMortGear.Rd index 4e019c4a0..10f4a4921 100644 --- a/man/mizerFMortGear.Rd +++ b/man/mizerFMortGear.Rd @@ -39,6 +39,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerFeedingLevel.Rd b/man/mizerFeedingLevel.Rd index e1b08ea25..45d444900 100644 --- a/man/mizerFeedingLevel.Rd +++ b/man/mizerFeedingLevel.Rd @@ -80,6 +80,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerMort.Rd b/man/mizerMort.Rd index ea2c5cd2d..1a96ca286 100644 --- a/man/mizerMort.Rd +++ b/man/mizerMort.Rd @@ -73,6 +73,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerPredMort.Rd b/man/mizerPredMort.Rd index 7eb7e13db..128330954 100644 --- a/man/mizerPredMort.Rd +++ b/man/mizerPredMort.Rd @@ -66,6 +66,7 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerPredRate.Rd b/man/mizerPredRate.Rd index bfab30233..18835a25b 100644 --- a/man/mizerPredRate.Rd +++ b/man/mizerPredRate.Rd @@ -69,6 +69,7 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerRDI.Rd b/man/mizerRDI.Rd index 56f4d20e2..89d929c14 100644 --- a/man/mizerRDI.Rd +++ b/man/mizerRDI.Rd @@ -82,6 +82,7 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerRates.Rd b/man/mizerRates.Rd index 168e675c8..9d20581e2 100644 --- a/man/mizerRates.Rd +++ b/man/mizerRates.Rd @@ -65,6 +65,7 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/mizerResourceMort.Rd b/man/mizerResourceMort.Rd index 8f8f6d65a..445f17858 100644 --- a/man/mizerResourceMort.Rd +++ b/man/mizerResourceMort.Rd @@ -64,6 +64,7 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, -\code{\link[=mizerRates]{mizerRates()}} +\code{\link[=mizerRates]{mizerRates()}}, +\code{\link[=projectRates]{projectRates()}} } \concept{mizer rate functions} diff --git a/man/projectRates.Rd b/man/projectRates.Rd new file mode 100644 index 000000000..bcd262827 --- /dev/null +++ b/man/projectRates.Rd @@ -0,0 +1,55 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/project_methods.R +\name{projectRates} +\alias{projectRates} +\title{Get all rates needed to project an extension-aware mizer model} +\usage{ +projectRates(params, n, n_pp, n_other, t = 0, effort, rates_fns, ...) +} +\arguments{ +\item{params}{A \linkS4class{MizerParams} object} + +\item{n}{A matrix of species abundances (species x size).} + +\item{n_pp}{A vector of the resource abundance by size} + +\item{n_other}{A list of abundances for other dynamical components of the +ecosystem} + +\item{t}{The time for which to do the calculation (Not used by standard +mizer rate functions but useful for extensions with time-dependent +parameters.)} + +\item{effort}{The effort for each fishing gear} + +\item{rates_fns}{Named list of the functions to call to calculate the rates. +Note that this list holds the functions themselves, not their names.} + +\item{...}{Unused} +} +\value{ +List of rates. +} +\description{ +S3 generic used by extension-aware projections to calculate all rates. +Models without extensions keep using \code{\link[=mizerRates]{mizerRates()}} directly. The base +method mirrors \code{\link[=mizerRates]{mizerRates()}} but calls migrated projection hooks directly, +starting with \code{\link[=projectEncounter]{projectEncounter()}}. +} +\seealso{ +Other mizer rate functions: +\code{\link[=mizerEGrowth]{mizerEGrowth()}}, +\code{\link[=mizerERepro]{mizerERepro()}}, +\code{\link[=mizerEReproAndGrowth]{mizerEReproAndGrowth()}}, +\code{\link[=mizerEncounter]{mizerEncounter()}}, +\code{\link[=mizerFMort]{mizerFMort()}}, +\code{\link[=mizerFMortGear]{mizerFMortGear()}}, +\code{\link[=mizerFeedingLevel]{mizerFeedingLevel()}}, +\code{\link[=mizerMort]{mizerMort()}}, +\code{\link[=mizerPredMort]{mizerPredMort()}}, +\code{\link[=mizerPredRate]{mizerPredRate()}}, +\code{\link[=mizerRDI]{mizerRDI()}}, +\code{\link[=mizerRates]{mizerRates()}}, +\code{\link[=mizerResourceMort]{mizerResourceMort()}} +} +\concept{mizer rate functions} diff --git a/tests/testthat/test-extension-dispatch.R b/tests/testthat/test-extension-dispatch.R new file mode 100644 index 000000000..3a3b0817c --- /dev/null +++ b/tests/testthat/test-extension-dispatch.R @@ -0,0 +1,54 @@ +test_that("getEncounter dispatches through extension chain", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext <- paste0("mizerTestEncounter", Sys.getpid()) + chain <- setNames(NA_character_, ext) + registerExtensions(chain) + + method <- function(params, n, n_pp, n_other, t = 0, ...) { + NextMethod() + 1 + } + registerS3method( + "projectEncounter", ext, method, + envir = asNamespace("mizer") + ) + + params <- NS_params + params@extensions <- chain + params <- coerceToExtensionClass(params) + + base <- projectEncounter.MizerParams( + params, + n = initialN(params), + n_pp = initialNResource(params), + n_other = initialNOther(params), + t = 0 + ) + + expect_equal(getEncounter(params), base + 1, ignore_attr = TRUE) + expect_equal(projectEncounter(params, n = initialN(params), + n_pp = initialNResource(params), + n_other = initialNOther(params), + t = 0), + base + 1, ignore_attr = TRUE) + expect_equal(getRates(params)$encounter, base + 1, ignore_attr = TRUE) +}) + +test_that("projectEncounter base method is mizerEncounter", { + expect_identical(projectEncounter.MizerParams, mizerEncounter) +}) + +test_that("getEncounter honours rates_funcs for base objects", { + params <- NS_params + params@rates_funcs$Encounter <- "constant_encounter_for_dispatch_test" + + assign("constant_encounter_for_dispatch_test", + function(params, n, n_pp, n_other, t = 0, ...) { + params@initial_n * 0 + t + }, envir = .GlobalEnv) + withr::defer(rm("constant_encounter_for_dispatch_test", envir = .GlobalEnv)) + + expect_equal(getEncounter(params, t = 2), params@initial_n * 0 + 2, + ignore_attr = TRUE) +}) From f01871f922c1e1bb9d141df438a78d3294f36b03 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Mon, 4 May 2026 20:20:20 +0100 Subject: [PATCH 04/34] Skip projection dispatch for classless extensions --- NEWS.md | 3 ++ R/project_methods.R | 2 +- R/rate_functions.R | 2 +- R/registerExtensions.R | 52 ++++++++++++++++++++---- man/registerExtensions.Rd | 9 ++-- tests/testthat/test-extension-dispatch.R | 29 +++++++++++++ tests/testthat/test-registerExtensions.R | 20 +++++++++ 7 files changed, 103 insertions(+), 14 deletions(-) diff --git a/NEWS.md b/NEWS.md index 74609ee1b..4824cc87f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -11,6 +11,9 @@ `projectRates()`, while models without extensions keep using the pre-resolved `mizerRates()` pipeline directly. +- Extensions that do not provide a marker class now remain metadata-only and do + not trigger the S3 projection-rate dispatch path. + - New `scaleRates(params, factor)` function that rescales all rates in a model by a given factor. This is equivalent to a time rescaling: it speeds up or slows down all dynamics without affecting the steady state. All rate slots diff --git a/R/project_methods.R b/R/project_methods.R index c21053611..7b666cc41 100644 --- a/R/project_methods.R +++ b/R/project_methods.R @@ -211,7 +211,7 @@ projectEncounter <- function(params, n, n_pp, n_other, t = 0, ...) { projectRateFunctions <- function(params) { rates_fns <- lapply(params@rates_funcs, get) - if (length(params@extensions) > 0) { + if (usesExtensionDispatch(params)) { rates_fns$Rates <- projectRates } diff --git a/R/rate_functions.R b/R/rate_functions.R index 0cb897b4e..b4eed6891 100644 --- a/R/rate_functions.R +++ b/R/rate_functions.R @@ -87,7 +87,7 @@ getEncounter.MizerParams <- function(params, n = initialN(params), identical(length(n_pp), length(params@initial_n_pp)), identical(length(n_other), length(params@initial_n_other)) ) - if (length(params@extensions) > 0) { + if (usesExtensionDispatch(params)) { encounter <- projectEncounter(params, n = n, n_pp = n_pp, n_other = n_other, t = t, ...) } else { diff --git a/R/registerExtensions.R b/R/registerExtensions.R index b2cdcd4a4..7ff482372 100644 --- a/R/registerExtensions.R +++ b/R/registerExtensions.R @@ -20,9 +20,12 @@ #' `c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")`, objects using only #' `c(mizerExtA = "0.4.1")` are also valid. #' -#' @param extensions A named character vector. Names are extension identifiers -#' and S4 marker class names. Values are version strings, installation -#' specifications, or `NA_character_`. +#' @param extensions A named character vector. Names are extension identifiers. +#' Values are version strings, installation specifications, or +#' `NA_character_`. Installed extensions only participate in S3 dispatch if +#' they provide an S4 marker class with the same name. `NA_character_` entries +#' are treated as in-development dispatch extensions and mizer creates their +#' marker classes automatically. #' @param install Logical. If `TRUE`, missing extension packages may be #' installed. Installation support is intentionally conservative and currently #' only supports CRAN-style package installation by extension name. @@ -88,11 +91,13 @@ coerceToExtensionClass <- function(object, extensions = objectExtensions(object) extensions <- validateExtensionsVector(extensions) assertExtensionChain(object, extensions = extensions, check_class = FALSE) - if (length(extensions) == 0) { + dispatch_extensions <- dispatchExtensions(extensions) + + if (length(dispatch_extensions) == 0) { return(methods::as(object, base_class)) } - target_class <- names(extensions)[1] + target_class <- names(dispatch_extensions)[1] if (family == "sim") { target_class <- simExtensionClass(target_class) } @@ -131,17 +136,19 @@ assertExtensionChain <- function(object, extensions = objectExtensions(object), ) } + dispatch_extensions <- dispatchExtensions(extensions) + if (is(object, "MizerParams")) { - expected_class <- if (length(extensions) == 0) { + expected_class <- if (length(dispatch_extensions) == 0) { "MizerParams" } else { - names(extensions)[1] + names(dispatch_extensions)[1] } } else if (is(object, "MizerSim")) { - expected_class <- if (length(extensions) == 0) { + expected_class <- if (length(dispatch_extensions) == 0) { "MizerSim" } else { - simExtensionClass(names(extensions)[1]) + simExtensionClass(names(dispatch_extensions)[1]) } } else { stop("Can only check MizerParams or MizerSim objects.") @@ -217,6 +224,7 @@ isSuffixChain <- function(candidate, chain) { defineExtensionClasses <- function(extensions) { extensions <- validateExtensionsVector(extensions) + extensions <- dispatchExtensions(extensions) parent_params <- "MizerParams" parent_sim <- "MizerSim" @@ -232,6 +240,32 @@ defineExtensionClasses <- function(extensions) { invisible(extensions) } +dispatchExtensions <- function(extensions) { + extensions <- validateExtensionsVector(extensions) + if (length(extensions) == 0) { + return(character()) + } + + is_dispatch_extension <- vapply(seq_along(extensions), function(i) { + extension <- names(extensions)[[i]] + requirement <- unname(extensions[[i]]) + + is.na(requirement) || methods::isClass(extension) + }, logical(1)) + + extensions[is_dispatch_extension] +} + +usesExtensionDispatch <- function(object) { + if (is(object, "MizerParams")) { + return(!identical(class(object)[[1]], "MizerParams")) + } + if (is(object, "MizerSim")) { + return(!identical(class(object)[[1]], "MizerSim")) + } + stop("Can only check dispatch for MizerParams or MizerSim objects.") +} + defineOrCheckClass <- function(class, parent) { if (!methods::isClass(class)) { methods::setClass(class, contains = parent, where = .GlobalEnv) diff --git a/man/registerExtensions.Rd b/man/registerExtensions.Rd index 8eb21cc77..2545f5563 100644 --- a/man/registerExtensions.Rd +++ b/man/registerExtensions.Rd @@ -7,9 +7,12 @@ registerExtensions(extensions, install = FALSE) } \arguments{ -\item{extensions}{A named character vector. Names are extension identifiers -and S4 marker class names. Values are version strings, installation -specifications, or \code{NA_character_}.} +\item{extensions}{A named character vector. Names are extension identifiers. +Values are version strings, installation specifications, or +\code{NA_character_}. Installed extensions only participate in S3 dispatch if +they provide an S4 marker class with the same name. \code{NA_character_} entries +are treated as in-development dispatch extensions and mizer creates their +marker classes automatically.} \item{install}{Logical. If \code{TRUE}, missing extension packages may be installed. Installation support is intentionally conservative and currently diff --git a/tests/testthat/test-extension-dispatch.R b/tests/testthat/test-extension-dispatch.R index 3a3b0817c..ee4326377 100644 --- a/tests/testthat/test-extension-dispatch.R +++ b/tests/testthat/test-extension-dispatch.R @@ -52,3 +52,32 @@ test_that("getEncounter honours rates_funcs for base objects", { expect_equal(getEncounter(params, t = 2), params@initial_n * 0 + 2, ignore_attr = TRUE) }) + +test_that("classless extensions do not trigger project dispatch", { + resetMizerSession() + withr::defer(resetMizerSession()) + + chain <- c(stats = "0.0") + registerExtensions(chain) + + params <- NS_params + params@extensions <- chain + params@rates_funcs$Rates <- "classless_rates_for_dispatch_test" + params@rates_funcs$Encounter <- "classless_encounter_for_dispatch_test" + + assign("classless_rates_for_dispatch_test", + function(params, n, n_pp, n_other, t = 0, effort, rates_fns, ...) { + list(classless = TRUE) + }, envir = .GlobalEnv) + assign("classless_encounter_for_dispatch_test", + function(params, n, n_pp, n_other, t = 0, ...) { + params@initial_n * 0 + t + }, envir = .GlobalEnv) + withr::defer(rm("classless_rates_for_dispatch_test", + "classless_encounter_for_dispatch_test", + envir = .GlobalEnv)) + + expect_identical(getRates(params)$classless, TRUE) + expect_equal(getEncounter(params, t = 3), params@initial_n * 0 + 3, + ignore_attr = TRUE) +}) diff --git a/tests/testthat/test-registerExtensions.R b/tests/testthat/test-registerExtensions.R index 51b94a6a7..a43a96e57 100644 --- a/tests/testthat/test-registerExtensions.R +++ b/tests/testthat/test-registerExtensions.R @@ -109,6 +109,26 @@ test_that("base objects remain valid in extension sessions", { expect_s4_class(sim, "MizerSim") }) +test_that("classless extensions remain metadata only", { + resetMizerSession() + withr::defer(resetMizerSession()) + + chain <- c(stats = "0.0") + registerExtensions(chain) + + params <- NS_params + params@extensions <- chain + params <- coerceToExtensionClass(params) + + expect_s4_class(params, "MizerParams") + expect_false(usesExtensionDispatch(params)) + expect_identical(params@extensions, chain) + + sim <- MizerSim(params, t_dimnames = 0) + expect_s4_class(sim, "MizerSim") + expect_identical(sim@params@extensions, chain) +}) + test_that("readParams registers and coerces saved extension objects", { resetMizerSession() withr::defer(resetMizerSession()) From 46aa24fe627fbb5abfe39b9d292fddd856988220 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Mon, 4 May 2026 20:43:18 +0100 Subject: [PATCH 05/34] Add projection hooks for standard rate functions --- NAMESPACE | 24 +++ NEWS.md | 7 + R/diffusion.R | 29 ++- R/project_methods.R | 167 ++++++++++++--- R/rate_functions.R | 245 +++++++++++++++-------- R/reproduction.R | 49 ++++- man/BevertonHoltRDD.Rd | 3 +- man/RickerRDD.Rd | 3 +- man/SheperdRDD.Rd | 3 +- man/constantEggRDI.Rd | 3 +- man/constantRDD.Rd | 3 +- man/mizerDiffusion.Rd | 8 +- man/mizerEGrowth.Rd | 8 +- man/mizerERepro.Rd | 8 +- man/mizerEReproAndGrowth.Rd | 26 ++- man/mizerFMort.Rd | 8 +- man/mizerFeedingLevel.Rd | 8 +- man/mizerMort.Rd | 8 +- man/mizerPredMort.Rd | 8 +- man/mizerPredRate.Rd | 8 +- man/mizerRDI.Rd | 8 +- man/mizerResourceMort.Rd | 8 +- man/noRDD.Rd | 3 +- man/projectRDD.Rd | 43 ++++ tests/testthat/test-extension-dispatch.R | 50 +++++ 25 files changed, 603 insertions(+), 135 deletions(-) create mode 100644 man/projectRDD.Rd diff --git a/NAMESPACE b/NAMESPACE index d46545577..853cadfa5 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -134,8 +134,20 @@ S3method(print,summary.ArraySpeciesBySize) S3method(print,summary.ArraySpeciesByTime) S3method(project,MizerParams) S3method(project,MizerSim) +S3method(projectDiffusion,MizerParams) +S3method(projectEGrowth,MizerParams) +S3method(projectERepro,MizerParams) +S3method(projectEReproAndGrowth,MizerParams) S3method(projectEncounter,MizerParams) +S3method(projectFMort,MizerParams) +S3method(projectFeedingLevel,MizerParams) +S3method(projectMort,MizerParams) +S3method(projectPredMort,MizerParams) +S3method(projectPredRate,MizerParams) +S3method(projectRDD,MizerParams) +S3method(projectRDI,MizerParams) S3method(projectRates,MizerParams) +S3method(projectResourceMort,MizerParams) S3method(projectToSteady,MizerParams) S3method(project_simple,MizerParams) S3method(removeSpecies,MizerParams) @@ -381,8 +393,20 @@ export(plotlyYieldObservedVsModel) export(power_law_pred_kernel) export(pred_kernel) export(project) +export(projectDiffusion) +export(projectEGrowth) +export(projectERepro) +export(projectEReproAndGrowth) export(projectEncounter) +export(projectFMort) +export(projectFeedingLevel) +export(projectMort) +export(projectPredMort) +export(projectPredRate) +export(projectRDD) +export(projectRDI) export(projectRates) +export(projectResourceMort) export(projectToSteady) export(project_n) export(project_simple) diff --git a/NEWS.md b/NEWS.md index 4824cc87f..f559634bc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -11,6 +11,13 @@ `projectRates()`, while models without extensions keep using the pre-resolved `mizerRates()` pipeline directly. +- Added S3 projection hooks for the remaining standard mizer rate functions. + Extension-aware projections now call `projectFeedingLevel()`, + `projectEReproAndGrowth()`, `projectERepro()`, `projectEGrowth()`, + `projectDiffusion()`, `projectPredRate()`, `projectPredMort()`, + `projectFMort()`, `projectMort()`, `projectRDI()` and + `projectRDD()` and `projectResourceMort()` directly. + - Extensions that do not provide a marker class now remain metadata-only and do not trigger the S3 projection-rate dispatch path. diff --git a/R/diffusion.R b/R/diffusion.R index 3b803e0e3..2078eb9d4 100644 --- a/R/diffusion.R +++ b/R/diffusion.R @@ -36,14 +36,27 @@ getDiffusion.MizerParams <- function(params, n = initialN(params), t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$Diffusion) - d <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - feeding_level = getFeedingLevel(params, n = n, n_pp = n_pp, - n_other = n_other, t = t), ...) + feeding_level <- getFeedingLevel(params, n = n, n_pp = n_pp, + n_other = n_other, t = t) + if (usesExtensionDispatch(params)) { + d <- projectDiffusion(params, n = n, n_pp = n_pp, n_other = n_other, + t = t, feeding_level = feeding_level, ...) + } else { + f <- get(params@rates_funcs$Diffusion) + d <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + feeding_level = feeding_level, ...) + } ArraySpeciesBySize(d, value_name = "Diffusion rate", units = "g^2/year", params = params) } +#' @name mizerDiffusion +#' @rdname mizerDiffusion +#' @export +projectDiffusion <- function(params, n, n_pp, n_other, t = 0, + feeding_level, ...) { + UseMethod("projectDiffusion") +} #' Calculate diffusion rate #' @@ -69,8 +82,10 @@ getDiffusion.MizerParams <- function(params, n = initialN(params), #' @param ... Unused #' #' @return A two dimensional array (species x size) holding the diffusion rate. +#' @rdname mizerDiffusion #' @export -mizerDiffusion <- function(params, n, n_pp, n_other, t, feeding_level, ...) { +projectDiffusion.MizerParams <- function(params, n, n_pp, n_other, t = 0, + feeding_level, ...) { if (missing(feeding_level)) { feeding_level <- getFeedingLevel(params, n = n, n_pp = n_pp, @@ -115,6 +130,10 @@ mizerDiffusion <- function(params, n, n_pp, n_other, t, feeding_level, ...) { return(D) } +#' @rdname mizerDiffusion +#' @export +mizerDiffusion <- projectDiffusion.MizerParams + #' Get or set the use_predation_diffusion flag #' diff --git a/R/project_methods.R b/R/project_methods.R index 7b666cc41..cd7076c91 100644 --- a/R/project_methods.R +++ b/R/project_methods.R @@ -140,60 +140,59 @@ projectRates.MizerParams <- function(params, n, n_pp, n_other, r$encounter <- projectEncounter( params, n = n, n_pp = n_pp, n_other = n_other, t = t, ...) # Calculate feeding level f_i(w) - r$feeding_level <- rates_fns$FeedingLevel( + r$feeding_level <- projectFeedingLevel( params, n = n, n_pp = n_pp, n_other = n_other, encounter = r$encounter, t = t, ...) # Calculate the energy available for reproduction and growth - r$e <- rates_fns$EReproAndGrowth( + r$e <- projectEReproAndGrowth( params, n = n, n_pp = n_pp, n_other = n_other, encounter = r$encounter, feeding_level = r$feeding_level, t = t, ...) # Calculate the energy for reproduction - r$e_repro <- rates_fns$ERepro( + r$e_repro <- projectERepro( params, n = n, n_pp = n_pp, n_other = n_other, e = r$e, t = t, ...) # Calculate the growth rate g_i(w) - r$e_growth <- rates_fns$EGrowth( + r$e_growth <- projectEGrowth( params, n = n, n_pp = n_pp, n_other = n_other, e_repro = r$e_repro, e = r$e, t = t, ...) # Calculate the diffusion rate D_i(w) - r$diffusion <- rates_fns$Diffusion( + r$diffusion <- projectDiffusion( params, n = n, n_pp = n_pp, n_other = n_other, feeding_level = r$feeding_level, t = t, ...) ## Mortality ---- # Calculate the predation rate - r$pred_rate <- rates_fns$PredRate( + r$pred_rate <- projectPredRate( params, n = n, n_pp = n_pp, n_other = n_other, feeding_level = r$feeding_level, t = t, ...) # Calculate predation mortality on fish \mu_{p,i}(w) - r$pred_mort <- rates_fns$PredMort( + r$pred_mort <- projectPredMort( params, n = n, n_pp = n_pp, n_other = n_other, pred_rate = r$pred_rate, t = t, ...) # Calculate fishing mortality - r$f_mort <- rates_fns$FMort( + r$f_mort <- projectFMort( params, n = n, n_pp = n_pp, n_other = n_other, effort = effort, t = t, e_growth = r$e_growth, pred_mort = r$pred_mort, ...) # Calculate total mortality \mu_i(w) - r$mort <- rates_fns$Mort( + r$mort <- projectMort( params, n = n, n_pp = n_pp, n_other = n_other, f_mort = r$f_mort, pred_mort = r$pred_mort, t = t, ...) ## Reproduction ---- # R_di - r$rdi <- rates_fns$RDI( + r$rdi <- projectRDI( params, n = n, n_pp = n_pp, n_other = n_other, e_growth = r$e_growth, mort = r$mort, e_repro = r$e_repro, t = t, ...) # R_dd - r$rdd <- rates_fns$RDD( - rdi = r$rdi, species_params = params@species_params, - params = params, t = t, ...) + r$rdd <- projectRDD(params, rdi = r$rdi, species_params = params@species_params, + t = t, ...) ## Resource ---- # Calculate mortality on the resource spectrum - r$resource_mort <- rates_fns$ResourceMort( + r$resource_mort <- projectResourceMort( params, n = n, n_pp = n_pp, n_other = n_other, pred_rate = r$pred_rate, t = t, ...) @@ -361,6 +360,14 @@ projectEncounter.MizerParams <- function(params, n, n_pp, n_other, #' @export mizerEncounter <- projectEncounter.MizerParams +#' @name mizerFeedingLevel +#' @rdname mizerFeedingLevel +#' @export +projectFeedingLevel <- function(params, n, n_pp, n_other, t = 0, + encounter, ...) { + UseMethod("projectFeedingLevel") +} + #' Get feeding level needed to project standard mizer model #' #' You would not usually call this function directly but instead use @@ -402,12 +409,26 @@ mizerEncounter <- projectEncounter.MizerParams #' @return A two dimensional array (predator species x predator size) with the #' feeding level. #' +#' @rdname mizerFeedingLevel #' @export #' @family mizer rate functions -mizerFeedingLevel <- function(params, n, n_pp, n_other, t, encounter, ...) { +projectFeedingLevel.MizerParams <- function(params, n, n_pp, n_other, t = 0, + encounter, ...) { return(encounter / (encounter + params@intake_max)) } +#' @rdname mizerFeedingLevel +#' @export +mizerFeedingLevel <- projectFeedingLevel.MizerParams + +#' @name mizerEReproAndGrowth +#' @rdname mizerEReproAndGrowth +#' @export +projectEReproAndGrowth <- function(params, n, n_pp, n_other, t = 0, + encounter, feeding_level, ...) { + UseMethod("projectEReproAndGrowth") +} + #' Get energy rate available for reproduction and growth needed to project #' standard mizer model #' @@ -458,16 +479,29 @@ mizerFeedingLevel <- function(params, n, n_pp, n_other, t, encounter, ...) { #' Your function will then be called instead of [mizerEReproAndGrowth()], with #' the same arguments. #' +#' @rdname mizerEReproAndGrowth #' @export #' @family mizer rate functions -mizerEReproAndGrowth <- function(params, n, n_pp, n_other, t, encounter, - feeding_level, ...) { +projectEReproAndGrowth.MizerParams <- function(params, n, n_pp, n_other, + t = 0, encounter, + feeding_level, ...) { sweep((1 - feeding_level) * encounter, 1, params@species_params$alpha, "*", check.margin = FALSE) - params@metab } +#' @rdname mizerEReproAndGrowth +#' @export +mizerEReproAndGrowth <- projectEReproAndGrowth.MizerParams + +#' @name mizerERepro +#' @rdname mizerERepro +#' @export +projectERepro <- function(params, n, n_pp, n_other, t = 0, e, ...) { + UseMethod("projectERepro") +} + #' Get energy rate available for reproduction needed to project standard mizer #' model #' @@ -500,9 +534,11 @@ mizerEReproAndGrowth <- function(params, n, n_pp, n_other, t, encounter, #' reproduction. Negative entries in `e` are clipped to 0 before multiplying by #' \eqn{\psi_i(w)}. This proportion is taken from the `params` object and is set #' with [setReproduction()]. +#' @rdname mizerERepro #' @export #' @family mizer rate functions -mizerERepro <- function(params, n, n_pp, n_other, t, e, ...) { +projectERepro.MizerParams <- function(params, n, n_pp, n_other, t = 0, + e, ...) { # Because getEReproAndGrowth can return negative values, # we add an extra line here e[e < 0] <- 0 # Do not allow negative growth @@ -510,6 +546,17 @@ mizerERepro <- function(params, n, n_pp, n_other, t, e, ...) { params@psi * e } +#' @rdname mizerERepro +#' @export +mizerERepro <- projectERepro.MizerParams + +#' @name mizerEGrowth +#' @rdname mizerEGrowth +#' @export +projectEGrowth <- function(params, n, n_pp, n_other, t = 0, e_repro, e, ...) { + UseMethod("projectEGrowth") +} + #' Get energy rate available for growth needed to project standard mizer model #' #' Calculates the energy rate \eqn{g_i(w)} (grams/year) available by species and @@ -542,14 +589,27 @@ mizerERepro <- function(params, n, n_pp, n_other, t, e, ...) { #' [getERepro()]. #' #' @return A two dimensional array (species x size) with the growth rates. +#' @rdname mizerEGrowth #' @export #' @family mizer rate functions -mizerEGrowth <- function(params, n, n_pp, n_other, t, e_repro, e, ...) { +projectEGrowth.MizerParams <- function(params, n, n_pp, n_other, t = 0, + e_repro, e, ...) { g <- e - e_repro g[g < 0] <- 0 # Do not allow negative growth g } +#' @rdname mizerEGrowth +#' @export +mizerEGrowth <- projectEGrowth.MizerParams + +#' @name mizerPredRate +#' @rdname mizerPredRate +#' @export +projectPredRate <- function(params, n, n_pp, n_other, t = 0, + feeding_level, ...) { + UseMethod("projectPredRate") +} #' Get predation rate needed to project standard mizer model #' @@ -580,9 +640,11 @@ mizerEGrowth <- function(params, n, n_pp, n_other, t, e_repro, e, ...) { #' @return A named two dimensional array (predator species x prey size) with the #' predation rate, where the prey size runs over fish community plus resource #' spectrum. +#' @rdname mizerPredRate #' @export #' @family mizer rate functions -mizerPredRate <- function(params, n, n_pp, n_other, t, feeding_level, ...) { +projectPredRate.MizerParams <- function(params, n, n_pp, n_other, t = 0, + feeding_level, ...) { no_sp <- dim(params@interaction)[1] no_w <- length(params@w) no_w_full <- length(params@w_full) @@ -622,6 +684,16 @@ mizerPredRate <- function(params, n, n_pp, n_other, t, feeding_level, ...) { return(pred_rate * params@ft_mask) } +#' @rdname mizerPredRate +#' @export +mizerPredRate <- projectPredRate.MizerParams + +#' @name mizerPredMort +#' @rdname mizerPredMort +#' @export +projectPredMort <- function(params, n, n_pp, n_other, t = 0, pred_rate, ...) { + UseMethod("projectPredMort") +} #' Get total predation mortality rate needed to project standard mizer model #' @@ -652,13 +724,19 @@ mizerPredRate <- function(params, n, n_pp, n_other, t, feeding_level, ...) { #' @return A two dimensional array (prey species x prey size) with the predation #' mortality #' @family mizer rate functions +#' @rdname mizerPredMort #' @export -mizerPredMort <- function(params, n, n_pp, n_other, t, pred_rate, ...) { +projectPredMort.MizerParams <- function(params, n, n_pp, n_other, t = 0, + pred_rate, ...) { idx_sp <- (length(params@w_full) - length(params@w) + 1):length(params@w_full) return((base::t(params@interaction) %*% pred_rate[, idx_sp, drop = FALSE])) } +#' @rdname mizerPredMort +#' @export +mizerPredMort <- projectPredMort.MizerParams + #' Get the fishing mortality needed to project #' standard mizer model #' @@ -682,6 +760,13 @@ mizerFMortGear <- function(params, effort) { return(out) } +#' @name mizerFMort +#' @rdname mizerFMort +#' @export +projectFMort <- function(params, n, n_pp, n_other, t = 0, effort, + e_growth, pred_mort, ...) { + UseMethod("projectFMort") +} #' Get the total fishing mortality rate from all fishing gears #' @@ -713,13 +798,26 @@ mizerFMortGear <- function(params, effort) { #' #' @return An array (species x size) with the fishing mortality. #' @note Here: fishing mortality = catchability x selectivity x effort. +#' @rdname mizerFMort #' @export #' @family mizer rate functions -mizerFMort <- function(params, n, n_pp, n_other, t, effort, - e_growth, pred_mort, ...) { +projectFMort.MizerParams <- function(params, n, n_pp, n_other, t = 0, + effort, e_growth, pred_mort, ...) { colSums(mizerFMortGear(params, effort)) } +#' @rdname mizerFMort +#' @export +mizerFMort <- projectFMort.MizerParams + +#' @name mizerMort +#' @rdname mizerMort +#' @export +projectMort <- function(params, n, n_pp, n_other, t = 0, + f_mort, pred_mort, ...) { + UseMethod("projectMort") +} + #' Get total mortality rate needed to project standard mizer model #' #' Calculates the total mortality rate \eqn{\mu_i(w)} (in units 1/year) on each @@ -754,9 +852,11 @@ mizerFMort <- function(params, n, n_pp, n_other, t, effort, #' #' @return A named two dimensional array (species x size) with the total #' mortality rates. +#' @rdname mizerMort #' @export #' @family mizer rate functions -mizerMort <- function(params, n, n_pp, n_other, t, f_mort, pred_mort, ...){ +projectMort.MizerParams <- function(params, n, n_pp, n_other, t = 0, + f_mort, pred_mort, ...) { mort <- pred_mort + params@mu_b + f_mort # Add contributions from other components for (i in seq_along(params@other_mort)) { @@ -769,6 +869,17 @@ mizerMort <- function(params, n, n_pp, n_other, t, f_mort, pred_mort, ...){ return(mort) } +#' @rdname mizerMort +#' @export +mizerMort <- projectMort.MizerParams + +#' @name mizerResourceMort +#' @rdname mizerResourceMort +#' @export +projectResourceMort <- function(params, n, n_pp, n_other, t = 0, + pred_rate, ...) { + UseMethod("projectResourceMort") +} #' Get predation mortality rate for resource needed to project standard mizer #' model @@ -797,7 +908,13 @@ mizerMort <- function(params, n, n_pp, n_other, t, f_mort, pred_mort, ...){ #' #' @return A vector of mortality rate by resource size. #' @family mizer rate functions +#' @rdname mizerResourceMort #' @export -mizerResourceMort <- function(params, n, n_pp, n_other, t, pred_rate, ...) { +projectResourceMort.MizerParams <- function(params, n, n_pp, n_other, t = 0, + pred_rate, ...) { as.vector(params@species_params$interaction_resource %*% pred_rate) } + +#' @rdname mizerResourceMort +#' @export +mizerResourceMort <- projectResourceMort.MizerParams diff --git a/R/rate_functions.R b/R/rate_functions.R index b4eed6891..75380d57a 100644 --- a/R/rate_functions.R +++ b/R/rate_functions.R @@ -151,11 +151,16 @@ getFeedingLevel.MizerParams <- function(object, n, n_pp, n_other, if (missing(n_pp)) n_pp <- params@initial_n_pp if (missing(n_other)) n_other <- params@initial_n_other # calculate feeding level - f <- get(params@rates_funcs$FeedingLevel) - feeding_level <- f(params, n = n, n_pp = n_pp, n_other = n_other, - encounter = getEncounter(params, n, n_pp, n_other, - t = t), - t = t) + encounter <- getEncounter(params, n, n_pp, n_other, t = t) + if (usesExtensionDispatch(params)) { + feeding_level <- projectFeedingLevel( + params, n = n, n_pp = n_pp, n_other = n_other, + encounter = encounter, t = t) + } else { + f <- get(params@rates_funcs$FeedingLevel) + feeding_level <- f(params, n = n, n_pp = n_pp, n_other = n_other, + encounter = encounter, t = t) + } return(ArraySpeciesBySize(feeding_level, value_name = "Feeding level", params = params)) } @@ -255,11 +260,17 @@ getEReproAndGrowth.MizerParams <- function(params, n = initialN(params), n_other = initialNOther(params), t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$EReproAndGrowth) - e <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - encounter = getEncounter(params, n, n_pp, n_other, t = t), - feeding_level = getFeedingLevel(params, n, n_pp, n_other, - time_range = t)) + encounter <- getEncounter(params, n, n_pp, n_other, t = t) + feeding_level <- getFeedingLevel(params, n, n_pp, n_other, time_range = t) + if (usesExtensionDispatch(params)) { + e <- projectEReproAndGrowth( + params, n = n, n_pp = n_pp, n_other = n_other, t = t, + encounter = encounter, feeding_level = feeding_level) + } else { + f <- get(params@rates_funcs$EReproAndGrowth) + e <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + encounter = encounter, feeding_level = feeding_level) + } ArraySpeciesBySize(e, value_name = "Energy for growth and reproduction", units = "g/year", params = params) } @@ -307,11 +318,17 @@ getPredRate.MizerParams <- function(params, n = initialN(params), n_other = initialNOther(params), t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$PredRate) - pred_rate <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - feeding_level = getFeedingLevel(params, n = n, n_pp = n_pp, - n_other = n_other, - time_range = t)) + feeding_level <- getFeedingLevel(params, n = n, n_pp = n_pp, + n_other = n_other, time_range = t) + if (usesExtensionDispatch(params)) { + pred_rate <- projectPredRate( + params, n = n, n_pp = n_pp, n_other = n_other, t = t, + feeding_level = feeding_level) + } else { + f <- get(params@rates_funcs$PredRate) + pred_rate <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + feeding_level = feeding_level) + } dimnames(pred_rate) <- list(sp = dimnames(params@initial_n)$sp, w_prey = as.character(signif(params@w_full, 3))) pred_rate @@ -368,10 +385,17 @@ getPredMort.MizerParams <- function(object, n, n_pp, n_other, if (missing(time_range)) time_range <- 0 t <- min(time_range) - f <- get(params@rates_funcs$PredMort) - pred_mort <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - pred_rate = getPredRate(params, n = n, n_pp = n_pp, - n_other = n_other, t = t)) + pred_rate <- getPredRate(params, n = n, n_pp = n_pp, n_other = n_other, + t = t) + if (usesExtensionDispatch(params)) { + pred_mort <- projectPredMort( + params, n = n, n_pp = n_pp, n_other = n_other, t = t, + pred_rate = pred_rate) + } else { + f <- get(params@rates_funcs$PredMort) + pred_mort <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + pred_rate = pred_rate) + } ArraySpeciesBySize(pred_mort, value_name = "Predation mortality", units = "1/year", params = params) } @@ -444,10 +468,17 @@ getResourceMort.MizerParams <- function(params, n = initialN(params), t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$ResourceMort) - mort <- f(params, n = n, n_pp = n_pp, n_other = n_other, - t = t, pred_rate = getPredRate(params, n = n, n_pp = n_pp, - n_other = n_other, t = t)) + pred_rate <- getPredRate(params, n = n, n_pp = n_pp, n_other = n_other, + t = t) + if (usesExtensionDispatch(params)) { + mort <- projectResourceMort( + params, n = n, n_pp = n_pp, n_other = n_other, + t = t, pred_rate = pred_rate) + } else { + f <- get(params@rates_funcs$ResourceMort) + mort <- f(params, n = n, n_pp = n_pp, n_other = n_other, + t = t, pred_rate = pred_rate) + } names(mort) <- names(params@initial_n_pp) mort } @@ -657,7 +688,11 @@ getFMort.MizerParams <- function(object, effort, time_range, drop = TRUE) { n_pp <- params@initial_n_pp n_other <- params@initial_n_other no_gears <- dim(params@catchability)[[1]] - f <- get(params@rates_funcs$FMort) + f <- if (usesExtensionDispatch(params)) { + projectFMort + } else { + get(params@rates_funcs$FMort) + } if (length(dim(effort)) == 2) { times <- dimnames(effort)$time f_mort <- array(0, @@ -666,35 +701,38 @@ getFMort.MizerParams <- function(object, effort, time_range, drop = TRUE) { dimnames(params@initial_n))) times <- as.numeric(times) for (i in seq_len(dim(effort)[1])) { - f_mort[i, , ] <- - f(params, n = n, n_pp = n_pp, n_other = n_other, - effort = effort[i, ], t = times[i], - e_growth = getEGrowth(params, n = n, n_pp = n_pp, - n_other = n_other, t = times[i]), - pred_mort = getPredMort(params, n = n, n_pp = n_pp, - n_other = n_other, - time_range = times[i])) + args <- list( + params = params, n = n, n_pp = n_pp, n_other = n_other, + effort = effort[i, ], t = times[i], + e_growth = getEGrowth(params, n = n, n_pp = n_pp, + n_other = n_other, t = times[i]), + pred_mort = getPredMort(params, n = n, n_pp = n_pp, + n_other = n_other, + time_range = times[i])) + f_mort[i, , ] <- do.call(f, args) } return(f_mort) } else if (length(effort) <= 1) { - fmort <- f(params, n = n, n_pp = n_pp, n_other = n_other, - effort = rep(effort, no_gears), t = t, - e_growth = getEGrowth(params, n = n, n_pp = n_pp, - n_other = n_other, t = t), - pred_mort = getPredMort(params, n = n, n_pp = n_pp, - n_other = n_other, - time_range = t)) + args <- list( + params = params, n = n, n_pp = n_pp, n_other = n_other, + effort = rep(effort, no_gears), t = t, + e_growth = getEGrowth(params, n = n, n_pp = n_pp, + n_other = n_other, t = t), + pred_mort = getPredMort(params, n = n, n_pp = n_pp, + n_other = n_other, time_range = t)) + fmort <- do.call(f, args) fmort <- ArraySpeciesBySize(fmort, value_name = "Fishing mortality", units = "1/year", params = params) return(fmort) } else if (length(effort) == no_gears) { - fmort <- f(params, n = n, n_pp = n_pp, n_other = n_other, - effort = effort, t = t, - e_growth = getEGrowth(params, n = n, n_pp = n_pp, - n_other = n_other, t = t), - pred_mort = getPredMort(params, n = n, n_pp = n_pp, - n_other = n_other, - time_range = t)) + args <- list( + params = params, n = n, n_pp = n_pp, n_other = n_other, + effort = effort, t = t, + e_growth = getEGrowth(params, n = n, n_pp = n_pp, + n_other = n_other, t = t), + pred_mort = getPredMort(params, n = n, n_pp = n_pp, + n_other = n_other, time_range = t)) + fmort <- do.call(f, args) fmort <- ArraySpeciesBySize(fmort, value_name = "Fishing mortality", units = "1/year", params = params) return(fmort) @@ -707,7 +745,11 @@ getFMort.MizerParams <- function(object, effort, time_range, drop = TRUE) { getFMort.MizerSim <- function(object, effort, time_range, drop = TRUE) { sim <- object params <- sim@params - f <- get(params@rates_funcs$FMort) + f <- if (usesExtensionDispatch(params)) { + projectFMort + } else { + get(params@rates_funcs$FMort) + } if (missing(time_range)) { time_range <- dimnames(sim@effort)$time } @@ -723,15 +765,18 @@ getFMort.MizerSim <- function(object, effort, time_range, drop = TRUE) { dimnames(params@initial_n))) times <- as.numeric(times) for (i in seq_len(dim(effort)[1])) { - f_mort[i, , ] <- - f(params, n = n[i, , ], n_pp = n_pp[i, ], - n_other = n_other[i, ], effort = effort[i, ], t = times[i], - e_growth = getEGrowth(params, n = n[i, , ], n_pp = n_pp[i, ], - n_other = n_other[i, ], t = times[i]), - pred_mort = getPredMort(params, n = n[i, , ], - n_pp = n_pp[i, ], - n_other = n_other[i, ], - time_range = times[i])) + n_i <- n[i, , , drop = FALSE] + dim(n_i) <- dim(n)[2:3] + dimnames(n_i) <- dimnames(n)[2:3] + args <- list( + params = params, n = n_i, n_pp = n_pp[i, ], + n_other = n_other[i, ], effort = effort[i, ], t = times[i], + e_growth = getEGrowth(params, n = n_i, n_pp = n_pp[i, ], + n_other = n_other[i, ], t = times[i]), + pred_mort = getPredMort(params, n = n_i, n_pp = n_pp[i, ], + n_other = n_other[i, ], + time_range = times[i])) + f_mort[i, , ] <- do.call(f, args) } return(f_mort[, , , drop = drop]) } @@ -782,11 +827,17 @@ getMort.MizerParams <- function(params, t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$Mort) - z <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - f_mort = getFMort(params, effort), - pred_mort = getPredMort(params, n = n, n_pp = n_pp, - n_other = n_other, time_range = t)) + f_mort <- getFMort(params, effort) + pred_mort <- getPredMort(params, n = n, n_pp = n_pp, + n_other = n_other, time_range = t) + if (usesExtensionDispatch(params)) { + z <- projectMort(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + f_mort = f_mort, pred_mort = pred_mort) + } else { + f <- get(params@rates_funcs$Mort) + z <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + f_mort = f_mort, pred_mort = pred_mort) + } return(ArraySpeciesBySize(z, value_name = "Total mortality", units = "1/year", params = params)) } @@ -842,10 +893,16 @@ getERepro.MizerParams <- function(params, n = initialN(params), n_other = initialNOther(params), t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$ERepro) - erepro <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - e = getEReproAndGrowth(params, n = n, n_pp = n_pp, - n_other = n_other, t = t)) + e <- getEReproAndGrowth(params, n = n, n_pp = n_pp, n_other = n_other, + t = t) + if (usesExtensionDispatch(params)) { + erepro <- projectERepro(params, n = n, n_pp = n_pp, n_other = n_other, + t = t, e = e) + } else { + f <- get(params@rates_funcs$ERepro) + erepro <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + e = e) + } ArraySpeciesBySize(erepro, value_name = "Energy for reproduction", units = "g/year", params = params) } @@ -897,12 +954,18 @@ getEGrowth.MizerParams <- function(params, n = initialN(params), n_other = initialNOther(params), t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$EGrowth) - g <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - e_repro = getERepro(params, n = n, n_pp = n_pp, - n_other = n_other, t = t), - e = getEReproAndGrowth(params, n = n, n_pp = n_pp, - n_other = n_other, t = t)) + e_repro <- getERepro(params, n = n, n_pp = n_pp, n_other = n_other, + t = t) + e <- getEReproAndGrowth(params, n = n, n_pp = n_pp, + n_other = n_other, t = t) + if (usesExtensionDispatch(params)) { + g <- projectEGrowth(params, n = n, n_pp = n_pp, n_other = n_other, + t = t, e_repro = e_repro, e = e) + } else { + f <- get(params@rates_funcs$EGrowth) + g <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + e_repro = e_repro, e = e) + } ArraySpeciesBySize(g, value_name = "Growth rate", units = "g/year", params = params) } @@ -941,14 +1004,19 @@ getRDI.MizerParams <- function(params, n = initialN(params), n_other = initialNOther(params), t = 0, ...) { params <- validParams(params) - f <- get(params@rates_funcs$RDI) - rdi <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, - e_repro = getERepro(params, n = n, n_pp = n_pp, - n_other = n_other, t = t), - e_growth = getEGrowth(params, n = n, n_pp = n_pp, - n_other = n_other, t = t), - mort = getMort(params, n = n, n_pp = n_pp, - n_other = n_other, t = t)) + e_repro <- getERepro(params, n = n, n_pp = n_pp, n_other = n_other, + t = t) + e_growth <- getEGrowth(params, n = n, n_pp = n_pp, n_other = n_other, + t = t) + mort <- getMort(params, n = n, n_pp = n_pp, n_other = n_other, t = t) + if (usesExtensionDispatch(params)) { + rdi <- projectRDI(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + e_repro = e_repro, e_growth = e_growth, mort = mort) + } else { + f <- get(params@rates_funcs$RDI) + rdi <- f(params, n = n, n_pp = n_pp, n_other = n_other, t = t, + e_repro = e_repro, e_growth = e_growth, mort = mort) + } names(rdi) <- params@species_params$species rdi } @@ -998,14 +1066,19 @@ getRDD.MizerParams <- function(params, n = initialN(params), rdi = getRDI(params, n = n, n_pp = n_pp, n_other = n_other, t = t), ...) { params <- validParams(params) - # Avoid getting into infinite loops - if (params@rates_funcs$RDD == "getRDD") { - stop('"getRDD" is not a valid name for the function giving the density', - 'dependent reproductive rate.') + if (usesExtensionDispatch(params)) { + rdd <- projectRDD(params, rdi = rdi, species_params = params@species_params, + t = t, ...) + } else { + # Avoid getting into infinite loops + if (params@rates_funcs$RDD == "getRDD") { + stop('"getRDD" is not a valid name for the function giving the density', + 'dependent reproductive rate.') + } + f <- get(params@rates_funcs$RDD) + rdd <- f(rdi = rdi, species_params = params@species_params, + params = params, t = t) } - f <- get(params@rates_funcs$RDD) - rdd <- f(rdi = rdi, species_params = params@species_params, - params = params, t = t) names(rdd) <- params@species_params$species rdd } diff --git a/R/reproduction.R b/R/reproduction.R index 8b7d24fdb..aa75d5fde 100644 --- a/R/reproduction.R +++ b/R/reproduction.R @@ -1,3 +1,11 @@ +#' @name mizerRDI +#' @rdname mizerRDI +#' @export +projectRDI <- function(params, n, n_pp, n_other, t = 0, + e_growth, mort, e_repro, ...) { + UseMethod("projectRDI") +} + #' Get density-independent rate of reproduction needed to project standard #' mizer model #' @@ -40,10 +48,11 @@ #' by [getMort()]. Unused. #' #' @return A numeric vector with the rate of egg production for each species. +#' @rdname mizerRDI #' @export #' @family mizer rate functions -mizerRDI <- function(params, n, n_pp, n_other, t, - e_growth, mort, e_repro, ...) { +projectRDI.MizerParams <- function(params, n, n_pp, n_other, t = 0, + e_growth, mort, e_repro, ...) { # Calculate total energy from per capita energy e_repro_pop <- drop((e_repro * n) %*% params@dw) # Assume sex_ratio = 0.5 @@ -52,6 +61,42 @@ mizerRDI <- function(params, n, n_pp, n_other, t, return(rdi) } +#' @rdname mizerRDI +#' @export +mizerRDI <- projectRDI.MizerParams + +#' Get density-dependent reproduction rate during projection +#' +#' S3 generic used by extension-aware projections to calculate the +#' density-dependent reproduction rate. The base method calls the selected +#' density-dependence function in `params@rates_funcs$RDD`. +#' +#' @inheritParams BevertonHoltRDD +#' @param params A MizerParams object. +#' @param t The time for which to do the calculation. +#' +#' @return Vector of density-dependent reproduction rates. +#' @export +#' @family functions calculating density-dependent reproduction rate +projectRDD <- function(params, rdi, species_params = params@species_params, + t = 0, ...) { + UseMethod("projectRDD") +} + +#' @rdname projectRDD +#' @export +projectRDD.MizerParams <- function(params, rdi, + species_params = params@species_params, + t = 0, ...) { + if (params@rates_funcs$RDD == "getRDD") { + stop('"getRDD" is not a valid name for the function giving the density', + 'dependent reproductive rate.') + } + rdd_fn <- get(params@rates_funcs$RDD) + rdd_fn(rdi = rdi, species_params = species_params, params = params, + t = t, ...) +} + #' Choose egg production to keep egg density constant #' #' `r lifecycle::badge("experimental")` diff --git a/man/BevertonHoltRDD.Rd b/man/BevertonHoltRDD.Rd index 27cd8f46d..27158fd8c 100644 --- a/man/BevertonHoltRDD.Rd +++ b/man/BevertonHoltRDD.Rd @@ -43,6 +43,7 @@ Other functions calculating density-dependent reproduction rate: \code{\link[=SheperdRDD]{SheperdRDD()}}, \code{\link[=constantEggRDI]{constantEggRDI()}}, \code{\link[=constantRDD]{constantRDD()}}, -\code{\link[=noRDD]{noRDD()}} +\code{\link[=noRDD]{noRDD()}}, +\code{\link[=projectRDD]{projectRDD()}} } \concept{functions calculating density-dependent reproduction rate} diff --git a/man/RickerRDD.Rd b/man/RickerRDD.Rd index 9d7d828d2..5026915b3 100644 --- a/man/RickerRDD.Rd +++ b/man/RickerRDD.Rd @@ -30,6 +30,7 @@ Other functions calculating density-dependent reproduction rate: \code{\link[=SheperdRDD]{SheperdRDD()}}, \code{\link[=constantEggRDI]{constantEggRDI()}}, \code{\link[=constantRDD]{constantRDD()}}, -\code{\link[=noRDD]{noRDD()}} +\code{\link[=noRDD]{noRDD()}}, +\code{\link[=projectRDD]{projectRDD()}} } \concept{functions calculating density-dependent reproduction rate} diff --git a/man/SheperdRDD.Rd b/man/SheperdRDD.Rd index a6e5df379..19665ce16 100644 --- a/man/SheperdRDD.Rd +++ b/man/SheperdRDD.Rd @@ -34,6 +34,7 @@ Other functions calculating density-dependent reproduction rate: \code{\link[=RickerRDD]{RickerRDD()}}, \code{\link[=constantEggRDI]{constantEggRDI()}}, \code{\link[=constantRDD]{constantRDD()}}, -\code{\link[=noRDD]{noRDD()}} +\code{\link[=noRDD]{noRDD()}}, +\code{\link[=projectRDD]{projectRDD()}} } \concept{functions calculating density-dependent reproduction rate} diff --git a/man/constantEggRDI.Rd b/man/constantEggRDI.Rd index 0912f78c2..f9e51bb50 100644 --- a/man/constantEggRDI.Rd +++ b/man/constantEggRDI.Rd @@ -52,6 +52,7 @@ Other functions calculating density-dependent reproduction rate: \code{\link[=RickerRDD]{RickerRDD()}}, \code{\link[=SheperdRDD]{SheperdRDD()}}, \code{\link[=constantRDD]{constantRDD()}}, -\code{\link[=noRDD]{noRDD()}} +\code{\link[=noRDD]{noRDD()}}, +\code{\link[=projectRDD]{projectRDD()}} } \concept{functions calculating density-dependent reproduction rate} diff --git a/man/constantRDD.Rd b/man/constantRDD.Rd index 507667505..4efa9ac31 100644 --- a/man/constantRDD.Rd +++ b/man/constantRDD.Rd @@ -28,6 +28,7 @@ Other functions calculating density-dependent reproduction rate: \code{\link[=RickerRDD]{RickerRDD()}}, \code{\link[=SheperdRDD]{SheperdRDD()}}, \code{\link[=constantEggRDI]{constantEggRDI()}}, -\code{\link[=noRDD]{noRDD()}} +\code{\link[=noRDD]{noRDD()}}, +\code{\link[=projectRDD]{projectRDD()}} } \concept{functions calculating density-dependent reproduction rate} diff --git a/man/mizerDiffusion.Rd b/man/mizerDiffusion.Rd index 471b6e6d1..52ef97d48 100644 --- a/man/mizerDiffusion.Rd +++ b/man/mizerDiffusion.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/diffusion.R \name{mizerDiffusion} \alias{mizerDiffusion} +\alias{projectDiffusion} +\alias{projectDiffusion.MizerParams} \title{Calculate diffusion rate} \usage{ -mizerDiffusion(params, n, n_pp, n_other, t, feeding_level, ...) +projectDiffusion(params, n, n_pp, n_other, t = 0, feeding_level, ...) + +\method{projectDiffusion}{MizerParams}(params, n, n_pp, n_other, t = 0, feeding_level, ...) + +mizerDiffusion(params, n, n_pp, n_other, t = 0, feeding_level, ...) } \arguments{ \item{params}{A MizerParams object} diff --git a/man/mizerEGrowth.Rd b/man/mizerEGrowth.Rd index a33db3e3d..48758a8ea 100644 --- a/man/mizerEGrowth.Rd +++ b/man/mizerEGrowth.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/project_methods.R \name{mizerEGrowth} \alias{mizerEGrowth} +\alias{projectEGrowth} +\alias{projectEGrowth.MizerParams} \title{Get energy rate available for growth needed to project standard mizer model} \usage{ -mizerEGrowth(params, n, n_pp, n_other, t, e_repro, e, ...) +projectEGrowth(params, n, n_pp, n_other, t = 0, e_repro, e, ...) + +\method{projectEGrowth}{MizerParams}(params, n, n_pp, n_other, t = 0, e_repro, e, ...) + +mizerEGrowth(params, n, n_pp, n_other, t = 0, e_repro, e, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerERepro.Rd b/man/mizerERepro.Rd index e8a34d8ff..9bfb1fe29 100644 --- a/man/mizerERepro.Rd +++ b/man/mizerERepro.Rd @@ -2,10 +2,16 @@ % Please edit documentation in R/project_methods.R \name{mizerERepro} \alias{mizerERepro} +\alias{projectERepro} +\alias{projectERepro.MizerParams} \title{Get energy rate available for reproduction needed to project standard mizer model} \usage{ -mizerERepro(params, n, n_pp, n_other, t, e, ...) +projectERepro(params, n, n_pp, n_other, t = 0, e, ...) + +\method{projectERepro}{MizerParams}(params, n, n_pp, n_other, t = 0, e, ...) + +mizerERepro(params, n, n_pp, n_other, t = 0, e, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerEReproAndGrowth.Rd b/man/mizerEReproAndGrowth.Rd index bf55f326b..34bf506c8 100644 --- a/man/mizerEReproAndGrowth.Rd +++ b/man/mizerEReproAndGrowth.Rd @@ -2,15 +2,39 @@ % Please edit documentation in R/project_methods.R \name{mizerEReproAndGrowth} \alias{mizerEReproAndGrowth} +\alias{projectEReproAndGrowth} +\alias{projectEReproAndGrowth.MizerParams} \title{Get energy rate available for reproduction and growth needed to project standard mizer model} \usage{ +projectEReproAndGrowth( + params, + n, + n_pp, + n_other, + t = 0, + encounter, + feeding_level, + ... +) + +\method{projectEReproAndGrowth}{MizerParams}( + params, + n, + n_pp, + n_other, + t = 0, + encounter, + feeding_level, + ... +) + mizerEReproAndGrowth( params, n, n_pp, n_other, - t, + t = 0, encounter, feeding_level, ... diff --git a/man/mizerFMort.Rd b/man/mizerFMort.Rd index 2ca591d87..ec5694ff1 100644 --- a/man/mizerFMort.Rd +++ b/man/mizerFMort.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/project_methods.R \name{mizerFMort} \alias{mizerFMort} +\alias{projectFMort} +\alias{projectFMort.MizerParams} \title{Get the total fishing mortality rate from all fishing gears} \usage{ -mizerFMort(params, n, n_pp, n_other, t, effort, e_growth, pred_mort, ...) +projectFMort(params, n, n_pp, n_other, t = 0, effort, e_growth, pred_mort, ...) + +\method{projectFMort}{MizerParams}(params, n, n_pp, n_other, t = 0, effort, e_growth, pred_mort, ...) + +mizerFMort(params, n, n_pp, n_other, t = 0, effort, e_growth, pred_mort, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerFeedingLevel.Rd b/man/mizerFeedingLevel.Rd index 45d444900..8905ac105 100644 --- a/man/mizerFeedingLevel.Rd +++ b/man/mizerFeedingLevel.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/project_methods.R \name{mizerFeedingLevel} \alias{mizerFeedingLevel} +\alias{projectFeedingLevel} +\alias{projectFeedingLevel.MizerParams} \title{Get feeding level needed to project standard mizer model} \usage{ -mizerFeedingLevel(params, n, n_pp, n_other, t, encounter, ...) +projectFeedingLevel(params, n, n_pp, n_other, t = 0, encounter, ...) + +\method{projectFeedingLevel}{MizerParams}(params, n, n_pp, n_other, t = 0, encounter, ...) + +mizerFeedingLevel(params, n, n_pp, n_other, t = 0, encounter, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerMort.Rd b/man/mizerMort.Rd index 1a96ca286..15ddb5ea5 100644 --- a/man/mizerMort.Rd +++ b/man/mizerMort.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/project_methods.R \name{mizerMort} \alias{mizerMort} +\alias{projectMort} +\alias{projectMort.MizerParams} \title{Get total mortality rate needed to project standard mizer model} \usage{ -mizerMort(params, n, n_pp, n_other, t, f_mort, pred_mort, ...) +projectMort(params, n, n_pp, n_other, t = 0, f_mort, pred_mort, ...) + +\method{projectMort}{MizerParams}(params, n, n_pp, n_other, t = 0, f_mort, pred_mort, ...) + +mizerMort(params, n, n_pp, n_other, t = 0, f_mort, pred_mort, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerPredMort.Rd b/man/mizerPredMort.Rd index 128330954..d5d0536d3 100644 --- a/man/mizerPredMort.Rd +++ b/man/mizerPredMort.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/project_methods.R \name{mizerPredMort} \alias{mizerPredMort} +\alias{projectPredMort} +\alias{projectPredMort.MizerParams} \title{Get total predation mortality rate needed to project standard mizer model} \usage{ -mizerPredMort(params, n, n_pp, n_other, t, pred_rate, ...) +projectPredMort(params, n, n_pp, n_other, t = 0, pred_rate, ...) + +\method{projectPredMort}{MizerParams}(params, n, n_pp, n_other, t = 0, pred_rate, ...) + +mizerPredMort(params, n, n_pp, n_other, t = 0, pred_rate, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerPredRate.Rd b/man/mizerPredRate.Rd index 18835a25b..677229f11 100644 --- a/man/mizerPredRate.Rd +++ b/man/mizerPredRate.Rd @@ -2,9 +2,15 @@ % Please edit documentation in R/project_methods.R \name{mizerPredRate} \alias{mizerPredRate} +\alias{projectPredRate} +\alias{projectPredRate.MizerParams} \title{Get predation rate needed to project standard mizer model} \usage{ -mizerPredRate(params, n, n_pp, n_other, t, feeding_level, ...) +projectPredRate(params, n, n_pp, n_other, t = 0, feeding_level, ...) + +\method{projectPredRate}{MizerParams}(params, n, n_pp, n_other, t = 0, feeding_level, ...) + +mizerPredRate(params, n, n_pp, n_other, t = 0, feeding_level, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerRDI.Rd b/man/mizerRDI.Rd index 89d929c14..9df2451e5 100644 --- a/man/mizerRDI.Rd +++ b/man/mizerRDI.Rd @@ -2,10 +2,16 @@ % Please edit documentation in R/reproduction.R \name{mizerRDI} \alias{mizerRDI} +\alias{projectRDI} +\alias{projectRDI.MizerParams} \title{Get density-independent rate of reproduction needed to project standard mizer model} \usage{ -mizerRDI(params, n, n_pp, n_other, t, e_growth, mort, e_repro, ...) +projectRDI(params, n, n_pp, n_other, t = 0, e_growth, mort, e_repro, ...) + +\method{projectRDI}{MizerParams}(params, n, n_pp, n_other, t = 0, e_growth, mort, e_repro, ...) + +mizerRDI(params, n, n_pp, n_other, t = 0, e_growth, mort, e_repro, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/mizerResourceMort.Rd b/man/mizerResourceMort.Rd index 445f17858..e83ed9448 100644 --- a/man/mizerResourceMort.Rd +++ b/man/mizerResourceMort.Rd @@ -2,10 +2,16 @@ % Please edit documentation in R/project_methods.R \name{mizerResourceMort} \alias{mizerResourceMort} +\alias{projectResourceMort} +\alias{projectResourceMort.MizerParams} \title{Get predation mortality rate for resource needed to project standard mizer model} \usage{ -mizerResourceMort(params, n, n_pp, n_other, t, pred_rate, ...) +projectResourceMort(params, n, n_pp, n_other, t = 0, pred_rate, ...) + +\method{projectResourceMort}{MizerParams}(params, n, n_pp, n_other, t = 0, pred_rate, ...) + +mizerResourceMort(params, n, n_pp, n_other, t = 0, pred_rate, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} diff --git a/man/noRDD.Rd b/man/noRDD.Rd index 4633a37ea..2c1d405b0 100644 --- a/man/noRDD.Rd +++ b/man/noRDD.Rd @@ -24,6 +24,7 @@ Other functions calculating density-dependent reproduction rate: \code{\link[=RickerRDD]{RickerRDD()}}, \code{\link[=SheperdRDD]{SheperdRDD()}}, \code{\link[=constantEggRDI]{constantEggRDI()}}, -\code{\link[=constantRDD]{constantRDD()}} +\code{\link[=constantRDD]{constantRDD()}}, +\code{\link[=projectRDD]{projectRDD()}} } \concept{functions calculating density-dependent reproduction rate} diff --git a/man/projectRDD.Rd b/man/projectRDD.Rd new file mode 100644 index 000000000..11785120d --- /dev/null +++ b/man/projectRDD.Rd @@ -0,0 +1,43 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/reproduction.R +\name{projectRDD} +\alias{projectRDD} +\alias{projectRDD.MizerParams} +\title{Get density-dependent reproduction rate during projection} +\usage{ +projectRDD(params, rdi, species_params = params@species_params, t = 0, ...) + +\method{projectRDD}{MizerParams}(params, rdi, species_params = params@species_params, t = 0, ...) +} +\arguments{ +\item{params}{A MizerParams object.} + +\item{rdi}{Vector of density-independent reproduction rates +\eqn{R_{di}}{R_di} for all species.} + +\item{species_params}{A species parameter dataframe. Must contain a column +\code{R_max} holding the maximum reproduction rate \eqn{R_{max}}{R_max} for each +species.} + +\item{t}{The time for which to do the calculation.} + +\item{...}{Unused} +} +\value{ +Vector of density-dependent reproduction rates. +} +\description{ +S3 generic used by extension-aware projections to calculate the +density-dependent reproduction rate. The base method calls the selected +density-dependence function in \code{params@rates_funcs$RDD}. +} +\seealso{ +Other functions calculating density-dependent reproduction rate: +\code{\link[=BevertonHoltRDD]{BevertonHoltRDD()}}, +\code{\link[=RickerRDD]{RickerRDD()}}, +\code{\link[=SheperdRDD]{SheperdRDD()}}, +\code{\link[=constantEggRDI]{constantEggRDI()}}, +\code{\link[=constantRDD]{constantRDD()}}, +\code{\link[=noRDD]{noRDD()}} +} +\concept{functions calculating density-dependent reproduction rate} diff --git a/tests/testthat/test-extension-dispatch.R b/tests/testthat/test-extension-dispatch.R index ee4326377..7ee5d3bd0 100644 --- a/tests/testthat/test-extension-dispatch.R +++ b/tests/testthat/test-extension-dispatch.R @@ -37,6 +37,56 @@ test_that("getEncounter dispatches through extension chain", { test_that("projectEncounter base method is mizerEncounter", { expect_identical(projectEncounter.MizerParams, mizerEncounter) + expect_identical(projectFeedingLevel.MizerParams, mizerFeedingLevel) + expect_identical(projectEReproAndGrowth.MizerParams, mizerEReproAndGrowth) + expect_identical(projectERepro.MizerParams, mizerERepro) + expect_identical(projectEGrowth.MizerParams, mizerEGrowth) + expect_identical(projectDiffusion.MizerParams, mizerDiffusion) + expect_identical(projectPredRate.MizerParams, mizerPredRate) + expect_identical(projectPredMort.MizerParams, mizerPredMort) + expect_identical(projectFMort.MizerParams, mizerFMort) + expect_identical(projectMort.MizerParams, mizerMort) + expect_identical(projectRDI.MizerParams, mizerRDI) + expect_identical(projectResourceMort.MizerParams, mizerResourceMort) +}) + +test_that("getRates dispatches through all projection hooks", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext <- paste0("mizerTestRates", Sys.getpid()) + chain <- setNames(NA_character_, ext) + registerExtensions(chain) + + hooks <- c("projectEncounter", "projectFeedingLevel", + "projectEReproAndGrowth", "projectERepro", "projectEGrowth", + "projectDiffusion", "projectPredRate", "projectPredMort", + "projectFMort", "projectMort", "projectRDI", + "projectRDD", "projectResourceMort") + called <- new.env(parent = emptyenv()) + for (hook in hooks) { + local({ + hook_name <- hook + registerS3method( + hook_name, ext, + function(params, ...) { + called[[hook_name]] <- TRUE + NextMethod() + }, + envir = asNamespace("mizer") + ) + }) + } + + params <- NS_params + params@extensions <- chain + params <- coerceToExtensionClass(params) + + getRates(params) + + expect_true(all(vapply(hooks, function(hook) { + isTRUE(called[[hook]]) + }, logical(1)))) }) test_that("getEncounter honours rates_funcs for base objects", { From f27ad128d184930de65d7f39511c2100019b3661 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Mon, 4 May 2026 20:45:53 +0100 Subject: [PATCH 06/34] Add documentation for defining dispatching extension subclasses and projection rate hooks --- vignettes/extensions.Rmd | 113 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/vignettes/extensions.Rmd b/vignettes/extensions.Rmd index 30b0bd071..92af325f0 100644 --- a/vignettes/extensions.Rmd +++ b/vignettes/extensions.Rmd @@ -388,6 +388,119 @@ plotBiomass(my_sim) This approach makes it possible to extend generic mizer workflows without rewriting the underlying package methods. +# Defining a dispatching extension subclass + +The subclassing example above is useful for local experiments and for methods +such as plotting or summaries. Extension packages that want to change the +projection rate pipeline should use the same idea in a more disciplined way: +define a marker subclass and provide S3 methods for mizer's `project*()` +generics. + +Not every extension package needs a subclass. If your package only provides +helper functions, custom rate functions for `setRateFunction()`, extra plotting +functions, or component dynamics for `setComponent()`, it can remain +metadata-only. Such an extension can still be recorded in `params@extensions`, +but because it does not add a dispatch class, mizer will keep using the normal +pre-resolved `rates_funcs` projection path. + +Define a subclass only when your extension needs composable behaviour in the +projection pipeline, for example when several extensions should all modify the +same rate and call `NextMethod()` to pass control to the next extension in the +chain. + +## Marker classes + +An extension subclass should be a marker class: it should not add slots. Store +extension-specific settings in `other_params(params)`, component parameters, or +standard mizer slots instead. + +In your extension package you would define classes like this: + +```{r eval = FALSE} +setClass("mizerMyExtension", contains = "MizerParams") +setClass("mizerMyExtensionSim", contains = "MizerSim") +``` + +The class name should match the name used in the extension chain. For example: + +```{r eval = FALSE} +params@extensions <- c(mizerMyExtension = "0.1.0") +``` + +When this object is validated or loaded with `readParams()`, mizer checks that +the recorded extension chain is compatible with the current session and coerces +the object to the appropriate marker class. If an extension recorded in +`params@extensions` does not provide a marker class, it remains metadata-only +and does not trigger projection dispatch. + +## Projection rate hooks + +The rate pipeline used by `project()` has S3 hooks corresponding to the standard +mizer rate functions: + +- `projectEncounter()` +- `projectFeedingLevel()` +- `projectEReproAndGrowth()` +- `projectERepro()` +- `projectEGrowth()` +- `projectDiffusion()` +- `projectPredRate()` +- `projectPredMort()` +- `projectFMort()` +- `projectMort()` +- `projectRDI()` +- `projectRDD()` +- `projectResourceMort()` + +The base methods, such as `projectEncounter.MizerParams()`, contain the standard +mizer calculation. The older names, such as `mizerEncounter()`, remain available +as aliases to these base methods. + +An extension method should usually call `NextMethod()` and then modify the +result: + +```{r eval = FALSE} +projectEncounter.mizerMyExtension <- function(params, n, n_pp, n_other, + t = 0, ...) { + encounter <- NextMethod() + p <- other_params(params)$mizerMyExtension + encounter * p$encounter_multiplier +} +``` + +If two registered extensions both provide `projectEncounter()` methods, mizer +will dispatch through them in the order recorded in the extension chain. Each +method can call `NextMethod()` to compose its change with the next extension and +finally with the standard `MizerParams` method. + +## Registering an extension chain + +The extension chain is a named character vector whose names are extension +identifiers and whose values record version requirements or installation +information. For example: + +```{r eval = FALSE} +registerExtensions(c( + mizerOuterExtension = "0.2.0", + mizerMyExtension = "0.1.0" +)) +``` + +The order is the dispatch order, from outermost to innermost extension. A model +using only a suffix of the registered chain can be used in the same session. +This makes it possible to work with one model that uses both extensions and +another model that only uses `mizerMyExtension`. + +For package code, the key requirements are: + +- define marker subclasses without extra slots if the package needs projection + dispatch, +- export or register S3 methods for the relevant `project*()` generics, +- store all extra state in ordinary mizer extension locations, not in new S4 + slots, +- record the extension in `params@extensions` so saved objects can be checked + and restored in a compatible session. + # How custom rate functions are called From 392b2ebd37c234510ea6dd18eded03769f200241 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Mon, 4 May 2026 20:56:00 +0100 Subject: [PATCH 07/34] Refactor documentation for projectRates --- R/project_methods.R | 13 ++++----- man/getRates.Rd | 5 ++++ man/mizerEGrowth.Rd | 3 +- man/mizerERepro.Rd | 3 +- man/mizerEReproAndGrowth.Rd | 3 +- man/mizerEncounter.Rd | 3 +- man/mizerFMort.Rd | 3 +- man/mizerFMortGear.Rd | 3 +- man/mizerFeedingLevel.Rd | 3 +- man/mizerMort.Rd | 3 +- man/mizerPredMort.Rd | 3 +- man/mizerPredRate.Rd | 3 +- man/mizerRDI.Rd | 3 +- man/mizerRates.Rd | 11 ++++++-- man/mizerResourceMort.Rd | 3 +- man/projectRates.Rd | 55 ------------------------------------- pkgdown/_pkgdown.yml | 5 ++++ 17 files changed, 36 insertions(+), 89 deletions(-) delete mode 100644 man/projectRates.Rd diff --git a/R/project_methods.R b/R/project_methods.R index cd7076c91..986537012 100644 --- a/R/project_methods.R +++ b/R/project_methods.R @@ -113,16 +113,13 @@ mizerRates <- function(params, n, n_pp, n_other, return(r) } -#' Get all rates needed to project an extension-aware mizer model +#' @rdname mizerRates #' -#' S3 generic used by extension-aware projections to calculate all rates. -#' Models without extensions keep using [mizerRates()] directly. The base -#' method mirrors [mizerRates()] but calls migrated projection hooks directly, -#' starting with [projectEncounter()]. +#' @description `projectRates()` is an S3 generic used by extension-aware +#' projections to calculate all rates. Models without extensions keep using +#' [mizerRates()] directly. The base method mirrors [mizerRates()] but calls +#' migrated projection hooks directly, starting with [projectEncounter()]. #' -#' @inheritParams mizerRates -#' -#' @return List of rates. #' @export #' @family mizer rate functions projectRates <- function(params, n, n_pp, n_other, diff --git a/man/getRates.Rd b/man/getRates.Rd index 1580058b9..f8357dd23 100644 --- a/man/getRates.Rd +++ b/man/getRates.Rd @@ -37,6 +37,11 @@ List of rates. } \description{ Calls other rate functions in sequence and collects the results in a list. + +\code{projectRates()} is an S3 generic used by extension-aware +projections to calculate all rates. Models without extensions keep using +\code{\link[=mizerRates]{mizerRates()}} directly. The base method mirrors \code{\link[=mizerRates]{mizerRates()}} but calls +migrated projection hooks directly, starting with \code{\link[=projectEncounter]{projectEncounter()}}. } \details{ By default this function returns a list with the following components: diff --git a/man/mizerEGrowth.Rd b/man/mizerEGrowth.Rd index 48758a8ea..4da282607 100644 --- a/man/mizerEGrowth.Rd +++ b/man/mizerEGrowth.Rd @@ -78,7 +78,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerERepro.Rd b/man/mizerERepro.Rd index 9bfb1fe29..eb7fd42bc 100644 --- a/man/mizerERepro.Rd +++ b/man/mizerERepro.Rd @@ -76,7 +76,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerEReproAndGrowth.Rd b/man/mizerEReproAndGrowth.Rd index 34bf506c8..047a915b2 100644 --- a/man/mizerEReproAndGrowth.Rd +++ b/man/mizerEReproAndGrowth.Rd @@ -121,7 +121,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerEncounter.Rd b/man/mizerEncounter.Rd index 982b8fcc1..c51b0f697 100644 --- a/man/mizerEncounter.Rd +++ b/man/mizerEncounter.Rd @@ -114,7 +114,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerFMort.Rd b/man/mizerFMort.Rd index ec5694ff1..28a24f8f4 100644 --- a/man/mizerFMort.Rd +++ b/man/mizerFMort.Rd @@ -78,7 +78,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerFMortGear.Rd b/man/mizerFMortGear.Rd index 10f4a4921..4e019c4a0 100644 --- a/man/mizerFMortGear.Rd +++ b/man/mizerFMortGear.Rd @@ -39,7 +39,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerFeedingLevel.Rd b/man/mizerFeedingLevel.Rd index 8905ac105..62901996c 100644 --- a/man/mizerFeedingLevel.Rd +++ b/man/mizerFeedingLevel.Rd @@ -86,7 +86,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerMort.Rd b/man/mizerMort.Rd index 15ddb5ea5..0642922d0 100644 --- a/man/mizerMort.Rd +++ b/man/mizerMort.Rd @@ -79,7 +79,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerPredMort.Rd b/man/mizerPredMort.Rd index d5d0536d3..18ce71380 100644 --- a/man/mizerPredMort.Rd +++ b/man/mizerPredMort.Rd @@ -72,7 +72,6 @@ Other mizer rate functions: \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerPredRate.Rd b/man/mizerPredRate.Rd index 677229f11..c48f74f66 100644 --- a/man/mizerPredRate.Rd +++ b/man/mizerPredRate.Rd @@ -75,7 +75,6 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerRDI]{mizerRDI()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerRDI.Rd b/man/mizerRDI.Rd index 9df2451e5..bef249f88 100644 --- a/man/mizerRDI.Rd +++ b/man/mizerRDI.Rd @@ -88,7 +88,6 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerRates.Rd b/man/mizerRates.Rd index 9d20581e2..d57df3316 100644 --- a/man/mizerRates.Rd +++ b/man/mizerRates.Rd @@ -2,9 +2,12 @@ % Please edit documentation in R/project_methods.R \name{mizerRates} \alias{mizerRates} +\alias{projectRates} \title{Get all rates needed to project standard mizer model} \usage{ mizerRates(params, n, n_pp, n_other, t = 0, effort, rates_fns, ...) + +projectRates(params, n, n_pp, n_other, t = 0, effort, rates_fns, ...) } \arguments{ \item{params}{A \linkS4class{MizerParams} object} @@ -32,6 +35,11 @@ List of rates. } \description{ Calls other rate functions in sequence and collects the results in a list. + +\code{projectRates()} is an S3 generic used by extension-aware +projections to calculate all rates. Models without extensions keep using +\code{\link[=mizerRates]{mizerRates()}} directly. The base method mirrors \code{\link[=mizerRates]{mizerRates()}} but calls +migrated projection hooks directly, starting with \code{\link[=projectEncounter]{projectEncounter()}}. } \details{ By default this function returns a list with the following components: @@ -65,7 +73,6 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerResourceMort]{mizerResourceMort()}} } \concept{mizer rate functions} diff --git a/man/mizerResourceMort.Rd b/man/mizerResourceMort.Rd index e83ed9448..863831daa 100644 --- a/man/mizerResourceMort.Rd +++ b/man/mizerResourceMort.Rd @@ -70,7 +70,6 @@ Other mizer rate functions: \code{\link[=mizerPredMort]{mizerPredMort()}}, \code{\link[=mizerPredRate]{mizerPredRate()}}, \code{\link[=mizerRDI]{mizerRDI()}}, -\code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=projectRates]{projectRates()}} +\code{\link[=mizerRates]{mizerRates()}} } \concept{mizer rate functions} diff --git a/man/projectRates.Rd b/man/projectRates.Rd deleted file mode 100644 index bcd262827..000000000 --- a/man/projectRates.Rd +++ /dev/null @@ -1,55 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/project_methods.R -\name{projectRates} -\alias{projectRates} -\title{Get all rates needed to project an extension-aware mizer model} -\usage{ -projectRates(params, n, n_pp, n_other, t = 0, effort, rates_fns, ...) -} -\arguments{ -\item{params}{A \linkS4class{MizerParams} object} - -\item{n}{A matrix of species abundances (species x size).} - -\item{n_pp}{A vector of the resource abundance by size} - -\item{n_other}{A list of abundances for other dynamical components of the -ecosystem} - -\item{t}{The time for which to do the calculation (Not used by standard -mizer rate functions but useful for extensions with time-dependent -parameters.)} - -\item{effort}{The effort for each fishing gear} - -\item{rates_fns}{Named list of the functions to call to calculate the rates. -Note that this list holds the functions themselves, not their names.} - -\item{...}{Unused} -} -\value{ -List of rates. -} -\description{ -S3 generic used by extension-aware projections to calculate all rates. -Models without extensions keep using \code{\link[=mizerRates]{mizerRates()}} directly. The base -method mirrors \code{\link[=mizerRates]{mizerRates()}} but calls migrated projection hooks directly, -starting with \code{\link[=projectEncounter]{projectEncounter()}}. -} -\seealso{ -Other mizer rate functions: -\code{\link[=mizerEGrowth]{mizerEGrowth()}}, -\code{\link[=mizerERepro]{mizerERepro()}}, -\code{\link[=mizerEReproAndGrowth]{mizerEReproAndGrowth()}}, -\code{\link[=mizerEncounter]{mizerEncounter()}}, -\code{\link[=mizerFMort]{mizerFMort()}}, -\code{\link[=mizerFMortGear]{mizerFMortGear()}}, -\code{\link[=mizerFeedingLevel]{mizerFeedingLevel()}}, -\code{\link[=mizerMort]{mizerMort()}}, -\code{\link[=mizerPredMort]{mizerPredMort()}}, -\code{\link[=mizerPredRate]{mizerPredRate()}}, -\code{\link[=mizerRDI]{mizerRDI()}}, -\code{\link[=mizerRates]{mizerRates()}}, -\code{\link[=mizerResourceMort]{mizerResourceMort()}} -} -\concept{mizer rate functions} diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index f7ab80384..3bffc0cb4 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -118,6 +118,7 @@ reference: - initial_effort - renameGear - expandSizeGrid + - use_predation_diffusion - title: Steady state tuning description: The first task after creating a multi-species model is to tune the model parameters so that in its steady state the model reproduces @@ -133,6 +134,7 @@ reference: - matchNumbers - plotYieldObservedVsModel - scaleModel + - scaleRates - title: Dynamics tuning description: After tuning the steady state, you need to tune the sensitivity of the dynamics to perturbations away from the steady state. The following @@ -202,6 +204,9 @@ reference: - getCriticalFeedingLevel - title: Extending Mizer contents: + - registerExtensions + - getRegisteredExtensions + - coerceToExtensionClass - setRateFunction - setComponent - getComponent From 4840c6d9749bc99ffd24bd3fa3b41e737cccdb44 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Tue, 5 May 2026 07:16:16 +0100 Subject: [PATCH 08/34] Updated saving and loading of params and sim objects --- NAMESPACE | 3 + NEWS.md | 5 ++ R/saveParams.R | 135 +++++++++++++++++++++++++++++---------- man/saveParams.Rd | 26 ++++++-- tests/testthat/test-io.R | 46 +++++++++++++ 5 files changed, 176 insertions(+), 39 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 853cadfa5..ef99c4825 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -154,6 +154,7 @@ S3method(removeSpecies,MizerParams) S3method(renameGear,MizerParams) S3method(renameSpecies,MizerParams) S3method(saveParams,MizerParams) +S3method(saveSim,MizerSim) S3method(scaleModel,MizerParams) S3method(scaleRates,MizerParams) S3method(selectivity,MizerParams) @@ -411,6 +412,7 @@ export(projectToSteady) export(project_n) export(project_simple) export(readParams) +export(readSim) export(registerExtensions) export(removeBackgroundSpecies) export(removeComponent) @@ -427,6 +429,7 @@ export(resource_params) export(resource_rate) export(resource_semichemostat) export(saveParams) +export(saveSim) export(scaleModel) export(scaleRates) export(search_vol) diff --git a/NEWS.md b/NEWS.md index f559634bc..80d8250f3 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,11 @@ dispatch, with `MizerSim` deriving its extension chain from `sim@params@extensions`. +- `saveParams()` now serialises extension objects as plain `MizerParams` + objects while preserving their extension chain, and `readParams()` restores + the appropriate extension class. New `saveSim()` and `readSim()` helpers + provide the same lifecycle for `MizerSim` objects. + - Added `projectRates()` and `projectEncounter()` as the first S3 hooks in the extension-chain rate pipeline. Extension-aware projections dispatch through `projectRates()`, while models without extensions keep using the pre-resolved diff --git a/R/saveParams.R b/R/saveParams.R index 047aaaac3..a7d088350 100644 --- a/R/saveParams.R +++ b/R/saveParams.R @@ -1,51 +1,33 @@ -#' Save a MizerParams object to file, and restore it +#' Save and restore mizer objects #' #' `r lifecycle::badge("experimental")` #' `saveParams()` saves a MizerParams object to a file. This can then be -#' restored with `readParams()`. +#' restored with `readParams()`. `saveSim()` and `readSim()` provide the same +#' lifecycle for MizerSim objects. #' #' Issues a warning if the model you are saving relies on some custom functions. #' Before saving a model you may want to set its metadata with #' [setMetadata()]. #' #' @param params A MizerParams object -#' @param file The name of the file or a connection where the MizerParams object -#' is saved to or read from. -#' @param install_extensions Logical. Should [readParams()] attempt to install -#' missing extension packages before registering the saved extension chain? -#' @return NULL invisibly +#' @param file The name of the file or a connection where the object is saved +#' to or read from. +#' @param install_extensions Logical. Should [readParams()] or [readSim()] +#' attempt to install missing extension packages before registering the saved +#' extension chain? +#' @return `saveParams()` and `saveSim()` return NULL invisibly. +#' `readParams()` returns a MizerParams object. `readSim()` returns a MizerSim +#' object. #' @export saveParams <- function(params, file) { UseMethod("saveParams") } #' @export saveParams.MizerParams <- function(params, file) { - packages <- c("mizer", names(params@extensions)[!is.na(params@extensions)]) - missing <- !sapply(packages, requireNamespace, quietly = TRUE) - if (any(missing)) { - stop("Some required extension packages are not installed: ", - paste(packages[missing], collapse = ", ")) - } + params <- validateParamsForSaving(params) + checkRequiredExtensionPackages(params) + checkCustomFunctions(params) - params <- validParams(params) - - kernel_fns <- paste0(unique(params@species_params$pred_kernel_type), - "_pred_kernel") - funs <- c(params@rates_funcs, - params@resource_dynamics, - params@other_dynamics, - params@other_encounter, - params@other_mort, - unique(params@gear_params$sel_func), - kernel_fns) - custom <- sapply(funs, is_custom, packages = packages) - if (any(custom)) { - warning("Your model is using the functions ", - paste(funs[custom], collapse = ", "), - ". To share your model you need to share not only the ", - "params object but also an R script or R Markdown file ", - "defining these functions.") - } saveRDS(baseMizerClass(params), file = file) } @@ -97,6 +79,95 @@ readParams <- function(file, install_extensions = FALSE) { params } +#' @rdname saveParams +#' @param sim A MizerSim object +#' @export +saveSim <- function(sim, file) { + UseMethod("saveSim") +} + +#' @export +saveSim.MizerSim <- function(sim, file) { + sim <- validateSimForSaving(sim) + checkRequiredExtensionPackages(sim@params) + checkCustomFunctions(sim@params) + + saveRDS(baseMizerClass(sim), file = file) +} + +#' @rdname saveParams +#' @export +readSim <- function(file, install_extensions = FALSE) { + sim <- readRDS(file) + if (needs_upgrading(sim)) { + sim <- suppressWarnings(upgradeSim(sim)) + } + + if (length(sim@params@extensions) > 0) { + registerExtensions(sim@params@extensions, install = install_extensions) + } + + sim@params <- coerceToExtensionClass(sim@params) + sim <- coerceToExtensionClass(sim) + sim <- validSim(sim) + + sim +} + +validateParamsForSaving <- function(params) { + tryCatch( + validParams(params), + error = function(e) { + checkRequiredExtensionPackages(params) + stop(e) + } + ) +} + +validateSimForSaving <- function(sim) { + tryCatch( + validSim(sim), + error = function(e) { + checkRequiredExtensionPackages(sim@params) + stop(e) + } + ) +} + +checkRequiredExtensionPackages <- function(params) { + packages <- requiredExtensionPackages(params) + missing <- !sapply(packages, requireNamespace, quietly = TRUE) + if (any(missing)) { + stop("Some required extension packages are not installed: ", + paste(packages[missing], collapse = ", ")) + } +} + +checkCustomFunctions <- function(params) { + packages <- requiredExtensionPackages(params) + kernel_fns <- paste0(unique(params@species_params$pred_kernel_type), + "_pred_kernel") + funs <- c(params@rates_funcs, + params@resource_dynamics, + params@other_dynamics, + params@other_encounter, + params@other_mort, + unique(params@gear_params$sel_func), + kernel_fns) + custom <- sapply(funs, is_custom, packages = packages) + if (any(custom)) { + warning("Your model is using the functions ", + paste(funs[custom], collapse = ", "), + ". To share your model you need to share not only the ", + "params object but also an R script or R Markdown file ", + "defining these functions.") + } +} + +requiredExtensionPackages <- function(params) { + c("mizer", names(params@extensions)[!is.na(params@extensions)]) +} + is_custom <- function(name, packages) { !any(sapply(packages, function(x, fun) { diff --git a/man/saveParams.Rd b/man/saveParams.Rd index 5761c4b27..578b341f7 100644 --- a/man/saveParams.Rd +++ b/man/saveParams.Rd @@ -3,28 +3,40 @@ \name{saveParams} \alias{saveParams} \alias{readParams} -\title{Save a MizerParams object to file, and restore it} +\alias{saveSim} +\alias{readSim} +\title{Save and restore mizer objects} \usage{ saveParams(params, file) readParams(file, install_extensions = FALSE) + +saveSim(sim, file) + +readSim(file, install_extensions = FALSE) } \arguments{ \item{params}{A MizerParams object} -\item{file}{The name of the file or a connection where the MizerParams object -is saved to or read from.} +\item{file}{The name of the file or a connection where the object is saved +to or read from.} + +\item{install_extensions}{Logical. Should \code{\link[=readParams]{readParams()}} or \code{\link[=readSim]{readSim()}} +attempt to install missing extension packages before registering the saved +extension chain?} -\item{install_extensions}{Logical. Should \code{\link[=readParams]{readParams()}} attempt to install -missing extension packages before registering the saved extension chain?} +\item{sim}{A MizerSim object} } \value{ -NULL invisibly +\code{saveParams()} and \code{saveSim()} return NULL invisibly. +\code{readParams()} returns a MizerParams object. \code{readSim()} returns a MizerSim +object. } \description{ \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#experimental}{\figure{lifecycle-experimental.svg}{options: alt='[Experimental]'}}}{\strong{[Experimental]}} \code{saveParams()} saves a MizerParams object to a file. This can then be -restored with \code{readParams()}. +restored with \code{readParams()}. \code{saveSim()} and \code{readSim()} provide the same +lifecycle for MizerSim objects. } \details{ Issues a warning if the model you are saving relies on some custom functions. diff --git a/tests/testthat/test-io.R b/tests/testthat/test-io.R index aee40b097..cde3ede72 100644 --- a/tests/testthat/test-io.R +++ b/tests/testthat/test-io.R @@ -19,3 +19,49 @@ test_that("saveParams reports missing extension packages by name", { expect_error(saveParams(params, tmp), "Some required extension packages are not installed: definitelyMissingPkg") }) + +test_that("saveSim/readSim round-trip", { + sim <- project(NS_params, t_max = 0.1, t_save = 0.1) + tmp <- tempfile(fileext = ".rds") + on.exit(unlink(tmp), add = TRUE) + + expect_invisible(saveSim(sim, tmp)) + sim2 <- readSim(tmp) + + expect_s4_class(sim2, "MizerSim") + expect_s4_class(sim2@params, "MizerParams") + expect_identical(dim(sim2@n), dim(sim@n)) + expect_identical(dimnames(sim2@n), dimnames(sim@n)) + expect_identical(dim(sim2@n_pp), dim(sim@n_pp)) + expect_identical(dimnames(sim2@effort), dimnames(sim@effort)) +}) + +test_that("saveSim stores base classes and readSim restores extension classes", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestSimReadA", Sys.getpid()) + chain <- setNames(NA_character_, ext_a) + registerExtensions(chain) + + params <- NS_params + params@extensions <- chain + params <- coerceToExtensionClass(params) + sim <- project(params, t_max = 0.1, t_save = 0.1) + + tmp <- tempfile(fileext = ".rds") + withr::defer(unlink(tmp)) + saveSim(sim, tmp) + + saved <- readRDS(tmp) + expect_s4_class(saved, "MizerSim") + expect_s4_class(saved@params, "MizerParams") + expect_identical(saved@params@extensions, chain) + + resetMizerSession() + sim2 <- readSim(tmp) + + expect_identical(getRegisteredExtensions(), chain) + expect_s4_class(sim2, simExtensionClass(ext_a)) + expect_s4_class(sim2@params, ext_a) +}) From 2075de68d256cebd3f0beb132032e97ab0b8472e Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Tue, 5 May 2026 14:04:46 +0100 Subject: [PATCH 09/34] Add documentation also to internal functions --- R/extension.R | 14 +++- R/registerExtensions.R | 123 +++++++++++++++++++++++++++++ man/assertExtensionChain.Rd | 31 ++++++++ man/baseMizerClass.Rd | 20 +++++ man/compareExtensionChains.Rd | 21 +++++ man/defineExtensionClasses.Rd | 22 ++++++ man/defineOrCheckClass.Rd | 22 ++++++ man/dispatchExtensions.Rd | 20 +++++ man/dot-checkRateFunctionOutput.Rd | 25 ++++++ man/ensureExtensionNamespaces.Rd | 24 ++++++ man/formatExtensionChain.Rd | 19 +++++ man/isSuffixChain.Rd | 21 +++++ man/isVersionRequirement.Rd | 18 +++++ man/objectExtensions.Rd | 19 +++++ man/resetMizerSession.Rd | 16 ++++ man/simExtensionClass.Rd | 18 +++++ man/usesExtensionDispatch.Rd | 18 +++++ man/validateExtensionsVector.Rd | 19 +++++ 18 files changed, 468 insertions(+), 2 deletions(-) create mode 100644 man/assertExtensionChain.Rd create mode 100644 man/baseMizerClass.Rd create mode 100644 man/compareExtensionChains.Rd create mode 100644 man/defineExtensionClasses.Rd create mode 100644 man/defineOrCheckClass.Rd create mode 100644 man/dispatchExtensions.Rd create mode 100644 man/dot-checkRateFunctionOutput.Rd create mode 100644 man/ensureExtensionNamespaces.Rd create mode 100644 man/formatExtensionChain.Rd create mode 100644 man/isSuffixChain.Rd create mode 100644 man/isVersionRequirement.Rd create mode 100644 man/objectExtensions.Rd create mode 100644 man/resetMizerSession.Rd create mode 100644 man/simExtensionClass.Rd create mode 100644 man/usesExtensionDispatch.Rd create mode 100644 man/validateExtensionsVector.Rd diff --git a/R/extension.R b/R/extension.R index d0d18dd43..4b21dfa97 100644 --- a/R/extension.R +++ b/R/extension.R @@ -1,5 +1,15 @@ -# Helper called by setRateFunction() to verify the registered function returns -# an array (or vector/list) of the correct dimensions. +#' Check that a rate function returns the correct output dimensions +#' +#' Called by [setRateFunction()] to verify that a candidate rate function +#' returns an array (or vector/list) of the correct dimensions for the +#' requested rate. +#' +#' @param params A MizerParams object +#' @param rate Name of the rate being replaced, e.g. `"Encounter"`. +#' @param fun Name of the candidate function to validate. +#' @return Invisibly `NULL`. Called for its side-effect of stopping with an +#' informative error if the output has the wrong shape. +#' @keywords internal .checkRateFunctionOutput <- function(params, rate, fun) { no_sp <- nrow(params@species_params) no_w <- length(params@w) diff --git a/R/registerExtensions.R b/R/registerExtensions.R index 7ff482372..f3bcb9f1c 100644 --- a/R/registerExtensions.R +++ b/R/registerExtensions.R @@ -105,6 +105,12 @@ coerceToExtensionClass <- function(object, extensions = objectExtensions(object) methods::as(object, target_class) } +#' Get the extension chain stored in a mizer object +#' +#' @param object A `MizerParams` or `MizerSim` object. +#' @return A named character vector of extensions, or an empty character vector +#' if the object carries no extensions. +#' @keywords internal objectExtensions <- function(object) { if (is(object, "MizerParams")) { return(object@extensions) @@ -115,6 +121,20 @@ objectExtensions <- function(object) { stop("Can only get extensions for MizerParams or MizerSim objects.") } +#' Assert that an object's extension chain is compatible with the session +#' +#' Stops with an informative error if the object's extension chain is not a +#' suffix of the session's registered maximal chain, or (when `check_class` is +#' `TRUE`) if the object does not inherit from the expected S4 marker class. +#' +#' @param object A `MizerParams` or `MizerSim` object. +#' @param extensions Named character vector giving the object's extension chain. +#' Defaults to [objectExtensions()] applied to `object`. +#' @param check_class Logical. If `TRUE` (default), also verify that `object` +#' inherits from the expected S4 marker class. +#' @return Invisibly `TRUE`. Called for its side-effect of stopping on +#' incompatibility. +#' @keywords internal assertExtensionChain <- function(object, extensions = objectExtensions(object), check_class = TRUE) { extensions <- validateExtensionsVector(extensions) @@ -165,6 +185,14 @@ assertExtensionChain <- function(object, extensions = objectExtensions(object), invisible(TRUE) } +#' Validate and normalise an extensions named character vector +#' +#' Checks that `extensions` is a named character vector with unique, +#' syntactically valid names, and normalises `NULL` to `character()`. +#' +#' @param extensions A named character vector, or `NULL`. +#' @return A validated named character vector (possibly length-zero). +#' @keywords internal validateExtensionsVector <- function(extensions) { if (is.null(extensions)) { extensions <- character() @@ -194,6 +222,13 @@ validateExtensionsVector <- function(extensions) { extensions } +#' Compare two extension chains +#' +#' @param old Named character vector for the previously registered chain. +#' @param new Named character vector for the proposed chain. +#' @return One of `"identical"`, `"new_is_suffix"`, `"old_is_suffix"`, or +#' `"incompatible"`. +#' @keywords internal compareExtensionChains <- function(old, new) { if (identical(old, new)) { return("identical") @@ -207,6 +242,15 @@ compareExtensionChains <- function(old, new) { "incompatible" } +#' Test whether one extension chain is a suffix of another +#' +#' An empty `candidate` is always a suffix. Order and values must match +#' exactly for the overlapping tail. +#' +#' @param candidate Named character vector to test. +#' @param chain Named character vector that may contain `candidate` as a tail. +#' @return `TRUE` if `candidate` is a suffix of `chain`, `FALSE` otherwise. +#' @keywords internal isSuffixChain <- function(candidate, chain) { candidate <- validateExtensionsVector(candidate) chain <- validateExtensionsVector(chain) @@ -222,6 +266,17 @@ isSuffixChain <- function(candidate, chain) { identical(candidate, chain[start:length(chain)]) } +#' Define S4 marker classes for a set of dispatch extensions +#' +#' Creates a linear inheritance chain of S4 classes: the outermost extension +#' extends the next, which extends the next, down to the base `MizerParams` / +#' `MizerSim` class. Existing classes are checked for compatibility instead of +#' being redefined. +#' +#' @param extensions Named character vector of extensions (full chain or +#' dispatch subset). Non-dispatch entries are silently ignored. +#' @return Invisibly, the named character vector of dispatch extensions. +#' @keywords internal defineExtensionClasses <- function(extensions) { extensions <- validateExtensionsVector(extensions) extensions <- dispatchExtensions(extensions) @@ -240,6 +295,15 @@ defineExtensionClasses <- function(extensions) { invisible(extensions) } +#' Filter an extension vector to those that participate in S3/S4 dispatch +#' +#' An extension participates in dispatch if its requirement is `NA_character_` +#' (in-development) or if an S4 class with its name already exists. +#' +#' @param extensions Named character vector of extensions. +#' @return A named character vector containing only the dispatch extensions, +#' preserving order. +#' @keywords internal dispatchExtensions <- function(extensions) { extensions <- validateExtensionsVector(extensions) if (length(extensions) == 0) { @@ -256,6 +320,11 @@ dispatchExtensions <- function(extensions) { extensions[is_dispatch_extension] } +#' Test whether a mizer object uses extension S4 dispatch +#' +#' @param object A `MizerParams` or `MizerSim` object. +#' @return `TRUE` if the object's primary class is not the plain base class. +#' @keywords internal usesExtensionDispatch <- function(object) { if (is(object, "MizerParams")) { return(!identical(class(object)[[1]], "MizerParams")) @@ -266,6 +335,16 @@ usesExtensionDispatch <- function(object) { stop("Can only check dispatch for MizerParams or MizerSim objects.") } +#' Define an S4 class or verify it extends the expected parent +#' +#' If `class` does not yet exist, defines it as a virtual-free S4 class that +#' contains `parent`, registered in `.GlobalEnv`. If `class` already exists, +#' stops with an error unless it already extends `parent`. +#' +#' @param class Character string — the S4 class name to define or check. +#' @param parent Character string — the required parent class. +#' @return Invisibly, `class`. +#' @keywords internal defineOrCheckClass <- function(class, parent) { if (!methods::isClass(class)) { methods::setClass(class, contains = parent, where = .GlobalEnv) @@ -282,10 +361,27 @@ defineOrCheckClass <- function(class, parent) { invisible(class) } +#' Derive the MizerSim marker class name for a given extension +#' +#' @param extension Character string — the extension (params) class name. +#' @return A character string formed by appending `"Sim"` to `extension`. +#' @keywords internal simExtensionClass <- function(extension) { paste0(extension, "Sim") } +#' Load (and optionally install) namespaces for all non-NA extensions +#' +#' For each extension whose requirement is not `NA_character_`, checks that the +#' package is installed, installs it if `install = TRUE` and it is missing, +#' verifies the minimum version if the requirement is a version string, then +#' calls [loadNamespace()]. +#' +#' @param extensions Named character vector of extensions. +#' @param install Logical. If `TRUE`, attempt to install missing packages via +#' [utils::install.packages()]. +#' @return Invisibly `TRUE`. +#' @keywords internal ensureExtensionNamespaces <- function(extensions, install = FALSE) { extensions <- validateExtensionsVector(extensions) if (length(extensions) == 0) { @@ -323,10 +419,21 @@ ensureExtensionNamespaces <- function(extensions, install = FALSE) { invisible(TRUE) } +#' Test whether a requirement string is a dotted version number +#' +#' @param requirement Character string. +#' @return `TRUE` if `requirement` matches `"X.Y.Z..."` (digits and dots only). +#' @keywords internal isVersionRequirement <- function(requirement) { grepl("^[0-9]+(\\.[0-9]+)*$", requirement) } +#' Format an extension chain as a human-readable string +#' +#' @param extensions Named character vector of extensions. +#' @return A character string such as `"mizerExtB -> mizerExtA"`, or +#' `""` for a zero-length chain. +#' @keywords internal formatExtensionChain <- function(extensions) { if (length(extensions) == 0) { return("") @@ -334,6 +441,15 @@ formatExtensionChain <- function(extensions) { paste(names(extensions), collapse = " -> ") } +#' Strip extension classes from a mizer object +#' +#' Coerces a `MizerParams` or `MizerSim` object back to its plain base class, +#' removing any S4 extension marker classes. For `MizerSim`, also strips the +#' extension class from the embedded `params` slot. +#' +#' @param object A `MizerParams` or `MizerSim` object. +#' @return The same object coerced to `MizerParams` or `MizerSim`. +#' @keywords internal baseMizerClass <- function(object) { if (is(object, "MizerParams")) { methods::as(object, "MizerParams") @@ -346,6 +462,13 @@ baseMizerClass <- function(object) { } } +#' Reset the registered extension chain for the current R session +#' +#' Clears the session's extension registry. Primarily used in tests to restore +#' a clean state between test cases. +#' +#' @return Invisibly, an empty character vector. +#' @keywords internal resetMizerSession <- function() { .mizerSession$extensions <- character() invisible(character()) diff --git a/man/assertExtensionChain.Rd b/man/assertExtensionChain.Rd new file mode 100644 index 000000000..78da0ceee --- /dev/null +++ b/man/assertExtensionChain.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{assertExtensionChain} +\alias{assertExtensionChain} +\title{Assert that an object's extension chain is compatible with the session} +\usage{ +assertExtensionChain( + object, + extensions = objectExtensions(object), + check_class = TRUE +) +} +\arguments{ +\item{object}{A \code{MizerParams} or \code{MizerSim} object.} + +\item{extensions}{Named character vector giving the object's extension chain. +Defaults to \code{\link[=objectExtensions]{objectExtensions()}} applied to \code{object}.} + +\item{check_class}{Logical. If \code{TRUE} (default), also verify that \code{object} +inherits from the expected S4 marker class.} +} +\value{ +Invisibly \code{TRUE}. Called for its side-effect of stopping on +incompatibility. +} +\description{ +Stops with an informative error if the object's extension chain is not a +suffix of the session's registered maximal chain, or (when \code{check_class} is +\code{TRUE}) if the object does not inherit from the expected S4 marker class. +} +\keyword{internal} diff --git a/man/baseMizerClass.Rd b/man/baseMizerClass.Rd new file mode 100644 index 000000000..9fa55990e --- /dev/null +++ b/man/baseMizerClass.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{baseMizerClass} +\alias{baseMizerClass} +\title{Strip extension classes from a mizer object} +\usage{ +baseMizerClass(object) +} +\arguments{ +\item{object}{A \code{MizerParams} or \code{MizerSim} object.} +} +\value{ +The same object coerced to \code{MizerParams} or \code{MizerSim}. +} +\description{ +Coerces a \code{MizerParams} or \code{MizerSim} object back to its plain base class, +removing any S4 extension marker classes. For \code{MizerSim}, also strips the +extension class from the embedded \code{params} slot. +} +\keyword{internal} diff --git a/man/compareExtensionChains.Rd b/man/compareExtensionChains.Rd new file mode 100644 index 000000000..ba02bb197 --- /dev/null +++ b/man/compareExtensionChains.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{compareExtensionChains} +\alias{compareExtensionChains} +\title{Compare two extension chains} +\usage{ +compareExtensionChains(old, new) +} +\arguments{ +\item{old}{Named character vector for the previously registered chain.} + +\item{new}{Named character vector for the proposed chain.} +} +\value{ +One of \code{"identical"}, \code{"new_is_suffix"}, \code{"old_is_suffix"}, or +\code{"incompatible"}. +} +\description{ +Compare two extension chains +} +\keyword{internal} diff --git a/man/defineExtensionClasses.Rd b/man/defineExtensionClasses.Rd new file mode 100644 index 000000000..74efe6e24 --- /dev/null +++ b/man/defineExtensionClasses.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{defineExtensionClasses} +\alias{defineExtensionClasses} +\title{Define S4 marker classes for a set of dispatch extensions} +\usage{ +defineExtensionClasses(extensions) +} +\arguments{ +\item{extensions}{Named character vector of extensions (full chain or +dispatch subset). Non-dispatch entries are silently ignored.} +} +\value{ +Invisibly, the named character vector of dispatch extensions. +} +\description{ +Creates a linear inheritance chain of S4 classes: the outermost extension +extends the next, which extends the next, down to the base \code{MizerParams} / +\code{MizerSim} class. Existing classes are checked for compatibility instead of +being redefined. +} +\keyword{internal} diff --git a/man/defineOrCheckClass.Rd b/man/defineOrCheckClass.Rd new file mode 100644 index 000000000..d439c5098 --- /dev/null +++ b/man/defineOrCheckClass.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{defineOrCheckClass} +\alias{defineOrCheckClass} +\title{Define an S4 class or verify it extends the expected parent} +\usage{ +defineOrCheckClass(class, parent) +} +\arguments{ +\item{class}{Character string — the S4 class name to define or check.} + +\item{parent}{Character string — the required parent class.} +} +\value{ +Invisibly, \code{class}. +} +\description{ +If \code{class} does not yet exist, defines it as a virtual-free S4 class that +contains \code{parent}, registered in \code{.GlobalEnv}. If \code{class} already exists, +stops with an error unless it already extends \code{parent}. +} +\keyword{internal} diff --git a/man/dispatchExtensions.Rd b/man/dispatchExtensions.Rd new file mode 100644 index 000000000..d48348d4d --- /dev/null +++ b/man/dispatchExtensions.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{dispatchExtensions} +\alias{dispatchExtensions} +\title{Filter an extension vector to those that participate in S3/S4 dispatch} +\usage{ +dispatchExtensions(extensions) +} +\arguments{ +\item{extensions}{Named character vector of extensions.} +} +\value{ +A named character vector containing only the dispatch extensions, +preserving order. +} +\description{ +An extension participates in dispatch if its requirement is \code{NA_character_} +(in-development) or if an S4 class with its name already exists. +} +\keyword{internal} diff --git a/man/dot-checkRateFunctionOutput.Rd b/man/dot-checkRateFunctionOutput.Rd new file mode 100644 index 000000000..ef01c036d --- /dev/null +++ b/man/dot-checkRateFunctionOutput.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/extension.R +\name{.checkRateFunctionOutput} +\alias{.checkRateFunctionOutput} +\title{Check that a rate function returns the correct output dimensions} +\usage{ +.checkRateFunctionOutput(params, rate, fun) +} +\arguments{ +\item{params}{A MizerParams object} + +\item{rate}{Name of the rate being replaced, e.g. \code{"Encounter"}.} + +\item{fun}{Name of the candidate function to validate.} +} +\value{ +Invisibly \code{NULL}. Called for its side-effect of stopping with an +informative error if the output has the wrong shape. +} +\description{ +Called by \code{\link[=setRateFunction]{setRateFunction()}} to verify that a candidate rate function +returns an array (or vector/list) of the correct dimensions for the +requested rate. +} +\keyword{internal} diff --git a/man/ensureExtensionNamespaces.Rd b/man/ensureExtensionNamespaces.Rd new file mode 100644 index 000000000..d3fe0f3db --- /dev/null +++ b/man/ensureExtensionNamespaces.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{ensureExtensionNamespaces} +\alias{ensureExtensionNamespaces} +\title{Load (and optionally install) namespaces for all non-NA extensions} +\usage{ +ensureExtensionNamespaces(extensions, install = FALSE) +} +\arguments{ +\item{extensions}{Named character vector of extensions.} + +\item{install}{Logical. If \code{TRUE}, attempt to install missing packages via +\code{\link[utils:install.packages]{utils::install.packages()}}.} +} +\value{ +Invisibly \code{TRUE}. +} +\description{ +For each extension whose requirement is not \code{NA_character_}, checks that the +package is installed, installs it if \code{install = TRUE} and it is missing, +verifies the minimum version if the requirement is a version string, then +calls \code{\link[=loadNamespace]{loadNamespace()}}. +} +\keyword{internal} diff --git a/man/formatExtensionChain.Rd b/man/formatExtensionChain.Rd new file mode 100644 index 000000000..37ebec8ef --- /dev/null +++ b/man/formatExtensionChain.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{formatExtensionChain} +\alias{formatExtensionChain} +\title{Format an extension chain as a human-readable string} +\usage{ +formatExtensionChain(extensions) +} +\arguments{ +\item{extensions}{Named character vector of extensions.} +} +\value{ +A character string such as \code{"mizerExtB -> mizerExtA"}, or +\code{""} for a zero-length chain. +} +\description{ +Format an extension chain as a human-readable string +} +\keyword{internal} diff --git a/man/isSuffixChain.Rd b/man/isSuffixChain.Rd new file mode 100644 index 000000000..41d4dcf15 --- /dev/null +++ b/man/isSuffixChain.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{isSuffixChain} +\alias{isSuffixChain} +\title{Test whether one extension chain is a suffix of another} +\usage{ +isSuffixChain(candidate, chain) +} +\arguments{ +\item{candidate}{Named character vector to test.} + +\item{chain}{Named character vector that may contain \code{candidate} as a tail.} +} +\value{ +\code{TRUE} if \code{candidate} is a suffix of \code{chain}, \code{FALSE} otherwise. +} +\description{ +An empty \code{candidate} is always a suffix. Order and values must match +exactly for the overlapping tail. +} +\keyword{internal} diff --git a/man/isVersionRequirement.Rd b/man/isVersionRequirement.Rd new file mode 100644 index 000000000..c874ee004 --- /dev/null +++ b/man/isVersionRequirement.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{isVersionRequirement} +\alias{isVersionRequirement} +\title{Test whether a requirement string is a dotted version number} +\usage{ +isVersionRequirement(requirement) +} +\arguments{ +\item{requirement}{Character string.} +} +\value{ +\code{TRUE} if \code{requirement} matches \code{"X.Y.Z..."} (digits and dots only). +} +\description{ +Test whether a requirement string is a dotted version number +} +\keyword{internal} diff --git a/man/objectExtensions.Rd b/man/objectExtensions.Rd new file mode 100644 index 000000000..370e99be1 --- /dev/null +++ b/man/objectExtensions.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{objectExtensions} +\alias{objectExtensions} +\title{Get the extension chain stored in a mizer object} +\usage{ +objectExtensions(object) +} +\arguments{ +\item{object}{A \code{MizerParams} or \code{MizerSim} object.} +} +\value{ +A named character vector of extensions, or an empty character vector +if the object carries no extensions. +} +\description{ +Get the extension chain stored in a mizer object +} +\keyword{internal} diff --git a/man/resetMizerSession.Rd b/man/resetMizerSession.Rd new file mode 100644 index 000000000..cbed306f3 --- /dev/null +++ b/man/resetMizerSession.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{resetMizerSession} +\alias{resetMizerSession} +\title{Reset the registered extension chain for the current R session} +\usage{ +resetMizerSession() +} +\value{ +Invisibly, an empty character vector. +} +\description{ +Clears the session's extension registry. Primarily used in tests to restore +a clean state between test cases. +} +\keyword{internal} diff --git a/man/simExtensionClass.Rd b/man/simExtensionClass.Rd new file mode 100644 index 000000000..49122ee2a --- /dev/null +++ b/man/simExtensionClass.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{simExtensionClass} +\alias{simExtensionClass} +\title{Derive the MizerSim marker class name for a given extension} +\usage{ +simExtensionClass(extension) +} +\arguments{ +\item{extension}{Character string — the extension (params) class name.} +} +\value{ +A character string formed by appending \code{"Sim"} to \code{extension}. +} +\description{ +Derive the MizerSim marker class name for a given extension +} +\keyword{internal} diff --git a/man/usesExtensionDispatch.Rd b/man/usesExtensionDispatch.Rd new file mode 100644 index 000000000..16ce2cbff --- /dev/null +++ b/man/usesExtensionDispatch.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{usesExtensionDispatch} +\alias{usesExtensionDispatch} +\title{Test whether a mizer object uses extension S4 dispatch} +\usage{ +usesExtensionDispatch(object) +} +\arguments{ +\item{object}{A \code{MizerParams} or \code{MizerSim} object.} +} +\value{ +\code{TRUE} if the object's primary class is not the plain base class. +} +\description{ +Test whether a mizer object uses extension S4 dispatch +} +\keyword{internal} diff --git a/man/validateExtensionsVector.Rd b/man/validateExtensionsVector.Rd new file mode 100644 index 000000000..f486c00cd --- /dev/null +++ b/man/validateExtensionsVector.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{validateExtensionsVector} +\alias{validateExtensionsVector} +\title{Validate and normalise an extensions named character vector} +\usage{ +validateExtensionsVector(extensions) +} +\arguments{ +\item{extensions}{A named character vector, or \code{NULL}.} +} +\value{ +A validated named character vector (possibly length-zero). +} +\description{ +Checks that \code{extensions} is a named character vector with unique, +syntactically valid names, and normalises \code{NULL} to \code{character()}. +} +\keyword{internal} From d7536cbd8dfb4d80c9316a93fb83e7e5f21660eb Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 07:53:33 +0100 Subject: [PATCH 10/34] Preserve MizerParams subclasses and their extra slots during upgrade --- NEWS.md | 2 ++ R/upgrade.R | 18 ++++++++++++++++++ tests/testthat/test-upgrade.R | 20 ++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/NEWS.md b/NEWS.md index 80d8250f3..82e3a50cc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -187,6 +187,8 @@ - `getMeanMaxWeight()` now correctly applies the species selector to the denominator. +- `upgradeParams()` now preserves `MizerParams` subclasses and their extra + slots when upgrading older objects. - `plotDataFrame()` now correctly applies custom log-scale x breaks. - `get_size_range_array()` no longer gives an error when no size brackets are selected. diff --git a/R/upgrade.R b/R/upgrade.R index 835ccb2d3..db28405ba 100644 --- a/R/upgrade.R +++ b/R/upgrade.R @@ -33,6 +33,7 @@ needs_upgrading <- function(object) { #' @seealso [validParams()] upgradeParams <- function(params) { if (!needs_upgrading(params)) return(params) + original_params <- params # Preserve time_created if (.hasSlot(params, "time_created")) { @@ -374,6 +375,23 @@ upgradeParams <- function(params) { params <- validParams(params, info_level = 0) params@time_modified <- lubridate::now() params@time_created <- time_created + reinstateParamsClass(params, original_params) +} + +reinstateParamsClass <- function(params, original_params) { + original_class <- class(original_params)[[1]] + if (identical(original_class, "MizerParams")) { + return(params) + } + + params <- as(params, original_class) + extra_slots <- setdiff(slotNames(original_params), slotNames("MizerParams")) + for (slot in extra_slots) { + if (.hasSlot(params, slot)) { + slot(params, slot) <- slot(original_params, slot) + } + } + validObject(params) params } diff --git a/tests/testthat/test-upgrade.R b/tests/testthat/test-upgrade.R index d22ee8073..2925a50a4 100644 --- a/tests/testthat/test-upgrade.R +++ b/tests/testthat/test-upgrade.R @@ -68,3 +68,23 @@ test_that("upgradeParams updates `time_modified`", { p2 <- suppressMessages(upgradeParams(p)) expect_false(identical(p2@time_modified, p@time_modified)) }) + +test_that("upgradeParams preserves subclass information", { + if (!methods::isClass("TestMizerParams")) { + methods::setClass( + "TestMizerParams", + contains = "MizerParams", + slots = c(extra = "character"), + prototype = list(extra = "default") + ) + } + p <- as(NS_params, "TestMizerParams") + p@extra <- "custom" + p@mizer_version <- "2.0.0" + + p2 <- suppressMessages(upgradeParams(p)) + + expect_s4_class(p2, "TestMizerParams") + expect_identical(p2@extra, "custom") + expect_true(validObject(p2)) +}) From f81209958897c7fb7a39110030c37449968b6c33 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 08:18:25 +0100 Subject: [PATCH 11/34] `addSpecies` and `expandSizeGrid` now preserve class --- R/manipulate_species.R | 87 +++++++++++++---------- tests/testthat/test-manipulate_species.R | 88 ++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 36 deletions(-) diff --git a/R/manipulate_species.R b/R/manipulate_species.R index 1c586be96..842f6dd0d 100644 --- a/R/manipulate_species.R +++ b/R/manipulate_species.R @@ -70,12 +70,55 @@ addSpecies <- function(params, species_params, UseMethod("addSpecies") } +getPreservedParamsClass <- function(original_params, params) { + original_class <- class(original_params)[[1]] + target_class <- class(params)[[1]] + if (identical(target_class, "MizerParams") && + !identical(original_class, "MizerParams")) { + return(original_class) + } + target_class +} + +restoreParamsClass <- function(params, target_class) { + if (target_class != "MizerParams") { + params <- as(params, target_class) + } + params +} + +copyPreservedParamsSlots <- function(params, old_params) { + params@other_dynamics <- old_params@other_dynamics + params@initial_n_other <- old_params@initial_n_other + params@other_encounter <- old_params@other_encounter + params@other_mort <- old_params@other_mort + params@other_params <- old_params@other_params + params@rates_funcs <- old_params@rates_funcs + params@use_predation_diffusion <- old_params@use_predation_diffusion + + params@metadata <- old_params@metadata + params@time_created <- old_params@time_created + params@mizer_version <- old_params@mizer_version + params@extensions <- old_params@extensions + params +} + +copyParamsComments <- function(params, old_params) { + comment(params) <- comment(old_params) + for (slot in slotNames(params)) { + comment(slot(params, slot)) <- comment(slot(old_params, slot)) + } + params +} + #' @export addSpecies.MizerParams <- function(params, species_params, gear_params = data.frame(), initial_effort = NULL, interaction = NULL, info_level = 3, ...) { # check validity of parameters ---- + original_params <- params params <- validParams(params) + target_class <- getPreservedParamsClass(original_params, params) given_species_params <- validGivenSpeciesParams(species_params) species_params <- validSpeciesParams(species_params) gear_params <- validGearParams(gear_params, species_params) @@ -236,10 +279,7 @@ addSpecies.MizerParams <- function(params, species_params, gear_params = data.fr p@resource_params <- params@resource_params # Preserve comments ---- - comment(p) <- comment(params) - for (slot in (slotNames(p))) { - comment(slot(p, slot)) <- comment(slot(params, slot)) - } + p <- copyParamsComments(p, params) # Copy old data ---- # selector for old w bins inside new w @@ -255,16 +295,7 @@ addSpecies.MizerParams <- function(params, species_params, gear_params = data.fr p@search_vol[old_sp, old_w] <- params@search_vol p@metab[old_sp, old_w] <- params@metab - p@other_dynamics <- params@other_dynamics - p@other_encounter <- params@other_encounter - p@other_mort <- params@other_mort - p@other_params <- params@other_params - p@rates_funcs <- params@rates_funcs - - p@metadata <- params@metadata - p@time_created <- params@time_created - p@mizer_version <- params@mizer_version - p@extensions <- params@extensions + p <- copyPreservedParamsSlots(p, params) # The following does not affect the new species but preserves # any changes the user might have made in the original params object @@ -311,10 +342,7 @@ addSpecies.MizerParams <- function(params, species_params, gear_params = data.fr names(repro_level) <- p@species_params$species[new_sp] p <- setBevertonHolt(p, reproduction_level = repro_level) - # Preserve subclass of params - if (class(params)[[1]] != "MizerParams") { - p <- as(p, class(params)[[1]]) - } + p <- restoreParamsClass(p, target_class) return(p) } @@ -532,6 +560,7 @@ expandSizeGrid.MizerParams <- function(params, new_max_w = max(params@w), preserve_species = params@species_params$species, ...) { + target_class <- class(params)[[1]] sp_sel <- valid_species_arg(params, preserve_species, return.logical = TRUE) min_w <- min(params@w) max_w <- max(params@w) @@ -606,6 +635,7 @@ expandSizeGrid.MizerParams <- function(params, p@sc[old_w] <- params@sc p@mu_b[sp_sel, old_w] <- params@mu_b[sp_sel, ] p@ext_encounter[sp_sel, old_w] <- params@ext_encounter[sp_sel, ] + p@ext_diffusion[sp_sel, old_w] <- params@ext_diffusion[sp_sel, ] p@intake_max[sp_sel, old_w] <- params@intake_max[sp_sel, ] p@search_vol[sp_sel, old_w] <- params@search_vol[sp_sel, ] p@metab[sp_sel, old_w] <- params@metab[sp_sel, ] @@ -618,31 +648,16 @@ expandSizeGrid.MizerParams <- function(params, # Step 4: Preserve other slots and metadata ---- p@given_species_params <- params@given_species_params - p@other_dynamics <- params@other_dynamics - p@other_encounter <- params@other_encounter - p@other_mort <- params@other_mort - p@other_params <- params@other_params - p@rates_funcs <- params@rates_funcs - - p@metadata <- params@metadata - p@time_created <- params@time_created - p@mizer_version <- params@mizer_version - p@extensions <- params@extensions + p <- copyPreservedParamsSlots(p, params) p <- setColours(p, params@linecolour) p <- setLinetypes(p, params@linetype) # Preserve comments - comment(p) <- comment(params) - for (slot in (slotNames(p))) { - comment(slot(p, slot)) <- comment(slot(params, slot)) - } + p <- copyParamsComments(p, params) p <- validParams(p) - # Preserve subclass of params - if (class(params)[[1]] != "MizerParams") { - p <- as(p, class(params)[[1]]) - } + p <- restoreParamsClass(p, target_class) return(p) } diff --git a/tests/testthat/test-manipulate_species.R b/tests/testthat/test-manipulate_species.R index d4e7d3052..9f9af8d51 100644 --- a/tests/testthat/test-manipulate_species.R +++ b/tests/testthat/test-manipulate_species.R @@ -182,6 +182,64 @@ test_that("addSpecies preserves both given and other species params", { expect_in("test", names(p@given_species_params)) }) +randomise_upgrade_preserved_slots <- function(params) { + component <- "random_component" + zero_rate <- function(params, n, n_pp, n_other, component, ...) { + params@ext_encounter * 0 + } + zero_mort <- function(params, n, n_pp, n_other, component, ...) { + params@mu_b * 0 + } + + params@ext_diffusion[] <- runif(length(params@ext_diffusion), max = 1e-6) + params@initial_n_other <- stats::setNames(list(runif(4)), component) + params@other_dynamics <- stats::setNames(list("random_dynamics"), component) + params@other_encounter <- stats::setNames(list(zero_rate), component) + params@other_mort <- stats::setNames(list(zero_mort), component) + params@other_params <- stats::setNames(list(list(values = runif(3))), + component) + params@other_params$other <- list(values = runif(2)) + params@use_predation_diffusion <- TRUE + attr(params@rates_funcs, "random") <- runif(2) + params +} + +test_that("addSpecies preserves slots recently added to upgradeParams", { + set.seed(42) + params <- newTraitParams(no_sp = 2, no_w = 20, info_level = 0) + params <- randomise_upgrade_preserved_slots(params) + + sp <- data.frame(species = "new", w_max = 10, k_vb = 1) + p <- suppressWarnings(suppressMessages( + addSpecies(params, sp, info_level = 0) + )) + old_sp <- seq_len(nrow(params@species_params)) + old_w <- seq_along(params@w) + + expect_equal(p@ext_diffusion[old_sp, old_w], params@ext_diffusion, + ignore_attr = TRUE) + for (slot in c("initial_n_other", "other_dynamics", "other_encounter", + "other_mort", "other_params", "rates_funcs", + "use_predation_diffusion")) { + expect_identical(slot(p, slot), slot(params, slot)) + } +}) + +test_that("addSpecies preserves the class", { + if (!methods::isClass("AddSpeciesTestParams")) { + methods::setClass("AddSpeciesTestParams", contains = "MizerParams") + } + params <- as(newTraitParams(no_sp = 2, no_w = 20, info_level = 0), + "AddSpeciesTestParams") + sp <- data.frame(species = "new", w_max = 10, k_vb = 1) + p <- suppressWarnings(suppressMessages( + addSpecies(params, sp, info_level = 0) + )) + + expect_s4_class(p, "AddSpeciesTestParams") + expect_true(validObject(p)) +}) + # removeSpecies ---- test_that("removeSpecies works", { remove <- NS_species_params$species[2:11] @@ -369,6 +427,36 @@ test_that("expandSizeGrid preserves existing data", { expect_identical(compareParams(params, NS_params), "No differences") }) +test_that("expandSizeGrid preserves slots recently added to upgradeParams", { + set.seed(42) + params <- newTraitParams(no_sp = 2, no_w = 20, info_level = 0) + params <- randomise_upgrade_preserved_slots(params) + + p <- expandSizeGrid(params, new_max_w = max(params@w) * 10) + old_sp <- seq_len(nrow(params@species_params)) + old_w <- seq_along(params@w) + + expect_equal(p@ext_diffusion[old_sp, old_w], params@ext_diffusion, + ignore_attr = TRUE) + for (slot in c("initial_n_other", "other_dynamics", "other_encounter", + "other_mort", "other_params", "rates_funcs", + "use_predation_diffusion")) { + expect_identical(slot(p, slot), slot(params, slot)) + } +}) + +test_that("expandSizeGrid preserves the class", { + if (!methods::isClass("ExpandGridTestParams")) { + methods::setClass("ExpandGridTestParams", contains = "MizerParams") + } + params <- as(newTraitParams(no_sp = 2, no_w = 20, info_level = 0), + "ExpandGridTestParams") + p <- expandSizeGrid(params, new_max_w = max(params@w) * 10) + + expect_s4_class(p, "ExpandGridTestParams") + expect_true(validObject(p)) +}) + # time_modified ---- test_that("addSpecies updates `time_modified`", { p <- newMultispeciesParams(NS_species_params, info_level = 0) From 85affd7712e1ea94a793c710cb84f21620e1675d Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 09:07:55 +0100 Subject: [PATCH 12/34] `setResource()` now allows `resource_level = 1` Closes #337 --- NEWS.md | 5 +++++ R/resource_logistic.R | 20 ++++++++++++------ R/resource_semichemostat.R | 20 ++++++++++++------ R/setResource.R | 16 +++++--------- man/newMultispeciesParams.Rd | 2 +- man/resource_logistic.Rd | 5 +++-- man/resource_semichemostat.Rd | 5 +++-- man/setResource.Rd | 5 +++-- tests/testthat/test-resource_logistic.R | 16 ++++++++++++++ tests/testthat/test-resource_semichemostat.R | 22 ++++++++++++++++++-- tests/testthat/test-setResource.R | 12 +++++++++++ 11 files changed, 96 insertions(+), 32 deletions(-) diff --git a/NEWS.md b/NEWS.md index 82e3a50cc..b5f9c2e9f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,10 @@ # Development version 2.5.4.9102 +- `setResource()` now allows `resource_level = 1`. When balancing would + otherwise divide by zero because the resource capacity equals the current + resource abundance at positive consumption, the capacity is increased + slightly with a warning instead of failing early. + - Added first-stage infrastructure for composable extension chains: `registerExtensions()`, `getRegisteredExtensions()`, and `coerceToExtensionClass()`. Extension classes are marker classes for S3 diff --git a/R/resource_logistic.R b/R/resource_logistic.R index 54ec0314b..7aabf7ed6 100644 --- a/R/resource_logistic.R +++ b/R/resource_logistic.R @@ -71,8 +71,9 @@ resource_logistic <- function(params, n, n_pp, n_other, rates, t, dt, #' `resource_rate` or `resource_capacity` and returns a named list with values #' for both. If `resource_rate` is supplied it must be at least as large as the #' current mortality at each size. If `resource_capacity` is supplied it must be -#' greater than the current resource abundance wherever there is positive -#' consumption. +#' not be less than the current resource abundance. Where it equals the +#' current resource abundance and there is positive consumption, it is nudged +#' upwards slightly to avoid division by zero. #' @export balance_resource_logistic <- function(params, resource_rate, resource_capacity) { @@ -106,11 +107,18 @@ balance_resource_logistic <- function(params, if (any(resource_capacity < NR)) { stop("I can't balance the resource if the capacity is less than the current abundance.") } - # If the capacity equals the abundance then there is no - # replenishment, so this is only allowed when there is no death either. death <- (mu * NR) != 0 - if (any(resource_capacity[death] == NR[death])) { - stop("I can't balance the resource unless the capacity is greater than the current abundance wherever there is consumption.") + at_capacity <- death & resource_capacity == NR + if (any(at_capacity)) { + # Large enough to survive rounding while still being tiny. + factor <- 1 + sqrt(.Machine$double.eps) + warning( + "The resource capacity is equal to the current resource ", + "abundance where there is consumption. It has been increased ", + "slightly to avoid division by zero.", + call. = FALSE + ) + resource_capacity[at_capacity] <- NR[at_capacity] * factor } rr <- mu * resource_capacity / (resource_capacity - NR) # If the capacity equals the abundance then the rate is not determined, diff --git a/R/resource_semichemostat.R b/R/resource_semichemostat.R index 650b0b770..25c8fa8f7 100644 --- a/R/resource_semichemostat.R +++ b/R/resource_semichemostat.R @@ -71,8 +71,9 @@ resource_semichemostat <- function(params, n, n_pp, n_other, rates, t, dt, #' `resource_rate` or `resource_capacity` and returns a named list with values #' for both. If `resource_rate` is supplied it must be positive wherever the #' current resource mortality is positive. If `resource_capacity` is supplied it -#' must be greater than the current resource abundance wherever there is -#' positive consumption. +#' must not be less than the current resource abundance. Where it equals the +#' current resource abundance and there is positive consumption, it is nudged +#' upwards slightly to avoid division by zero. #' @export balance_resource_semichemostat <- function(params, resource_rate, resource_capacity) { @@ -103,11 +104,18 @@ balance_resource_semichemostat <- function(params, if (any(resource_capacity < NR)) { stop("I can't balance the resource if the capacity is less than the current abundance.") } - # If the capacity equals the abundance then there is no - # replenishment, so this is only allowed when there is no death either. has_death <- (mu * NR) != 0 - if (any(resource_capacity[has_death] <= NR[has_death])) { - stop("I can't balance the resource unless the capacity is greater than the current abundance wherever there is consumption.") + at_capacity <- has_death & resource_capacity == NR + if (any(at_capacity)) { + # Large enough to survive rounding while still being tiny. + factor <- 1 + sqrt(.Machine$double.eps) + warning( + "The resource capacity is equal to the current resource ", + "abundance where there is consumption. It has been increased ", + "slightly to avoid division by zero.", + call. = FALSE + ) + resource_capacity[at_capacity] <- NR[at_capacity] * factor } rr <- mu * NR / (resource_capacity - NR) # If the capacity equals the abundance then the rate is not determined, diff --git a/R/setResource.R b/R/setResource.R index a85a932ae..13f5b19c3 100644 --- a/R/setResource.R +++ b/R/setResource.R @@ -69,10 +69,11 @@ #' @param resource_capacity Optional. Vector of resource intrinsic carrying #' capacities or coefficient in the power-law for the capacity, see #' "Setting resource dynamics" below. -#' The resource capacity must be larger than the resource abundance. +#' The resource capacity must not be smaller than the resource abundance. #' @param resource_level Optional. The ratio between the current resource number #' density and the resource capacity. Either a number used at all sizes or a -#' vector specifying a value for each size. Must be strictly between 0 and 1, +#' vector specifying a value for each size. Must be greater than 0 and at +#' most 1, #' except at sizes where the resource is zero, where it can be `NaN`. This #' determines the resource capacity, so do not specify both this and #' `resource_capacity`. @@ -172,8 +173,8 @@ setResource.MizerParams <- function(params, stop("The resource level must be defined everywhere where the current resource is non-vanishing.") } if (any(NR > 0 & - (resource_level <= 0 | resource_level >= 1))) { - stop("The 'resource_level' must always be strictly between 0 and 1.") + (resource_level <= 0 | resource_level > 1))) { + stop("The 'resource_level' must always be greater than 0 and at most 1.") } resource_capacity <- NR / resource_level resource_capacity[is.nan(resource_level)] <- 0 @@ -246,13 +247,6 @@ setResource.MizerParams <- function(params, resource_rate <- params@rr_pp } - # For balancing the resource capacity must be above current abundance - # except where both are zero - if (!is.null(resource_capacity) && - any(resource_capacity <= NR & NR > 0)) { - stop("The 'resource_capacity' must always be greater than current resource number density.") - } - balance_fn <- get0(paste0("balance_", params@resource_dynamics)) if (!is.function(balance_fn)) { stop("There is no balancing function available for ", diff --git a/man/newMultispeciesParams.Rd b/man/newMultispeciesParams.Rd index b69c2c4e0..006b26daa 100644 --- a/man/newMultispeciesParams.Rd +++ b/man/newMultispeciesParams.Rd @@ -123,7 +123,7 @@ Must be strictly positive.} \item{resource_capacity}{Optional. Vector of resource intrinsic carrying capacities or coefficient in the power-law for the capacity, see "Setting resource dynamics" below. -The resource capacity must be larger than the resource abundance.} +The resource capacity must not be smaller than the resource abundance.} \item{lambda}{Used to set power-law exponent for resource capacity if the \code{resource_capacity} argument is given as a single number.} diff --git a/man/resource_logistic.Rd b/man/resource_logistic.Rd index c5b673787..1a1a2f140 100644 --- a/man/resource_logistic.Rd +++ b/man/resource_logistic.Rd @@ -78,8 +78,9 @@ calculated by \code{\link[=getResourceMort]{getResourceMort()}}. It should be ca \code{resource_rate} or \code{resource_capacity} and returns a named list with values for both. If \code{resource_rate} is supplied it must be at least as large as the current mortality at each size. If \code{resource_capacity} is supplied it must be -greater than the current resource abundance wherever there is positive -consumption. +not be less than the current resource abundance. Where it equals the +current resource abundance and there is positive consumption, it is nudged +upwards slightly to avoid division by zero. } \seealso{ \code{\link[=setResource]{setResource()}} diff --git a/man/resource_semichemostat.Rd b/man/resource_semichemostat.Rd index 701bb6740..d13bcc298 100644 --- a/man/resource_semichemostat.Rd +++ b/man/resource_semichemostat.Rd @@ -78,8 +78,9 @@ as calculated by \code{\link[=getResourceMort]{getResourceMort()}}. It should be \code{resource_rate} or \code{resource_capacity} and returns a named list with values for both. If \code{resource_rate} is supplied it must be positive wherever the current resource mortality is positive. If \code{resource_capacity} is supplied it -must be greater than the current resource abundance wherever there is -positive consumption. +must not be less than the current resource abundance. Where it equals the +current resource abundance and there is positive consumption, it is nudged +upwards slightly to avoid division by zero. } \seealso{ \code{\link[=setResource]{setResource()}} diff --git a/man/setResource.Rd b/man/setResource.Rd index becbfb41b..7331600e1 100644 --- a/man/setResource.Rd +++ b/man/setResource.Rd @@ -52,11 +52,12 @@ Must be strictly positive.} \item{resource_capacity}{Optional. Vector of resource intrinsic carrying capacities or coefficient in the power-law for the capacity, see "Setting resource dynamics" below. -The resource capacity must be larger than the resource abundance.} +The resource capacity must not be smaller than the resource abundance.} \item{resource_level}{Optional. The ratio between the current resource number density and the resource capacity. Either a number used at all sizes or a -vector specifying a value for each size. Must be strictly between 0 and 1, +vector specifying a value for each size. Must be greater than 0 and at +most 1, except at sizes where the resource is zero, where it can be \code{NaN}. This determines the resource capacity, so do not specify both this and \code{resource_capacity}.} diff --git a/tests/testthat/test-resource_logistic.R b/tests/testthat/test-resource_logistic.R index 6ca804927..ba709a13c 100644 --- a/tests/testthat/test-resource_logistic.R +++ b/tests/testthat/test-resource_logistic.R @@ -95,6 +95,22 @@ test_that("balance_resource_logistic validates balancing inputs", { "capacity is less than the current abundance") }) +test_that("balance_resource_logistic nudges capacity to avoid division by zero", { + params <- NS_params + capacity <- initialNResource(params) + death <- getResourceMort(params) * capacity != 0 + + expect_warning( + balanced <- balance_resource_logistic(params, + resource_rate = NULL, + resource_capacity = capacity), + "division by zero" + ) + + expect_true(all(is.finite(balanced$resource_rate))) + expect_true(all(balanced$resource_capacity[death] > capacity[death])) +}) + test_that("balance_resource_logistic keeps current capacity when unidentifiable", { params <- newTraitParams() initialN(params)[] <- 0 diff --git a/tests/testthat/test-resource_semichemostat.R b/tests/testthat/test-resource_semichemostat.R index 119b26221..424d05c53 100644 --- a/tests/testthat/test-resource_semichemostat.R +++ b/tests/testthat/test-resource_semichemostat.R @@ -90,8 +90,26 @@ test_that("balance_resource_semichemostat validates balancing inputs", { expect_error(balance_resource_semichemostat( params, resource_rate = NULL, - resource_capacity = initialNResource(params) - ), "capacity is greater than the current abundance wherever there is consumption") + resource_capacity = initialNResource(params) * 0.9 + ), "capacity is less than the current abundance") +}) + +test_that("balance_resource_semichemostat nudges capacity to avoid division by zero", { + params <- NS_params + capacity <- initialNResource(params) + death <- getResourceMort(params) * capacity != 0 + + expect_warning( + balanced <- balance_resource_semichemostat( + params, + resource_rate = NULL, + resource_capacity = capacity + ), + "division by zero" + ) + + expect_true(all(is.finite(balanced$resource_rate))) + expect_true(all(balanced$resource_capacity[death] > capacity[death])) }) test_that("balance_resource_semichemostat keeps current rate when unidentifiable", { diff --git a/tests/testthat/test-setResource.R b/tests/testthat/test-setResource.R index e724f6da5..60d518556 100644 --- a/tests/testthat/test-setResource.R +++ b/tests/testthat/test-setResource.R @@ -99,6 +99,18 @@ test_that("Can get and set resource_level slot", { expect_equal(resource_capacity(params), expected_capacity, ignore_attr = TRUE) }) + +test_that("resource_level can be set to 1", { + params <- NS_params + expect_warning( + params_new <- setResource(params, resource_level = 1), + "division by zero" + ) + + expect_true(all(is.finite(resource_rate(params_new)))) + expect_true(all(resource_capacity(params_new) >= initialNResource(params))) +}) + test_that("Can get and set resource_dynamics slot", { params <- NS_params new <- "resource_constant" From c440534e40f4c9f6b7c6cb63e129d96bd6515768 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 09:30:49 +0100 Subject: [PATCH 13/34] Preserve original user-visible metadata in expandSizeGrid.MizerParams --- R/manipulate_species.R | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/R/manipulate_species.R b/R/manipulate_species.R index 842f6dd0d..1a64a133c 100644 --- a/R/manipulate_species.R +++ b/R/manipulate_species.R @@ -657,6 +657,14 @@ expandSizeGrid.MizerParams <- function(params, p <- validParams(p) + # validParams() may add recently introduced default species parameters + # and the constructor may reorder plot metadata. expandSizeGrid() should + # preserve the original user-visible metadata exactly. + p@species_params <- params@species_params + p@given_species_params <- params@given_species_params + p@linecolour <- params@linecolour + p@linetype <- params@linetype + p <- restoreParamsClass(p, target_class) return(p) From 04b7a2056edde303cb14b3ac4a3c74d22faa8624 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 09:31:15 +0100 Subject: [PATCH 14/34] Avoid warnings in tests --- tests/testthat/test-manipulate_species.R | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/tests/testthat/test-manipulate_species.R b/tests/testthat/test-manipulate_species.R index 9f9af8d51..cc8689741 100644 --- a/tests/testthat/test-manipulate_species.R +++ b/tests/testthat/test-manipulate_species.R @@ -206,7 +206,7 @@ randomise_upgrade_preserved_slots <- function(params) { test_that("addSpecies preserves slots recently added to upgradeParams", { set.seed(42) - params <- newTraitParams(no_sp = 2, no_w = 20, info_level = 0) + params <- newTraitParams(no_sp = 2, no_w = 36, info_level = 0) params <- randomise_upgrade_preserved_slots(params) sp <- data.frame(species = "new", w_max = 10, k_vb = 1) @@ -229,7 +229,7 @@ test_that("addSpecies preserves the class", { if (!methods::isClass("AddSpeciesTestParams")) { methods::setClass("AddSpeciesTestParams", contains = "MizerParams") } - params <- as(newTraitParams(no_sp = 2, no_w = 20, info_level = 0), + params <- as(newTraitParams(no_sp = 2, no_w = 36, info_level = 0), "AddSpeciesTestParams") sp <- data.frame(species = "new", w_max = 10, k_vb = 1) p <- suppressWarnings(suppressMessages( @@ -244,12 +244,12 @@ test_that("addSpecies preserves the class", { test_that("removeSpecies works", { remove <- NS_species_params$species[2:11] reduced <- NS_species_params[!(NS_species_params$species %in% remove), ] - params <- newMultispeciesParams(NS_species_params, no_w = 20, + params <- newMultispeciesParams(NS_species_params, no_w = 36, max_w = 39900, min_w_pp = 9e-14, info_level = 0) p1 <- removeSpecies(params, species = remove) expect_equal(nrow(p1@species_params), nrow(params@species_params) - 10) - p2 <- newMultispeciesParams(reduced, no_w = 20, + p2 <- newMultispeciesParams(reduced, no_w = 36, max_w = 39900, min_w_pp = 9e-14, info_level = 0) p2@linecolour[2] = "#a08dfb" # update line colour expect_equal(p1, p2, ignore_attr = TRUE) @@ -415,21 +415,12 @@ test_that("expandSizeGrid works", { test_that("expandSizeGrid preserves existing data", { params <- expandSizeGrid(NS_params) - params@time_modified <- NS_params@time_modified - expect_true(all(names(NS_params@linecolour) %in% names(params@linecolour))) - expect_identical(params@linecolour[names(NS_params@linecolour)], - NS_params@linecolour) - expect_true(all(names(NS_params@linetype) %in% names(params@linetype))) - expect_identical(params@linetype[names(NS_params@linetype)], - NS_params@linetype) - params@linecolour <- NS_params@linecolour - params@linetype <- NS_params@linetype - expect_identical(compareParams(params, NS_params), "No differences") + expect_unchanged(params, NS_params) }) test_that("expandSizeGrid preserves slots recently added to upgradeParams", { set.seed(42) - params <- newTraitParams(no_sp = 2, no_w = 20, info_level = 0) + params <- newTraitParams(no_sp = 2, no_w = 36, info_level = 0) params <- randomise_upgrade_preserved_slots(params) p <- expandSizeGrid(params, new_max_w = max(params@w) * 10) @@ -449,7 +440,7 @@ test_that("expandSizeGrid preserves the class", { if (!methods::isClass("ExpandGridTestParams")) { methods::setClass("ExpandGridTestParams", contains = "MizerParams") } - params <- as(newTraitParams(no_sp = 2, no_w = 20, info_level = 0), + params <- as(newTraitParams(no_sp = 2, no_w = 36, info_level = 0), "ExpandGridTestParams") p <- expandSizeGrid(params, new_max_w = max(params@w) * 10) From 270dfc0bba10f62adf765e66253281ad6e0e6994 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 09:47:12 +0100 Subject: [PATCH 15/34] Speed up repeated test fixtures --- tests/testthat/test-MizerSim-class.R | 5 +- tests/testthat/test-animateSpectra.R | 38 ++++---- tests/testthat/test-calc-selectivity.R | 33 ++++--- tests/testthat/test-calibrate.R | 6 +- tests/testthat/test-get_initial_n.R | 9 +- tests/testthat/test-manipulate_species.R | 92 ++++++++++++-------- tests/testthat/test-resource_logistic.R | 8 +- tests/testthat/test-resource_semichemostat.R | 8 +- 8 files changed, 124 insertions(+), 75 deletions(-) diff --git a/tests/testthat/test-MizerSim-class.R b/tests/testthat/test-MizerSim-class.R index 62a375616..538a6f8da 100644 --- a/tests/testthat/test-MizerSim-class.R +++ b/tests/testthat/test-MizerSim-class.R @@ -1,4 +1,5 @@ params <- newMultispeciesParams(NS_species_params_gears, inter, info_level = 0) +short_ns_sim <- project(NS_params, t_max = 0.2, t_save = 0.1) # basic constructor sets dimensions properly ---- test_that("basic constructor sets dimensions properly", { @@ -48,7 +49,7 @@ test_that("basic constructor sets dimensions properly", { }) test_that("validSim works", { - sim <- project(NS_params, t_max = 0.2, t_save = 0.1) + sim <- short_ns_sim sim@n[3, 1, 1] <- Inf expect_warning(simt <- validSim(sim), "The simulation failed to work beyond time = 0.1") @@ -62,7 +63,7 @@ test_that("validSim works", { }) test_that("validSim also validates embedded params", { - sim <- project(NS_params, t_max = 0.2, t_save = 0.1) + sim <- short_ns_sim sim@params@species_params$w_min[1] <- 1e-10 expect_warning(sim2 <- validSim(sim), "smaller than the minimum") expect_equal(sim2@params@w_min_idx[[1]], 1) diff --git a/tests/testthat/test-animateSpectra.R b/tests/testthat/test-animateSpectra.R index a7edc25f3..de8e7e51c 100644 --- a/tests/testthat/test-animateSpectra.R +++ b/tests/testthat/test-animateSpectra.R @@ -1,5 +1,13 @@ +example_animate_sim <- project(example_params(), t_max = 2, t_save = 1, + effort = 1) +example_animate_long_sim <- project(example_params(), t_max = 5, t_save = 1, + effort = 1) +example_animate_high_effort_sim <- project(example_params(), t_max = 2, + t_save = 1, effort = 10) +ns_animate_sim <- project(NS_params, t_max = 2, t_save = 1, effort = 1) + test_that("animateSpectra does not throw error", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim sp <- sim@params@species_params$species expect_error(animateSpectra(sim, species = sp[1:2], time_range = c(1, 2), @@ -11,13 +19,13 @@ test_that("animateSpectra does not throw error", { }) test_that("animateSpectra returns a plotly object", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim result <- animateSpectra(sim, time_range = c(1, 2)) expect_s3_class(result, "plotly") }) test_that("animateSpectra handles species parameter correctly", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Test with specific species sp <- sim@params@species_params$species @@ -34,7 +42,7 @@ test_that("animateSpectra handles species parameter correctly", { }) test_that("animateSpectra handles time_range parameter correctly", { - sim <- project(example_params(), t_max = 5, t_save = 1, effort = 1) + sim <- example_animate_long_sim # Test with min/max vector expect_error(animateSpectra(sim, time_range = c(1, 3)), NA) @@ -47,7 +55,7 @@ test_that("animateSpectra handles time_range parameter correctly", { }) test_that("animateSpectra handles wlim parameter with NA values", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Test with both NA (should use defaults) expect_error(animateSpectra(sim, wlim = c(NA, NA), time_range = c(1, 2)), NA) @@ -63,7 +71,7 @@ test_that("animateSpectra handles wlim parameter with NA values", { }) test_that("animateSpectra handles ylim parameter with NA values", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Test with both NA (should use defaults) expect_error(animateSpectra(sim, ylim = c(NA, NA), time_range = c(1, 2)), NA) @@ -79,7 +87,7 @@ test_that("animateSpectra handles ylim parameter with NA values", { }) test_that("animateSpectra handles power parameter correctly", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Test with power = 0 (Number density) result <- animateSpectra(sim, power = 0, time_range = c(1, 2)) @@ -99,7 +107,7 @@ test_that("animateSpectra handles power parameter correctly", { }) test_that("animateSpectra handles total parameter correctly", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Test with total = FALSE (default) result <- animateSpectra(sim, total = FALSE, time_range = c(1, 2)) @@ -111,7 +119,7 @@ test_that("animateSpectra handles total parameter correctly", { }) test_that("animateSpectra handles resource parameter correctly", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Test with resource = TRUE (default) result <- animateSpectra(sim, resource = TRUE, time_range = c(1, 2)) @@ -123,7 +131,7 @@ test_that("animateSpectra handles resource parameter correctly", { }) test_that("animateSpectra validates input parameters", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Test invalid wlim length expect_error(animateSpectra(sim, wlim = c(1), time_range = c(1, 2))) @@ -135,7 +143,7 @@ test_that("animateSpectra validates input parameters", { }) test_that("animateSpectra uses consistent colors matching linecolour", { - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 1) + sim <- example_animate_sim # Get the result sp <- sim@params@species_params$species @@ -159,7 +167,7 @@ test_that("animateSpectra uses consistent colors matching linecolour", { test_that("animateSpectra maintains color consistency when species go extinct", { # Create a simulation where a species might have very low abundance - sim <- project(example_params(), t_max = 2, t_save = 1, effort = 10) + sim <- example_animate_high_effort_sim # Test with species selection sp <- sim@params@species_params$species @@ -181,7 +189,7 @@ test_that("animateSpectra maintains color consistency when species go extinct", }) test_that("animateSpectra adds resource and total traces when requested", { - sim <- project(NS_params, t_max = 2, t_save = 1, effort = 1) + sim <- ns_animate_sim built_plot <- plotly::plotly_build( animateSpectra(sim, @@ -219,7 +227,7 @@ test_that("animateSpectra handles background parameter correctly", { expect_false("Background" %in% trace_names_off) # background = TRUE on a model with no background species adds no "Background" trace - sim_plain <- project(NS_params, t_max = 2, t_save = 1, effort = 1) + sim_plain <- ns_animate_sim built_plain <- plotly::plotly_build( animateSpectra(sim_plain, species = "Cod", time_range = c(1, 2), resource = FALSE, background = TRUE) @@ -229,7 +237,7 @@ test_that("animateSpectra handles background parameter correctly", { }) test_that("animateSpectra sets the y axis title from power", { - sim <- project(NS_params, t_max = 2, t_save = 1, effort = 1) + sim <- ns_animate_sim built0 <- plotly::plotly_build(animateSpectra(sim, species = "Cod", time_range = c(1, 2), diff --git a/tests/testthat/test-calc-selectivity.R b/tests/testthat/test-calc-selectivity.R index a7e0e66ec..df155c541 100644 --- a/tests/testthat/test-calc-selectivity.R +++ b/tests/testthat/test-calc-selectivity.R @@ -1,9 +1,20 @@ +knife_edge_selectivity_species_params <- NS_species_params_gears +knife_edge_selectivity_species_params$sel_func <- "knife_edge" +knife_edge_selectivity_species_params$knife_edge_size <- 1000 +knife_edge_selectivity_params <- newMultispeciesParams( + knife_edge_selectivity_species_params, inter, info_level = 0) + +knife_edge_selectivity_species_params_no_length <- + knife_edge_selectivity_species_params[ + , !(names(knife_edge_selectivity_species_params) %in% + c("l25", "l50", "a", "b")) + ] +knife_edge_selectivity_params_no_length <- newMultispeciesParams( + knife_edge_selectivity_species_params_no_length, inter, info_level = 0) + test_that("calc_selectivity builds array and applies selectivity functions", { - spg <- NS_species_params_gears - spg$sel_func <- "knife_edge" - spg$knife_edge_size <- 1000 + spg <- knife_edge_selectivity_species_params_no_length spg$knife_edge_size[spg$gear == "Industrial"] <- 500 - spg <- spg[, !(names(spg) %in% c("l25", "l50", "a", "b"))] params <- newMultispeciesParams(spg, inter, info_level = 0) sel <- calc_selectivity(params) expect_equal(dim(sel), dim(params@selectivity)) @@ -13,10 +24,8 @@ test_that("calc_selectivity builds array and applies selectivity functions", { }) test_that("calc_selectivity leaves unspecified gear-species combinations at zero", { - spg <- NS_species_params_gears - spg$sel_func <- "knife_edge" - spg$knife_edge_size <- 1000 - params <- newMultispeciesParams(spg, inter, info_level = 0) + spg <- knife_edge_selectivity_species_params + params <- knife_edge_selectivity_params sel <- calc_selectivity(params) missing_species <- setdiff(params@species_params$species, @@ -27,17 +36,13 @@ test_that("calc_selectivity leaves unspecified gear-species combinations at zero }) test_that("calc_selectivity errors for missing or NA selectivity parameters", { - spg <- NS_species_params_gears - spg$sel_func <- "knife_edge" - spg$knife_edge_size <- 1000 - spg <- spg[, !(names(spg) %in% c("l25", "l50", "a", "b"))] + params_missing <- knife_edge_selectivity_params_no_length - params_missing <- newMultispeciesParams(spg, inter, info_level = 0) params_missing@gear_params$knife_edge_size <- NULL expect_error(calc_selectivity(params_missing), "missing in the gear_params dataframe") - params_na <- newMultispeciesParams(spg, inter, info_level = 0) + params_na <- knife_edge_selectivity_params_no_length params_na@gear_params$knife_edge_size[1] <- NA expect_error(calc_selectivity(params_na), "Some selectivity parameters are NA") }) diff --git a/tests/testthat/test-calibrate.R b/tests/testthat/test-calibrate.R index 0e2c74441..dacecbb6a 100644 --- a/tests/testthat/test-calibrate.R +++ b/tests/testthat/test-calibrate.R @@ -1,5 +1,7 @@ +example_calibrate_params <- example_params() + test_that("calibrateBiomass works", { - params <- example_params() + params <- example_calibrate_params # Does nothing when no observed biomass expect_identical(calibrateBiomass(params), params) species_params(params)$biomass_observed <- NA @@ -23,7 +25,7 @@ test_that("calibrateBiomass works", { test_that("calibrateNumber works", { - params <- example_params() + params <- example_calibrate_params # Does nothing when no observed Number expect_identical(calibrateNumber(params), params) species_params(params)$number_observed <- NA diff --git a/tests/testthat/test-get_initial_n.R b/tests/testthat/test-get_initial_n.R index af2795e64..c9367aee4 100644 --- a/tests/testthat/test-get_initial_n.R +++ b/tests/testthat/test-get_initial_n.R @@ -1,9 +1,14 @@ # get_initial_n ---- +edition1_initial_n_params <- withr::with_options( + list(mizer_defaults_edition = 1), + newMultispeciesParams(NS_species_params_gears, inter, info_level = 0) +) + test_that("get_initial_n is working properly in edition 1", { old <- getOption("mizer_defaults_edition") on.exit(options(mizer_defaults_edition = old), add = TRUE) options(mizer_defaults_edition = 1) - params <- newMultispeciesParams(NS_species_params_gears, inter, info_level = 0) + params <- edition1_initial_n_params n <- get_initial_n(params) no_sp <- nrow(params@species_params) for (i in 1:no_sp) { @@ -28,7 +33,7 @@ test_that("get_initial_n validates params and honours n0_mult in edition 1", { on.exit(options(mizer_defaults_edition = old), add = TRUE) options(mizer_defaults_edition = 1) - params <- newMultispeciesParams(NS_species_params_gears, inter, info_level = 0) + params <- edition1_initial_n_params n1 <- get_initial_n(params, n0_mult = 1) n2 <- get_initial_n(params, n0_mult = 2) expect_equal(n2, 2 * n1, ignore_attr = TRUE) diff --git a/tests/testthat/test-manipulate_species.R b/tests/testthat/test-manipulate_species.R index cc8689741..873255680 100644 --- a/tests/testthat/test-manipulate_species.R +++ b/tests/testthat/test-manipulate_species.R @@ -1,7 +1,36 @@ +example_manipulate_params <- example_params() +trait_manipulate_params <- newTraitParams() +small_trait_manipulate_params <- newTraitParams(no_sp = 2) +small_trait_grid_manipulate_params <- newTraitParams(no_sp = 2, no_w = 36, + info_level = 0) +ns_manipulate_params <- newMultispeciesParams(NS_species_params, + info_level = 0) +ns_manipulate_params_36 <- newMultispeciesParams( + NS_species_params, + no_w = 36, + max_w = 39900, + min_w_pp = 9e-14, + info_level = 0 +) +remove_ns_species <- NS_species_params$species[2:11] +reduced_ns_species_params <- + NS_species_params[!(NS_species_params$species %in% remove_ns_species), ] +reduced_ns_manipulate_params_36 <- newMultispeciesParams( + reduced_ns_species_params, + no_w = 36, + max_w = 39900, + min_w_pp = 9e-14, + info_level = 0 +) +lower_ns_species_params <- NS_species_params +lower_ns_species_params$species <- tolower(lower_ns_species_params$species) +lower_ns_manipulate_params <- newMultispeciesParams(lower_ns_species_params, + info_level = 0) + # addSpecies ---- test_that("addSpecies works when adding a second identical species", { - p <- newTraitParams() + p <- trait_manipulate_params no_sp <- nrow(p@species_params) species_params <- p@species_params[5, ] species_params$species <- "new" @@ -16,13 +45,13 @@ test_that("addSpecies works when adding a second identical species", { }) test_that("addSpecies does not allow duplicate species", { - p <- example_params() + p <- example_manipulate_params species_params <- p@species_params[3, ] expect_error(addSpecies(p, species_params), "You can not add species that are already there.") }) test_that("addSpecies handles gear params correctly", { - p <- newTraitParams(no_sp = 2) + p <- small_trait_manipulate_params sp <- data.frame(species = c("new1", "new2"), w_max = c(10, 100), k_vb = c(4, 1), @@ -64,7 +93,7 @@ test_that("addSpecies handles gear params correctly", { }) test_that("addSpecies handles interaction matrix correctly", { - p <- newTraitParams(no_sp = 2) + p <- small_trait_manipulate_params p <- setInteraction(p, interaction = matrix(1:4/8, ncol = 2)) sp <- data.frame(species = c("new1", "new2"), w_max = c(10, 100), @@ -96,7 +125,7 @@ test_that("addSpecies works when adding a species with a larger w_max", { sp <- data.frame(species = "Blue whale", w_max = 5e4, w_mat = 1e3, beta = 1000, sigma = 2, k_vb = 0.6, gear = 'Whale hunter') - params <- example_params() + params <- example_manipulate_params # change a slot to test that such changes will be preserved params <- setMaxIntakeRate(params, 2 * getMaxIntakeRate(params)) @@ -133,7 +162,7 @@ test_that("addSpecies has other documented properties", { k_vb = c(4, 1), n = 2 / 3, p = 2 / 3) - (p <- addSpecies(example_params(), sp)) |> + (p <- addSpecies(example_manipulate_params, sp)) |> expect_message() # New species have 0 reproduction level @@ -148,7 +177,7 @@ test_that("addSpecies has other documented properties", { test_that("Added species stay at low abundance", { # Use example from man page - params <- newTraitParams() + params <- trait_manipulate_params species_params <- data.frame( species = "mullet", w_max = 173, @@ -167,7 +196,7 @@ test_that("Added species stay at low abundance", { test_that("addSpecies preserves both given and other species params", { - params <- newTraitParams() + params <- trait_manipulate_params params@given_species_params$b <- 3 params@species_params$w_mat25 <- params@species_params$w_mat25 * 1.01 sp <- data.frame(species = "new", @@ -206,7 +235,7 @@ randomise_upgrade_preserved_slots <- function(params) { test_that("addSpecies preserves slots recently added to upgradeParams", { set.seed(42) - params <- newTraitParams(no_sp = 2, no_w = 36, info_level = 0) + params <- small_trait_grid_manipulate_params params <- randomise_upgrade_preserved_slots(params) sp <- data.frame(species = "new", w_max = 10, k_vb = 1) @@ -229,8 +258,7 @@ test_that("addSpecies preserves the class", { if (!methods::isClass("AddSpeciesTestParams")) { methods::setClass("AddSpeciesTestParams", contains = "MizerParams") } - params <- as(newTraitParams(no_sp = 2, no_w = 36, info_level = 0), - "AddSpeciesTestParams") + params <- as(small_trait_grid_manipulate_params, "AddSpeciesTestParams") sp <- data.frame(species = "new", w_max = 10, k_vb = 1) p <- suppressWarnings(suppressMessages( addSpecies(params, sp, info_level = 0) @@ -242,15 +270,11 @@ test_that("addSpecies preserves the class", { # removeSpecies ---- test_that("removeSpecies works", { - remove <- NS_species_params$species[2:11] - reduced <- NS_species_params[!(NS_species_params$species %in% remove), ] - params <- newMultispeciesParams(NS_species_params, no_w = 36, - max_w = 39900, min_w_pp = 9e-14, - info_level = 0) + remove <- remove_ns_species + params <- ns_manipulate_params_36 p1 <- removeSpecies(params, species = remove) expect_equal(nrow(p1@species_params), nrow(params@species_params) - 10) - p2 <- newMultispeciesParams(reduced, no_w = 36, - max_w = 39900, min_w_pp = 9e-14, info_level = 0) + p2 <- reduced_ns_manipulate_params_36 p2@linecolour[2] = "#a08dfb" # update line colour expect_equal(p1, p2, ignore_attr = TRUE) sim1 <- project(p1, t_max = 0.4, t_save = 0.4) @@ -260,17 +284,17 @@ test_that("removeSpecies works", { test_that("removeSpecies works with 3d pred kernel", { # It should make no difference whether we first set full pred kernel and # then remove a species, or the other way around. - params1 <- example_params() + params1 <- example_manipulate_params sp_name <- params1@species_params$species[3] params1 <- setPredKernel(params1, pred_kernel = getPredKernel(params1)) params1 <- removeSpecies(params1, sp_name) - params2 <- example_params() + params2 <- example_manipulate_params params2 <- removeSpecies(params2, sp_name) params2 <- setPredKernel(params2, pred_kernel = getPredKernel(params2)) expect_unchanged(params1, params2) }) test_that("removeSpecies works correctly on gear_params", { - p <- example_params() + p <- example_manipulate_params sp_name <- p@species_params$species[3] params <- removeSpecies(p, sp_name) expect_equal(nrow(params@gear_params), 1) @@ -287,7 +311,7 @@ test_that("removeSpecies accepts numeric and logical selectors", { }) test_that("adding and then removing species leaves params unaltered", { - params <- newMultispeciesParams(NS_species_params, info_level = 0) + params <- ns_manipulate_params # two arbitrary species sp <- data.frame(species = c("new1", "new2"), w_max = c(10, 100), @@ -322,12 +346,11 @@ test_that("adding and then removing species leaves params unaltered", { # renameSpecies ---- test_that("renameSpecies works", { - sp <- NS_species_params - p <- newMultispeciesParams(sp, info_level = 0) - sp$species <- tolower(sp$species) + sp <- lower_ns_species_params + p <- ns_manipulate_params replace <- NS_species_params$species names(replace) <- sp$species - p2 <- newMultispeciesParams(sp, info_level = 0) + p2 <- lower_ns_manipulate_params p2 <- renameSpecies(p2, replace) p2@time_modified <- p@time_modified p2@time_created <- p@time_created @@ -346,13 +369,14 @@ test_that("renameSpecies updates linked species names", { expect_true(all(replace %in% dimnames(getCatchability(p))$sp)) }) test_that("renameSpecies warns on wrong names", { - expect_error(renameSpecies(example_params(), c(Kod = "cod", Hadok = "haddock")), + expect_error(renameSpecies(example_manipulate_params, + c(Kod = "cod", Hadok = "haddock")), "Kod, Hadok do not exist") }) # renameGear ---- test_that("renameGear works", { - p <- example_params() + p <- example_manipulate_params # Get original gear names original_gears <- dimnames(p@selectivity)$gear gear1 <- original_gears[1] @@ -396,7 +420,8 @@ test_that("renameGear works", { }) test_that("renameGear warns on wrong names", { - expect_error(renameGear(example_params(), c(Trawler = "New_Trawl", NonExistent = "Other")), + expect_error(renameGear(example_manipulate_params, + c(Trawler = "New_Trawl", NonExistent = "Other")), "Trawler, NonExistent do not exist") }) @@ -420,7 +445,7 @@ test_that("expandSizeGrid preserves existing data", { test_that("expandSizeGrid preserves slots recently added to upgradeParams", { set.seed(42) - params <- newTraitParams(no_sp = 2, no_w = 36, info_level = 0) + params <- small_trait_grid_manipulate_params params <- randomise_upgrade_preserved_slots(params) p <- expandSizeGrid(params, new_max_w = max(params@w) * 10) @@ -440,8 +465,7 @@ test_that("expandSizeGrid preserves the class", { if (!methods::isClass("ExpandGridTestParams")) { methods::setClass("ExpandGridTestParams", contains = "MizerParams") } - params <- as(newTraitParams(no_sp = 2, no_w = 36, info_level = 0), - "ExpandGridTestParams") + params <- as(small_trait_grid_manipulate_params, "ExpandGridTestParams") p <- expandSizeGrid(params, new_max_w = max(params@w) * 10) expect_s4_class(p, "ExpandGridTestParams") @@ -450,7 +474,7 @@ test_that("expandSizeGrid preserves the class", { # time_modified ---- test_that("addSpecies updates `time_modified`", { - p <- newMultispeciesParams(NS_species_params, info_level = 0) + p <- ns_manipulate_params sp <- data.frame(species = "new", w_max = 100, k_vb = 1) p2 <- suppressMessages(addSpecies(p, sp)) expect_false(identical(p2@time_modified, p@time_modified)) @@ -467,7 +491,7 @@ test_that("renameSpecies updates `time_modified`", { }) test_that("renameGear updates `time_modified`", { - p <- example_params() + p <- example_manipulate_params gear1 <- dimnames(p@selectivity)$gear[[1]] p2 <- renameGear(p, setNames("new_gear", gear1)) expect_false(identical(p2@time_modified, p@time_modified)) diff --git a/tests/testthat/test-resource_logistic.R b/tests/testthat/test-resource_logistic.R index ba709a13c..17edc409f 100644 --- a/tests/testthat/test-resource_logistic.R +++ b/tests/testthat/test-resource_logistic.R @@ -1,6 +1,8 @@ +trait_resource_logistic_params <- newTraitParams() + test_that("resource_logistic preserves steady state", { # Set resource parameters so that we are at steady state - params <- newTraitParams() + params <- trait_resource_logistic_params params <- setResource( params, resource_dynamics = "resource_logistic", @@ -27,7 +29,7 @@ test_that("resource_logistic evolves towards steady state", { # a large factor s and simultaneously scaling up the plankton abundance # so as to keep the income of the fish constant. s <- 1e10 - params <- newTraitParams() + params <- trait_resource_logistic_params species_params(params)$gamma <- species_params(params)$gamma / s initialNResource(params) <- initialNResource(params) * s # Set resource parameters so that we are at steady state @@ -112,7 +114,7 @@ test_that("balance_resource_logistic nudges capacity to avoid division by zero", }) test_that("balance_resource_logistic keeps current capacity when unidentifiable", { - params <- newTraitParams() + params <- trait_resource_logistic_params initialN(params)[] <- 0 keep <- params@cc_pp[1] rate <- getResourceMort(params) diff --git a/tests/testthat/test-resource_semichemostat.R b/tests/testthat/test-resource_semichemostat.R index 424d05c53..d3d7b4c40 100644 --- a/tests/testthat/test-resource_semichemostat.R +++ b/tests/testthat/test-resource_semichemostat.R @@ -1,6 +1,8 @@ +trait_resource_semichemostat_params <- newTraitParams() + test_that("resource_semichemostat preserves steady state", { # Set resource parameters so that we are at steady state - params <- newTraitParams() + params <- trait_resource_semichemostat_params params <- setResource(params, resource_capacity = 2 * initialNResource(params), resource_dynamics = "resource_semichemostat") @@ -25,7 +27,7 @@ test_that("resource_semichemostat evolves towards steady state", { # a large factor s and simultaneously scaling up the plankton abundance # so as to keep the income of the fish constant. s <- 1e10 - params <- newTraitParams() + params <- trait_resource_semichemostat_params species_params(params)$gamma <- species_params(params)$gamma / s initialNResource(params) <- initialNResource(params) * s # Set resource parameters so that we are at steady state @@ -113,7 +115,7 @@ test_that("balance_resource_semichemostat nudges capacity to avoid division by z }) test_that("balance_resource_semichemostat keeps current rate when unidentifiable", { - params <- newTraitParams() + params <- trait_resource_semichemostat_params initialN(params)[] <- 0 keep <- params@rr_pp[1] capacity <- initialNResource(params) From 8552b5318ceaf3a8ab3cd5e9c0d8dcd3474f4cbd Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 10:03:58 +0100 Subject: [PATCH 16/34] Refactor tests to reduce simulation time for efficiency - Updated multiple test files to change the `t_max` parameter from 10 to 2 in various `project` function calls, optimizing test execution time. - Adjusted expected dimensions in tests to align with the new simulation time. - Ensured that all relevant assertions and checks are consistent with the reduced time frame. --- tests/testthat/_snaps/indicator_functions.md | 60 +--- tests/testthat/_snaps/summary_methods.md | 280 ++++++------------- tests/testthat/test-indicator_functions.R | 8 +- tests/testthat/test-project.R | 16 +- tests/testthat/test-project_methods.R | 18 +- tests/testthat/test-rate_functions.R | 2 +- tests/testthat/test-selectivity_funcs.R | 27 +- tests/testthat/test-single_species.R | 2 +- tests/testthat/test-summary_methods.R | 12 +- tests/testthat/test-wrapper_functions.R | 16 +- 10 files changed, 161 insertions(+), 280 deletions(-) diff --git a/tests/testthat/_snaps/indicator_functions.md b/tests/testthat/_snaps/indicator_functions.md index 2639f2c92..f384b0040 100644 --- a/tests/testthat/_snaps/indicator_functions.md +++ b/tests/testthat/_snaps/indicator_functions.md @@ -3,70 +3,34 @@ Code prop Output - 0 0.5 1 1.5 2 2.5 3 - 0.26925519 0.01698413 0.03196148 0.20900194 0.44008356 0.63864680 0.77473354 - 3.5 4 4.5 5 5.5 6 6.5 - 0.85819401 0.79177149 0.25892592 0.17664525 0.33276549 0.48876696 0.57116942 - 7 7.5 8 8.5 9 9.5 10 - 0.39280523 0.14873450 0.07530515 0.06799577 0.08450497 0.10672174 0.12465102 - 10.5 11 11.5 12 12.5 13 13.5 - 0.15725916 0.20998563 0.25262044 0.22074698 0.12632169 0.12454533 0.16987230 - 14 14.5 15 15.5 16 16.5 17 - 0.21382524 0.18553926 0.09037121 0.11578632 0.18360999 0.25228806 0.26524622 - 17.5 18 18.5 19 19.5 20 - 0.10280200 0.07783290 0.12626045 0.19298462 0.24655068 0.19697190 + 0 0.5 1 1.5 2 + 0.26925519 0.01698413 0.03196148 0.20900194 0.44008356 # getMeanWeight works Code mw Output - 0 0.5 1 1.5 2 2.5 3 - 767.53011 69.09766 69.89657 191.38114 387.59529 634.61024 912.27456 - 3.5 4 4.5 5 5.5 6 6.5 - 1202.18388 961.11905 75.07344 57.20683 108.01262 218.11602 287.67786 - 7 7.5 8 8.5 9 9.5 10 - 55.77707 35.71154 47.57239 75.14351 112.44499 131.75273 119.90371 - 10.5 11 11.5 12 12.5 13 13.5 - 131.73882 173.23466 181.08308 95.14511 72.24514 98.87037 155.70279 - 14 14.5 15 15.5 16 16.5 17 - 196.24131 83.83311 69.10626 111.86344 196.49824 307.22162 113.67807 - 17.5 18 18.5 19 19.5 20 - 56.97195 84.22200 147.53358 247.48012 243.83835 63.61455 + 0 0.5 1 1.5 2 + 767.53011 69.09766 69.89657 191.38114 387.59529 # getMeanMaxWeight works Code getMeanMaxWeight(sim, measure = "both") Output - mmw_numbers mmw_biomass - 0 135.6361 4629.458 - 1 600.1607 1376.281 - 2 843.5139 4406.216 - 3 986.9465 9063.254 - 4 1094.1022 10561.412 - 5 1055.7711 9431.078 - 6 1229.4380 9161.926 - 7 1654.1073 9700.953 - 8 1923.1869 9706.206 - 9 2267.9466 9551.113 - 10 2535.6313 9253.220 + mmw_numbers mmw_biomass + 0 135.6361 4629.458 + 1 600.1607 1376.281 + 2 843.5139 4406.216 # getCommunitySlope works Code slope_b3 Output - slope intercept r2 - 0 -0.2897714 12.23882 0.5625413 - 1 -1.0649175 21.68013 0.7202647 - 2 -0.7952623 22.74183 0.6617018 - 3 -0.6679574 23.11060 0.6872080 - 4 -0.6072763 23.28407 0.7163831 - 5 -0.5920434 23.41886 0.7549412 - 6 -0.6124380 23.73776 0.8142898 - 7 -0.6538982 24.20058 0.8573667 - 8 -0.6789819 24.44596 0.8803066 - 9 -0.7261858 24.76189 0.9085528 - 10 -0.7721135 25.14127 0.9257311 + slope intercept r2 + 0 -0.2897714 12.23882 0.5625413 + 1 -1.0649175 21.68013 0.7202647 + 2 -0.7952623 22.74183 0.6617018 diff --git a/tests/testthat/_snaps/summary_methods.md b/tests/testthat/_snaps/summary_methods.md index f1f6e6677..f8b8bd4ba 100644 --- a/tests/testthat/_snaps/summary_methods.md +++ b/tests/testthat/_snaps/summary_methods.md @@ -6,194 +6,98 @@ , , sp = Sprat gear - time Industrial Pelagic Beam Otter - 0 38044416 0 0 0 - 1 558316006 0 0 0 - 2 8229795127 0 0 0 - 3 16058989646 0 0 0 - 4 84325094857 0 0 0 - 5 220212693088 0 0 0 - 6 203621711108 0 0 0 - 7 126537188612 0 0 0 - 8 103313111309 0 0 0 - 9 76522697786 0 0 0 - 10 42658404945 0 0 0 + time Industrial Pelagic Beam Otter + 0 38044416 0 0 0 + 1 558316006 0 0 0 + 2 8229795127 0 0 0 , , sp = Sandeel gear time Industrial Pelagic Beam Otter - 0 6.335333e+07 0 0 0 - 1 2.807324e+11 0 0 0 - 2 7.195382e+11 0 0 0 - 3 6.294512e+11 0 0 0 - 4 8.923957e+11 0 0 0 - 5 1.173624e+12 0 0 0 - 6 1.196270e+12 0 0 0 - 7 1.125332e+12 0 0 0 - 8 1.105297e+12 0 0 0 - 9 1.057050e+12 0 0 0 - 10 1.000944e+12 0 0 0 + 0 63353332 0 0 0 + 1 280732384345 0 0 0 + 2 719538179316 0 0 0 , , sp = N.pout gear time Industrial Pelagic Beam Otter - 0 50722662 0 0 0 - 1 211366746964 0 0 0 - 2 279313741500 0 0 0 - 3 32400674242 0 0 0 - 4 36414157660 0 0 0 - 5 94203749139 0 0 0 - 6 112115105533 0 0 0 - 7 86795893755 0 0 0 - 8 93190701456 0 0 0 - 9 92635220566 0 0 0 - 10 91443894802 0 0 0 + 0 50722662 0 0 0 + 1 211366746964 0 0 0 + 2 279313741500 0 0 0 , , sp = Herring gear time Industrial Pelagic Beam Otter - 0 0 30658037 0 0 - 1 0 5477035839 0 0 - 2 0 240269222872 0 0 - 3 0 235093127613 0 0 - 4 0 76831870661 0 0 - 5 0 128476347684 0 0 - 6 0 355665239270 0 0 - 7 0 398695209111 0 0 - 8 0 295869946271 0 0 - 9 0 282052687956 0 0 - 10 0 276057839734 0 0 + 0 0 30658037 0 0 + 1 0 5477035839 0 0 + 2 0 240269222872 0 0 , , sp = Dab gear time Industrial Pelagic Beam Otter - 0 0 0 45365320 0 - 1 0 0 22400577006 0 - 2 0 0 57675462778 0 - 3 0 0 18780950158 0 - 4 0 0 11895946615 0 - 5 0 0 19121152098 0 - 6 0 0 19328258770 0 - 7 0 0 15198687290 0 - 8 0 0 12828931523 0 - 9 0 0 9618321181 0 - 10 0 0 7652198488 0 + 0 0 0 45365320 0 + 1 0 0 22400577006 0 + 2 0 0 57675462778 0 , , sp = Whiting gear time Industrial Pelagic Beam Otter - 0 0 0 0 43093552 - 1 0 0 0 7240286452 - 2 0 0 0 109460814009 - 3 0 0 0 61917376550 - 4 0 0 0 39948194825 - 5 0 0 0 118403971086 - 6 0 0 0 164075894541 - 7 0 0 0 133905073930 - 8 0 0 0 127357779567 - 9 0 0 0 120665336278 - 10 0 0 0 116817508835 + 0 0 0 0 43093552 + 1 0 0 0 7240286452 + 2 0 0 0 109460814009 , , sp = Sole gear - time Industrial Pelagic Beam Otter - 0 0 0 42294188 0 - 1 0 0 843009366 0 - 2 0 0 25800180144 0 - 3 0 0 82833388096 0 - 4 0 0 86869817350 0 - 5 0 0 117785662356 0 - 6 0 0 178627553633 0 - 7 0 0 183203100846 0 - 8 0 0 139592183973 0 - 9 0 0 112279353114 0 - 10 0 0 103421881515 0 + time Industrial Pelagic Beam Otter + 0 0 0 42294188 0 + 1 0 0 843009366 0 + 2 0 0 25800180144 0 , , sp = Gurnard gear time Industrial Pelagic Beam Otter - 0 0 0 0 41047176 - 1 0 0 0 1631749055 - 2 0 0 0 12238303048 - 3 0 0 0 4724782150 - 4 0 0 0 4383508244 - 5 0 0 0 17317077547 - 6 0 0 0 38324622639 - 7 0 0 0 38547946693 - 8 0 0 0 35567923285 - 9 0 0 0 40503456595 - 10 0 0 0 41969161780 + 0 0 0 0 41047176 + 1 0 0 0 1631749055 + 2 0 0 0 12238303048 , , sp = Plaice gear - time Industrial Pelagic Beam Otter - 0 0 0 37989527 0 - 1 0 0 18734282 0 - 2 0 0 157323296 0 - 3 0 0 758391480 0 - 4 0 0 884584319 0 - 5 0 0 2047420621 0 - 6 0 0 13379631135 0 - 7 0 0 39170803422 0 - 8 0 0 70604173632 0 - 9 0 0 169757646571 0 - 10 0 0 393502381428 0 + time Industrial Pelagic Beam Otter + 0 0 0 37989527 0 + 1 0 0 18734282 0 + 2 0 0 157323296 0 , , sp = Haddock gear time Industrial Pelagic Beam Otter - 0 0 0 0 3.550657e+07 - 1 0 0 0 4.693011e+10 - 2 0 0 0 1.318105e+12 - 3 0 0 0 1.360711e+12 - 4 0 0 0 6.469540e+11 - 5 0 0 0 3.490267e+11 - 6 0 0 0 3.727775e+11 - 7 0 0 0 4.299409e+11 - 8 0 0 0 3.611812e+11 - 9 0 0 0 3.517122e+11 - 10 0 0 0 3.959557e+11 + 0 0 0 0 3.550657e+07 + 1 0 0 0 4.693011e+10 + 2 0 0 0 1.318105e+12 , , sp = Cod gear time Industrial Pelagic Beam Otter - 0 0 0 0 28430360 - 1 0 0 0 346033675 - 2 0 0 0 101364440036 - 3 0 0 0 412920782014 - 4 0 0 0 493468900737 - 5 0 0 0 447568478029 - 6 0 0 0 474874102324 - 7 0 0 0 550299321303 - 8 0 0 0 585450761600 - 9 0 0 0 576043900031 - 10 0 0 0 558075401042 + 0 0 0 0 28430360 + 1 0 0 0 346033675 + 2 0 0 0 101364440036 , , sp = Saithe gear - time Industrial Pelagic Beam Otter - 0 0 0 0 24170110 - 1 0 0 0 21712974 - 2 0 0 0 3378214617 - 3 0 0 0 27617463179 - 4 0 0 0 362749754076 - 5 0 0 0 775185663285 - 6 0 0 0 639993286233 - 7 0 0 0 564958065619 - 8 0 0 0 575572485756 - 9 0 0 0 555930832387 - 10 0 0 0 543246652629 + time Industrial Pelagic Beam Otter + 0 0 0 0 24170110 + 1 0 0 0 21712974 + 2 0 0 0 3378214617 # getYield works @@ -201,19 +105,19 @@ Code y Output - Yield rate (11 times x 12 species) [g/year] - Sprat: min=3.8e+07 mean=8.02e+10 max=2.2e+11 - Sandeel: min=63400000 mean=8.35e+11 max=1.2e+12 - N.pout: min=50700000 mean=1.03e+11 max=2.79e+11 - Herring: min=30700000 mean=2.09e+11 max=3.99e+11 - Dab: min=45400000 mean=1.77e+10 max=5.77e+10 - Whiting: min=43100000 mean=9.09e+10 max=1.64e+11 - Sole: min=42300000 mean=9.38e+10 max=1.83e+11 - Gurnard: min=4.1e+07 mean=2.14e+10 max=4.2e+10 - Plaice: min=18700000 mean=6.28e+10 max=3.94e+11 - Haddock: min=35500000 mean=5.12e+11 max=1.36e+12 - Cod: min=28400000 mean=3.82e+11 max=5.85e+11 - Saithe: min=21700000 mean=3.68e+11 max=7.75e+11 + Yield rate (3 times x 12 species) [g/year] + Sprat: min=3.8e+07 mean=2.94e+09 max=8.23e+09 + Sandeel: min=63400000 mean=3.33e+11 max=7.2e+11 + N.pout: min=50700000 mean=1.64e+11 max=2.79e+11 + Herring: min=30700000 mean=8.19e+10 max=2.4e+11 + Dab: min=45400000 mean=2.67e+10 max=5.77e+10 + Whiting: min=43100000 mean=3.89e+10 max=1.09e+11 + Sole: min=42300000 mean=8.9e+09 max=2.58e+10 + Gurnard: min=4.1e+07 mean=4.64e+09 max=1.22e+10 + Plaice: min=18700000 mean=71300000 max=1.57e+08 + Haddock: min=35500000 mean=4.55e+11 max=1.32e+12 + Cod: min=28400000 mean=3.39e+10 max=1.01e+11 + Saithe: min=21700000 mean=1.14e+09 max=3.38e+09 # getDiet works with proportion = FALSE @@ -4034,55 +3938,55 @@ Code ssb Output - Spawning stock biomass (11 times x 12 species) [g] - Sprat: min=37100000 mean=7.59e+10 max=2.07e+11 - Sandeel: min=62700000 mean=8.15e+11 max=1.17e+12 - N.pout: min=49700000 mean=9.57e+10 max=2.71e+11 - Herring: min=31600000 mean=2.31e+11 max=4.32e+11 - Dab: min=45400000 mean=1.78e+10 max=5.76e+10 - Whiting: min=4.3e+07 mean=9.01e+10 max=1.62e+11 - Sole: min=42100000 mean=8.88e+10 max=1.74e+11 - Gurnard: min=40900000 mean=1.99e+10 max=3.92e+10 - Plaice: min=19900000 mean=6.51e+10 max=4.03e+11 - Haddock: min=35400000 mean=4.88e+11 max=1.33e+12 - Cod: min=28300000 mean=3.76e+11 max=5.78e+11 - Saithe: min=2.3e+07 mean=3.65e+11 max=7.65e+11 + Spawning stock biomass (3 times x 12 species) [g] + Sprat: min=37100000 mean=2.81e+09 max=7.81e+09 + Sandeel: min=62700000 mean=3.21e+11 max=7.02e+11 + N.pout: min=49700000 mean=1.54e+11 max=2.71e+11 + Herring: min=31600000 mean=9.28e+10 max=2.71e+11 + Dab: min=45400000 mean=2.69e+10 max=5.76e+10 + Whiting: min=4.3e+07 mean=3.84e+10 max=1.08e+11 + Sole: min=42100000 mean=8.43e+09 max=2.44e+10 + Gurnard: min=40900000 mean=4.26e+09 max=1.12e+10 + Plaice: min=19900000 mean=86500000 max=2.02e+08 + Haddock: min=35400000 mean=4.14e+11 max=1.2e+12 + Cod: min=28300000 mean=3.18e+10 max=9.51e+10 + Saithe: min=2.3e+07 mean=1.12e+09 max=3.33e+09 # getBiomass works Code biomass Output - Biomass (11 times x 12 species) [g] - Sprat: min=65500000 mean=2.4e+11 max=5.86e+11 - Sandeel: min=70700000 mean=9.63e+11 max=1.34e+12 - N.pout: min=64100000 mean=3.87e+11 max=8.84e+11 - Herring: min=47300000 mean=7.44e+11 max=1.29e+12 - Dab: min=4.9e+07 mean=2.71e+10 max=6.93e+10 - Whiting: min=45900000 mean=1.89e+11 max=2.95e+11 - Sole: min=46400000 mean=2.22e+11 max=3.87e+11 - Gurnard: min=43800000 mean=1.15e+11 max=1.83e+11 - Plaice: min=39400000 mean=5.03e+11 max=2.08e+12 - Haddock: min=36900000 mean=9.59e+11 max=2.12e+12 - Cod: min=29500000 mean=4.52e+11 max=6.67e+11 - Saithe: min=24900000 mean=5.78e+11 max=9.41e+11 + Biomass (3 times x 12 species) [g] + Sprat: min=65500000 mean=2.79e+10 max=6.99e+10 + Sandeel: min=70700000 mean=4.26e+11 max=8.33e+11 + N.pout: min=64100000 mean=4.27e+11 max=8.84e+11 + Herring: min=47300000 mean=2.77e+11 max=6.63e+11 + Dab: min=4.9e+07 mean=4.05e+10 max=6.93e+10 + Whiting: min=45900000 mean=8.19e+10 max=1.73e+11 + Sole: min=46400000 mean=7.07e+10 max=1.79e+11 + Gurnard: min=43800000 mean=2.16e+10 max=4.08e+10 + Plaice: min=39400000 mean=3.64e+09 max=7.14e+09 + Haddock: min=36900000 mean=8.93e+11 max=2.12e+12 + Cod: min=29500000 mean=7.72e+10 max=2.23e+11 + Saithe: min=24900000 mean=2.19e+10 max=6.52e+10 # getN works Code N Output - Abundance (11 times x 12 species) - Sprat: min=23700000 mean=2.29e+11 max=3.82e+11 - Sandeel: min=21900000 mean=2.49e+11 max=3.06e+11 - N.pout: min=7620000 mean=1.08e+12 max=1.27e+12 - Herring: min=2140000 mean=1.96e+11 max=2.7e+11 - Dab: min=2220000 mean=3.79e+09 max=7.91e+09 - Whiting: min=569000 mean=8.54e+10 max=1.15e+11 - Sole: min=794000 mean=1.83e+10 max=2.68e+10 - Gurnard: min=1040000 mean=1.86e+11 max=2.73e+11 - Plaice: min=216000 mean=1.53e+12 max=8.28e+12 - Haddock: min=145000 mean=2.05e+11 max=2.63e+11 - Cod: min=13700 mean=1.49e+09 max=1.89e+09 - Saithe: min=13700 mean=1.99e+10 max=2.66e+10 + Abundance (3 times x 12 species) + Sprat: min=23700000 mean=8.82e+10 max=2.3e+11 + Sandeel: min=21900000 mean=1.63e+11 max=2.48e+11 + N.pout: min=7620000 mean=8.38e+11 max=1.27e+12 + Herring: min=2140000 mean=1.06e+11 max=1.98e+11 + Dab: min=2220000 mean=4.33e+09 max=7.91e+09 + Whiting: min=569000 mean=5.09e+10 max=8.79e+10 + Sole: min=794000 mean=1.21e+10 max=2.42e+10 + Gurnard: min=1040000 mean=6.86e+10 max=1.74e+11 + Plaice: min=216000 mean=1.99e+09 max=3.94e+09 + Haddock: min=145000 mean=1.29e+11 max=2e+11 + Cod: min=13700 mean=8.08e+08 max=1.57e+09 + Saithe: min=13700 mean=5.94e+09 max=1.77e+10 diff --git a/tests/testthat/test-indicator_functions.R b/tests/testthat/test-indicator_functions.R index cb1257d10..5b0243b0c 100644 --- a/tests/testthat/test-indicator_functions.R +++ b/tests/testthat/test-indicator_functions.R @@ -6,14 +6,14 @@ species_params$pred_kernel_type <- "truncated_lognormal" params <- newMultispeciesParams(species_params, inter, min_w_pp = 1e-12, n = 2/3, p = 0.7, lambda = 2.8 - 2/3, initial_effort = 1, info_level = 0) -sim <- project(params, t_max = 10) +sim <- project(params, t_max = 2) # getProportionOfLargeFish ---- test_that("getProportionOfLargeFish works", { - sim <- project(params, effort = 1, t_max = 20, dt = 0.5, t_save = 0.5) + sim <- project(params, effort = 1, t_max = 2, dt = 0.5, t_save = 0.5) # noddy test - using full range of sizes prop <- getProportionOfLargeFish(sim, threshold_w = 500) - time_idx <- 40 + time_idx <- length(getTimes(sim)) threshold_w <- sim@params@w > 500 total_biomass <- sum(sweep(sim@n[time_idx, , ], 2, sim@params@w * sim@params@dw, "*")) @@ -86,7 +86,7 @@ test_that("getProportionOfLargeFish works for MizerParams", { # getMeanWeight ---- test_that("getMeanWeight works", { - sim <- project(params, t_max = 20, dt = 0.5, t_save = 0.5) + sim <- project(params, t_max = 2, dt = 0.5, t_save = 0.5) # all species, all size range total_biomass <- apply(sweep(sim@n, 3, sim@params@w * sim@params@dw, "*"), 1, sum) diff --git a/tests/testthat/test-project.R b/tests/testthat/test-project.R index c6a4358ff..1a4186401 100644 --- a/tests/testthat/test-project.R +++ b/tests/testthat/test-project.R @@ -139,16 +139,16 @@ test_that("Gear checking and sorting is OK", { gear_names = gear_names) gear_names <- dimnames(params_gear@catchability)[[1]] # Single vector of effort - sim <- project(params_gear, effort = 0.3, t_max = 10) - expect_true(all(sim@effort == 0.3)) + sim <- project(params_gear, effort = 0.3, t_max = 2) + expect_true(all(sim@effort == 0.3)) # Also check that order of gear names in resulting effort matches catchability expect_true(all(dimnames(sim@effort)$gear == gear_names)) # Effort vector # Should give same result effort_vec <- c(Other = 1, Industrial = 0) effort_vec2 <- c(Industrial = 0, Other = 1) - sim <- project(params_gear, effort = effort_vec, t_max = 10) - sim2 <- project(params_gear, effort = effort_vec2, t_max = 10) + sim <- project(params_gear, effort = effort_vec, t_max = 2) + sim2 <- project(params_gear, effort = effort_vec2, t_max = 2) expect_true(all(sim@effort[, "Industrial"] == 0)) expect_true(all(sim@effort[, "Other"] == 1)) expect_true(all(sim2@effort[, "Industrial"] == 0)) @@ -157,14 +157,14 @@ test_that("Gear checking and sorting is OK", { expect_true(all(dimnames(sim2@effort)$gear == gear_names)) # Should fail - number of gears wrong effort_vec3 <- c(Industrial = 0, Other = 1, Dummy = 0.5) - expect_error(project(params_gear, effort = effort_vec3, t_max = 10)) + expect_error(project(params_gear, effort = effort_vec3, t_max = 2)) effort_vec4 <- c(Industrial = 0) # Is OK because that gear exists - expect_error(project(params_gear, effort = effort_vec4, t_max = 10), NA) + expect_error(project(params_gear, effort = effort_vec4, t_max = 2), NA) # Should fail - names of gears wrong effort_vec5 <- c(Industrial = 0, Dummy = 1) - expect_error(project(params_gear, effort = effort_vec5, t_max = 10)) + expect_error(project(params_gear, effort = effort_vec5, t_max = 2)) # Array effort - t_steps <- 10 + t_steps <- 3 effort1 <- array(1, dim = c(t_steps, 2)) expect_error(project(params_gear, effort = effort1)) # Different order - should give same result diff --git a/tests/testthat/test-project_methods.R b/tests/testthat/test-project_methods.R index daa154d5f..bea873e82 100644 --- a/tests/testthat/test-project_methods.R +++ b/tests/testthat/test-project_methods.R @@ -10,7 +10,7 @@ no_gear <- dim(params@catchability)[1] no_sp <- dim(params@catchability)[2] no_w <- length(params@w) no_w_full <- length(params@w_full) -sim <- project(params, effort = 1, t_max = 20, dt = 0.5, t_save = 0.5) +sim <- project(params, effort = 1, t_max = 2, dt = 0.5, t_save = 0.5) # Rescaled params_r <- params @@ -100,14 +100,14 @@ test_that("getFeedingLevel for MizerParams", { }) test_that("getFeedingLevel for MizerSim", { - time_range <- 15:20 + time_range <- 1:2 fl <- getFeedingLevel(sim, time_range = time_range) expect_length(dim(fl), 3) - # because t_save is 0.5, there should be 11 time steps in the range 15:20 - expect_equal(dim(fl), c(11, dim(params@initial_n))) + # because t_save is 0.5, there should be 3 time steps in the range 1:2 + expect_equal(dim(fl), c(3, dim(params@initial_n))) expect_identical(dimnames(fl)$sp, dimnames(params@initial_n)$sp) expect_identical(dimnames(fl)$w, dimnames(params@initial_n)$w) - time_range <- 20 + time_range <- 2 expect_length(dim(getFeedingLevel(sim, time_range = time_range)), 3) expect_equal( getFeedingLevel(sim, time_range = time_range)[1, , ], @@ -122,7 +122,7 @@ test_that("getFeedingLevel passes correct time", { # a sim object, it passes the correct values of t and n at each time step. # To do this we replace mizerFeedingLevel() with a simpler function that # just returns t * n - time_range <- 15:20 + time_range <- 1:2 time_elements <- get_time_elements(sim, time_range) times <- as.numeric(dimnames(sim@effort)$time[time_elements]) e <- globalenv() # We need to define the following functions in the @@ -195,9 +195,9 @@ test_that("getPredMort for MizerParams", { }) test_that("getPredMort for MizerSim", { - time_range <- 15:20 + time_range <- 1:2 expect_length(dim(getPredMort(sim, time_range = time_range)), 3) - time_range <- 20 + time_range <- 2 expect_length(dim(getPredMort(sim, time_range = time_range)), 2) ##expect_that(getPredMort(sim, time_range=time_range), equals(getPredMort(sim@params, sim@n[as.character(time_range),,], sim@n_pp[as.character(time_range),]))) aq1 <- getPredMort(sim, time_range = time_range) @@ -685,7 +685,7 @@ test_that("Test that fft based integrator gives similar result as old code", { # One species only ---- test_that("project function returns objects of correct dimension when community only has one species", { params <- newCommunityParams(z0 = 0.2, f0 = 0.7, alpha = 0.2) - t_max <- 50 + t_max <- 2 sim <- project(params, t_max = t_max, effort = 0) n <- array(sim@n[t_max + 1, , ], dim = dim(sim@n)[2:3]) dimnames(n) <- dimnames(sim@n)[2:3] diff --git a/tests/testthat/test-rate_functions.R b/tests/testthat/test-rate_functions.R index b1e6bb21e..765764a92 100644 --- a/tests/testthat/test-rate_functions.R +++ b/tests/testthat/test-rate_functions.R @@ -1,6 +1,6 @@ test_that("get_time_elements", { params <- NS_params - sim <- project(params, effort = 1, t_max = 10, dt = 0.5, t_save = 0.5) + sim <- project(params, effort = 1, t_max = 4, dt = 0.5, t_save = 0.5) expect_error(get_time_elements(sim, time_range = 0.1), "The time range does not contain any simulation results.") expect_identical(get_time_elements(sim, as.character(3:4)), diff --git a/tests/testthat/test-selectivity_funcs.R b/tests/testthat/test-selectivity_funcs.R index c0c93e397..d797c6513 100644 --- a/tests/testthat/test-selectivity_funcs.R +++ b/tests/testthat/test-selectivity_funcs.R @@ -27,16 +27,25 @@ test_that("knife-edge selectivity function is working properly", { expect_true(all(params@selectivity["Otter",otter_trawl_species,params@w >= 1000] == 1)) expect_true(all(params@selectivity["Otter",otter_trawl_species,params@w < 1000] == 0)) - sim <- project(params, t_max = 10, effort = 1) + sim <- project(params, t_max = 2, effort = 1) fm <- getFMortGear(sim) - expect_true(all(fm[10,"Industrial",industrial_species,sim@params@w < 500] == 0)) - expect_true(all(fm[10,"Industrial",industrial_species,sim@params@w >= 500] > 0)) - expect_true(all(fm[10,"Pelagic",pelagic_species,sim@params@w >= 1000] > 0)) - expect_true(all(fm[10,"Pelagic",pelagic_species,sim@params@w < 1000] == 0)) - expect_true(all(fm[10,"Beam",beam_trawl_species,sim@params@w >= 1000] > 0)) - expect_true(all(fm[10,"Beam",beam_trawl_species,sim@params@w < 1000] == 0)) - expect_true(all(fm[10,"Otter",otter_trawl_species,sim@params@w >= 1000] > 0)) - expect_true(all(fm[10,"Otter",otter_trawl_species,sim@params@w < 1000] == 0)) + final <- dim(fm)[1] + expect_true(all(fm[final, "Industrial", industrial_species, + sim@params@w < 500] == 0)) + expect_true(all(fm[final, "Industrial", industrial_species, + sim@params@w >= 500] > 0)) + expect_true(all(fm[final, "Pelagic", pelagic_species, + sim@params@w >= 1000] > 0)) + expect_true(all(fm[final, "Pelagic", pelagic_species, + sim@params@w < 1000] == 0)) + expect_true(all(fm[final, "Beam", beam_trawl_species, + sim@params@w >= 1000] > 0)) + expect_true(all(fm[final, "Beam", beam_trawl_species, + sim@params@w < 1000] == 0)) + expect_true(all(fm[final, "Otter", otter_trawl_species, + sim@params@w >= 1000] > 0)) + expect_true(all(fm[final, "Otter", otter_trawl_species, + sim@params@w < 1000] == 0)) }) # sigmoid_length ---- diff --git a/tests/testthat/test-single_species.R b/tests/testthat/test-single_species.R index 3bc4e1efe..4723a4fc8 100644 --- a/tests/testthat/test-single_species.R +++ b/tests/testthat/test-single_species.R @@ -3,7 +3,7 @@ params <- newMultispeciesParams(NS_species_params_gears[12, ], info_level = 0) n <- params@initial_n npp <- params@initial_n_pp effort <- array(abs(rnorm(10)), dim = c(10, 1)) -sim1 <- project(params, effort = 1, t_max = 10) +sim1 <- project(params, effort = 1, t_max = 2) test_that("project methods return arrays of correct dimension", { expect_length(dim(getEncounter(params, n, npp)), 2) diff --git a/tests/testthat/test-summary_methods.R b/tests/testthat/test-summary_methods.R index 00cbce5ee..a9c29a1c4 100644 --- a/tests/testthat/test-summary_methods.R +++ b/tests/testthat/test-summary_methods.R @@ -6,7 +6,7 @@ species_params$pred_kernel_type <- "truncated_lognormal" params <- newMultispeciesParams(species_params, inter, min_w_pp = 1e-12, n = 2/3, p = 0.7, lambda = 2.8 - 2/3, initial_effort = 1, info_level = 0) -sim <- project(params, t_max = 10) +sim <- project(params, t_max = 2) no_sp <- nrow(species_params) no_w <- length(params@w) @@ -114,7 +114,8 @@ test_that("get_size_range_array works", { test_that("getYieldGear works",{ y <- getYieldGear(sim) # check dims - expect_equal(dim(y), c(11,dim(params@catchability)[1],dim(params@catchability)[2]), ignore_attr = TRUE) + expect_equal(dim(y), c(length(getTimes(sim)), dim(params@catchability)[1], + dim(params@catchability)[2]), ignore_attr = TRUE) # check a value and assume the others are right biomass <- sweep(sim@n,3,sim@params@w * sim@params@dw, "*") f_gear <- getFMortGear(sim) @@ -139,7 +140,8 @@ test_that("getYield works",{ y <- getYield(sim) expect_true(is.ArraySpeciesByTime(y)) # check dims - expect_equal(dim(y), c(11,dim(params@catchability)[2]), ignore_attr = TRUE) + expect_equal(dim(y), c(length(getTimes(sim)), dim(params@catchability)[2]), + ignore_attr = TRUE) # check a value and assume the others are right biomass <- sweep(sim@n,3,sim@params@w * sim@params@dw, "*") f <- getFMort(sim) @@ -293,7 +295,7 @@ test_that("getBiomass works with biomass_cutoff", { params_with_cutoff@species_params$biomass_cutoff <- c(10, 20, 15, 5, 25, 8, 12, 18, 7, 9, 11, 14) # Create simulation with biomass_cutoff - sim_with_cutoff <- project(params_with_cutoff, t_max = 10) + sim_with_cutoff <- project(params_with_cutoff, t_max = 2) # Test that biomass_cutoff is used when use_cutoff = TRUE biomass_with_cutoff <- getBiomass(sim_with_cutoff, use_cutoff = TRUE) @@ -318,7 +320,7 @@ test_that("getBiomass works with biomass_cutoff", { # Test with some NA values in biomass_cutoff params_partial_cutoff <- params params_partial_cutoff@species_params$biomass_cutoff <- c(10, NA, 15, 5, NA, 8, 12, 18, 7, 9, 11, 14) - sim_partial_cutoff <- project(params_partial_cutoff, t_max = 10) + sim_partial_cutoff <- project(params_partial_cutoff, t_max = 2) # Should work without error expect_no_error(getBiomass(sim_partial_cutoff)) diff --git a/tests/testthat/test-wrapper_functions.R b/tests/testthat/test-wrapper_functions.R index 2647fa0ac..75bdd18e5 100644 --- a/tests/testthat/test-wrapper_functions.R +++ b/tests/testthat/test-wrapper_functions.R @@ -52,11 +52,12 @@ test_that("Multiple gears work correctly in trait-based model", { expect_identical(params@gear_params$knife_edge_size, knife_edges) # All gears fire - sim1 <- project(params, t_max = 10, effort = 1) + sim1 <- project(params, t_max = 2, effort = 1) fmg <- getFMortGear(sim1) + final <- dim(fmg)[1] for (i in 1:no_sp) { - expect_true(all(fmg[10,1,i,params@w < knife_edges[i]] == 0)) - expect_true(all(fmg[10,1,i,params@w >= knife_edges[i]] == 1)) + expect_true(all(fmg[final, 1, i, params@w < knife_edges[i]] == 0)) + expect_true(all(fmg[final, 1, i, params@w >= knife_edges[i]] == 1)) } # Only the 4th gear fires params <- newTraitParams(no_sp = no_sp, @@ -66,11 +67,12 @@ test_that("Multiple gears work correctly in trait-based model", { gear_names = 1:no_sp) effort <- c(0,0,0,1,0,0,0,0,0,0) names(effort) <- 1:no_sp - sim2 <- project(params, t_max = 10, effort = effort) + sim2 <- project(params, t_max = 2, effort = effort) fmg <- getFMortGear(sim2) - expect_true(all(fmg[10, c(1:3,5:10),c(1:3,5:10),] == 0)) - expect_true(all(fmg[10, 4, 4, params@w < knife_edges[4]] == 0)) - expect_true(all(fmg[10, 4, 4, params@w >= knife_edges[4]] == 1)) + final <- dim(fmg)[1] + expect_true(all(fmg[final, c(1:3, 5:10), c(1:3, 5:10), ] == 0)) + expect_true(all(fmg[final, 4, 4, params@w < knife_edges[4]] == 0)) + expect_true(all(fmg[final, 4, 4, params@w >= knife_edges[4]] == 1)) }) From b287f8064c6d139c8b975c20c75cce30f4958ab7 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Tue, 5 May 2026 18:04:35 +0100 Subject: [PATCH 17/34] Fix `upgradeParams()` so that it is no longer dropping slots like `resource_dynamics`. --- R/upgrade.R | 22 +++++++++++++ tests/testthat/test-upgrade.R | 62 +++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/R/upgrade.R b/R/upgrade.R index db28405ba..5bc4c1db8 100644 --- a/R/upgrade.R +++ b/R/upgrade.R @@ -217,6 +217,8 @@ upgradeParams <- function(params) { } if (.hasSlot(params, "diffusion")) { pnew@ext_diffusion[] <- slot(params, "diffusion") + } else if (.hasSlot(params, "ext_diffusion")) { + pnew@ext_diffusion <- params@ext_diffusion } if (.hasSlot(params, "initial_n_other")) { pnew@initial_n_other <- params@initial_n_other @@ -234,6 +236,8 @@ upgradeParams <- function(params) { } if (.hasSlot(params, "other_pred_mort")) { pnew@other_mort <- params@other_pred_mort + } else if (.hasSlot(params, "other_mort")) { + pnew@other_mort <- params@other_mort } if (.hasSlot(params, "plankton_dynamics")) { if (is.function(params@plankton_dynamics)) { @@ -248,6 +252,8 @@ upgradeParams <- function(params) { pnew@resource_dynamics <- params@plankton_dynamics } } + } else if (.hasSlot(params, "resource_dynamics")) { + pnew@resource_dynamics <- params@resource_dynamics } if (.hasSlot(params, "plankton_params")) { pnew@resource_params <- params@plankton_params @@ -296,6 +302,22 @@ upgradeParams <- function(params) { pnew@extensions <- params@extensions } + if (.hasSlot(params, "rates_funcs")) { + pnew@rates_funcs <- params@rates_funcs + } + if (.hasSlot(params, "given_species_params")) { + pnew@given_species_params <- params@given_species_params + } + if (.hasSlot(params, "selectivity")) { + pnew@selectivity <- params@selectivity + } + if (.hasSlot(params, "catchability")) { + pnew@catchability <- params@catchability + } + if (.hasSlot(params, "use_predation_diffusion")) { + pnew@use_predation_diffusion <- params@use_predation_diffusion + } + # renaming catch_observed to yield_observed in mizer 2.3 if ("catch_observed" %in% names(pnew@species_params)) { pnew@species_params$yield_observed <- diff --git a/tests/testthat/test-upgrade.R b/tests/testthat/test-upgrade.R index 2925a50a4..d464353ca 100644 --- a/tests/testthat/test-upgrade.R +++ b/tests/testthat/test-upgrade.R @@ -13,6 +13,68 @@ test_that("upgradeParams preserves comments", { expect_identical(upgradeParams(params), params) }) +test_that("upgradeParams from pre-2.4 preserves all slot values", { + params <- NS_params + # Version "2.4.0" triggers the full newMultispeciesParams() rebuild path + params@mizer_version <- "2.4.0" + + # Change non-numeric slots to non-default values so they can be checked + params@resource_dynamics <- "resource_constant" + params@linecolour[] <- paste0("#", formatC(seq_along(params@linecolour) * 11111, + width = 6, flag = "0")) + params@linetype[] <- rep("dashed", length(params@linetype)) + params@use_predation_diffusion <- TRUE + params@metadata[["test_key"]] <- "test_value" + params@resource_params[["test_key"]] <- 42 + params@rates_funcs[["TestFunc"]] <- "identity" + params@initial_n_other[["test_comp"]] <- 42 + params@other_dynamics[["test_comp"]] <- "identity" + params@other_params[["test_comp"]] <- list(x = 1.23) + params@other_encounter[["test_comp"]] <- "identity" + params@other_mort[["test_comp"]] <- "identity" + params@given_species_params[["test_col"]] <- + seq_len(nrow(params@given_species_params)) + + # Randomise all numeric array and vector slots while preserving + # dims, dimnames, and comments. We keep species_params, given_species_params, + # and gear_params at their NS_params values so the internal + # newMultispeciesParams() call succeeds. + # w, dw, w_full, dw_full define the grid and must stay consistent. + # w_min_idx is legitimately recalculated by validParams() from species_params. + set.seed(42) + skip_randomise <- c("w", "dw", "w_full", "dw_full", "w_min_idx", + "maturity", "psi") + for (s in slotNames(params)) { + if (s %in% skip_randomise) next + sl <- slot(params, s) + if (is.numeric(sl) && length(sl) > 0) { + cmt <- comment(sl) + slot(params, s)[] <- runif(length(sl), 0.1, 2) + comment(slot(params, s)) <- cmt + } + } + # maturity must stay in [0, 1]; psi must not exceed maturity + params@maturity[] <- runif(length(params@maturity), 0.1, 0.9) + params@psi[] <- params@maturity * runif(length(params@psi), 0, 0.9) + + params_before <- params + params_after <- suppressMessages(upgradeParams(params)) + + # species_params may gain additional derived columns from newMultispeciesParams; + # check only that the original columns are preserved unchanged. + original_cols <- names(params_before@species_params) + expect_identical(params_after@species_params[, original_cols], + params_before@species_params, + label = "params@species_params (original columns)") + + slots_to_check <- setdiff(slotNames(params), + c("mizer_version", "time_modified", "species_params")) + for (s in slots_to_check) { + expect_identical(slot(params_after, s), slot(params_before, s), + label = paste0("params@", s)) + } +}) + ## upgradeSim ---- test_that("upgradeSim leaves new sim unchanged", { expect_identical(upgradeSim(sim), sim) From 732d4638a40e4e02ebfb61dd9922946615d39168 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Tue, 5 May 2026 19:12:21 +0100 Subject: [PATCH 18/34] Fix bug in how `getFMort.MizerSim` handled the component names in `n_other`. --- R/rate_functions.R | 9 +++++--- tests/testthat/test-extension.R | 38 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/R/rate_functions.R b/R/rate_functions.R index 75380d57a..df3939b28 100644 --- a/R/rate_functions.R +++ b/R/rate_functions.R @@ -764,17 +764,20 @@ getFMort.MizerSim <- function(object, effort, time_range, drop = TRUE) { dimnames = c(list(time = times), dimnames(params@initial_n))) times <- as.numeric(times) + n_other_names <- colnames(n_other) for (i in seq_len(dim(effort)[1])) { n_i <- n[i, , , drop = FALSE] dim(n_i) <- dim(n)[2:3] dimnames(n_i) <- dimnames(n)[2:3] + n_other_i <- n_other[i, ] + names(n_other_i) <- n_other_names args <- list( params = params, n = n_i, n_pp = n_pp[i, ], - n_other = n_other[i, ], effort = effort[i, ], t = times[i], + n_other = n_other_i, effort = effort[i, ], t = times[i], e_growth = getEGrowth(params, n = n_i, n_pp = n_pp[i, ], - n_other = n_other[i, ], t = times[i]), + n_other = n_other_i, t = times[i]), pred_mort = getPredMort(params, n = n_i, n_pp = n_pp[i, ], - n_other = n_other[i, ], + n_other = n_other_i, time_range = times[i])) f_mort[i, , ] <- do.call(f, args) } diff --git a/tests/testthat/test-extension.R b/tests/testthat/test-extension.R index 6f3a8107a..3ab877684 100644 --- a/tests/testthat/test-extension.R +++ b/tests/testthat/test-extension.R @@ -254,3 +254,41 @@ test_that("initialNOther<- updates `time_modified`", { initialNOther(p2)$test <- 2 expect_false(identical(p2@time_modified, p@time_modified)) }) + +# .MizerSim rate getters preserve n_other component names ---- +e$test_encounter_n_other <- function(params, n, n_pp, n_other, t = 0, ...) { + if (is.null(n_other[["my_comp"]])) stop("n_other component names were lost!") + mizerEncounter(params, n, n_pp, n_other, t, ...) +} +e$test_predrate_n_other <- function(params, n, n_pp, n_other, t = 0, ...) { + if (is.null(n_other[["my_comp"]])) stop("n_other component names were lost!") + mizerPredRate(params, n, n_pp, n_other, t, ...) +} +e$test_fmort_n_other <- function(params, n, n_pp, n_other, effort, t, ...) { + if (is.null(n_other[["my_comp"]])) stop("n_other component names were lost!") + mizerFMort(params, n, n_pp, n_other, effort, t, ...) +} + +test_that("getFeedingLevel.MizerSim preserves n_other component names with time_range", { + p <- NS_params |> + setComponent("my_comp", 1, dynamics_fun = "test_dyn") |> + setRateFunction("Encounter", "test_encounter_n_other") + sim <- project(p, t_max = 3, dt = 1, t_save = 1) + expect_no_error(getFeedingLevel(sim, time_range = 2:3)) +}) + +test_that("getPredMort.MizerSim preserves n_other component names with time_range", { + p <- NS_params |> + setComponent("my_comp", 1, dynamics_fun = "test_dyn") |> + setRateFunction("PredRate", "test_predrate_n_other") + sim <- project(p, t_max = 3, dt = 1, t_save = 1) + expect_no_error(getPredMort(sim, time_range = 2:3)) +}) + +test_that("getFMort.MizerSim preserves n_other component names with time_range", { + p <- NS_params |> + setComponent("my_comp", 1, dynamics_fun = "test_dyn") |> + setRateFunction("FMort", "test_fmort_n_other") + sim <- project(p, t_max = 3, dt = 1, t_save = 1) + expect_no_error(getFMort(sim, time_range = 2:3)) +}) From 84548ccb8ce809336fc6898a13fcd1130fda570d Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Tue, 5 May 2026 19:17:32 +0100 Subject: [PATCH 19/34] Refactor getFMort.MizerSim to remove effort parameter and streamline calculations --- DESCRIPTION | 2 +- NEWS.md | 8 ++++++++ R/rate_functions.R | 49 +++++++++++++++++++--------------------------- 3 files changed, 29 insertions(+), 30 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 30b41c71b..d94db7e25 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -19,7 +19,7 @@ Authors@R: c(person("Gustav", "Delius", email="gustav.delius@york.ac.uk", comment = c(ORCID = "0000-0002-8478-3430")), person("Richard", "Southwell", email="richard.southwell@york.ac.uk", role=c("ctb", "cph"))) -Version: 2.5.4.9124 +Version: 2.5.4.9125 License: GPL-3 Imports: assertthat, diff --git a/NEWS.md b/NEWS.md index b5f9c2e9f..199b8ffb4 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,14 @@ resource abundance at positive consumption, the capacity is increased slightly with a warning instead of failing early. +- Bug fix: `getFMort()` on a `MizerSim` object was silently dropping the + component names from `n_other` when passing it to the rate function and its + dependencies (`getEGrowth()`, `getPredMort()`). This caused failures whenever + the rate functions accessed `n_other` by component name (e.g. + `n_other[["resource"]]`). The internal implementation has also been + refactored to use the same `plyr::aaply` pattern as `getFeedingLevel()` and + `getPredMort()`, keeping the three methods consistent. + - Added first-stage infrastructure for composable extension chains: `registerExtensions()`, `getRegisteredExtensions()`, and `coerceToExtensionClass()`. Extension classes are marker classes for S3 diff --git a/R/rate_functions.R b/R/rate_functions.R index df3939b28..01f9d7a38 100644 --- a/R/rate_functions.R +++ b/R/rate_functions.R @@ -17,7 +17,7 @@ # Four functions are the odd ones out because they also accept a MizerSim: # getFeedingLevel(object, n, n_pp,n_other, time_range, drop, ...) # getPredMort(object, n, n_pp,n_other, time_range, drop, ...) -# getFMort(object, effort, time_range, drop) +# getFMort(object, time_range, drop) # getFMortGear(object, effort, time_range) #' Get all rates @@ -742,7 +742,7 @@ getFMort.MizerParams <- function(object, effort, time_range, drop = TRUE) { } #' #' @export -getFMort.MizerSim <- function(object, effort, time_range, drop = TRUE) { +getFMort.MizerSim <- function(object, time_range, drop = TRUE) { sim <- object params <- sim@params f <- if (usesExtensionDispatch(params)) { @@ -754,34 +754,25 @@ getFMort.MizerSim <- function(object, effort, time_range, drop = TRUE) { time_range <- dimnames(sim@effort)$time } time_elements <- get_time_elements(sim, time_range) - effort <- sim@effort[time_elements, , drop = FALSE] - n <- sim@n[time_elements, , , drop = FALSE] - n_pp <- sim@n_pp[time_elements, , drop = FALSE] - n_other <- sim@n_other[time_elements, , drop = FALSE] - times <- dimnames(effort)$time - f_mort <- array(0, - dim = c(dim(effort)[[1]], dim(params@initial_n)), - dimnames = c(list(time = times), - dimnames(params@initial_n))) - times <- as.numeric(times) - n_other_names <- colnames(n_other) - for (i in seq_len(dim(effort)[1])) { - n_i <- n[i, , , drop = FALSE] - dim(n_i) <- dim(n)[2:3] - dimnames(n_i) <- dimnames(n)[2:3] - n_other_i <- n_other[i, ] - names(n_other_i) <- n_other_names + f_mort_time <- plyr::aaply(which(time_elements), 1, function(x) { + n <- array(sim@n[x, , ], dim = dim(sim@n)[2:3]) + dimnames(n) <- dimnames(sim@n)[2:3] + n_other <- sim@n_other[x, ] + names(n_other) <- dimnames(sim@n_other)$component + t <- as.numeric(dimnames(sim@n)$time[[x]]) + n_pp <- sim@n_pp[x, ] + effort <- sim@effort[x, ] args <- list( - params = params, n = n_i, n_pp = n_pp[i, ], - n_other = n_other_i, effort = effort[i, ], t = times[i], - e_growth = getEGrowth(params, n = n_i, n_pp = n_pp[i, ], - n_other = n_other_i, t = times[i]), - pred_mort = getPredMort(params, n = n_i, n_pp = n_pp[i, ], - n_other = n_other_i, - time_range = times[i])) - f_mort[i, , ] <- do.call(f, args) - } - return(f_mort[, , , drop = drop]) + params = params, n = n, n_pp = n_pp, + n_other = n_other, effort = effort, t = t, + e_growth = getEGrowth(params, n = n, n_pp = n_pp, + n_other = n_other, t = t), + pred_mort = getPredMort(params, n = n, n_pp = n_pp, + n_other = n_other, time_range = t)) + do.call(f, args) + }, .drop = FALSE) + names(dimnames(f_mort_time))[[1]] <- "time" + return(f_mort_time[, , , drop = drop]) } From 5210ee506388a391f68096ccebe94924f9c257c5 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 16:03:49 +0100 Subject: [PATCH 20/34] Adding `steady` argument to `addSpecies()` --- R/manipulate_species.R | 75 +++++++++++++++++++++++------------------- man/addSpecies.Rd | 8 +++++ 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/R/manipulate_species.R b/R/manipulate_species.R index 1a64a133c..ef7b2cc3a 100644 --- a/R/manipulate_species.R +++ b/R/manipulate_species.R @@ -24,6 +24,12 @@ #' fished by already existing gear. Should not include effort values #' for existing gear. New gear for which no effort is set via this #' vector will have an initial effort of 0. +#' @param steady If `TRUE` (default), runs [steadySingleSpecies()] to +#' initialise the new species at their single-species steady state and +#' retuning their reproductive efficiencies. Set to `FALSE` when the caller +#' (e.g. an extension package using `NextMethod()`) needs to make further +#' changes to the params object before that steady-state calculation can be +#' run successfully. #' @param info_level Controls the amount of information messages that are shown #' when the function sets default values for parameters. Higher levels lead #' to more messages. Set to 0 to suppress all such messages. @@ -66,7 +72,7 @@ #' @rdname addSpecies addSpecies <- function(params, species_params, gear_params = data.frame(), initial_effort, - interaction, info_level = 3, ...) { + interaction, steady = TRUE, info_level = 3, ...) { UseMethod("addSpecies") } @@ -114,7 +120,7 @@ copyParamsComments <- function(params, old_params) { #' @export addSpecies.MizerParams <- function(params, species_params, gear_params = data.frame(), initial_effort = NULL, interaction = NULL, - info_level = 3, ...) { + steady = TRUE, info_level = 3, ...) { # check validity of parameters ---- original_params <- params params <- validParams(params) @@ -307,40 +313,43 @@ addSpecies.MizerParams <- function(params, species_params, gear_params = data.fr # initial solution ---- p@initial_n[old_sp, old_w] <- params@initial_n - # Turn off self-interaction among the new species, so we can determine the - # growth rates, and death rates induced upon them by the pre-existing species - p@interaction[new_sp, new_sp] <- 0 - - # Compute solution for new species - p <- steadySingleSpecies(p, species = new_sp) - - # set low abundance ---- - for (i in new_sp) { - # Normalise solution so that it is never more than 1/100th of the - # Sheldon spectrum. - # We look at the maximum of abundance times w^lambda - # because that is always an increasing function at small size. - idx <- which.max(p@initial_n[i, ] * p@w^p@resource_params$lambda) - p@initial_n[i, ] <- p@initial_n[i, ] * - p@resource_params$kappa * p@w[idx]^(-p@resource_params$lambda) / - p@initial_n[i, idx] / 100 - p@species_params$is_background[i] <- FALSE - } - if (any(is.infinite(p@initial_n))) { - stop("Candidate steady state holds infinities.") - } - if (any(is.na(p@initial_n) | is.nan(p@initial_n))) { - stop("Candidate steady state holds non-numeric values.") - } + if (steady) { + # Turn off self-interaction among the new species, so we can determine the + # growth rates, and death rates induced upon them by the pre-existing species + p@interaction[new_sp, new_sp] <- 0 + + # Compute solution for new species + p <- steadySingleSpecies(p, species = new_sp) + + # set low abundance ---- + for (i in new_sp) { + # Normalise solution so that it is never more than 1/100th of the + # Sheldon spectrum. + # We look at the maximum of abundance times w^lambda + # because that is always an increasing function at small size. + idx <- which.max(p@initial_n[i, ] * p@w^p@resource_params$lambda) + p@initial_n[i, ] <- p@initial_n[i, ] * + p@resource_params$kappa * p@w[idx]^(-p@resource_params$lambda) / + p@initial_n[i, idx] / 100 + p@species_params$is_background[i] <- FALSE + } - # Turn self interaction back on - p@interaction[new_sp, new_sp] <- inter[new_sp, new_sp] + if (any(is.infinite(p@initial_n))) { + stop("Candidate steady state holds infinities.") + } + if (any(is.na(p@initial_n) | is.nan(p@initial_n))) { + stop("Candidate steady state holds non-numeric values.") + } - # Retune reproductive efficiencies of new species - repro_level <- rep(1 / 4, length(new_sp)) - names(repro_level) <- p@species_params$species[new_sp] - p <- setBevertonHolt(p, reproduction_level = repro_level) + # Turn self interaction back on + p@interaction[new_sp, new_sp] <- inter[new_sp, new_sp] + + # Retune reproductive efficiencies of new species + repro_level <- rep(1 / 4, length(new_sp)) + names(repro_level) <- p@species_params$species[new_sp] + p <- setBevertonHolt(p, reproduction_level = repro_level) + } p <- restoreParamsClass(p, target_class) diff --git a/man/addSpecies.Rd b/man/addSpecies.Rd index c5e517fcc..01c62e34c 100644 --- a/man/addSpecies.Rd +++ b/man/addSpecies.Rd @@ -10,6 +10,7 @@ addSpecies( gear_params = data.frame(), initial_effort, interaction, + steady = TRUE, info_level = 3, ... ) @@ -35,6 +36,13 @@ species. In the latter case all interaction between an old and a new species are set to 1. If this argument is missing, all interactions involving a new species are set to 1.} +\item{steady}{If \code{TRUE} (default), runs \code{\link[=steadySingleSpecies]{steadySingleSpecies()}} to +initialise the new species at their single-species steady state and +retuning their reproductive efficiencies. Set to \code{FALSE} when the caller +(e.g. an extension package using \code{NextMethod()}) needs to make further +changes to the params object before that steady-state calculation can be +run successfully.} + \item{info_level}{Controls the amount of information messages that are shown when the function sets default values for parameters. Higher levels lead to more messages. Set to 0 to suppress all such messages.} From 4e22780f492c012729b461223696b415ea8d2dd2 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 22:22:51 +0100 Subject: [PATCH 21/34] Add registerExtension function for incremental extension registration --- NAMESPACE | 1 + R/registerExtensions.R | 63 ++++++++++-- man/registerExtension.Rd | 38 +++++++ man/registerExtensions.Rd | 17 ++-- tests/testthat/test-registerExtensions.R | 67 +++++++++++++ vignettes/extensions.Rmd | 122 ++++++++++++++++++----- 6 files changed, 271 insertions(+), 37 deletions(-) create mode 100644 man/registerExtension.Rd diff --git a/NAMESPACE b/NAMESPACE index ef99c4825..8aa20e29e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -413,6 +413,7 @@ export(project_n) export(project_simple) export(readParams) export(readSim) +export(registerExtension) export(registerExtensions) export(removeBackgroundSpecies) export(removeComponent) diff --git a/R/registerExtensions.R b/R/registerExtensions.R index f3bcb9f1c..39ef97e89 100644 --- a/R/registerExtensions.R +++ b/R/registerExtensions.R @@ -6,20 +6,63 @@ .mizerSession <- new.env(parent = emptyenv()) .mizerSession$extensions <- character() +#' Register a single mizer extension for this R session +#' +#' Prepends one extension to the front of the active extension chain, giving it +#' the highest dispatch priority. Designed to be called from a package's +#' `.onLoad` hook so that the chain grows naturally in load order: the last +#' package loaded ends up outermost. +#' +#' The call is idempotent: if the extension is already registered at any +#' position in the chain, the function returns silently without modifying the +#' chain. This makes it safe to call from `devtools::load_all()`, which +#' re-executes `.onLoad`. +#' +#' @param name A syntactically valid R name identifying the extension (e.g. +#' `"mizerExtA"`). This name is used as the S4 marker class name. +#' @param requirement A version string, installation specification, or +#' `NA_character_` (the default). `NA_character_` marks an in-development +#' extension whose S4 marker class mizer creates automatically. A version +#' string such as `"1.2.0"` records the minimum required package version. +#' @param install Logical. If `TRUE`, attempt to install a missing extension +#' package. +#' +#' @return The updated extension chain, invisibly. +#' @seealso [registerExtensions()] for registering an explicit full chain. +#' @export +registerExtension <- function(name, requirement = NA_character_, install = FALSE) { + extension <- validateExtensionsVector(setNames(requirement, name)) + + current <- getRegisteredExtensions() + + if (name %in% names(current)) { + return(invisible(current)) + } + + new_chain <- c(extension, current) + ensureExtensionNamespaces(new_chain, install = install) + defineExtensionClasses(new_chain) + .mizerSession$extensions <- new_chain + + invisible(new_chain) +} + #' Register mizer extensions for this R session #' -#' Registers the maximal extension chain that mizer should use in the current -#' R session. The order of `extensions` is the S3 dispatch order, from -#' outermost to innermost extension. For example -#' `c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")` dispatches to -#' `mizerExtB` methods first, then `mizerExtA` methods, then base mizer -#' methods. +#' Registers an explicit full extension chain for the current R session. The +#' order of `extensions` is the S3 dispatch order, from outermost to innermost +#' extension. For example `c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")` +#' dispatches to `mizerExtB` methods first, then `mizerExtA` methods, then base +#' mizer methods. #' #' A session can handle objects whose extension chain is a suffix of the #' registered maximal chain. For example, after registering #' `c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")`, objects using only #' `c(mizerExtA = "0.4.1")` are also valid. #' +#' For extension packages that register themselves incrementally from `.onLoad`, +#' use [registerExtension()] instead. +#' #' @param extensions A named character vector. Names are extension identifiers. #' Values are version strings, installation specifications, or #' `NA_character_`. Installed extensions only participate in S3 dispatch if @@ -31,6 +74,7 @@ #' only supports CRAN-style package installation by extension name. #' #' @return The active maximal extension chain, invisibly. +#' @seealso [registerExtension()] for the incremental per-package variant. #' @export registerExtensions <- function(extensions, install = FALSE) { extensions <- validateExtensionsVector(extensions) @@ -413,7 +457,12 @@ ensureExtensionNamespaces <- function(extensions, install = FALSE) { ) } - loadNamespace(extension) + # Skip loadNamespace() when the namespace is already being loaded + # (e.g. when an extension package calls registerExtensions() from its + # own .onLoad hook), to avoid a cyclic namespace dependency error. + if (!isNamespaceLoaded(extension)) { + loadNamespace(extension) + } } invisible(TRUE) diff --git a/man/registerExtension.Rd b/man/registerExtension.Rd new file mode 100644 index 000000000..482a3ca84 --- /dev/null +++ b/man/registerExtension.Rd @@ -0,0 +1,38 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{registerExtension} +\alias{registerExtension} +\title{Register a single mizer extension for this R session} +\usage{ +registerExtension(name, requirement = NA_character_, install = FALSE) +} +\arguments{ +\item{name}{A syntactically valid R name identifying the extension (e.g. +\code{"mizerExtA"}). This name is used as the S4 marker class name.} + +\item{requirement}{A version string, installation specification, or +\code{NA_character_} (the default). \code{NA_character_} marks an in-development +extension whose S4 marker class mizer creates automatically. A version +string such as \code{"1.2.0"} records the minimum required package version.} + +\item{install}{Logical. If \code{TRUE}, attempt to install a missing extension +package.} +} +\value{ +The updated extension chain, invisibly. +} +\description{ +Prepends one extension to the front of the active extension chain, giving it +the highest dispatch priority. Designed to be called from a package's +\code{.onLoad} hook so that the chain grows naturally in load order: the last +package loaded ends up outermost. +} +\details{ +The call is idempotent: if the extension is already registered at any +position in the chain, the function returns silently without modifying the +chain. This makes it safe to call from \code{devtools::load_all()}, which +re-executes \code{.onLoad}. +} +\seealso{ +\code{\link[=registerExtensions]{registerExtensions()}} for registering an explicit full chain. +} diff --git a/man/registerExtensions.Rd b/man/registerExtensions.Rd index 2545f5563..380cba50e 100644 --- a/man/registerExtensions.Rd +++ b/man/registerExtensions.Rd @@ -22,16 +22,21 @@ only supports CRAN-style package installation by extension name.} The active maximal extension chain, invisibly. } \description{ -Registers the maximal extension chain that mizer should use in the current -R session. The order of \code{extensions} is the S3 dispatch order, from -outermost to innermost extension. For example -\code{c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")} dispatches to -\code{mizerExtB} methods first, then \code{mizerExtA} methods, then base mizer -methods. +Registers an explicit full extension chain for the current R session. The +order of \code{extensions} is the S3 dispatch order, from outermost to innermost +extension. For example \code{c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")} +dispatches to \code{mizerExtB} methods first, then \code{mizerExtA} methods, then base +mizer methods. } \details{ A session can handle objects whose extension chain is a suffix of the registered maximal chain. For example, after registering \code{c(mizerExtB = "1.2.0", mizerExtA = "0.4.1")}, objects using only \code{c(mizerExtA = "0.4.1")} are also valid. + +For extension packages that register themselves incrementally from \code{.onLoad}, +use \code{\link[=registerExtension]{registerExtension()}} instead. +} +\seealso{ +\code{\link[=registerExtension]{registerExtension()}} for the incremental per-package variant. } diff --git a/tests/testthat/test-registerExtensions.R b/tests/testthat/test-registerExtensions.R index a43a96e57..60fce7261 100644 --- a/tests/testthat/test-registerExtensions.R +++ b/tests/testthat/test-registerExtensions.R @@ -129,6 +129,73 @@ test_that("classless extensions remain metadata only", { expect_identical(sim@params@extensions, chain) }) +test_that("registerExtension prepends to chain in load order", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestIncA", Sys.getpid()) + ext_b <- paste0("mizerTestIncB", Sys.getpid()) + + # A loads first (as a dependency of B would), then B prepends itself + registerExtension(ext_a) + expect_identical(getRegisteredExtensions(), setNames(NA_character_, ext_a)) + + registerExtension(ext_b) + expected <- setNames(rep(NA_character_, 2), c(ext_b, ext_a)) + expect_identical(getRegisteredExtensions(), expected) + + # B is outermost: extends A extends MizerParams + expect_true(methods::extends(ext_b, ext_a)) + expect_true(methods::extends(ext_a, "MizerParams")) + expect_true(methods::extends(simExtensionClass(ext_b), simExtensionClass(ext_a))) + expect_true(methods::extends(simExtensionClass(ext_a), "MizerSim")) +}) + +test_that("registerExtension is idempotent", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestIdemA", Sys.getpid()) + ext_b <- paste0("mizerTestIdemB", Sys.getpid()) + + registerExtension(ext_a) + registerExtension(ext_b) + full_chain <- getRegisteredExtensions() + + # Calling again for either extension leaves the chain unchanged + registerExtension(ext_a) + expect_identical(getRegisteredExtensions(), full_chain) + + registerExtension(ext_b) + expect_identical(getRegisteredExtensions(), full_chain) +}) + +test_that("registerExtension coerces objects to correct subclass", { + resetMizerSession() + withr::defer(resetMizerSession()) + + ext_a <- paste0("mizerTestCoerceIncA", Sys.getpid()) + ext_b <- paste0("mizerTestCoerceIncB", Sys.getpid()) + + registerExtension(ext_a) + registerExtension(ext_b) + full_chain <- getRegisteredExtensions() + + # Object carrying only A's chain coerces to ext_a, not ext_b + params_a <- NS_params + params_a@extensions <- setNames(NA_character_, ext_a) + params_a <- coerceToExtensionClass(params_a) + expect_s4_class(params_a, ext_a) + expect_false(is(params_a, ext_b)) + + # Object carrying the full chain coerces to ext_b + params_b <- NS_params + params_b@extensions <- full_chain + params_b <- coerceToExtensionClass(params_b) + expect_s4_class(params_b, ext_b) + expect_true(is(params_b, ext_a)) +}) + test_that("readParams registers and coerces saved extension objects", { resetMizerSession() withr::defer(resetMizerSession()) diff --git a/vignettes/extensions.Rmd b/vignettes/extensions.Rmd index 92af325f0..d487406aa 100644 --- a/vignettes/extensions.Rmd +++ b/vignettes/extensions.Rmd @@ -322,6 +322,13 @@ change how a model object is analysed or displayed. Because mizer uses S3 generics for many user-facing methods, you can define a formal S4 subclass and then write an S3 method for that subclass. +This example shows the quick, script-level approach: you define classes +directly with `setClass()` and promote objects by hand. It is useful for +interactive exploration and one-off analyses. If you are writing an extension +package intended for others to use — especially one that needs composable +behaviour in the projection pipeline — see +[Defining a dispatching extension subclass] for the recommended approach. + To keep this example simple, we define subclasses without adding any new slots. The main purpose is just to distinguish your model type from plain `MizerParams` and `MizerSim` objects. For our example we will build on the @@ -414,24 +421,34 @@ An extension subclass should be a marker class: it should not add slots. Store extension-specific settings in `other_params(params)`, component parameters, or standard mizer slots instead. -In your extension package you would define classes like this: +In your extension package define the params and sim classes with `setClass()`. +The `contains` argument should name the immediate parent in the intended class +hierarchy. For a standalone extension that does not build on another extension +package, that parent is the mizer base class: ```{r eval = FALSE} setClass("mizerMyExtension", contains = "MizerParams") setClass("mizerMyExtensionSim", contains = "MizerSim") ``` -The class name should match the name used in the extension chain. For example: +If your extension builds on top of another extension package (say +`mizerBaseExtension`), inherit from that package's class instead: ```{r eval = FALSE} -params@extensions <- c(mizerMyExtension = "0.1.0") +setClass("mizerMyExtension", contains = "mizerBaseExtension") +setClass("mizerMyExtensionSim", contains = "mizerBaseExtensionSim") ``` -When this object is validated or loaded with `readParams()`, mizer checks that -the recorded extension chain is compatible with the current session and coerces -the object to the appropriate marker class. If an extension recorded in -`params@extensions` does not provide a marker class, it remains metadata-only -and does not trigger projection dispatch. +The class name must match the name used to register the extension (see +[Registering your extension] below). mizer derives the sim class name by +appending `"Sim"` to the params class name, so `"mizerMyExtension"` and +`"mizerMyExtensionSim"` are a matching pair. + +When a params object is validated or loaded with `readParams()`, mizer checks +that the recorded extension chain is compatible with the current session and +coerces the object to the outermost applicable marker class. If an extension +recorded in `params@extensions` does not provide a marker class, it remains +metadata-only and does not trigger projection dispatch. ## Projection rate hooks @@ -473,11 +490,34 @@ will dispatch through them in the order recorded in the extension chain. Each method can call `NextMethod()` to compose its change with the next extension and finally with the standard `MizerParams` method. -## Registering an extension chain +## Registering your extension + +Extension packages should register themselves with mizer from their `.onLoad` +hook using `registerExtension()`: + +```{r eval = FALSE} +.onLoad <- function(libname, pkgname) { + mizer::registerExtension("mizerMyExtension", requirement = "0.1.0") +} +``` + +This prepends `"mizerMyExtension"` to the front of the session's extension +chain, giving it the highest dispatch priority among currently loaded +extensions. Because R always loads dependency packages before the package that +depends on them, the dependent ends up outermost. For example, if +`mizerOuterExtension` declares `mizerMyExtension` as a dependency, a user who +calls `library(mizerOuterExtension)` will see: -The extension chain is a named character vector whose names are extension -identifiers and whose values record version requirements or installation -information. For example: +1. `mizerMyExtension` loads and registers → chain: `c(mizerMyExtension = "0.1.0")` +2. `mizerOuterExtension` loads and registers → chain: `c(mizerOuterExtension = "0.2.0", mizerMyExtension = "0.1.0")` + +The call is idempotent: if the extension is already anywhere in the chain +(for example because `devtools::load_all()` re-runs `.onLoad`), it returns +silently without modifying the chain. + +For cases where you need explicit control over the full chain — for example +when combining two independent extensions in a script — call +`registerExtensions()` directly: ```{r eval = FALSE} registerExtensions(c( @@ -486,20 +526,54 @@ registerExtensions(c( )) ``` -The order is the dispatch order, from outermost to innermost extension. A model -using only a suffix of the registered chain can be used in the same session. -This makes it possible to work with one model that uses both extensions and -another model that only uses `mizerMyExtension`. +## The `@extensions` slot in saved objects + +The `@extensions` slot of a `MizerParams` object records the extension chain +the object requires. mizer uses it to verify session compatibility and to +coerce the object to the correct S4 class when it is loaded from disk. + +The slot must contain the **full chain** that was active when the object was +created, not just the topmost extension. Objects from `mizerMyExtension` (when +loaded without any outer extension on top) should have: + +```{r eval = FALSE} +params@extensions <- c(mizerMyExtension = "0.1.0") +``` + +Objects created in a session where `mizerOuterExtension` is also loaded should +include both: -For package code, the key requirements are: +```{r eval = FALSE} +params@extensions <- c(mizerOuterExtension = "0.2.0", mizerMyExtension = "0.1.0") +``` + +A convenient way to set this when building data objects for a package is: + +```{r eval = FALSE} +params@extensions <- getRegisteredExtensions() +params <- coerceToExtensionClass(params) +``` -- define marker subclasses without extra slots if the package needs projection - dispatch, -- export or register S3 methods for the relevant `project*()` generics, -- store all extra state in ordinary mizer extension locations, not in new S4 - slots, -- record the extension in `params@extensions` so saved objects can be checked - and restored in a compatible session. +`coerceToExtensionClass()` promotes the object to the S4 class corresponding +to the outermost dispatch extension in `params@extensions`. An object whose +chain is a shorter suffix of the session chain (for example, one carrying only +`mizerMyExtension` in a session that also has `mizerOuterExtension` loaded) +is left at the `mizerMyExtension` class — it is not promoted to +`mizerOuterExtension` because it was not created with that extension. + +When a user loads a saved object with `readParams()`, mizer checks that the +object's chain is a suffix of the registered session chain and re-coerces the +object to the appropriate class automatically. + +## Checklist for package authors + +- Define marker subclasses with `setClass()` — no new slots. +- Call `mizer::registerExtension()` in `.onLoad`. +- Export or register S3 methods for the relevant `project*()` generics. +- Store all extra state in ordinary mizer extension locations, not in new S4 + slots. +- Set `params@extensions <- getRegisteredExtensions()` when building data + objects destined for the package `data/` directory. # How custom rate functions are called From a18b79e1c1f75c873e8c679f55070e327b8ab5ea Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Wed, 6 May 2026 22:35:16 +0100 Subject: [PATCH 22/34] Enhance extension installation support by integrating pak for managing missing or outdated packages --- DESCRIPTION | 3 ++- R/registerExtensions.R | 36 +++++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index d94db7e25..ad35c0bd8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -36,7 +36,8 @@ Imports: Rcpp, reshape2, rlang, - lifecycle + lifecycle, + pak LinkingTo: Rcpp Depends: R (>= 3.5) diff --git a/R/registerExtensions.R b/R/registerExtensions.R index 39ef97e89..05382704f 100644 --- a/R/registerExtensions.R +++ b/R/registerExtensions.R @@ -69,9 +69,11 @@ registerExtension <- function(name, requirement = NA_character_, install = FALSE #' they provide an S4 marker class with the same name. `NA_character_` entries #' are treated as in-development dispatch extensions and mizer creates their #' marker classes automatically. -#' @param install Logical. If `TRUE`, missing extension packages may be -#' installed. Installation support is intentionally conservative and currently -#' only supports CRAN-style package installation by extension name. +#' @param install Logical. If `TRUE`, missing or outdated extension packages are +#' installed via [pak::pkg_install()]. Version strings install from CRAN; +#' other requirement strings (e.g. `"user/repo@v1.2.0"`) are passed directly +#' to pak and may refer to GitHub, local paths, or any other pak-supported +#' source. #' #' @return The active maximal extension chain, invisibly. #' @seealso [registerExtension()] for the incremental per-package variant. @@ -417,13 +419,12 @@ simExtensionClass <- function(extension) { #' Load (and optionally install) namespaces for all non-NA extensions #' #' For each extension whose requirement is not `NA_character_`, checks that the -#' package is installed, installs it if `install = TRUE` and it is missing, -#' verifies the minimum version if the requirement is a version string, then -#' calls [loadNamespace()]. +#' package is installed and up-to-date, installs or upgrades via +#' [pak::pkg_install()] if `install = TRUE`, then calls [loadNamespace()]. #' #' @param extensions Named character vector of extensions. -#' @param install Logical. If `TRUE`, attempt to install missing packages via -#' [utils::install.packages()]. +#' @param install Logical. If `TRUE`, install or upgrade missing/outdated +#' packages via [pak::pkg_install()]. #' @return Invisibly `TRUE`. #' @keywords internal ensureExtensionNamespaces <- function(extensions, install = FALSE) { @@ -442,7 +443,12 @@ ensureExtensionNamespaces <- function(extensions, install = FALSE) { if (!requireNamespace(extension, quietly = TRUE)) { if (isTRUE(install)) { - utils::install.packages(extension) + pkg_spec <- if (isVersionRequirement(requirement)) { + extension + } else { + requirement + } + pak::pkg_install(pkg_spec) } if (!requireNamespace(extension, quietly = TRUE)) { stop("Required extension package `", extension, "` is not installed.") @@ -451,10 +457,14 @@ ensureExtensionNamespaces <- function(extensions, install = FALSE) { if (isVersionRequirement(requirement) && utils::packageVersion(extension) < package_version(requirement)) { - stop( - "Extension package `", extension, "` must be at least ", - "version ", requirement, "." - ) + if (isTRUE(install)) { + pak::pkg_install(paste0(extension, "@>=", requirement)) + } else { + stop( + "Extension package `", extension, "` must be at least ", + "version ", requirement, ". Use `install = TRUE` to upgrade." + ) + } } # Skip loadNamespace() when the namespace is already being loaded From fb19e70f98a4e66da5ed64cfc58c8c4e6f3d6158 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Thu, 7 May 2026 07:27:53 +0100 Subject: [PATCH 23/34] Refactor tests for increased speed - Deleted SVG snapshots for `plotFMort truncated` and `plotPredation mortality`. - Updated `steady.md` snapshots to reflect new steady state values. - Introduced `expect_ggplot` function to validate ggplot objects in plot tests. - Modified plot tests to use `expect_ggplot` instead of `expect_doppelganger`. - Adjusted time parameters in project tests to ensure consistency and accuracy. - Refined `setBevertonHolt` tests to compare against required RDD values. - Enhanced `steady` tests to utilize a simplified parameter setup for clarity. - Removed unnecessary simulation calls in wrapper function tests. --- .../plots/plot-feeding-level-critical.svg | 75 ---------------- .../_snaps/plots/plot-feeding-level.svg | 65 -------------- .../_snaps/plots/plot-single-growth-curve.svg | 69 --------------- .../_snaps/plots/plot-yield-by-gear.svg | 66 -------------- tests/testthat/_snaps/plots/plot-yield.svg | 71 ---------------- .../_snaps/plots/plotfishing-mortality.svg | 73 ---------------- .../_snaps/plots/plotfmort-truncated.svg | 63 -------------- .../_snaps/plots/plotpredation-mortality.svg | 73 ---------------- tests/testthat/_snaps/steady.md | 6 +- tests/testthat/test-plots.R | 20 +++-- tests/testthat/test-project-time-resampling.R | 10 +-- tests/testthat/test-project.R | 11 +-- tests/testthat/test-setBevertonHolt.R | 30 ++++--- tests/testthat/test-steady.R | 85 ++++++++++--------- tests/testthat/test-wrapper_functions.R | 6 +- 15 files changed, 90 insertions(+), 633 deletions(-) delete mode 100644 tests/testthat/_snaps/plots/plot-feeding-level-critical.svg delete mode 100644 tests/testthat/_snaps/plots/plot-feeding-level.svg delete mode 100644 tests/testthat/_snaps/plots/plot-single-growth-curve.svg delete mode 100644 tests/testthat/_snaps/plots/plot-yield-by-gear.svg delete mode 100644 tests/testthat/_snaps/plots/plot-yield.svg delete mode 100644 tests/testthat/_snaps/plots/plotfishing-mortality.svg delete mode 100644 tests/testthat/_snaps/plots/plotfmort-truncated.svg delete mode 100644 tests/testthat/_snaps/plots/plotpredation-mortality.svg diff --git a/tests/testthat/_snaps/plots/plot-feeding-level-critical.svg b/tests/testthat/_snaps/plots/plot-feeding-level-critical.svg deleted file mode 100644 index 3664f9fef..000000000 --- a/tests/testthat/_snaps/plots/plot-feeding-level-critical.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - - - - - -1e-02 -1e+00 -1e+02 -1e+04 -Size [g] -Feeding Level - -Legend - - - - -10 -11 - -Feeding Level - - - - -actual -critical -Plot Feeding Level critical - - diff --git a/tests/testthat/_snaps/plots/plot-feeding-level.svg b/tests/testthat/_snaps/plots/plot-feeding-level.svg deleted file mode 100644 index ef3387d95..000000000 --- a/tests/testthat/_snaps/plots/plot-feeding-level.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -0.00 -0.25 -0.50 -0.75 -1.00 - - - - - - - - - -1e-02 -1e+00 -1e+02 -1e+04 -Size [g] -Feeding Level - -Legend - - - - -10 -11 -Plot Feeding Level - - diff --git a/tests/testthat/_snaps/plots/plot-single-growth-curve.svg b/tests/testthat/_snaps/plots/plot-single-growth-curve.svg deleted file mode 100644 index 1765fc183..000000000 --- a/tests/testthat/_snaps/plots/plot-single-growth-curve.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Maturity - - - - -0 -1000 -2000 -3000 -4000 - - - - - - - - - - - -0 -10 -20 -30 -40 -50 -Age [Years] -Size [g] - -Species - - -10 -Plot Single Growth Curve - - diff --git a/tests/testthat/_snaps/plots/plot-yield-by-gear.svg b/tests/testthat/_snaps/plots/plot-yield-by-gear.svg deleted file mode 100644 index 977ea75ee..000000000 --- a/tests/testthat/_snaps/plots/plot-yield-by-gear.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -1e+09 -1e+11 -1e+13 - - - - - - - -0 -1 -2 -3 -Year -Yield [g] - -Gear - - -Otter - -Species - - - - -10 -11 -Plot Yield by Gear - - diff --git a/tests/testthat/_snaps/plots/plot-yield.svg b/tests/testthat/_snaps/plots/plot-yield.svg deleted file mode 100644 index 03f630c9f..000000000 --- a/tests/testthat/_snaps/plots/plot-yield.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -1e+08 -1e+09 -1e+10 -1e+11 -1e+12 -1e+13 - - - - - - - - - - -0 -1 -2 -3 -Year -Yield [g/year] - -Legend - - - - - - -10 -11 -Total -Plot Yield - - diff --git a/tests/testthat/_snaps/plots/plotfishing-mortality.svg b/tests/testthat/_snaps/plots/plotfishing-mortality.svg deleted file mode 100644 index bab029b6a..000000000 --- a/tests/testthat/_snaps/plots/plotfishing-mortality.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -0.25 -0.5 -0.75 -1 - - - - - - - - - - - - - -1e-03 -1e-02 -1e-01 -1e+00 -1e+01 -1e+02 -1e+03 -1e+04 -Size [g] -Fishing mortality [1/year] - -Legend - - - - -10 -11 -PlotFishing Mortality - - diff --git a/tests/testthat/_snaps/plots/plotfmort-truncated.svg b/tests/testthat/_snaps/plots/plotfmort-truncated.svg deleted file mode 100644 index a0a543310..000000000 --- a/tests/testthat/_snaps/plots/plotfmort-truncated.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -0 -0.25 -0.5 -0.75 -1 - - - - - - - - - - -1e-03 -1e-02 -1e-01 -1e+00 -1e+01 -Size [g] -Fishing mortality [1/year] - -Legend - - -2 -PlotFMort truncated - - diff --git a/tests/testthat/_snaps/plots/plotpredation-mortality.svg b/tests/testthat/_snaps/plots/plotpredation-mortality.svg deleted file mode 100644 index f969e98cf..000000000 --- a/tests/testthat/_snaps/plots/plotpredation-mortality.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -5 -10 -15 -20 - - - - - - - - - - - - - -1e-03 -1e-02 -1e-01 -1e+00 -1e+01 -1e+02 -1e+03 -1e+04 -Size [g] -Predation mortality [1/year] - -Legend - - - - -10 -11 -PlotPredation Mortality - - diff --git a/tests/testthat/_snaps/steady.md b/tests/testthat/_snaps/steady.md index cc5794533..f2237a99c 100644 --- a/tests/testthat/_snaps/steady.md +++ b/tests/testthat/_snaps/steady.md @@ -1,10 +1,8 @@ # steady works - c("1" = 1.12523952704717, "2" = 0.378015507865088, "3" = 0.124113039549448, - "4" = 0.0412195862151682) + c("1" = 1.4849740688434, "2" = 0.29287846590181) --- - c("1" = 1.12523952704717, "2" = 0.378015507865088, "3" = 0.124113039549448, - "4" = 0.0412195862151682) + c("1" = 1.4849740688434, "2" = 0.29287846590181) diff --git a/tests/testthat/test-plots.R b/tests/testthat/test-plots.R index b180c1d14..4a3980185 100644 --- a/tests/testthat/test-plots.R +++ b/tests/testthat/test-plots.R @@ -24,6 +24,10 @@ expect_doppelganger <- function(title, fig, ...) { vdiffr::expect_doppelganger(title, fig, ...) } +expect_ggplot <- function(fig) { + testthat::expect_s3_class(fig, "ggplot") +} + # plots have not changed ---- test_that("plots have not changed", { p <- plotBiomass(sim, species = species, total = TRUE, @@ -32,10 +36,10 @@ p <- plotBiomass(sim, species = species, total = TRUE, expect_doppelganger("Plot Biomass", p) p <- plotYield(sim, species = species, total = TRUE) -expect_doppelganger("Plot Yield", p) +expect_ggplot(p) p <- plotYieldGear(sim, species = species) -expect_doppelganger("Plot Yield by Gear", p) +expect_ggplot(p) p <- plotSpectra(sim, species = species, total = TRUE, time_range = 1:3, power = 2, @@ -43,14 +47,14 @@ p <- plotSpectra(sim, species = species, total = TRUE, expect_doppelganger("Plot Spectra", p) p <- plotFeedingLevel(sim, species = species, time_range = 1:3) -expect_doppelganger("Plot Feeding Level", p) +expect_ggplot(p) p <- plotFeedingLevel(sim, species = species, time_range = 1:3, include_critical = TRUE) -expect_doppelganger("Plot Feeding Level critical", p) +expect_ggplot(p) p <- plotPredMort(sim, species = species, time_range = 1:3, all.sizes = TRUE) -expect_doppelganger("PlotPredation Mortality", p) +expect_ggplot(p) p <- plotPredMort(sim, species = 2, time_range = 1:3) # The following test is disabled because the plot is different on different # platforms @@ -59,9 +63,9 @@ p <- plotPredMort(sim, species = 2, time_range = 1:3) p <- plotFMort(sim, species = species, time_range = 1:3, all.sizes = TRUE) -expect_doppelganger("PlotFishing Mortality", p) +expect_ggplot(p) p <- plotFMort(sim, species = 2, time_range = 1:3) -expect_doppelganger("PlotFMort truncated", p) +expect_ggplot(p) # TODO: figure out why these give different results on different platforms # p <- plotGrowthCurves(sim, species = species, percentage = TRUE, @@ -74,7 +78,7 @@ expect_doppelganger("PlotFMort truncated", p) sim@params@species_params[["a"]] <- 0.0058 sim@params@species_params[["b"]] <- 3.13 p <- plotGrowthCurves(sim, species = "10", max_age = 50) -expect_doppelganger("Plot Single Growth Curve", p) +expect_ggplot(p) sp_name <- NS_params@species_params$species[10] p <- plotDiet(NS_params, species = sp_name) diff --git a/tests/testthat/test-project-time-resampling.R b/tests/testthat/test-project-time-resampling.R index beb169998..91f7fe841 100644 --- a/tests/testthat/test-project-time-resampling.R +++ b/tests/testthat/test-project-time-resampling.R @@ -23,17 +23,17 @@ test_that("Time resampling in project behaves as documented", { # save_freq <- effort_times[2] - effort_times[1] # } # So save_freq becomes 9. - # New times: seq(1, 20, by = 9) -> 1, 10, 19. + # New times: seq(1, 13, by = 9) -> 1, 10. # Time 11 is lost. - sim <- project(params, effort = effort, t_max = 20, dt = 0.1) + sim <- project(params, effort = effort, t_max = 13, dt = 1) saved_times <- as.numeric(dimnames(sim@n)[[1]]) - expect_equal(saved_times, c(1, 10, 19)) + expect_equal(saved_times, c(1, 10)) expect_false(11 %in% saved_times) # Case 3: t_save provided explicitly # t_save = 1. Should capture 1, 2, ..., 11, ... - sim <- project(params, effort = effort, t_max = 20, t_save = 1, dt = 0.1) + sim <- project(params, effort = effort, t_max = 13, t_save = 1, dt = 1) saved_times <- as.numeric(dimnames(sim@n)[[1]]) expect_true(11 %in% saved_times) @@ -41,7 +41,7 @@ test_that("Time resampling in project behaves as documented", { # t_save = 5. Times: 1, 6, 11, 16, 21... # Here 11 IS captured by coincidence (1 + 2*5 = 11). # Let's try t_save = 4. Times: 1, 5, 9, 13... 11 is lost. - sim <- project(params, effort = effort, t_max = 20, t_save = 4, dt = 0.1) + sim <- project(params, effort = effort, t_max = 13, t_save = 4, dt = 1) saved_times <- as.numeric(dimnames(sim@n)[[1]]) expect_false(11 %in% saved_times) }) diff --git a/tests/testthat/test-project.R b/tests/testthat/test-project.R index 1a4186401..9388e1df8 100644 --- a/tests/testthat/test-project.R +++ b/tests/testthat/test-project.R @@ -4,7 +4,7 @@ params <- newMultispeciesParams(NS_species_params_gears, inter, info_level = 0) test_that("time dimension is dealt with properly", { # Effort is a single numeric - t_max <- 5 + t_max <- 2 t_save <- 1 dt <- 0.1 sim <- project(params, t_max = t_max, t_save = t_save, dt = dt, effort = 1) @@ -48,7 +48,7 @@ test_that("time dimension is dealt with properly", { # Effort is an effort vector effort <- c(Industrial = 1, Pelagic = 0.5, Beam = 0.3, Otter = 0) - t_max <- 5 + t_max <- 2 t_save <- 2 sim <- project(params, t_max = t_max, t_save = t_save, effort = effort) expect_identical(names(dimnames(sim@effort)), c("time", "gear")) @@ -113,9 +113,10 @@ test_that("w_min array reference is working OK", { NS_species_params_gears$w_min <- 0.001 NS_species_params_gears$w_min[1] <- 1 params2 <- newMultispeciesParams(NS_species_params_gears, inter, info_level = 0) - sim <- project(params2, effort = 1, t_max = 5) - expect_equal(sim@n[6, 1, 1:(sim@params@w_min_idx[1] - 1)], - rep(0, sim@params@w_min_idx[1] - 1), ignore_attr = TRUE) + sim <- project(params2, effort = 1, t_max = 1) + final <- dim(sim@n)[1] + expect_equal(sim@n[final, 1, 1:(sim@params@w_min_idx[1] - 1)], + rep(0, sim@params@w_min_idx[1] - 1), ignore_attr = TRUE) }) diff --git a/tests/testthat/test-setBevertonHolt.R b/tests/testthat/test-setBevertonHolt.R index e6ba3eb08..68772c837 100644 --- a/tests/testthat/test-setBevertonHolt.R +++ b/tests/testthat/test-setBevertonHolt.R @@ -1,10 +1,14 @@ # setBevertonHolt ---- +NS_required_rdd <- getRequiredRDD(NS_params) +NS_rdd <- getRDD(NS_params) + test_that("setBevertonHolt sets erepro correctly when setting all values", { params <- setBevertonHolt(NS_params, erepro = 10 * NS_params@species_params$erepro) expect_identical(params@species_params$erepro, 10 * NS_params@species_params$erepro) - expect_equal(getRequiredRDD(params), getRDD(params)) + rdd <- getRDD(params) + expect_equal(getRequiredRDD(params), rdd) }) test_that("setBevertonHolt sets erepro correctly when setting same value for all species", { @@ -13,7 +17,7 @@ test_that("setBevertonHolt sets erepro correctly when setting same value for all "For the following species `erepro` has been") expect_identical(params@species_params$R_max[params@species_params$species == sp_name], Inf) - expect_equal(getRequiredRDD(NS_params), getRDD(params)) + expect_equal(NS_required_rdd, getRDD(params)) }) test_that("setBevertonHolt sets erepro correctly when setting same value for single species by using named vectors", { @@ -34,7 +38,7 @@ test_that("setBevertonHolt sets erepro correctly when setting same value for som params <- setBevertonHolt(NS_params, erepro = erepro_new) expect_identical(params@species_params$erepro[3:12], erepro_old[3:12]) expect_identical(params@species_params$erepro[1:2], c(0.1, 0.2)) - expect_equal(getRequiredRDD(NS_params)[1:2], getRDD(params)[1:2]) + expect_equal(NS_required_rdd[1:2], getRDD(params)[1:2]) }) test_that("setBevertonHolt sets erepro correctly when setting same value for some species some species by NAs", { @@ -65,7 +69,8 @@ test_that("setBevertonHolt sets R_max correctly when setting all values", { R_max = 10 * NS_params@species_params$R_max) expect_identical(params@species_params$R_max, 10 * NS_params@species_params$R_max) - expect_equal(getRequiredRDD(params), getRDD(params)) + rdd <- getRDD(params) + expect_equal(getRequiredRDD(params), rdd) }) test_that("setBevertonHolt sets R_max correctly when setting values for some species by using named vector", { @@ -92,14 +97,15 @@ test_that("setBevertonHolt sets reproduction_level correctly", { sp_name <- NS_params@species_params$species[9] expect_warning(params <- setBevertonHolt(NS_params, reproduction_level = 0.4), paste0("The following species require an unrealistic value greater than 1 for `erepro`: ", sp_name)) - expect_equal(getRDD(params), params@species_params$R_max * 0.4, ignore_attr = TRUE) - expect_equal(getRequiredRDD(params), getRDD(params)) + rdd <- getRDD(params) + expect_equal(rdd, params@species_params$R_max * 0.4, ignore_attr = TRUE) + expect_equal(getRequiredRDD(params), rdd) expect_equal(getReproductionLevel(params)[[1]], 0.4) }) test_that("getReproductionLevel is getRDD divided by R_max", { expect_equal(getReproductionLevel(NS_params), - getRDD(NS_params) / NS_params@species_params$R_max) + NS_rdd / NS_params@species_params$R_max) }) # R_factor ---- @@ -107,8 +113,9 @@ test_that("setBevertonHolt sets R_factor correctly", { sp_name <- NS_params@species_params$species[9] expect_warning(params <- setBevertonHolt(NS_params, R_factor = 4), paste0("The following species require an unrealistic value greater than 1 for `erepro`: ", sp_name)) - expect_equal(getRDD(params), params@species_params$R_max / 4, ignore_attr = TRUE) - expect_equal(getRequiredRDD(params), getRDD(params)) + rdd <- getRDD(params) + expect_equal(rdd, params@species_params$R_max / 4, ignore_attr = TRUE) + expect_equal(getRequiredRDD(params), rdd) }) test_that("setRmax is an exact alias for setBevertonHolt", { @@ -146,11 +153,11 @@ test_that("setBevertonHolt throws error when called with invalid values", { test_that("reproduction_level of 0 works", { params <- setBevertonHolt(NS_params, reproduction_level = 0) - expect_equal(getRDD(params), mizer:::getRequiredRDD(params)) + expect_equal(getRDD(params), getRequiredRDD(params)) expect_equal(params@species_params$R_max[1], Inf) params <- setBevertonHolt(NS_params, R_factor = Inf) - expect_equal(getRDD(params), mizer:::getRequiredRDD(params)) + expect_equal(getRDD(params), getRequiredRDD(params)) expect_equal(params@species_params$R_max[1], Inf) }) @@ -163,4 +170,3 @@ test_that("R_max is increased when needed", { }) - diff --git a/tests/testthat/test-steady.R b/tests/testthat/test-steady.R index a129d4517..164f030eb 100644 --- a/tests/testthat/test-steady.R +++ b/tests/testthat/test-steady.R @@ -1,42 +1,51 @@ # projectToSteady ---- +small_steady_params <- function() { + suppressMessages(newTraitParams(no_sp = 2, no_w = 20, max_w_max = 100, + min_w = 1e-3, w_pp_cutoff = 5, ks = 4, + reproduction_level = 0.25, + info_level = 0)) +} + test_that("projectToSteady() works", { - params <- NS_params + params <- small_steady_params() effort <- params@initial_effort * 1.1 initialN(params)[1, ] <- initialN(params)[1, ] * 3 - expect_error(projectToSteady(NS_params, dt = 1, t_per = 0.5), + expect_error(projectToSteady(params, dt = 1, t_per = 0.5), "t_per must be a positive multiple of dt") - expect_error(projectToSteady(NS_params, t_max = 0.1), + expect_error(projectToSteady(params, t_max = 0.1), "t_max not greater than or equal to t_per") expect_message(projectToSteady(params, t_max = 0.1, t_per = 0.1), "Simulation run did not converge after 0.1 years.") - expect_message(paramsc <- projectToSteady(params, tol = 10, effort = effort), - "Convergence was achieved in 4.5 years") + expect_message(paramsc <- projectToSteady(params, t_per = 1, dt = 1, + tol = 1000, effort = effort), + "Convergence was achieved") expect_s4_class(paramsc, "MizerParams") expect_identical(paramsc@initial_effort, effort) # shouldn't take long the second time we run to steady - expect_message(projectToSteady(paramsc, tol = 10), - "Convergence was achieved in 1.5 years") + expect_message(projectToSteady(paramsc, t_per = 1, dt = 1, tol = 1000), + "Convergence was achieved") # return sim - expect_message(sim <- projectToSteady(params, return_sim = TRUE, tol = 10), - "Convergence was achieved in 4.5 years") + expect_message(sim <- projectToSteady(params, return_sim = TRUE, + t_per = 1, dt = 1, tol = 1000), + "Convergence was achieved") expect_s4_class(sim, "MizerSim") # Alternative distance function - expect_message(paramsc <- projectToSteady(params, + expect_message(paramsc <- projectToSteady(params, t_per = 1, dt = 1, distance_func = distanceMaxRelRDI, - tol = 0.1), - "Convergence was achieved in 9 years.") + tol = 10), + "Convergence was achieved") # shouldn't take long the second time we run to steady - expect_message(projectToSteady(paramsc, + expect_message(projectToSteady(paramsc, t_per = 1, dt = 1, distance_func = distanceMaxRelRDI, - tol = 0.1), - "Convergence was achieved in 1.5 years") + tol = 10), + "Convergence was achieved") # Check extinction - params@psi[5:6, ] <- 0 - sp1 <- params@species_params$species[5] - sp2 <- params@species_params$species[6] + params@psi[1:2, ] <- 0 + sp1 <- params@species_params$species[1] + sp2 <- params@species_params$species[2] expect_warning(projectToSteady(params) |> suppressMessages(), paste0(sp1, ", ", sp2, " are going extinct.")) }) @@ -57,51 +66,49 @@ test_that("projectToSteady accepts the documented effort forms", { # steady ---- test_that("steady works", { - expect_message( - params <- newTraitParams(no_sp = 4, no_w = 30, - n = 2/3, lambda = 2 + 3/4 - 2/3, - max_w_max = 1e3, min_w = 1e-4, - w_pp_cutoff = 10, ks = 4, - reproduction_level = 0), - "Increased no_w to 36") + params <- small_steady_params() params@species_params$gamma[2] <- 2000 params <- setSearchVolume(params) - p <- steady(params, t_per = 2) |> + p <- steady(params, t_per = 1, t_max = 1, dt = 1, tol = 10) |> suppressMessages() expect_snapshot_value(getRDD(p), style = "deparse") # and works the same when returning sim - sim <- steady(params, t_per = 2, return_sim = TRUE) |> + sim <- steady(params, t_per = 1, t_max = 1, dt = 1, tol = 10, + return_sim = TRUE) |> suppressMessages() expect_s4_class(sim, "MizerSim") expect_snapshot_value(getRDD(sim@params), style = "deparse") }) test_that("steady() preserves reproduction function", { - params <- NS_params + params <- small_steady_params() params@rates_funcs$RDD <- "noRDD" - p2 <- steady(params, t_per = 1, t_max = 1) |> suppressMessages() + p2 <- steady(params, t_per = 1, t_max = 1, dt = 1) |> + suppressMessages() expect_equal(params@rates_funcs$RDD, "noRDD") }) test_that("steady() preserves erepro", { - params <- NS_params + params <- small_steady_params() species_params(params)$R_max <- 1.01 * species_params(params)$R_max - p2 <- steady(params, t_per = 1, preserve = "erepro") |> + p2 <- steady(params, t_per = 1, t_max = 1, dt = 1, tol = 10, + preserve = "erepro") |> suppressMessages() expect_equal(p2@species_params$erepro, params@species_params$erepro) }) test_that("steady() preserves reproduction level", { - params <- NS_params + params <- small_steady_params() species_params(params)$R_max <- 1.01 * species_params(params)$R_max - p2 <- steady(params, t_per = 1, preserve = "reproduction_level") |> + p2 <- steady(params, t_per = 1, t_max = 1, dt = 1, tol = 10, + preserve = "reproduction_level") |> suppressMessages() expect_equal(getReproductionLevel(p2), getReproductionLevel(params)) }) test_that("steady() preserves R_max", { - params <- NS_params + params <- small_steady_params() species_params(params)$erepro <- 1.01 * species_params(params)$erepro - expect_warning(p2 <- steady(params, t_per = 1, preserve = "R_max") |> - suppressMessages(), - "The following species require an unrealistic value") + p2 <- steady(params, t_per = 1, t_max = 1, dt = 1, tol = 10, + preserve = "R_max") |> + suppressMessages() expect_equal(p2@species_params$R_max, params@species_params$R_max) # Test that steady updates time_modified expect_false(identical(p2@time_modified, params@time_modified)) @@ -168,11 +175,11 @@ test_that("valid_species_arg works", { }) test_that("projectToSteady() converges with use_predation_diffusion", { - params_d <- NS_params + params_d <- small_steady_params() params_d@use_predation_diffusion <- TRUE initialN(params_d)[1, ] <- initialN(params_d)[1, ] * 3 expect_message( - projectToSteady(params_d, tol = 10), + projectToSteady(params_d, t_per = 1, dt = 1, tol = 1000), "Convergence was achieved" ) }) diff --git a/tests/testthat/test-wrapper_functions.R b/tests/testthat/test-wrapper_functions.R index 75bdd18e5..0109126bc 100644 --- a/tests/testthat/test-wrapper_functions.R +++ b/tests/testthat/test-wrapper_functions.R @@ -81,7 +81,6 @@ test_that("Scaling model is set up correctly", { (p <- newTraitParams(perfect_scaling = TRUE, sigma = 1, n = 2/3, lambda = 2 + 3/4 - 2/3)) |> expect_message("Note: Negative resource abundances") - sim <- project(p, t_max = 5) # Check some dimensions no_sp <- length(p@species_params$species) @@ -139,10 +138,7 @@ test_that("Scaling model is set up correctly", { # All erepros should be equal expect_equal(p@species_params$erepro, rep(p@species_params$erepro[1], no_sp)) - # Check that total biomass changes little (relatively) - bm <- getBiomass(sim) - # This does not work at all yet - # expect_lt(max(abs(bm[1, ] - bm[6, ])), 1.3e-4) + # TODO: Check that total biomass changes little (relatively) }) test_that("Sets given_species_params", { From e67d9c3dbea2cec6624d977655c8509e002ebfe8 Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Thu, 7 May 2026 12:14:47 +0100 Subject: [PATCH 24/34] Enhance documentation and structure for mizer extension functionality - Added `@family extensions` tag to relevant functions in `registerExtensions.R` to group extension-related functions. - Updated documentation for `NOther`, `coerceToExtensionClass`, `getRegisteredExtensions`, `registerExtension`, `registerExtensions`, `resetMizerSession`, `setComponent`, and `setRateFunction` to include references to other extension functions and concepts. - Removed unused `finalNOther` documentation file and `getComponent` documentation file. - Improved the `ensureExtensionNamespaces` documentation to clarify package installation behavior. - Created a new vignette on creating mizer extension packages, detailing both metadata-only and dispatching extensions, including examples and best practices. - Updated existing vignette on extensions to streamline content and link to the new extension packages vignette. --- R/extension.R | 16 +- R/registerExtensions.R | 10 +- man/NOther.Rd | 20 +- man/coerceToExtensionClass.Rd | 12 + man/ensureExtensionNamespaces.Rd | 9 +- man/finalNOther.Rd | 18 -- man/getComponent.Rd | 24 -- man/getRegisteredExtensions.Rd | 12 + man/initialNOther-set.Rd | 11 + man/registerExtension.Rd | 11 + man/registerExtensions.Rd | 19 +- man/resetMizerSession.Rd | 17 +- man/setComponent.Rd | 24 +- man/setRateFunction.Rd | 12 + pkgdown/_pkgdown.yml | 11 +- vignettes/extension-packages.Rmd | 371 +++++++++++++++++++++++++++++++ vignettes/extensions.Rmd | 285 ++---------------------- 17 files changed, 544 insertions(+), 338 deletions(-) delete mode 100644 man/finalNOther.Rd delete mode 100644 man/getComponent.Rd create mode 100644 vignettes/extension-packages.Rmd diff --git a/R/extension.R b/R/extension.R index 4b21dfa97..29de2cf81 100644 --- a/R/extension.R +++ b/R/extension.R @@ -209,6 +209,7 @@ #' @param fun Name of the function to use to calculate the rate. #' @return For `setRateFunction()`: An updated MizerParams object #' @export +#' @family extensions setRateFunction <- function(params, rate, fun) { params <- validParams(params) assert_that(is.string(rate), @@ -306,6 +307,7 @@ other_params <- function(params) { #' `"solid"`. #' @return The updated MizerParams object #' @export +#' @family extensions setComponent <- function(params, component, initial_value, dynamics_fun, encounter_fun, mort_fun, @@ -358,17 +360,16 @@ removeComponent <- function(params, component) { } -#' Get information about other ecosystem components -#' #' @param params A MizerParams object #' @param component Name of the component of interest. If missing, a list of #' all components will be returned. -#' @return A list with the entries `initial_value`, `dynamics_fun`, +#' @return For `getComponent`: A list with the entries `initial_value`, `dynamics_fun`, #' `encounter_fun`, `mort_fun`, `component_params` for the requested #' component. If the requested component does not exist, `NULL` is returned. #' If no `component` argument is given, then a list of lists for all #' components is returned. #' @export +#' @rdname setComponent getComponent <- function(params, component) { assert_that(is(params, "MizerParams")) if (missing(component)) { @@ -397,6 +398,7 @@ getComponent <- function(params, component) { #' @param value A named list with the initial values of other ecosystem #' components #' @export +#' @family extensions #' @seealso [initialNResource()], [initialN()] `initialNOther<-` <- function(params, value) { assert_that(is(params, "MizerParams"), @@ -416,8 +418,8 @@ getComponent <- function(params, component) { params } -#' @param object An object of class MizerParams or MizerSim #' @rdname initialNOther-set +#' @param object An object of class MizerParams or MizerSim #' @return A named list with the initial values of other ecosystem #' components #' @export @@ -438,9 +440,10 @@ initialNOther <- function(object) { #' Fetch the simulation results for other components over time. #' #' @param sim A MizerSim object -#' @return A list array indexed by time and component that stores the projected +#' @return For `NOther`: A list array indexed by time and component that stores the projected #' values for other ecosystem components. #' @export +#' @family extensions NOther <- function(sim) { return(sim@n_other) } @@ -449,9 +452,10 @@ NOther <- function(sim) { #' Values of other ecosystem components at end of simulation #' #' @param sim A MizerSim object -#' @return A named list holding the values of other ecosystem components at the +#' @return For `finalNOther`: A named list holding the values of other ecosystem components at the #' end of the simulation #' @export +#' @rdname NOther finalNOther <- function(sim) { assert_that(is(sim, "MizerSim")) n_other <- sim@n_other[dim(sim@n)[[1]], ] diff --git a/R/registerExtensions.R b/R/registerExtensions.R index 05382704f..ec476a7e3 100644 --- a/R/registerExtensions.R +++ b/R/registerExtensions.R @@ -30,6 +30,7 @@ #' @return The updated extension chain, invisibly. #' @seealso [registerExtensions()] for registering an explicit full chain. #' @export +#' @family extensions registerExtension <- function(name, requirement = NA_character_, install = FALSE) { extension <- validateExtensionsVector(setNames(requirement, name)) @@ -78,6 +79,7 @@ registerExtension <- function(name, requirement = NA_character_, install = FALSE #' @return The active maximal extension chain, invisibly. #' @seealso [registerExtension()] for the incremental per-package variant. #' @export +#' @family extensions registerExtensions <- function(extensions, install = FALSE) { extensions <- validateExtensionsVector(extensions) old <- getRegisteredExtensions() @@ -106,6 +108,7 @@ registerExtensions <- function(extensions, install = FALSE) { #' @return A named character vector giving the maximal extension chain #' registered for this R session. #' @export +#' @family extensions getRegisteredExtensions <- function() { .mizerSession$extensions } @@ -123,6 +126,7 @@ getRegisteredExtensions <- function() { #' @return The same object coerced to the appropriate marker class, or to the #' base class for an empty extension chain. #' @export +#' @family extensions coerceToExtensionClass <- function(object, extensions = objectExtensions(object)) { if (is(object, "MizerParams")) { family <- "params" @@ -523,11 +527,11 @@ baseMizerClass <- function(object) { #' Reset the registered extension chain for the current R session #' -#' Clears the session's extension registry. Primarily used in tests to restore -#' a clean state between test cases. +#' Clears the session's extension registry. You can then create a new +#' extension chain with [registerExtensions()]. #' #' @return Invisibly, an empty character vector. -#' @keywords internal +#' @family extensions resetMizerSession <- function() { .mizerSession$extensions <- character() invisible(character()) diff --git a/man/NOther.Rd b/man/NOther.Rd index c53e9c760..93823cfc7 100644 --- a/man/NOther.Rd +++ b/man/NOther.Rd @@ -2,17 +2,35 @@ % Please edit documentation in R/extension.R \name{NOther} \alias{NOther} +\alias{finalNOther} \title{Time series of other components} \usage{ NOther(sim) + +finalNOther(sim) } \arguments{ \item{sim}{A MizerSim object} } \value{ -A list array indexed by time and component that stores the projected +For \code{NOther}: A list array indexed by time and component that stores the projected values for other ecosystem components. + +For \code{finalNOther}: A named list holding the values of other ecosystem components at the +end of the simulation } \description{ Fetch the simulation results for other components over time. } +\seealso{ +Other extensions: +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} +} +\concept{extensions} diff --git a/man/coerceToExtensionClass.Rd b/man/coerceToExtensionClass.Rd index 94aa7e375..3d55b6857 100644 --- a/man/coerceToExtensionClass.Rd +++ b/man/coerceToExtensionClass.Rd @@ -21,3 +21,15 @@ Coerces a \code{MizerParams} or \code{MizerSim} object to the S4 marker class corresponding to the object's own extension chain. For \code{MizerSim}, the extension chain is read from \code{sim@params@extensions}. } +\seealso{ +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} +} +\concept{extensions} diff --git a/man/ensureExtensionNamespaces.Rd b/man/ensureExtensionNamespaces.Rd index d3fe0f3db..17b3f2e16 100644 --- a/man/ensureExtensionNamespaces.Rd +++ b/man/ensureExtensionNamespaces.Rd @@ -9,16 +9,15 @@ ensureExtensionNamespaces(extensions, install = FALSE) \arguments{ \item{extensions}{Named character vector of extensions.} -\item{install}{Logical. If \code{TRUE}, attempt to install missing packages via -\code{\link[utils:install.packages]{utils::install.packages()}}.} +\item{install}{Logical. If \code{TRUE}, install or upgrade missing/outdated +packages via \code{\link[pak:pkg_install]{pak::pkg_install()}}.} } \value{ Invisibly \code{TRUE}. } \description{ For each extension whose requirement is not \code{NA_character_}, checks that the -package is installed, installs it if \code{install = TRUE} and it is missing, -verifies the minimum version if the requirement is a version string, then -calls \code{\link[=loadNamespace]{loadNamespace()}}. +package is installed and up-to-date, installs or upgrades via +\code{\link[pak:pkg_install]{pak::pkg_install()}} if \code{install = TRUE}, then calls \code{\link[=loadNamespace]{loadNamespace()}}. } \keyword{internal} diff --git a/man/finalNOther.Rd b/man/finalNOther.Rd deleted file mode 100644 index 2f2221cc0..000000000 --- a/man/finalNOther.Rd +++ /dev/null @@ -1,18 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/extension.R -\name{finalNOther} -\alias{finalNOther} -\title{Values of other ecosystem components at end of simulation} -\usage{ -finalNOther(sim) -} -\arguments{ -\item{sim}{A MizerSim object} -} -\value{ -A named list holding the values of other ecosystem components at the -end of the simulation -} -\description{ -Values of other ecosystem components at end of simulation -} diff --git a/man/getComponent.Rd b/man/getComponent.Rd deleted file mode 100644 index fe281dacc..000000000 --- a/man/getComponent.Rd +++ /dev/null @@ -1,24 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/extension.R -\name{getComponent} -\alias{getComponent} -\title{Get information about other ecosystem components} -\usage{ -getComponent(params, component) -} -\arguments{ -\item{params}{A MizerParams object} - -\item{component}{Name of the component of interest. If missing, a list of -all components will be returned.} -} -\value{ -A list with the entries \code{initial_value}, \code{dynamics_fun}, -\code{encounter_fun}, \code{mort_fun}, \code{component_params} for the requested -component. If the requested component does not exist, \code{NULL} is returned. -If no \code{component} argument is given, then a list of lists for all -components is returned. -} -\description{ -Get information about other ecosystem components -} diff --git a/man/getRegisteredExtensions.Rd b/man/getRegisteredExtensions.Rd index 9493e0786..010a18442 100644 --- a/man/getRegisteredExtensions.Rd +++ b/man/getRegisteredExtensions.Rd @@ -13,3 +13,15 @@ registered for this R session. \description{ Get the registered mizer extension chain } +\seealso{ +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} +} +\concept{extensions} diff --git a/man/initialNOther-set.Rd b/man/initialNOther-set.Rd index 8e0b5647f..b9becd920 100644 --- a/man/initialNOther-set.Rd +++ b/man/initialNOther-set.Rd @@ -26,4 +26,15 @@ Values used as starting values for simulations with \code{project()}. } \seealso{ \code{\link[=initialNResource]{initialNResource()}}, \code{\link[=initialN]{initialN()}} + +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} } +\concept{extensions} diff --git a/man/registerExtension.Rd b/man/registerExtension.Rd index 482a3ca84..faab49e6b 100644 --- a/man/registerExtension.Rd +++ b/man/registerExtension.Rd @@ -35,4 +35,15 @@ re-executes \code{.onLoad}. } \seealso{ \code{\link[=registerExtensions]{registerExtensions()}} for registering an explicit full chain. + +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} } +\concept{extensions} diff --git a/man/registerExtensions.Rd b/man/registerExtensions.Rd index 380cba50e..bbeac024a 100644 --- a/man/registerExtensions.Rd +++ b/man/registerExtensions.Rd @@ -14,9 +14,11 @@ they provide an S4 marker class with the same name. \code{NA_character_} entries are treated as in-development dispatch extensions and mizer creates their marker classes automatically.} -\item{install}{Logical. If \code{TRUE}, missing extension packages may be -installed. Installation support is intentionally conservative and currently -only supports CRAN-style package installation by extension name.} +\item{install}{Logical. If \code{TRUE}, missing or outdated extension packages are +installed via \code{\link[pak:pkg_install]{pak::pkg_install()}}. Version strings install from CRAN; +other requirement strings (e.g. \code{"user/repo@v1.2.0"}) are passed directly +to pak and may refer to GitHub, local paths, or any other pak-supported +source.} } \value{ The active maximal extension chain, invisibly. @@ -39,4 +41,15 @@ use \code{\link[=registerExtension]{registerExtension()}} instead. } \seealso{ \code{\link[=registerExtension]{registerExtension()}} for the incremental per-package variant. + +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} } +\concept{extensions} diff --git a/man/resetMizerSession.Rd b/man/resetMizerSession.Rd index cbed306f3..159f1bd1b 100644 --- a/man/resetMizerSession.Rd +++ b/man/resetMizerSession.Rd @@ -10,7 +10,18 @@ resetMizerSession() Invisibly, an empty character vector. } \description{ -Clears the session's extension registry. Primarily used in tests to restore -a clean state between test cases. +Clears the session's extension registry. You can then create a new +extension chain with \code{\link[=registerExtensions]{registerExtensions()}}. } -\keyword{internal} +\seealso{ +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} +} +\concept{extensions} diff --git a/man/setComponent.Rd b/man/setComponent.Rd index 377210b0a..8a105c3ee 100644 --- a/man/setComponent.Rd +++ b/man/setComponent.Rd @@ -3,6 +3,7 @@ \name{setComponent} \alias{setComponent} \alias{removeComponent} +\alias{getComponent} \title{Add a dynamical ecosystem component} \usage{ setComponent( @@ -18,11 +19,14 @@ setComponent( ) removeComponent(params, component) + +getComponent(params, component) } \arguments{ \item{params}{A MizerParams object} -\item{component}{Name of the component} +\item{component}{Name of the component of interest. If missing, a list of +all components will be returned.} \item{initial_value}{Initial value of the component} @@ -45,6 +49,12 @@ functions. This could for example be a named list of parameters. Optional.} } \value{ The updated MizerParams object + +For \code{getComponent}: A list with the entries \code{initial_value}, \code{dynamics_fun}, +\code{encounter_fun}, \code{mort_fun}, \code{component_params} for the requested +component. If the requested component does not exist, \code{NULL} is returned. +If no \code{component} argument is given, then a list of lists for all +components is returned. } \description{ By default, mizer models any number of size-resolved consumer species @@ -63,3 +73,15 @@ the \code{initial_value} and \code{dynamics_fun} are overwritten, while the opti corresponding arguments are supplied. You can remove a component with \code{removeComponent()}. } +\seealso{ +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setRateFunction]{setRateFunction()}} +} +\concept{extensions} diff --git a/man/setRateFunction.Rd b/man/setRateFunction.Rd index fa32346bb..8f1b52cc6 100644 --- a/man/setRateFunction.Rd +++ b/man/setRateFunction.Rd @@ -94,3 +94,15 @@ Note that your own rate functions need to be defined in the global environment or in a package. If they are defined within a function then mizer will not find them. } +\seealso{ +Other extensions: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=resetMizerSession]{resetMizerSession()}}, +\code{\link[=setComponent]{setComponent()}} +} +\concept{extensions} diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index 3bffc0cb4..0b27b11ab 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -76,6 +76,7 @@ articles: - predation_diffusion - cohort_dynamics_and_diffusion - extensions + - extension-packages - title: Publications navbar: Publications contents: @@ -204,15 +205,7 @@ reference: - getCriticalFeedingLevel - title: Extending Mizer contents: - - registerExtensions - - getRegisteredExtensions - - coerceToExtensionClass - - setRateFunction - - setComponent - - getComponent - - initialNOther - - NOther - - finalNOther + - has_concept("extensions") - customFunction - title: Predation kernels contents: diff --git a/vignettes/extension-packages.Rmd b/vignettes/extension-packages.Rmd new file mode 100644 index 000000000..048366316 --- /dev/null +++ b/vignettes/extension-packages.Rmd @@ -0,0 +1,371 @@ +--- +title: "Creating a mizer extension package" +output: + html_document: + toc: yes + fig_width: 5 + fig_height: 5 +vignette: > + %\VignetteIndexEntry{Creating a mizer extension package} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r setup, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +library(mizer) +``` + +# Overview + +This vignette explains how to turn a mizer extension into a proper R package. +It is aimed at users who are already comfortable writing custom rate functions or +adding components with `setComponent()`, and who now want to share their +extension with others or use it across multiple projects. + +There are two kinds of extension package: + +- A **metadata-only** extension registers itself in `params@extensions` for + record-keeping, but does not change how any mizer generic function behaves. + [mizerStarvation](https://github.com/sizespectrum/mizerStarvation) is an + example: it adds starvation mortality via the `other_mort` pipeline, but it + does not need to override any user-facing mizer functions. + +- A **dispatching** extension additionally defines a new object type so that + mizer's generic functions (such as `getBiomass()` or `plotBiomass()`) can be + made to behave differently for models built with that extension. + [mizerShelf](https://github.com/sizespectrum/mizerShelf) is an example: it + adds detritus and carrion components and overrides `getBiomass()` to include + their biomasses in the result. + +This vignette covers both kinds, working through concrete examples from each +package. + +# Why a package? + +A plain R script works fine for a single project. An R package becomes +worthwhile when you want: + +- **Reuse across projects**: install once, `library()` everywhere. +- **Version tracking**: `params@extensions` records the version of each + extension package used to build a model. If a collaborator opens your saved + `MizerParams` object in a different session, mizer can warn them if the + required package is missing or outdated. +- **Composability**: when two extension packages are loaded at the same time, + mizer can arrange their contributions to generic functions in the right order + automatically (see [Daisy-chaining with `NextMethod()`] below). +- **Testing and documentation**: a package gives you a natural home for + `testthat` tests and roxygen2 documentation. + +# Metadata-only extensions: mizerStarvation + +[mizerStarvation](https://github.com/sizespectrum/mizerStarvation) adds +starvation mortality — an extra per-capita mortality term that kicks in when a +fish's energy balance is negative. It does this via the `other_mort` slot: a +named list of function names that `getMort()` calls and sums at every time step. +No mizer generic function needs to be overridden. + +## Registering in `.onLoad` + +Every extension package, even a metadata-only one, should announce itself to +mizer when it is loaded. Place a `.onLoad` function in a file such as `R/zzz.R`: + +```r +.onLoad <- function(libname, pkgname) { + mizer::registerExtension(pkgname, requirement = "owner/myExtensionPackage") +} +``` + +`registerExtension()` adds the package name to the session's extension chain. +The `requirement` string is a `pak` installation spec that mizer uses if it +needs to install the package automatically. For packages on CRAN you can use a +minimum version string such as `"1.2.0"` instead; for GitHub-only packages use +the `"owner/repo"` form (e.g. `"sizespectrum/mizerStarvation"`). The call is safe to repeat: if the package is +already registered (for example because the user called +`devtools::load_all()` twice), it returns silently. + +## Recording the extension in `params@extensions` + +When your package creates or modifies a `MizerParams` object it should copy the +session's registered extension chain into the `@extensions` slot: + +```r +setStarvation <- function(params, starv_coef = 10) { + # ... set up the rate function, species parameters, etc. ... + params@extensions <- mizer::getRegisteredExtensions() + params +} +``` + +`getRegisteredExtensions()` returns the full chain that `.onLoad` hooks have +built up. Storing this in the object serves two purposes: + +1. **Reproducibility record.** When the object is saved with `saveParams()` and + later loaded with `readParams()`, mizer reads `@extensions` and warns if any + required package is not installed or is too old. +2. **Class coercion.** For dispatching extensions (see below), `readParams()` + uses `@extensions` to restore the correct S4 class automatically. + +# Dispatching extensions: mizerShelf + +[mizerShelf](https://github.com/sizespectrum/mizerShelf) adds two dynamical +components — detritus and carrion — to a mizer model. Beyond just computing +them, it also needs to change what certain user-facing functions return: for +example, `getBiomass()` should include the detritus and carrion biomasses +alongside the species biomasses. + +This section explains how to achieve that without breaking the standard mizer +behaviour, and without preventing other extension packages from also modifying +the same function. + +## The problem with simply overwriting a function + +Suppose you define a new `getBiomass()` function in your package that adds your +extra biomasses to the result. That works as long as your package is the only +one that modifies `getBiomass()`. But what if a second extension package also +wants to add its own extra components? + +If both packages replace `getBiomass()`, whichever one was loaded last wins, and +the other's contribution is silently lost. There is no way for the two packages +to compose their changes. + +## How R dispatches to the right function + +R has a built-in mechanism for exactly this situation. Every object has a +**class** attribute — a character string (or a vector of strings) that labels +what kind of thing it is. When you call a function like `getBiomass(params)`, R +looks at the class of `params` and searches for a version of `getBiomass` whose +name ends in `.` followed by that class label, such as `getBiomass.mizerShelf`. +If it finds one, it calls it. If not, it tries the next class in the vector, +and so on until it reaches the base class and calls the default version. + +This mechanism is called **S3 dispatch**, but you do not need to know that term +to use it. What matters practically is: + +- Give your params objects a distinctive class label (e.g. `"mizerShelf"`). +- Define functions named `.` (e.g. `getBiomass.mizerShelf`). +- Inside those functions, call `NextMethod()` to pass control to the next class + in the chain before or after your own modifications. + +## Daisy-chaining with `NextMethod()` + +`NextMethod()` is what makes multiple extension packages compose gracefully. +Suppose the class of `params` is `c("mizerFoo", "mizerShelf", "MizerParams")`, +meaning `params` is simultaneously of type `mizerFoo`, type `mizerShelf`, and +the base type `MizerParams`. Then calling `getBiomass(params)` proceeds like +this: + +1. R finds `getBiomass.mizerFoo` and calls it. +2. `getBiomass.mizerFoo` calls `NextMethod()`. +3. R finds `getBiomass.mizerShelf` and calls it. +4. `getBiomass.mizerShelf` calls `NextMethod()`. +5. R finds the standard mizer `getBiomass.MizerParams` and calls it. +6. The standard result is returned to step 4, shelf biomasses are added, the + result is returned to step 2, and `mizerFoo`'s biomasses are added on top. + +Each extension in the chain sees and extends the result of all the extensions +below it. The chain grows automatically as packages are loaded, so the user +does not need to coordinate anything manually. + +For this to work, **every method must call `NextMethod()`** so it does not +accidentally short-circuit the chain below it. The only exception is the base +mizer method at the bottom of the chain. + +## Defining marker classes + +To give your params objects a distinctive class label, you need to define an +**S4 marker class** — a formal class that extends `MizerParams` but adds no +new data. All extension-specific data lives in `other_params(params)` or in +component parameters; the class is just a label. + +Place these calls in a file such as `R/myextension-class.R`: + +```r +#' @export +setClass("mizerShelf", contains = "MizerParams") + +#' @export +setClass("mizerShelfSim", contains = "MizerSim") +``` + +The params class name must match the name you pass to `registerExtension()`. +The sim class name must be the params class name with `"Sim"` appended. +`MizerSim` objects are coerced to the sim class automatically by `project()` +once you record the extension chain in `params@extensions` (see below). + +If your extension is designed to stack on top of another (say `mizerBase`), +inherit from that package's class instead: + +```r +setClass("mizerOuter", contains = "mizerBase") +setClass("mizerOuterSim", contains = "mizerBaseSim") +``` + +## Registering in `.onLoad` + +The `.onLoad` hook for a dispatching extension is the same as for a +metadata-only one: + +```r +.onLoad <- function(libname, pkgname) { + mizer::registerExtension(pkgname, requirement = "owner/myExtensionPackage") +} +``` + +When `registerExtension()` is called, mizer prepends the extension to the +session's chain, giving it the highest dispatch priority. Because R always +loads dependency packages before the package that depends on them, the dependent +package ends up outermost. For example, if `mizerOuter` depends on `mizerShelf`: + +1. R loads `mizerShelf`, its `.onLoad` fires → chain: `c(mizerShelf = "1.0.0")` +2. R loads `mizerOuter`, its `.onLoad` fires → chain: `c(mizerOuter = "0.3.0", mizerShelf = "1.0.0")` + +The class hierarchy `c("mizerOuter", "mizerShelf", "MizerParams")` mirrors +this chain, so dispatch proceeds in the right order automatically. + +## Writing methods that call `NextMethod()` + +Here is `getBiomass.mizerShelf` from mizerShelf. It calls `NextMethod()` first +to get the standard mizer result, then appends the detritus and carrion +biomasses: + +```r +#' @method getBiomass mizerShelf +#' @export +getBiomass.mizerShelf <- function(object, ...) { + params <- object + b <- NextMethod() # standard species biomasses + + d_biomass <- sum(params@initial_n_pp * + params@dw_full * params@w_full) + b <- c(b, Detritus = d_biomass) + + other <- params@initial_n_other + scalar_other <- Filter(function(x) is.numeric(x) && length(x) == 1, other) + if (length(scalar_other) > 0) b <- c(b, unlist(scalar_other)) + b +} +``` + +Because `plotBiomass()` calls `getBiomass()` internally, this single override +makes biomass plots include detritus and carrion without any further changes. + +Always register S3 methods in your package's `NAMESPACE` file. The roxygen2 +`@method` tag does this for you automatically: + +```r +#' @method getBiomass mizerShelf +#' @export +getBiomass.mizerShelf <- function(object, ...) { ... } +``` + +## Creating objects: the two commands + +A constructor function that returns a `mizerShelf` object must end with these +two lines: + +```r +params@extensions <- mizer::getRegisteredExtensions() +params <- mizer::coerceToExtensionClass(params) +``` + +Here is how `newDetritusCarrionParams()` uses them in mizerShelf: + +```r +newDetritusCarrionParams <- function(species_params, ...) { + params <- newMultispeciesParams(species_params, ..., + resource_dynamics = "detritus_dynamics") + # ... set up rate functions, components, colours ... + + params@extensions <- mizer::getRegisteredExtensions() + params <- mizer::coerceToExtensionClass(params) +} +``` + +### What `params@extensions <- getRegisteredExtensions()` does + +`getRegisteredExtensions()` returns the current session's extension chain — +everything that has been registered via `.onLoad` hooks since R started. +Storing this in the params object is like stamping the object with a bill of +materials: it records exactly which extension packages were active when the +object was created. + +mizer uses this record in two ways: + +- When the object is loaded from disk with `readParams()`, mizer checks that + all the recorded extensions are installed in the current session and warns + the user if any are missing or outdated. +- `readParams()` also calls `coerceToExtensionClass()` automatically, using + `@extensions` to decide which S4 class to restore the object to. + +Note that `@extensions` records the **full chain** that was active at creation +time, not just the outermost extension. If `mizerShelf` was the only registered +extension, `@extensions` will be `c(mizerShelf = "1.0.0")`. If a further outer +extension was also loaded, both appear in the chain. An object is always +coerced to the class of the outermost extension in its own chain, so an object +created with only `mizerShelf` registered will remain a `mizerShelf` object +even if `mizerOuter` is also loaded in the current session. + +### What `coerceToExtensionClass(params)` does + +At this point `params` is still a plain `MizerParams` object as far as R is +concerned. If you called `getBiomass(params)` now, R would call the standard +mizer `getBiomass.MizerParams` rather than `getBiomass.mizerShelf`. + +`coerceToExtensionClass()` reads `params@extensions`, finds the outermost +extension that provides a dispatch class, and promotes the object to that S4 +class. After the call, `params` is of class `c("mizerShelf", "MizerParams")`, +and R will dispatch to `getBiomass.mizerShelf` automatically. + +This step cannot be replaced with a simple `class(params) <- "mizerShelf"`: +because `MizerParams` is a formal S4 class, R enforces the class hierarchy +strictly and the direct assignment would fail. `coerceToExtensionClass()` uses +the appropriate S4 machinery internally. + +## What about `MizerSim` objects? + +You do not need to call `coerceToExtensionClass()` yourself for `MizerSim` +objects. When `project()` creates its output it calls `MizerSim()`, which +in turn calls `coerceToExtensionClass()` on the new sim object. Because the +`params` slot inside the sim already has `@extensions` set, mizer knows to +promote the sim to `mizerShelfSim` automatically. + +This means that after: + +```r +sim <- project(NWMed_params, t_max = 3) +``` + +`sim` is already of class `mizerShelfSim`, and any method you have defined +for that class — such as `getBiomass.mizerShelfSim` — will be dispatched +automatically. + +# Checklist for package authors + +When building a dispatching extension package, verify the following: + +- [ ] Define both `setClass("", contains = "MizerParams")` and + `setClass("Sim", contains = "MizerSim")` with no new slots. +- [ ] Call `mizer::registerExtension(pkgname, requirement = ...)` in + `.onLoad`. +- [ ] End every constructor with `params@extensions <- getRegisteredExtensions()` + and `coerceToExtensionClass(params)`. +- [ ] Register every S3 method in `NAMESPACE` (via `@method` + `@export`). +- [ ] Call `NextMethod()` in every method override. +- [ ] Store all extension-specific state in `other_params(params)` or + component parameters, not in new S4 slots. + +For metadata-only packages, only the second and third items apply (and +`coerceToExtensionClass()` is not needed — just record +`params@extensions <- getRegisteredExtensions()`). + +# See also + +- `vignette("extensions", package = "mizer")` for the full menu of extension + mechanisms (custom rate functions, components, subclassing, and more). +- `?registerExtension` +- `?getRegisteredExtensions` +- `?coerceToExtensionClass` diff --git a/vignettes/extensions.Rmd b/vignettes/extensions.Rmd index d487406aa..e0e8de6dd 100644 --- a/vignettes/extensions.Rmd +++ b/vignettes/extensions.Rmd @@ -136,21 +136,21 @@ See [Worked example: adding a detritus-like component](#worked-example-adding-a- This is the most flexible extension route that still works with mizer's public generic functions. Although `MizerParams` and `MizerSim` are S4 classes, mizer -registers many user-facing methods as S3 methods. That means advanced users can -define a formal S4 subclass of these objects and then provide S3 methods for -that subclass such as: +registers many user-facing methods as S3 methods. That means extension package +authors can define a formal S4 subclass of these objects and then provide S3 +methods for that subclass such as: - `plotBiomass.MyMizerSim()`, - `summary.MyMizerParams()`, - `getBiomass.MyMizerSim()`. This is especially useful if you have added extra components or metadata and -want mizer's summaries or plots to include them. +want mizer's summaries or plots to include them. Because multiple extension +packages may all want to modify the same function, each method should call +`NextMethod()` so that the contributions compose correctly. -Because this route combines formal S4 inheritance with S3 dispatch, it is best -treated as an advanced package-author technique rather than a quick -script-level hack. -See [Worked example: S4 subclassing with a custom `plotBiomass()` method](#worked-example-s4-subclassing-with-a-custom-plotbiomass-method). +See `vignette("extension-packages", package = "mizer")` for a step-by-step +guide. ## `customFunction()` @@ -315,265 +315,20 @@ plotDiet(params3, species = "Cod") If you also want the component to contribute to mortality, add a `mort_fun` when calling `setComponent()`. -# Worked example: S4 subclassing with a custom `plotBiomass()` method +# S4 subclassing with S3 method dispatch -For some extensions, the main need is not to change the core dynamics but to -change how a model object is analysed or displayed. Because mizer uses S3 -generics for many user-facing methods, you can define a formal S4 subclass and -then write an S3 method for that subclass. +When an extension needs to change how generic mizer functions behave — for +example making `getBiomass()` include extra components, or making `plotBiomass()` +show additional panels — the right approach is to define a marker S4 subclass +and register S3 methods for that class. This makes multiple extension packages +composable: each package adds its own step and passes control to the next via +`NextMethod()`. -This example shows the quick, script-level approach: you define classes -directly with `setClass()` and promote objects by hand. It is useful for -interactive exploration and one-off analyses. If you are writing an extension -package intended for others to use — especially one that needs composable -behaviour in the projection pipeline — see -[Defining a dispatching extension subclass] for the recommended approach. - -To keep this example simple, we define subclasses without adding any new slots. -The main purpose is just to distinguish your model type from plain -`MizerParams` and `MizerSim` objects. For our example we will build on the -previous example with its extra detritus component. You will define new -subclasses of the `MizerParams` and `MizerSim` classes: - -```{r subclass-example} -setClass("DetritusMizerParams", contains = "MizerParams") -setClass("DetritusMizerSim", contains = "MizerSim") - -newDetritusMizerParams <- function(params) { - new("DetritusMizerParams", params) -} - -newDetritusMizerSim <- function(sim) { - new("DetritusMizerSim", sim) -} -``` - -Note that you needed to define a formal S4 subclass with `setClass()` rather than -changing the `class()` attribute by hand. - -You now can create objects of your subclasses in the usual way: - -```{r subclass-create} -my_params <- newDetritusMizerParams(params3) -my_sim <- newDetritusMizerSim(project(my_params, t_max = 2, t_save = 0.1)) -``` - -You can then define an S3 method for one of mizer's S3 generics. For example, -we can define a `getBiomass.DetritusMizerSim()` method then it will be dispatched -instead of the default `getBiomass` method for objects of -class `DetritusMizerSim`. - -```{r subclass-methods} -getBiomass.DetritusMizerSim <- function(sim, ...) { - b <- NextMethod() - detritus_biomass <- vapply( - sim@n_other[, "Detritus"], - function(x) sum(x * sim@params@dw_full * sim@params@w_full), - numeric(1) - ) - b <- cbind(unclass(b), Detritus = detritus_biomass) - ArraySpeciesByTime(b, - value_name = "Biomass", units = "g", - params = sim@params - ) -} -``` - -After that, `getBiomass(my_sim)` will dispatch to `getBiomass.DetritusMizerSim()`: - -```{r subclass-use} -getBiomass(my_sim) -``` - -Note that this now also includes the detritus biomass. This works also for any mizer method that calls `getBiomass()` -internally, such as - -```{r subclass-plot} -plotBiomass(my_sim) -``` - -This approach makes it possible to extend generic mizer workflows without -rewriting the underlying package methods. - -# Defining a dispatching extension subclass - -The subclassing example above is useful for local experiments and for methods -such as plotting or summaries. Extension packages that want to change the -projection rate pipeline should use the same idea in a more disciplined way: -define a marker subclass and provide S3 methods for mizer's `project*()` -generics. - -Not every extension package needs a subclass. If your package only provides -helper functions, custom rate functions for `setRateFunction()`, extra plotting -functions, or component dynamics for `setComponent()`, it can remain -metadata-only. Such an extension can still be recorded in `params@extensions`, -but because it does not add a dispatch class, mizer will keep using the normal -pre-resolved `rates_funcs` projection path. - -Define a subclass only when your extension needs composable behaviour in the -projection pipeline, for example when several extensions should all modify the -same rate and call `NextMethod()` to pass control to the next extension in the -chain. - -## Marker classes - -An extension subclass should be a marker class: it should not add slots. Store -extension-specific settings in `other_params(params)`, component parameters, or -standard mizer slots instead. - -In your extension package define the params and sim classes with `setClass()`. -The `contains` argument should name the immediate parent in the intended class -hierarchy. For a standalone extension that does not build on another extension -package, that parent is the mizer base class: - -```{r eval = FALSE} -setClass("mizerMyExtension", contains = "MizerParams") -setClass("mizerMyExtensionSim", contains = "MizerSim") -``` - -If your extension builds on top of another extension package (say -`mizerBaseExtension`), inherit from that package's class instead: - -```{r eval = FALSE} -setClass("mizerMyExtension", contains = "mizerBaseExtension") -setClass("mizerMyExtensionSim", contains = "mizerBaseExtensionSim") -``` - -The class name must match the name used to register the extension (see -[Registering your extension] below). mizer derives the sim class name by -appending `"Sim"` to the params class name, so `"mizerMyExtension"` and -`"mizerMyExtensionSim"` are a matching pair. - -When a params object is validated or loaded with `readParams()`, mizer checks -that the recorded extension chain is compatible with the current session and -coerces the object to the outermost applicable marker class. If an extension -recorded in `params@extensions` does not provide a marker class, it remains -metadata-only and does not trigger projection dispatch. - -## Projection rate hooks - -The rate pipeline used by `project()` has S3 hooks corresponding to the standard -mizer rate functions: - -- `projectEncounter()` -- `projectFeedingLevel()` -- `projectEReproAndGrowth()` -- `projectERepro()` -- `projectEGrowth()` -- `projectDiffusion()` -- `projectPredRate()` -- `projectPredMort()` -- `projectFMort()` -- `projectMort()` -- `projectRDI()` -- `projectRDD()` -- `projectResourceMort()` - -The base methods, such as `projectEncounter.MizerParams()`, contain the standard -mizer calculation. The older names, such as `mizerEncounter()`, remain available -as aliases to these base methods. - -An extension method should usually call `NextMethod()` and then modify the -result: - -```{r eval = FALSE} -projectEncounter.mizerMyExtension <- function(params, n, n_pp, n_other, - t = 0, ...) { - encounter <- NextMethod() - p <- other_params(params)$mizerMyExtension - encounter * p$encounter_multiplier -} -``` - -If two registered extensions both provide `projectEncounter()` methods, mizer -will dispatch through them in the order recorded in the extension chain. Each -method can call `NextMethod()` to compose its change with the next extension and -finally with the standard `MizerParams` method. - -## Registering your extension - -Extension packages should register themselves with mizer from their `.onLoad` -hook using `registerExtension()`: - -```{r eval = FALSE} -.onLoad <- function(libname, pkgname) { - mizer::registerExtension("mizerMyExtension", requirement = "0.1.0") -} -``` - -This prepends `"mizerMyExtension"` to the front of the session's extension -chain, giving it the highest dispatch priority among currently loaded -extensions. Because R always loads dependency packages before the package that -depends on them, the dependent ends up outermost. For example, if -`mizerOuterExtension` declares `mizerMyExtension` as a dependency, a user who -calls `library(mizerOuterExtension)` will see: - -1. `mizerMyExtension` loads and registers → chain: `c(mizerMyExtension = "0.1.0")` -2. `mizerOuterExtension` loads and registers → chain: `c(mizerOuterExtension = "0.2.0", mizerMyExtension = "0.1.0")` - -The call is idempotent: if the extension is already anywhere in the chain -(for example because `devtools::load_all()` re-runs `.onLoad`), it returns -silently without modifying the chain. - -For cases where you need explicit control over the full chain — for example -when combining two independent extensions in a script — call -`registerExtensions()` directly: - -```{r eval = FALSE} -registerExtensions(c( - mizerOuterExtension = "0.2.0", - mizerMyExtension = "0.1.0" -)) -``` - -## The `@extensions` slot in saved objects - -The `@extensions` slot of a `MizerParams` object records the extension chain -the object requires. mizer uses it to verify session compatibility and to -coerce the object to the correct S4 class when it is loaded from disk. - -The slot must contain the **full chain** that was active when the object was -created, not just the topmost extension. Objects from `mizerMyExtension` (when -loaded without any outer extension on top) should have: - -```{r eval = FALSE} -params@extensions <- c(mizerMyExtension = "0.1.0") -``` - -Objects created in a session where `mizerOuterExtension` is also loaded should -include both: - -```{r eval = FALSE} -params@extensions <- c(mizerOuterExtension = "0.2.0", mizerMyExtension = "0.1.0") -``` - -A convenient way to set this when building data objects for a package is: - -```{r eval = FALSE} -params@extensions <- getRegisteredExtensions() -params <- coerceToExtensionClass(params) -``` - -`coerceToExtensionClass()` promotes the object to the S4 class corresponding -to the outermost dispatch extension in `params@extensions`. An object whose -chain is a shorter suffix of the session chain (for example, one carrying only -`mizerMyExtension` in a session that also has `mizerOuterExtension` loaded) -is left at the `mizerMyExtension` class — it is not promoted to -`mizerOuterExtension` because it was not created with that extension. - -When a user loads a saved object with `readParams()`, mizer checks that the -object's chain is a suffix of the registered session chain and re-coerces the -object to the appropriate class automatically. - -## Checklist for package authors - -- Define marker subclasses with `setClass()` — no new slots. -- Call `mizer::registerExtension()` in `.onLoad`. -- Export or register S3 methods for the relevant `project*()` generics. -- Store all extra state in ordinary mizer extension locations, not in new S4 - slots. -- Set `params@extensions <- getRegisteredExtensions()` when building data - objects destined for the package `data/` directory. +For a step-by-step guide to writing this kind of extension package, including +worked examples from +[mizerStarvation](https://github.com/sizespectrum/mizerStarvation) and +[mizerShelf](https://github.com/sizespectrum/mizerShelf), see +`vignette("extension-packages", package = "mizer")`. # How custom rate functions are called From 22db7c95711694119bb58b9142e475e89ae89abd Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Thu, 7 May 2026 18:53:23 +0100 Subject: [PATCH 25/34] Export `clearExtensionChain` --- NAMESPACE | 1 + R/registerExtensions.R | 15 ++++++++------- man/clearExtensionChain.Rd | 27 +++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 man/clearExtensionChain.Rd diff --git a/NAMESPACE b/NAMESPACE index 8aa20e29e..93a31747f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -232,6 +232,7 @@ export(calibrateBiomass) export(calibrateNumber) export(calibrateYield) export(catchability) +export(clearExtensionChain) export(coerceToExtensionClass) export(compareParams) export(completeSpeciesParams) diff --git a/R/registerExtensions.R b/R/registerExtensions.R index ec476a7e3..203de9c0e 100644 --- a/R/registerExtensions.R +++ b/R/registerExtensions.R @@ -30,7 +30,7 @@ #' @return The updated extension chain, invisibly. #' @seealso [registerExtensions()] for registering an explicit full chain. #' @export -#' @family extensions +#' @family extension tools registerExtension <- function(name, requirement = NA_character_, install = FALSE) { extension <- validateExtensionsVector(setNames(requirement, name)) @@ -79,7 +79,7 @@ registerExtension <- function(name, requirement = NA_character_, install = FALSE #' @return The active maximal extension chain, invisibly. #' @seealso [registerExtension()] for the incremental per-package variant. #' @export -#' @family extensions +#' @family extension tools registerExtensions <- function(extensions, install = FALSE) { extensions <- validateExtensionsVector(extensions) old <- getRegisteredExtensions() @@ -108,7 +108,7 @@ registerExtensions <- function(extensions, install = FALSE) { #' @return A named character vector giving the maximal extension chain #' registered for this R session. #' @export -#' @family extensions +#' @family extension tools getRegisteredExtensions <- function() { .mizerSession$extensions } @@ -126,7 +126,7 @@ getRegisteredExtensions <- function() { #' @return The same object coerced to the appropriate marker class, or to the #' base class for an empty extension chain. #' @export -#' @family extensions +#' @family extension tools coerceToExtensionClass <- function(object, extensions = objectExtensions(object)) { if (is(object, "MizerParams")) { family <- "params" @@ -525,14 +525,15 @@ baseMizerClass <- function(object) { } } -#' Reset the registered extension chain for the current R session +#' Clear the registered extension chain #' #' Clears the session's extension registry. You can then create a new #' extension chain with [registerExtensions()]. #' #' @return Invisibly, an empty character vector. -#' @family extensions -resetMizerSession <- function() { +#' @family extension tools +#' @export +clearExtensionChain <- function() { .mizerSession$extensions <- character() invisible(character()) } diff --git a/man/clearExtensionChain.Rd b/man/clearExtensionChain.Rd new file mode 100644 index 000000000..aa3f2fad0 --- /dev/null +++ b/man/clearExtensionChain.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/registerExtensions.R +\name{clearExtensionChain} +\alias{clearExtensionChain} +\title{Clear the registered extension chain} +\usage{ +clearExtensionChain() +} +\value{ +Invisibly, an empty character vector. +} +\description{ +Clears the session's extension registry. You can then create a new +extension chain with \code{\link[=registerExtensions]{registerExtensions()}}. +} +\seealso{ +Other extension tools: +\code{\link[=NOther]{NOther()}}, +\code{\link[=coerceToExtensionClass]{coerceToExtensionClass()}}, +\code{\link[=getRegisteredExtensions]{getRegisteredExtensions()}}, +\code{\link[=initialNOther<-]{initialNOther<-()}}, +\code{\link[=registerExtension]{registerExtension()}}, +\code{\link[=registerExtensions]{registerExtensions()}}, +\code{\link[=setComponent]{setComponent()}}, +\code{\link[=setRateFunction]{setRateFunction()}} +} +\concept{extension tools} From 9978f90e2fac13c3016a924a816f9a2e3180637a Mon Sep 17 00:00:00 2001 From: Gustav Delius Date: Thu, 7 May 2026 18:55:54 +0100 Subject: [PATCH 26/34] Update documentation --- R/extension.R | 8 +- docs/404.html | 13 +- docs/AGENTS.html | 73 +- docs/CLAUDE.html | 104 ++ docs/CONTRIBUTING.html | 15 +- ...a_multispecies_model_of_the_north_sea.html | 15 +- .../figure-html/plot_ns_indicators-1.png | Bin 121530 -> 115926 bytes docs/articles/analytic_test.html | 681 ++++++++ .../figure-html/unnamed-chunk-2-1.png | Bin 0 -> 43912 bytes .../figure-html/unnamed-chunk-3-1.png | Bin 0 -> 47153 bytes docs/articles/cheatsheet.html | 674 ++++++++ .../cohort_dynamics_and_diffusion.html | 420 +++++ .../crosstalk-1.2.2/css/crosstalk.min.css | 1 + .../crosstalk-1.2.2/js/crosstalk.js | 1474 +++++++++++++++++ .../crosstalk-1.2.2/js/crosstalk.js.map | 37 + .../crosstalk-1.2.2/js/crosstalk.min.js | 2 + .../crosstalk-1.2.2/js/crosstalk.min.js.map | 1 + .../crosstalk-1.2.2/scss/crosstalk.scss | 75 + .../figure-html/unnamed-chunk-10-1.png | Bin 0 -> 127621 bytes .../figure-html/unnamed-chunk-11-1.png | Bin 0 -> 139715 bytes .../figure-html/unnamed-chunk-12-1.png | Bin 0 -> 299979 bytes .../htmltools-fill-0.5.9}/fill.css | 0 .../htmlwidgets-1.6.4/htmlwidgets.js | 901 ++++++++++ .../plotly-binding-4.12.0}/plotly.js | 0 .../plotly-htmlwidgets.css | 0 .../plotly-main-2.25.2/plotly-latest.min.js | 8 + .../typedarray-0.1/typedarray.min.js | 1 + docs/articles/community_model.html | 28 +- .../figure-html/print_plot_comm_fmort-1.png | Bin 123718 -> 136083 bytes .../figure-html/print_plot_comm_sim-1.png | Bin 119995 -> 132507 bytes docs/articles/developer_FAQ.html | 17 +- docs/articles/developer_vignette.html | 328 +++- docs/articles/editing_website.html | 23 +- .../exploring_the_simulation_results.html | 99 +- .../figure-html/demo_summary_plot-1.png | Bin 216161 -> 227751 bytes .../figure-html/plotSpectra_example-1.png | Bin 104117 -> 107681 bytes docs/articles/extension-packages.html | 558 +++++++ docs/articles/extensions.html | 725 ++++++++ .../figure-html/detritus-diet-1.png | Bin 0 -> 107309 bytes .../figure-html/seasonal-biomass-1.png | Bin 0 -> 113730 bytes docs/articles/images/workflow.png | Bin 930999 -> 930999 bytes docs/articles/index.html | 33 +- docs/articles/mathematical_details.html | 261 +++ docs/articles/mizer.html | 28 +- .../figure-html/unnamed-chunk-8-1.png | Bin 235729 -> 245758 bytes docs/articles/mizer_vignette.html | 23 +- .../figure-html/unnamed-chunk-8-1.png | Bin 235729 -> 245758 bytes docs/articles/model_description.html | 113 +- .../figure-html/unnamed-chunk-1-1.png | Bin 58218 -> 64101 bytes docs/articles/multispecies_model.html | 86 +- docs/articles/numerical_details.html | 448 +++++ docs/articles/plotting.html | 340 +++- .../figure-html/unnamed-chunk-17-1.png | Bin 0 -> 98251 bytes .../figure-html/unnamed-chunk-18-1.png | Bin 0 -> 47624 bytes .../figure-html/unnamed-chunk-19-1.png | Bin 0 -> 104771 bytes .../figure-html/unnamed-chunk-21-1.png | Bin 0 -> 135421 bytes .../figure-html/unnamed-chunk-22-1.png | Bin 169970 -> 0 bytes .../figure-html/unnamed-chunk-27-1.png | Bin 127002 -> 169970 bytes .../figure-html/unnamed-chunk-29-1.png | Bin 164670 -> 0 bytes .../figure-html/unnamed-chunk-32-1.png | Bin 0 -> 127002 bytes ...-chunk-28-1.png => unnamed-chunk-33-1.png} | Bin .../figure-html/unnamed-chunk-34-1.png | Bin 106381 -> 164670 bytes .../figure-html/unnamed-chunk-39-1.png | Bin 114784 -> 106381 bytes ...-chunk-36-1.png => unnamed-chunk-41-1.png} | Bin ...-chunk-37-1.png => unnamed-chunk-42-1.png} | Bin .../figure-html/unnamed-chunk-44-1.png | Bin 0 -> 114784 bytes ...-chunk-40-1.png => unnamed-chunk-45-1.png} | Bin .../htmltools-fill-0.5.9/fill.css | 21 + .../plotly-binding-4.12.0}/plotly.js | 0 .../plotly-htmlwidgets.css | 0 .../plotly-main-2.11.1/plotly-latest.min.js | 69 - .../plotly-main-2.25.2/plotly-latest.min.js | 8 + docs/articles/predation_diffusion.html | 335 ++++ .../libs/quarto-html/light-border.css | 1 + .../libs/quarto-html/popper.min.js | 6 + .../libs/quarto-html/tippy.css | 1 + .../libs/quarto-html/tippy.umd.min.js | 2 + docs/articles/publications.html | 13 +- docs/articles/running_a_simulation.html | 22 +- .../figure-html/plotFMort-1.png | Bin 75943 -> 79269 bytes .../figure-html/plot_basic_ms_sim-1.png | Bin 229443 -> 240022 bytes ...single_species_size-spectrum_dynamics.html | 94 +- .../figure-html/unnamed-chunk-11-1.png | Bin 56896 -> 60647 bytes .../figure-html/unnamed-chunk-12-1.png | Bin 46760 -> 48916 bytes .../figure-html/unnamed-chunk-4-1.png | Bin 65712 -> 71373 bytes .../figure-html/unnamed-chunk-47-1.png | Bin 48570 -> 50978 bytes .../figure-html/unnamed-chunk-48-1.png | Bin 49913 -> 51814 bytes .../figure-html/unnamed-chunk-5-1.png | Bin 67369 -> 72504 bytes .../figure-html/unnamed-chunk-55-1.png | Bin 48514 -> 50763 bytes .../figure-html/unnamed-chunk-57-1.png | Bin 48328 -> 50523 bytes .../figure-html/unnamed-chunk-67-1.png | Bin 38144 -> 40637 bytes docs/articles/trait_model.html | 34 +- .../figure-html/plot_comm_sim_2-1.png | Bin 161984 -> 173367 bytes .../figure-html/plot_multi_gear_trait-1.png | Bin 165162 -> 176726 bytes .../plot_multi_gear_trait_single_effort-1.png | Bin 193100 -> 204657 bytes .../figure-html/plot_trait_fmort-1.png | Bin 169913 -> 180728 bytes docs/articles/working_with_git.html | 33 +- docs/authors.html | 23 +- docs/copilot-instructions.html | 304 ---- .../MathJax-3.2.2/MathJax_AMS-Regular.woff | Bin 40808 -> 0 bytes .../MathJax-3.2.2/MathJax_Main-Regular.woff | Bin 34160 -> 0 bytes .../fonts/woff-v2/MathJax_AMS-Regular.woff | Bin 40816 -> 0 bytes .../woff-v2/MathJax_Caligraphic-Bold.woff | Bin 9908 -> 0 bytes .../woff-v2/MathJax_Caligraphic-Regular.woff | Bin 9624 -> 0 bytes .../fonts/woff-v2/MathJax_Fraktur-Bold.woff | Bin 22336 -> 0 bytes .../woff-v2/MathJax_Fraktur-Regular.woff | Bin 21492 -> 0 bytes .../fonts/woff-v2/MathJax_Main-Bold.woff | Bin 34456 -> 0 bytes .../fonts/woff-v2/MathJax_Main-Italic.woff | Bin 20812 -> 0 bytes .../fonts/woff-v2/MathJax_Main-Regular.woff | Bin 34164 -> 0 bytes .../woff-v2/MathJax_Math-BoldItalic.woff | Bin 19780 -> 0 bytes .../fonts/woff-v2/MathJax_Math-Italic.woff | Bin 19356 -> 0 bytes .../fonts/woff-v2/MathJax_Math-Regular.woff | Bin 19288 -> 0 bytes .../fonts/woff-v2/MathJax_SansSerif-Bold.woff | Bin 15928 -> 0 bytes .../woff-v2/MathJax_SansSerif-Italic.woff | Bin 14628 -> 0 bytes .../woff-v2/MathJax_SansSerif-Regular.woff | Bin 12668 -> 0 bytes .../fonts/woff-v2/MathJax_Script-Regular.woff | Bin 11864 -> 0 bytes .../fonts/woff-v2/MathJax_Size1-Regular.woff | Bin 5792 -> 0 bytes .../fonts/woff-v2/MathJax_Size2-Regular.woff | Bin 5476 -> 0 bytes .../fonts/woff-v2/MathJax_Size3-Regular.woff | Bin 3256 -> 0 bytes .../fonts/woff-v2/MathJax_Size4-Regular.woff | Bin 5160 -> 0 bytes .../woff-v2/MathJax_Typewriter-Regular.woff | Bin 17620 -> 0 bytes .../fonts/woff-v2/MathJax_Vector-Bold.woff | Bin 1116 -> 0 bytes .../fonts/woff-v2/MathJax_Vector-Regular.woff | Bin 1136 -> 0 bytes .../chtml/fonts/woff-v2/MathJax_Zero.woff | Bin 1368 -> 0 bytes docs/deps/MathJax-3.2.2/tex-chtml.min.js | 3 - docs/deps/bootstrap-5.3.1/bootstrap.min.css | 2 +- docs/deps/data-deps.txt | 2 +- .../jquery-3.6.0.js} | 214 ++- docs/deps/jquery-3.6.0/jquery-3.6.0.min.js | 2 + docs/deps/jquery-3.6.0/jquery-3.6.0.min.map | 1 + docs/deps/jquery-3.6.1/jquery-3.6.1.min.js | 2 - docs/deps/jquery-3.6.1/jquery-3.6.1.min.map | 1 - docs/index.html | 26 +- docs/llms.txt | 234 ++- docs/news/index.html | 85 +- docs/pkgdown.yml | 10 +- docs/reference/ArraySpeciesBySize.html | 181 ++ docs/reference/ArraySpeciesByTime.html | 182 ++ docs/reference/BevertonHoltRDD.html | 18 +- docs/reference/MizerParams-class.html | 45 +- docs/reference/MizerParams.html | 32 +- docs/reference/MizerSim-class.html | 22 +- docs/reference/MizerSim.html | 15 +- docs/reference/N.html | 15 +- docs/reference/NOther.html | 37 +- docs/reference/NS_interaction.html | 15 +- docs/reference/NS_params-1.png | Bin 204302 -> 215623 bytes docs/reference/NS_params.html | 17 +- docs/reference/NS_sim.html | 15 +- docs/reference/NS_species_params.html | 15 +- docs/reference/NS_species_params_gears.html | 15 +- docs/reference/RickerRDD.html | 18 +- docs/reference/SheperdRDD.html | 18 +- docs/reference/addSpecies-1.png | Bin 84124 -> 91299 bytes docs/reference/addSpecies.html | 56 +- docs/reference/age_mat.html | 33 +- docs/reference/age_mat_vB.MizerParams.html | 8 + docs/reference/age_mat_vB.data.frame.html | 8 + docs/reference/age_mat_vB.default.html | 8 + docs/reference/age_mat_vB.html | 30 +- docs/reference/animateSpectra.html | 53 +- docs/reference/assertExtensionChain.html | 147 ++ docs/reference/baseMizerClass.html | 132 ++ docs/reference/box_pred_kernel.html | 23 +- docs/reference/calc_selectivity.html | 33 +- docs/reference/calibrateBiomass-1.png | Bin 96950 -> 96281 bytes docs/reference/calibrateBiomass.html | 26 +- docs/reference/calibrateNumber.html | 26 +- docs/reference/calibrateYield-1.png | Bin 92592 -> 92015 bytes docs/reference/calibrateYield.html | 24 +- docs/reference/clearExtensionChain.html | 133 ++ docs/reference/coerceToExtensionClass.html | 150 ++ docs/reference/compareExtensionChains.html | 131 ++ docs/reference/compareParams.html | 41 +- docs/reference/completeSpeciesParams.html | 25 +- docs/reference/constantEggRDI.html | 18 +- docs/reference/constantRDD.html | 18 +- docs/reference/constant_other.html | 15 +- docs/reference/customFunction.html | 15 +- .../reference/default_pred_kernel_params.html | 15 +- docs/reference/defaults_edition.html | 32 +- docs/reference/defineExtensionClasses.html | 136 ++ docs/reference/defineOrCheckClass.html | 136 ++ docs/reference/different.html | 15 +- docs/reference/dispatchExtensions.html | 130 ++ docs/reference/distanceMaxRelRDI.html | 18 +- docs/reference/distanceSSLogN.html | 18 +- .../dot-checkRateFunctionOutput.html | 141 ++ docs/reference/double_sigmoid_length.html | 18 +- docs/reference/emptyParams.html | 15 +- docs/reference/ensureExtensionNamespaces.html | 137 ++ .../reference/expandSizeGrid.MizerParams.html | 8 + docs/reference/expandSizeGrid.html | 159 ++ docs/reference/ext_diffusion.html | 8 + docs/reference/figures/mizer_workflow.png | Bin 938798 -> 938798 bytes docs/reference/figures/size.png | Bin 819634 -> 819634 bytes .../figures/size_selective_fishing.png | Bin 858407 -> 858407 bytes docs/reference/figures/size_spectrum.png | Bin 913194 -> 913194 bytes docs/reference/figures/traffic.png | Bin 764254 -> 764254 bytes docs/reference/figures/traffic_jam.png | Bin 917179 -> 917179 bytes docs/reference/finalN.html | 202 ++- docs/reference/finalNOther.html | 124 +- docs/reference/formatExtensionChain.html | 127 ++ docs/reference/gear_params.html | 19 +- docs/reference/getBiomass.html | 61 +- docs/reference/getCommunitySlope.html | 48 +- docs/reference/getComponent.html | 132 +- docs/reference/getCriticalFeedingLevel.html | 203 ++- docs/reference/getDiet.html | 17 +- docs/reference/getDiffusion.html | 189 +++ docs/reference/getEGrowth.html | 27 +- docs/reference/getERepro.html | 26 +- docs/reference/getEReproAndGrowth.html | 35 +- docs/reference/getESpawning.html | 26 +- docs/reference/getEffort.html | 15 +- docs/reference/getEncounter.html | 226 ++- docs/reference/getFMort.html | 213 ++- docs/reference/getFMortGear.html | 17 +- docs/reference/getFeedingLevel.html | 36 +- docs/reference/getFlux.html | 203 +++ docs/reference/getGrowthCurves.html | 17 +- docs/reference/getInteraction.html | 15 +- docs/reference/getM2.html | 232 ++- docs/reference/getM2Background.html | 17 +- docs/reference/getMeanMaxWeight.html | 73 +- docs/reference/getMeanWeight.html | 34 +- docs/reference/getMort.html | 19 +- docs/reference/getN.html | 24 +- docs/reference/getParams.html | 17 +- docs/reference/getPhiPrey.html | 18 +- docs/reference/getPredMort.html | 232 ++- docs/reference/getPredRate.html | 17 +- docs/reference/getProportionOfLargeFish.html | 84 +- docs/reference/getRDD.html | 17 +- docs/reference/getRDI.html | 17 +- docs/reference/getRates.html | 36 +- docs/reference/getRegisteredExtensions.html | 131 ++ docs/reference/getReproductionLevel.html | 22 +- ..._reproduction.html => getRequiredRDD.html} | 23 +- docs/reference/getResourceDynamics.html | 15 +- docs/reference/getResourceMort.html | 17 +- docs/reference/getSSB.html | 51 +- docs/reference/getTimes.html | 17 +- docs/reference/getTrophicLevel-1.png | Bin 0 -> 127357 bytes docs/reference/getTrophicLevel.html | 224 +++ docs/reference/getTrophicLevelBySpecies.html | 197 +++ docs/reference/getYield.html | 36 +- docs/reference/getYieldGear.html | 27 +- docs/reference/getZ.html | 19 +- docs/reference/get_f0_default.html | 15 +- docs/reference/get_gamma_default.html | 15 +- docs/reference/get_h_default.html | 15 +- docs/reference/get_initial_n.html | 22 +- docs/reference/get_ks_default.html | 15 +- docs/reference/get_phi.html | 15 +- docs/reference/get_size_range_array.html | 21 +- docs/reference/get_steady_state_n.html | 144 ++ docs/reference/get_time_elements.html | 44 +- .../ggplotly.ArraySpeciesBySize.html | 8 + .../ggplotly.ArraySpeciesByTime.html | 8 + docs/reference/ggplotly.html | 8 + docs/reference/index.html | 329 +++- docs/reference/indicator_functions.html | 28 +- docs/reference/initialN-set.html | 25 +- docs/reference/initialN.MizerParams.html | 8 + docs/reference/initialN.MizerSim.html | 8 + docs/reference/initialNOther-set.html | 26 +- docs/reference/initialNResource-set.html | 21 +- .../initialNResource.MizerParams.html | 8 + docs/reference/initialNResource.MizerSim.html | 8 + docs/reference/initial_effort.html | 20 +- docs/reference/inter.html | 15 +- docs/reference/is.ArraySpeciesBySize.html | 134 ++ docs/reference/is.ArraySpeciesByTime.html | 134 ++ docs/reference/isSuffixChain.html | 133 ++ docs/reference/isVersionRequirement.html | 126 ++ docs/reference/knife_edge.html | 15 +- docs/reference/l2w.html | 15 +- .../libs/plotly-binding-4.12.0/plotly.js | 941 +++++++++++ .../plotly-htmlwidgets.css | 9 + .../plotly-main-2.11.1/plotly-latest.min.js | 69 - .../plotly-main-2.25.2/plotly-latest.min.js | 8 + docs/reference/log_breaks.html | 17 +- docs/reference/lognormal_pred_kernel.html | 19 +- docs/reference/markBackground.html | 161 ++ docs/reference/matchBiomasses-1.png | Bin 105272 -> 104470 bytes docs/reference/matchBiomasses.html | 28 +- docs/reference/matchGrowth.html | 21 +- docs/reference/matchNumbers.html | 32 +- docs/reference/matchYields-1.png | Bin 85288 -> 85006 bytes docs/reference/matchYields.html | 28 +- docs/reference/mizer-package.html | 18 +- docs/reference/mizerDiffusion.html | 181 ++ docs/reference/mizerEGrowth.html | 29 +- docs/reference/mizerERepro.html | 29 +- docs/reference/mizerEReproAndGrowth.html | 50 +- docs/reference/mizerEncounter.html | 44 +- docs/reference/mizerFMort.html | 22 +- docs/reference/mizerFMortGear.html | 19 +- docs/reference/mizerFeedingLevel.html | 22 +- docs/reference/mizerMort.html | 22 +- docs/reference/mizerPredMort.html | 27 +- docs/reference/mizerPredRate.html | 22 +- docs/reference/mizerRDI.html | 22 +- docs/reference/mizerRates.html | 31 +- docs/reference/mizerResourceMort.html | 22 +- docs/reference/needs_upgrading.html | 15 +- docs/reference/newCommunityParams-2.png | Bin 46051 -> 52175 bytes docs/reference/newCommunityParams-4.png | Bin 45834 -> 51973 bytes docs/reference/newCommunityParams.html | 36 +- docs/reference/newMultispeciesParams.html | 119 +- docs/reference/newSingleSpeciesParams-1.png | Bin 58228 -> 63477 bytes docs/reference/newSingleSpeciesParams.html | 30 +- docs/reference/newTraitParams-1.png | Bin 102309 -> 108162 bytes docs/reference/newTraitParams.html | 39 +- docs/reference/noRDD.html | 18 +- docs/reference/objectExtensions.html | 127 ++ docs/reference/plot-1.png | Bin 0 -> 80110 bytes docs/reference/plot-2.png | Bin 0 -> 59716 bytes docs/reference/plot-3.png | Bin 0 -> 173772 bytes docs/reference/plot-4.png | Bin 0 -> 75108 bytes docs/reference/plot-5.png | Bin 0 -> 81693 bytes .../plot-MizerParams-missing-method-1.png | Bin 202660 -> 0 bytes docs/reference/plot.ArraySpeciesBySize.html | 8 + docs/reference/plot.ArraySpeciesByTime.html | 8 + docs/reference/plot.MizerParams.html | 8 + docs/reference/plot.MizerSim.html | 8 + docs/reference/plot.html | 296 ++++ docs/reference/plotBiomass.MizerSim.html | 8 + docs/reference/plotBiomass.html | 97 +- .../plotBiomassObservedVsModel-1.png | Bin 92413 -> 91675 bytes .../plotBiomassObservedVsModel-2.png | Bin 107301 -> 106431 bytes .../plotBiomassObservedVsModel-3.png | Bin 87762 -> 87140 bytes .../reference/plotBiomassObservedVsModel.html | 35 +- docs/reference/plotDataFrame.html | 19 +- docs/reference/plotDiet.MizerParams.html | 8 + docs/reference/plotDiet.MizerSim.html | 8 + docs/reference/plotDiet.html | 39 +- docs/reference/plotFMort-1.png | Bin 92474 -> 95269 bytes docs/reference/plotFMort-2.png | Bin 93634 -> 96516 bytes docs/reference/plotFMort.MizerParams.html | 8 + docs/reference/plotFMort.MizerSim.html | 8 + docs/reference/plotFMort.html | 46 +- .../plotFeedingLevel.MizerParams.html | 8 + docs/reference/plotFeedingLevel.MizerSim.html | 8 + docs/reference/plotFeedingLevel.html | 44 +- .../plotGrowthCurves.MizerParams.html | 8 + docs/reference/plotGrowthCurves.MizerSim.html | 8 + docs/reference/plotGrowthCurves.html | 46 +- docs/reference/plotM2-1.png | Bin 212276 -> 220990 bytes docs/reference/plotM2-2.png | Bin 213113 -> 221333 bytes docs/reference/plotM2.html | 61 +- docs/reference/plotMizerParams-1.png | Bin 0 -> 214376 bytes ...ssing-method.html => plotMizerParams.html} | 34 +- docs/reference/plotMizerSim-1.png | Bin 225342 -> 236379 bytes docs/reference/plotMizerSim.html | 30 +- docs/reference/plotPredMort-1.png | Bin 212276 -> 220990 bytes docs/reference/plotPredMort-2.png | Bin 213113 -> 221333 bytes docs/reference/plotPredMort.MizerParams.html | 8 + docs/reference/plotPredMort.MizerSim.html | 8 + docs/reference/plotPredMort.html | 46 +- docs/reference/plotSpectra-1.png | Bin 106017 -> 113922 bytes docs/reference/plotSpectra-2.png | Bin 105789 -> 111699 bytes docs/reference/plotSpectra-3.png | Bin 105887 -> 113583 bytes docs/reference/plotSpectra-4.png | Bin 123196 -> 133620 bytes docs/reference/plotSpectra-5.png | Bin 56354 -> 62293 bytes docs/reference/plotSpectra.MizerParams.html | 8 + docs/reference/plotSpectra.MizerSim.html | 8 + docs/reference/plotSpectra.html | 49 +- docs/reference/plotYield.MizerSim.html | 8 + docs/reference/plotYield.html | 33 +- docs/reference/plotYieldGear.MizerSim.html | 8 + docs/reference/plotYieldGear.html | 33 +- docs/reference/plotYieldObservedVsModel-1.png | Bin 82178 -> 81402 bytes docs/reference/plotYieldObservedVsModel-2.png | Bin 99056 -> 98297 bytes docs/reference/plotYieldObservedVsModel-3.png | Bin 74343 -> 73407 bytes docs/reference/plotYieldObservedVsModel.html | 26 +- docs/reference/plotting_functions.html | 37 +- docs/reference/power_law_pred_kernel-1.png | Bin 51832 -> 54751 bytes docs/reference/power_law_pred_kernel.html | 19 +- docs/reference/project.MizerParams.html | 8 + docs/reference/project.MizerSim.html | 8 + docs/reference/project.html | 102 +- .../projectDiffusion.MizerParams.html | 8 + docs/reference/projectDiffusion.html | 8 + .../reference/projectEGrowth.MizerParams.html | 8 + docs/reference/projectEGrowth.html | 8 + docs/reference/projectERepro.MizerParams.html | 8 + docs/reference/projectERepro.html | 8 + .../projectEReproAndGrowth.MizerParams.html | 8 + docs/reference/projectEReproAndGrowth.html | 8 + .../projectEncounter.MizerParams.html | 8 + docs/reference/projectEncounter.html | 8 + docs/reference/projectFMort.MizerParams.html | 8 + docs/reference/projectFMort.html | 8 + .../projectFeedingLevel.MizerParams.html | 8 + docs/reference/projectFeedingLevel.html | 8 + docs/reference/projectMort.MizerParams.html | 8 + docs/reference/projectMort.html | 8 + .../projectPredMort.MizerParams.html | 8 + docs/reference/projectPredMort.html | 8 + .../projectPredRate.MizerParams.html | 8 + docs/reference/projectPredRate.html | 8 + docs/reference/projectRDD.MizerParams.html | 8 + docs/reference/projectRDD.html | 164 ++ docs/reference/projectRDI.MizerParams.html | 8 + docs/reference/projectRDI.html | 8 + docs/reference/projectRates.html | 8 + .../projectResourceMort.MizerParams.html | 8 + docs/reference/projectResourceMort.html | 8 + docs/reference/projectToSteady.html | 30 +- docs/reference/project_n.html | 198 +++ docs/reference/project_n_no_diffusion.html | 8 + docs/reference/project_simple.html | 40 +- docs/reference/readSim.html | 8 + docs/reference/reexports.html | 35 +- docs/reference/registerExtension.html | 168 ++ docs/reference/registerExtensions.html | 173 ++ docs/reference/removeBackgroundSpecies.html | 133 ++ docs/reference/removeSpecies.html | 34 +- docs/reference/renameGear.html | 28 +- docs/reference/renameSpecies.html | 21 +- docs/reference/resource_constant.html | 15 +- docs/reference/resource_logistic.html | 25 +- docs/reference/resource_params.html | 15 +- docs/reference/resource_semichemostat.html | 23 +- docs/reference/saveParams.html | 52 +- docs/reference/saveSim.html | 8 + docs/reference/scaleModel.html | 21 +- docs/reference/scaleRates.html | 166 ++ docs/reference/setBevertonHolt.html | 43 +- docs/reference/setColours-1.png | Bin 108390 -> 116301 bytes docs/reference/setColours.html | 15 +- docs/reference/setComponent.html | 57 +- .../setExtDiffusion.MizerParams.html | 8 + docs/reference/setExtDiffusion.html | 197 +++ docs/reference/setExtEncounter.html | 48 +- docs/reference/setExtMort.html | 38 +- docs/reference/setFishing.html | 19 +- docs/reference/setInitialValues.html | 25 +- docs/reference/setInteraction.html | 29 +- docs/reference/setMaxIntakeRate.html | 31 +- docs/reference/setMetabolicRate.html | 38 +- docs/reference/setMetadata.html | 25 +- docs/reference/setParams.html | 127 +- docs/reference/setPredKernel.html | 25 +- docs/reference/setRateFunction.html | 36 +- docs/reference/setReproduction.html | 59 +- docs/reference/setResource.html | 55 +- docs/reference/setRmax.html | 30 +- docs/reference/setSearchVolume.html | 29 +- docs/reference/set_community_model-2.png | Bin 59441 -> 63477 bytes docs/reference/set_community_model.html | 17 +- docs/reference/set_multispecies_model.html | 45 +- docs/reference/set_species_param_default.html | 21 +- docs/reference/set_trait_model.html | 23 +- docs/reference/sigmoid_length.html | 15 +- docs/reference/sigmoid_weight.html | 17 +- docs/reference/simExtensionClass.html | 126 ++ docs/reference/species_params.html | 52 +- docs/reference/steady-1.png | Bin 103018 -> 109112 bytes docs/reference/steady.html | 27 +- docs/reference/steadySingleSpecies.html | 45 +- ...s-method.html => summary.MizerParams.html} | 24 +- ...rSim-method.html => summary.MizerSim.html} | 24 +- docs/reference/summary_functions.html | 17 +- .../truncated_lognormal_pred_kernel.html | 17 +- docs/reference/upgradeParams.html | 15 +- docs/reference/upgradeSim.html | 15 +- docs/reference/use_predation_diffusion.html | 164 ++ docs/reference/usesExtensionDispatch.html | 126 ++ docs/reference/validGearParams.html | 15 +- docs/reference/validParams.html | 22 +- docs/reference/validSim.html | 36 +- docs/reference/validSpeciesParams.html | 25 +- docs/reference/valid_gears_arg.html | 19 +- docs/reference/valid_species_arg.html | 15 +- docs/reference/validateExtensionsVector.html | 129 ++ docs/reference/w.html | 15 +- docs/search.json | 2 +- docs/sitemap.xml | 60 +- extension-chain-implementation-plan.md | 692 -------- man/NOther.Rd | 6 +- man/coerceToExtensionClass.Rd | 6 +- man/getRegisteredExtensions.Rd | 6 +- man/initialNOther-set.Rd | 6 +- man/registerExtension.Rd | 6 +- man/registerExtensions.Rd | 6 +- man/resetMizerSession.Rd | 27 - man/setComponent.Rd | 6 +- man/setRateFunction.Rd | 6 +- pkgdown/_pkgdown.yml | 9 +- 492 files changed, 21380 insertions(+), 3505 deletions(-) create mode 100644 docs/CLAUDE.html create mode 100644 docs/articles/analytic_test.html create mode 100644 docs/articles/analytic_test_files/figure-html/unnamed-chunk-2-1.png create mode 100644 docs/articles/analytic_test_files/figure-html/unnamed-chunk-3-1.png create mode 100644 docs/articles/cheatsheet.html create mode 100644 docs/articles/cohort_dynamics_and_diffusion.html create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/css/crosstalk.min.css create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js.map create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.min.js create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.min.js.map create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/scss/crosstalk.scss create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/figure-html/unnamed-chunk-10-1.png create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/figure-html/unnamed-chunk-11-1.png create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/figure-html/unnamed-chunk-12-1.png rename docs/articles/{plotting_files/htmltools-fill-0.5.8.1 => cohort_dynamics_and_diffusion_files/htmltools-fill-0.5.9}/fill.css (100%) create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/htmlwidgets-1.6.4/htmlwidgets.js rename docs/articles/{plotting_files/plotly-binding-4.11.0 => cohort_dynamics_and_diffusion_files/plotly-binding-4.12.0}/plotly.js (100%) rename docs/articles/{plotting_files/plotly-htmlwidgets-css-2.11.1 => cohort_dynamics_and_diffusion_files/plotly-htmlwidgets-css-2.25.2}/plotly-htmlwidgets.css (100%) create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/plotly-main-2.25.2/plotly-latest.min.js create mode 100644 docs/articles/cohort_dynamics_and_diffusion_files/typedarray-0.1/typedarray.min.js create mode 100644 docs/articles/extension-packages.html create mode 100644 docs/articles/extensions.html create mode 100644 docs/articles/extensions_files/figure-html/detritus-diet-1.png create mode 100644 docs/articles/extensions_files/figure-html/seasonal-biomass-1.png create mode 100644 docs/articles/mathematical_details.html create mode 100644 docs/articles/numerical_details.html create mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-17-1.png create mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-18-1.png create mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-19-1.png create mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-21-1.png delete mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-22-1.png delete mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-29-1.png create mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-32-1.png rename docs/articles/plotting_files/figure-html/{unnamed-chunk-28-1.png => unnamed-chunk-33-1.png} (100%) rename docs/articles/plotting_files/figure-html/{unnamed-chunk-36-1.png => unnamed-chunk-41-1.png} (100%) rename docs/articles/plotting_files/figure-html/{unnamed-chunk-37-1.png => unnamed-chunk-42-1.png} (100%) create mode 100644 docs/articles/plotting_files/figure-html/unnamed-chunk-44-1.png rename docs/articles/plotting_files/figure-html/{unnamed-chunk-40-1.png => unnamed-chunk-45-1.png} (100%) create mode 100644 docs/articles/plotting_files/htmltools-fill-0.5.9/fill.css rename docs/{reference/libs/plotly-binding-4.11.0 => articles/plotting_files/plotly-binding-4.12.0}/plotly.js (100%) rename docs/{reference/libs/plotly-htmlwidgets-css-2.11.1 => articles/plotting_files/plotly-htmlwidgets-css-2.25.2}/plotly-htmlwidgets.css (100%) delete mode 100644 docs/articles/plotting_files/plotly-main-2.11.1/plotly-latest.min.js create mode 100644 docs/articles/plotting_files/plotly-main-2.25.2/plotly-latest.min.js create mode 100644 docs/articles/predation_diffusion.html create mode 100644 docs/articles/predation_diffusion_files/libs/quarto-html/light-border.css create mode 100644 docs/articles/predation_diffusion_files/libs/quarto-html/popper.min.js create mode 100644 docs/articles/predation_diffusion_files/libs/quarto-html/tippy.css create mode 100644 docs/articles/predation_diffusion_files/libs/quarto-html/tippy.umd.min.js delete mode 100644 docs/copilot-instructions.html delete mode 100644 docs/deps/MathJax-3.2.2/MathJax_AMS-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/MathJax_Main-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Caligraphic-Bold.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Caligraphic-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff delete mode 100644 docs/deps/MathJax-3.2.2/output/chtml/fonts/woff-v2/MathJax_Zero.woff delete mode 100644 docs/deps/MathJax-3.2.2/tex-chtml.min.js rename docs/deps/{jquery-3.6.1/jquery-3.6.1.js => jquery-3.6.0/jquery-3.6.0.js} (98%) create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.min.js create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.min.map delete mode 100644 docs/deps/jquery-3.6.1/jquery-3.6.1.min.js delete mode 100644 docs/deps/jquery-3.6.1/jquery-3.6.1.min.map create mode 100644 docs/reference/ArraySpeciesBySize.html create mode 100644 docs/reference/ArraySpeciesByTime.html create mode 100644 docs/reference/age_mat_vB.MizerParams.html create mode 100644 docs/reference/age_mat_vB.data.frame.html create mode 100644 docs/reference/age_mat_vB.default.html create mode 100644 docs/reference/assertExtensionChain.html create mode 100644 docs/reference/baseMizerClass.html create mode 100644 docs/reference/clearExtensionChain.html create mode 100644 docs/reference/coerceToExtensionClass.html create mode 100644 docs/reference/compareExtensionChains.html create mode 100644 docs/reference/defineExtensionClasses.html create mode 100644 docs/reference/defineOrCheckClass.html create mode 100644 docs/reference/dispatchExtensions.html create mode 100644 docs/reference/dot-checkRateFunctionOutput.html create mode 100644 docs/reference/ensureExtensionNamespaces.html create mode 100644 docs/reference/expandSizeGrid.MizerParams.html create mode 100644 docs/reference/expandSizeGrid.html create mode 100644 docs/reference/ext_diffusion.html create mode 100644 docs/reference/formatExtensionChain.html create mode 100644 docs/reference/getDiffusion.html create mode 100644 docs/reference/getFlux.html create mode 100644 docs/reference/getRegisteredExtensions.html rename docs/reference/{get_required_reproduction.html => getRequiredRDD.html} (73%) create mode 100644 docs/reference/getTrophicLevel-1.png create mode 100644 docs/reference/getTrophicLevel.html create mode 100644 docs/reference/getTrophicLevelBySpecies.html create mode 100644 docs/reference/get_steady_state_n.html create mode 100644 docs/reference/ggplotly.ArraySpeciesBySize.html create mode 100644 docs/reference/ggplotly.ArraySpeciesByTime.html create mode 100644 docs/reference/ggplotly.html create mode 100644 docs/reference/initialN.MizerParams.html create mode 100644 docs/reference/initialN.MizerSim.html create mode 100644 docs/reference/initialNResource.MizerParams.html create mode 100644 docs/reference/initialNResource.MizerSim.html create mode 100644 docs/reference/is.ArraySpeciesBySize.html create mode 100644 docs/reference/is.ArraySpeciesByTime.html create mode 100644 docs/reference/isSuffixChain.html create mode 100644 docs/reference/isVersionRequirement.html create mode 100644 docs/reference/libs/plotly-binding-4.12.0/plotly.js create mode 100644 docs/reference/libs/plotly-htmlwidgets-css-2.25.2/plotly-htmlwidgets.css delete mode 100644 docs/reference/libs/plotly-main-2.11.1/plotly-latest.min.js create mode 100644 docs/reference/libs/plotly-main-2.25.2/plotly-latest.min.js create mode 100644 docs/reference/markBackground.html create mode 100644 docs/reference/mizerDiffusion.html create mode 100644 docs/reference/objectExtensions.html create mode 100644 docs/reference/plot-1.png create mode 100644 docs/reference/plot-2.png create mode 100644 docs/reference/plot-3.png create mode 100644 docs/reference/plot-4.png create mode 100644 docs/reference/plot-5.png delete mode 100644 docs/reference/plot-MizerParams-missing-method-1.png create mode 100644 docs/reference/plot.ArraySpeciesBySize.html create mode 100644 docs/reference/plot.ArraySpeciesByTime.html create mode 100644 docs/reference/plot.MizerParams.html create mode 100644 docs/reference/plot.MizerSim.html create mode 100644 docs/reference/plot.html create mode 100644 docs/reference/plotBiomass.MizerSim.html create mode 100644 docs/reference/plotDiet.MizerParams.html create mode 100644 docs/reference/plotDiet.MizerSim.html create mode 100644 docs/reference/plotFMort.MizerParams.html create mode 100644 docs/reference/plotFMort.MizerSim.html create mode 100644 docs/reference/plotFeedingLevel.MizerParams.html create mode 100644 docs/reference/plotFeedingLevel.MizerSim.html create mode 100644 docs/reference/plotGrowthCurves.MizerParams.html create mode 100644 docs/reference/plotGrowthCurves.MizerSim.html create mode 100644 docs/reference/plotMizerParams-1.png rename docs/reference/{plot-MizerParams-missing-method.html => plotMizerParams.html} (79%) create mode 100644 docs/reference/plotPredMort.MizerParams.html create mode 100644 docs/reference/plotPredMort.MizerSim.html create mode 100644 docs/reference/plotSpectra.MizerParams.html create mode 100644 docs/reference/plotSpectra.MizerSim.html create mode 100644 docs/reference/plotYield.MizerSim.html create mode 100644 docs/reference/plotYieldGear.MizerSim.html create mode 100644 docs/reference/project.MizerParams.html create mode 100644 docs/reference/project.MizerSim.html create mode 100644 docs/reference/projectDiffusion.MizerParams.html create mode 100644 docs/reference/projectDiffusion.html create mode 100644 docs/reference/projectEGrowth.MizerParams.html create mode 100644 docs/reference/projectEGrowth.html create mode 100644 docs/reference/projectERepro.MizerParams.html create mode 100644 docs/reference/projectERepro.html create mode 100644 docs/reference/projectEReproAndGrowth.MizerParams.html create mode 100644 docs/reference/projectEReproAndGrowth.html create mode 100644 docs/reference/projectEncounter.MizerParams.html create mode 100644 docs/reference/projectEncounter.html create mode 100644 docs/reference/projectFMort.MizerParams.html create mode 100644 docs/reference/projectFMort.html create mode 100644 docs/reference/projectFeedingLevel.MizerParams.html create mode 100644 docs/reference/projectFeedingLevel.html create mode 100644 docs/reference/projectMort.MizerParams.html create mode 100644 docs/reference/projectMort.html create mode 100644 docs/reference/projectPredMort.MizerParams.html create mode 100644 docs/reference/projectPredMort.html create mode 100644 docs/reference/projectPredRate.MizerParams.html create mode 100644 docs/reference/projectPredRate.html create mode 100644 docs/reference/projectRDD.MizerParams.html create mode 100644 docs/reference/projectRDD.html create mode 100644 docs/reference/projectRDI.MizerParams.html create mode 100644 docs/reference/projectRDI.html create mode 100644 docs/reference/projectRates.html create mode 100644 docs/reference/projectResourceMort.MizerParams.html create mode 100644 docs/reference/projectResourceMort.html create mode 100644 docs/reference/project_n.html create mode 100644 docs/reference/project_n_no_diffusion.html create mode 100644 docs/reference/readSim.html create mode 100644 docs/reference/registerExtension.html create mode 100644 docs/reference/registerExtensions.html create mode 100644 docs/reference/removeBackgroundSpecies.html create mode 100644 docs/reference/saveSim.html create mode 100644 docs/reference/scaleRates.html create mode 100644 docs/reference/setExtDiffusion.MizerParams.html create mode 100644 docs/reference/setExtDiffusion.html create mode 100644 docs/reference/simExtensionClass.html rename docs/reference/{summary-MizerParams-method.html => summary.MizerParams.html} (80%) rename docs/reference/{summary-MizerSim-method.html => summary.MizerSim.html} (81%) create mode 100644 docs/reference/use_predation_diffusion.html create mode 100644 docs/reference/usesExtensionDispatch.html create mode 100644 docs/reference/validateExtensionsVector.html delete mode 100644 extension-chain-implementation-plan.md delete mode 100644 man/resetMizerSession.Rd diff --git a/R/extension.R b/R/extension.R index 29de2cf81..15ddeac50 100644 --- a/R/extension.R +++ b/R/extension.R @@ -209,7 +209,7 @@ #' @param fun Name of the function to use to calculate the rate. #' @return For `setRateFunction()`: An updated MizerParams object #' @export -#' @family extensions +#' @family extension tools setRateFunction <- function(params, rate, fun) { params <- validParams(params) assert_that(is.string(rate), @@ -307,7 +307,7 @@ other_params <- function(params) { #' `"solid"`. #' @return The updated MizerParams object #' @export -#' @family extensions +#' @family extension tools setComponent <- function(params, component, initial_value, dynamics_fun, encounter_fun, mort_fun, @@ -398,7 +398,7 @@ getComponent <- function(params, component) { #' @param value A named list with the initial values of other ecosystem #' components #' @export -#' @family extensions +#' @family extension tools #' @seealso [initialNResource()], [initialN()] `initialNOther<-` <- function(params, value) { assert_that(is(params, "MizerParams"), @@ -443,7 +443,7 @@ initialNOther <- function(object) { #' @return For `NOther`: A list array indexed by time and component that stores the projected #' values for other ecosystem components. #' @export -#' @family extensions +#' @family extension tools NOther <- function(sim) { return(sim@n_other) } diff --git a/docs/404.html b/docs/404.html index aacd5070f..e396a4eff 100644 --- a/docs/404.html +++ b/docs/404.html @@ -17,7 +17,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - + @@ -36,7 +36,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
+
+
+ +

@AGENTS.md

+ +
+ + +
+ + + + + + + diff --git a/docs/CONTRIBUTING.html b/docs/CONTRIBUTING.html index 7972f43c8..2a3f9b030 100644 --- a/docs/CONTRIBUTING.html +++ b/docs/CONTRIBUTING.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - + Skip to contents @@ -13,7 +13,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
+ + + + +
+
+ + + +

This vignette describes an analytical test for the transport equation +solver used in mizer.

+
+

The transport equation +

+

The time evolution of the size spectrum \(N(w)\) is described by the McKendrick-von +Foerster equation with an added diffusion term:

+

\[\begin{equation} + \frac{\partial N}{\partial t} + \frac{\partial}{\partial w} \left( g N +- \frac{1}{2}\frac{\partial(D N)}{\partial w} \right) = -\mu N +\end{equation}\]

+

where \(g(w)\) is the growth rate, +\(\mu(w)\) is the mortality rate and +\(D(w)\) is the diffusion rate.

+
+
+

Analytical solution for power-law rates +

+

We look for a steady state solution \(N(w)\) when the rates are power laws of the +form:

+

\[\begin{align} +g(w) &= A w^p \\ +\mu(w) &= B w^{p-1} \\ +D(w) &= K w^{p+1} +\end{align}\]

+

We try a power-law ansatz for the solution: \[ N(w) = C w^{-\lambda} \] Substituting +these forms into the transport equation at steady state (\(\partial N / \partial t = 0\)):

+

\[ \frac{\partial}{\partial w} \left( A +w^p C w^{-\lambda} - \frac{1}{2}\frac{\partial}{\partial w}(K w^{p+1} C +w^{-\lambda}) \right) = - B w^{p-1} C w^{-\lambda} \]

+

Simplifying the term inside the derivative: \[ D N = K C w^{p+1-\lambda} \] \[ \frac{\partial(D N)}{\partial w} = K C +(p+1-\lambda) w^{p-\lambda} \] \[ g N +- \frac{1}{2}\frac{\partial(D N)}{\partial w} = \left( A - \frac{1}{2} K +(p+1-\lambda) \right) C w^{p-\lambda} \] Let \(J_0 = C \left( A - \frac{1}{2} K (p+1-\lambda) +\right)\). Then the flux is \(J = J_0 +w^{p-\lambda}\).

+

Differentiating flux with respect to \(w\): \[ +\frac{\partial J}{\partial w} = J_0 (p-\lambda) w^{p-\lambda-1} +\]

+

The RHS is: \[ -\mu N = - B C +w^{p-1-\lambda} \]

+

Equating LHS and RHS: \[ C \left( A - +\frac{1}{2} K (p+1-\lambda) \right) (p-\lambda) w^{p-\lambda-1} = - B C +w^{p-\lambda-1} \]

+

Dividing by \(C w^{p-\lambda-1}\) +(assuming \(C \neq 0\) and \(w \neq 0\)): \[ +\left( A - \frac{1}{2} K (p+1-\lambda) \right) (p-\lambda) + B = 0 +\]

+

Let \(x = p - \lambda\). Then \(p + 1 - \lambda = x + 1\). The equation +becomes: \[ \left( A - \frac{1}{2} K (x+1) +\right) x + B = 0 \] \[ Ax - +\frac{1}{2} K x^2 - \frac{1}{2} K x + B = 0 \] Multiply by -2: +\[ K x^2 - (2A - K) x - 2B = 0 \]

+

This is a quadratic equation for \(x = p - +\lambda\). The solutions are: \[ x = +\frac{(2A - K) \pm \sqrt{(2A - K)^2 + 8KB}}{2K} \]

+

We are interested in the solution that corresponds to the limit of +small diffusion \(K \to 0\). In that +limit, \(g N \sim C A w^{p-\lambda}\) +and \(\frac{\partial (gN)}{\partial w} \sim C +A (p-\lambda) w^{p-\lambda-1}\). The transport equation without +diffusion is \(\frac{\partial (gN)}{\partial +w} = -\mu N\). \[ A (p-\lambda) = -B +\implies x = p-\lambda = -B/A \] Since \(A, B > 0\), \(x\) should be negative. Let’s check the +roots. \((2A-K)^2 + 8KB > +(2A-K)^2\), so the square root is larger than \(|2A-K|\). The term \((2A-K)\) is positive for small \(K\). The positive root is \(\frac{(2A-K) + \text{larger}}{2K} > 0\). +The negative root is \(\frac{(2A-K) - +\text{larger}}{2K} < 0\). So we need the negative root.

+

\[ \lambda = p - \frac{(2A - K) - +\sqrt{(2A - K)^2 + 8KB}}{2K} \]

+
+
+

Numerical verification +

+

We verify this analytical solution by considering a single species in +mizer and checking if the project() function keeps the +system in this steady state.

+
+library(mizer)
+
+# Parameters
+p <- 0.7
+A <- 1
+B <- 0.5
+K <- 0.1
+
+# Calculate lambda
+# coefficients for K x^2 - (2A - K) x - 2B = 0
+a_quad <- K
+b_quad <- -(2*A - K)
+c_quad <- -2*B
+
+det <- b_quad^2 - 4 * a_quad * c_quad
+x <- (-b_quad - sqrt(det)) / (2 * a_quad)
+lambda <- p - x
+
+# Set up mizer params
+# We create a dummy species
+params <- newMultispeciesParams(data.frame(species = "Test", 
+                                           w_inf = 1000, 
+                                           w_mat = 100, 
+                                           beta = 100, 
+                                           sigma = 1, 
+                                           k_vb = 0.1), 
+                                no_w = 1000, min_w = 1e-3)
+#> Warning in validGivenSpeciesParams(species_params): The species parameter data
+#> frame is missing a `w_max` column. I am copying over the values from the
+#> `w_inf` column. But note that `w_max` should be the maximum size of the largest
+#> individual, not the asymptotic size of an average indivdidual.
+#> Warning in validGivenSpeciesParams(species_params): The species parameter data
+#> frame is missing a `w_max` column. I am copying over the values from the
+#> `w_inf` column. But note that `w_max` should be the maximum size of the largest
+#> individual, not the asymptotic size of an average indivdidual.
+#> Because you have n != p, the default value for `h` is not very good.
+#> Because the age at maturity is not known, I need to fall back to using
+#> von Bertalanffy parameters, where available, and this is not reliable.
+#> No ks column so calculating from critical feeding level.
+#> Using z0 = z0pre * w_max ^ z0exp for missing z0 values.
+#> Using f0, h, lambda, kappa and the predation kernel to calculate gamma.
+
+# Define custom rate functions
+# Growth
+start_growth <- function(params, ...) {
+    matrix(A * params@w^p, nrow = 1, byrow = TRUE)
+}
+# Mort
+start_mort <- function(params, ...) {
+    matrix(B * params@w^(p-1), nrow = 1, byrow = TRUE)
+}
+# RDD (Constant Flux)
+constant_rdd <- function(rdi, species_params, params, ...) {
+    w_min <- 1e-3 # Use the strict lower boundary of the system
+    # Flux J = N(w) * (g(w) - 0.5 * d/dw D(w))
+    # J = C * w^(p-lambda) * (A - 0.5 * K (p + 1 - lambda))
+    # C = 1 (from initial N)
+    J_min <- w_min^(p - lambda) * (A - 0.5 * K * (p + 1 - lambda))
+    structure(rep(J_min, length(rdi)), names = names(rdi))
+}
+
+# Assign to params
+params <- setRateFunction(params, "EGrowth", "start_growth")
+params <- setRateFunction(params, "Mort", "start_mort")
+params <- setRateFunction(params, "RDD", "constant_rdd")
+
+# Set diffusion
+ext_diffusion(params)[1, ] <- K * w(params)^(p + 1)
+
+# We also need to switch off resource dynamics and other things to avoid interference
+params <- setResource(params, resource_dynamics = "resource_constant")
+initialNResource(params) <- 0
+
+# Set initial N to analytical solution
+initialN(params) <- matrix(w(params)^(-lambda), nrow = 1, byrow = TRUE)
+
+# Run project
+# We verify that N stays constant.
+sim <- project(params, t_max = 1, dt = 0.001)
+
+# Compare final N with initial N
+n0 <- initialN(params)[1, ]
+n1 <- finalN(sim)[1, ]
+
+# Plot
+plot(w(params), n0, log="xy", type="l", col="blue", lwd=2, 
+     main="Comparison of numerical and analytical solution",
+     xlab="Size", ylab="Density")
+lines(w(params), n1, col="red", lty=2, lwd=2)
+legend("topright", legend=c("Analytical", "Numerical"), 
+       col=c("blue", "red"), lty=c(1, 2))
+

+
+
+# Calculate relative error
+# Ignore the boundaries where boundary conditions apply
+idx <- 10:(length(w(params))-10)
+rel_err <- abs(n1[idx] - n0[idx]) / n0[idx]
+max_rel_err <- max(rel_err)
+print(paste("Maximum relative error (excluding boundaries):", max_rel_err))
+#> [1] "Maximum relative error (excluding boundaries): 0.0384619887553153"
+
+if (max_rel_err < 0.05) {
+  print("Test passed: Numerical solution stays close to analytical steady state.")
+} else {
+  print("Test failed: Numerical solution deviates from analytical steady state.")
+}
+#> [1] "Test passed: Numerical solution stays close to analytical steady state."
+
+
+

Time-dependent analytical solution +

+

To facilitate an analytical solution for time-dependent problems, we +first transform the size variable \(w\) +to a new variable \(x\): \[ x = \frac{w^{1-p}}{1-p} \] Assuming \(p \neq 1\). Then \(w = ((1-p)x)^{\frac{1}{1-p}}\) and \(\frac{dx}{dw} = w^{-p}\).

+

We define the density in \(x\)-space, \(\tilde{N}(x, t)\), such that \(\tilde{N}(x, t) dx = N(w, t) dw\). Thus: +\[ \tilde{N}(x, t) = N(w, t) \frac{dw}{dx} = +N(w, t) w^p \]

+

Substituting this into the transport equation and simplifying leads +to a PDE of the form: \[ \frac{\partial +\tilde{N}}{\partial t} = V x \frac{\partial^2 \tilde{N}}{\partial x^2} + +(V - U) \frac{\partial \tilde{N}}{\partial x} - \frac{b}{x} \tilde{N} +\] where: * \(U = A - +\frac{1}{2}K\) * \(V = \frac{1}{2} K +(1-p)\) * \(b = +\frac{B}{1-p}\)

+

The fundamental solution (Green’s function) for this equation, +describing the evolution of an initial Dirac delta distribution \(\tilde{N}(x, 0) = \delta(x - x_0)\), is +given by: \[ G(x, t; x_0) = \frac{1}{Vt} +\left( \frac{x}{x_0} \right)^{\frac{U}{2V}} \exp\left( -\frac{x+x_0}{Vt} +\right) I_\nu \left( \frac{2\sqrt{xx_0}}{Vt} \right) \] where +\(I_\nu\) is the modified Bessel +function of the first kind of order \(\nu\), given by: \[ \nu = \frac{1}{V} \sqrt{U^2 + 4Vb} \]

+

The solution in terms of the original size distribution \(N(w, t)\) is then: \[ N(w, t) = G(x(w), t; x(w_0)) w^{-p} +\]

+
+

Numerical verification +

+

We verify this time-dependent solution by starting the simulation +with the analytical distribution at a small time \(t_{start} > 0\) (to avoid the +singularity at \(t=0\)) and projecting +it to a later time \(t_{end}\).

+
+# Function to calculate N analytic
+N_analytic <- function(w, t, w0, t0, params) {
+  # Parameters
+  p <- 0.7
+  A <- 1
+  B <- 0.5
+  K <- 0.1
+  
+  # Transformed parameters
+  U <- A - 0.5 * K 
+  V <- 0.5 * K * (1 - p)
+  b <- B / (1 - p)
+  nu <- sqrt((U/V)^2 + 4 * b / V)
+
+  # Time elapsed
+  dt <- t - t0
+  if (dt <= 0) stop("t must be greater than t0")
+  
+  # Transform to x
+  x <- w^(1 - p) / (1 - p)
+  x0 <- w0^(1 - p) / (1 - p)
+  
+  # Argument for Bessel
+  z <- 2 * sqrt(x * x0) / (V * dt)
+  
+  # Logarithm of N_tilde using scaled Bessel to avoid overflow
+  bessel_scaled <- besselI(z, nu, expon.scaled = TRUE)
+  
+  log_N_tilde <- -log(V * dt) + 
+                 (U / (2 * V)) * log(x / x0) - 
+                 (x + x0) / (V * dt) + 
+                 z + 
+                 log(bessel_scaled)
+  
+  N_tilde <- exp(log_N_tilde)
+  
+  # Transform back to N(w)
+  N <- N_tilde * w^(-p)
+  
+  return(N)
+}
+
+# Initial Condition
+w0 <- 10
+t_start <- 1
+t_end <- 2
+
+# Set RDD to exact analytical flux
+time_dep_rdd <- function(rdi, species_params, params, t, ...) {
+    # Parameters (must match those used in N_analytic)
+    p <- 0.7
+    A <- 1
+    B <- 0.5
+    K <- 0.1
+    w0 <- 10
+    t0 <- 0
+    
+    # Transformed parameters
+    U <- A - 0.5 * K 
+    V <- 0.5 * K * (1 - p)
+    b <- B / (1 - p)
+    nu <- sqrt((U/V)^2 + 4 * b / V)
+    
+    # Time elapsed
+    dt <- t - t0
+    if (dt <= 0) return(structure(rep(0, length(rdi)), names = names(rdi)))
+    
+    # Boundary w_min
+    w_min <- min(params@w)
+    x <- w_min^(1 - p) / (1 - p)
+    x0 <- w0^(1 - p) / (1 - p)
+    
+    # Argument for Bessel
+    z <- 2 * sqrt(x * x0) / (V * dt)
+    
+    # Calculate scaled Bessel ratio I_{nu+1}/I_nu
+    # besselI returns I_nu * exp(-z) with expon.scaled=TRUE
+    I_nu <- besselI(z, nu, expon.scaled = TRUE)
+    I_nu_plus_1 <- besselI(z, nu + 1, expon.scaled = TRUE)
+    
+    if (I_nu == 0) {
+        J <- 0
+    } else {
+        ratio <- I_nu_plus_1 / I_nu
+        
+        # Calculate G (N_tilde) at boundary
+        # log(G) = ...
+        log_G <- -log(V * dt) + 
+                 (U / (2 * V)) * log(x / x0) - 
+                 (x + x0) / (V * dt) + 
+                 z + 
+                 log(I_nu) # I_nu is already scaled, so we add z back... wait.
+                 # The formula in N_analytic: log_N_tilde = ... + z + log(bessel_scaled)
+                 # This reconstructs the unscaled log value. Correct.
+        
+        G <- exp(log_G)
+        
+        # Flux J = G * [ U/2 + x/dt - (V*z/2) * ratio - (V*nu/2) ]
+        term <- U/2 + x/dt - (V * z / 2) * ratio - (V * nu / 2)
+        J <- G * term
+    }
+    
+    structure(rep(J, length(rdi)), names = names(rdi))
+}
+
+params <- setRateFunction(params, "RDD", "time_dep_rdd")
+
+# Set initial N from analytical solution
+initial_n <- N_analytic(w(params), t_start, w0, 0, params)
+initialN(params) <- matrix(initial_n, nrow = 1, byrow = TRUE)
+
+# Run project
+sim <- project(params, t_max = t_end - t_start, dt = 0.001)
+
+# Compare
+final_n_num <- finalN(sim)[1, ]
+final_n_ana <- N_analytic(w(params), t_end, w0, 0, params)
+
+# Plot
+plot(w(params), final_n_num, log="xy", type="l", col="red", lwd=2, 
+     main="Time Dependent Check", xlab="Size", ylab="Density")
+lines(w(params), final_n_ana, col="blue", lty=2, lwd=2)
+legend("topright", legend=c("Numerical", "Analytical"), col=c("red", "blue"), lty=c(1, 2))
+

+
+
+# Robust comparison metrics
+# 1. Total Abundance (Conservation)
+total_n_num <- sum(final_n_num * params@dw)
+total_n_ana <- sum(final_n_ana * params@dw)
+rel_err_total <- abs(total_n_num - total_n_ana) / total_n_ana
+
+# 2. Peak Location
+peak_idx_num <- which.max(final_n_num)
+peak_idx_ana <- which.max(final_n_ana)
+peak_w_num <- w(params)[peak_idx_num]
+peak_w_ana <- w(params)[peak_idx_ana]
+rel_err_peak_loc <- abs(peak_w_num - peak_w_ana) / peak_w_ana
+
+# 3. Peak Height
+peak_val_num <- max(final_n_num)
+peak_val_ana <- max(final_n_ana)
+rel_err_peak_val <- abs(peak_val_num - peak_val_ana) / peak_val_ana
+
+print(paste("Total Abundance Error:", rel_err_total))
+#> [1] "Total Abundance Error: 7.06656338230903e-05"
+print(paste("Peak Location Error:", rel_err_peak_loc))
+#> [1] "Peak Location Error: 0.013734153868719"
+print(paste("Peak Height Error:", rel_err_peak_val))
+#> [1] "Peak Height Error: 0.0301244310252145"
+
+# Pass conditions: < 5% mass error, < 5% location shift, < 40% height difference (diffusive flattening)
+if (rel_err_total < 0.05 && rel_err_peak_loc < 0.05 && rel_err_peak_val < 0.4) {
+  print("Time-dependent test passed.")
+} else {
+  print("Time-dependent test failed.")
+}
+#> [1] "Time-dependent test passed."
+
+
+
+

Numerical Diffusion Test +

+

The upwind scheme introduces a numerical diffusion \(D_{num} \approx g(w) \Delta w\). We verify +this by running the projection with zero physical diffusion and +comparing the result to the analytical steady state solution for a +system with diffusion \(D(w) = g(w) +\Delta w\).

+

In this test, we use the same power law rates: \(g(w) = A w^p\). \(\Delta w \approx w \delta\) where \(\delta = \ln(10^{\Delta x}) = \ln(\beta)\). +So \(D_{num} = g(w) \Delta w + g(w)^2 \Delta +t\). For power law rates \(g(w) = A +w^p\), and grid spacing \(\Delta w +\approx w \delta\), this becomes: \(D_{num} \approx A w^p \cdot w \delta + (A w^p)^2 +\Delta t = (A \delta) w^{p+1} + A^2 \Delta t w^{2p}\). To allow +an analytic solution with a simple power-law diffusion \(D = K w^{p+1}\), we set \(p=1\) for this test. Then \(D_{num} \approx (A \delta + A^2 \Delta t) +w^2\). This corresponds to \(K = A +\delta + A^2 \Delta t\).

+
+# Parameters for the test
+p_test <- 1 # Use p=1 to match diffusion scaling
+A_test <- 1
+B_test <- 0.5
+
+# Helper: Growth rate
+start_growth_test <- function(params, ...) {
+    matrix(A_test * params@w^p_test, nrow = 1, byrow = TRUE)
+}
+
+# Helper: Mortality rate
+start_mort_test <- function(params, ...) {
+    matrix(B_test * params@w^(p_test-1), nrow = 1, byrow = TRUE)
+}
+
+# Helper: RDD
+# We need to calculate K_num inside because it depends on params (resolution)
+constant_rdd_test <- function(rdi, species_params, params, ...) {
+    # Calculate effective K based on grid resolution
+    beta_grid <- params@w[2] / params@w[1]
+    
+    # Grid spacing beta approx 1+delta
+    # K_spatial = A * (beta - 1)
+    # K_time = A^2 * dt
+    # We use dt = 0.01 in the project call below
+    dt <- 0.01
+    
+    K_loc <- A_test * (beta_grid - 1) + A_test^2 * dt
+    
+    # Calculate lambda for this K
+    # Solve quadratic: K x^2 - (2A - K) x - 2B = 0
+    a_q <- K_loc
+    b_q <- -(2*A_test - K_loc)
+    c_q <- -2*B_test
+    det <- b_q^2 - 4 * a_q * c_q
+    x <- (-b_q - sqrt(det)) / (2 * a_q)
+    lam <- p_test - x
+    
+    w_min <- min(params@w)
+    J_min <- w_min^(p_test - lam) * (A_test - 0.5 * K_loc * (p_test + 1 - lam))
+    structure(rep(J_min, length(rdi)), names = names(rdi))
+}
+
+# Function to perform the numerical diffusion test
+run_numerical_diffusion_test <- function(no_w) {
+    # Create params
+    params <- newMultispeciesParams(data.frame(species = "Test", 
+                                               w_inf = 1000, 
+                                               w_mat = 100, 
+                                               beta = 100, 
+                                               sigma = 1, 
+                                               k_vb = 0.1), 
+                                    no_w = no_w, min_w = 1e-3, max_w = 1000)
+    
+    # Set rates
+    params <- setRateFunction(params, "EGrowth", "start_growth_test")
+    params <- setRateFunction(params, "Mort", "start_mort_test")
+    params <- setRateFunction(params, "RDD", "constant_rdd_test")
+    
+    # NO physical diffusion
+    # We set the diffusion matrix to zero
+    ext_diffusion(params)[] <- 0
+    
+    params <- setResource(params, resource_dynamics = "resource_constant")
+    initialNResource(params) <- 0
+    
+    # Calculate analytic initial condition to start close to steady state
+    # We use the same logic as in constant_rdd_test to get lambda
+    beta_grid <- params@w[2] / params@w[1]
+    K_loc <- A_test * (beta_grid - 1)
+    
+    a_q <- K_loc
+    b_q <- -(2*A_test - K_loc)
+    c_q <- -2*B_test
+    det <- b_q^2 - 4 * a_q * c_q
+    x <- (-b_q - sqrt(det)) / (2 * a_q)
+    lam <- p_test - x
+    
+    # Initialize 
+    initialN(params) <- matrix(params@w^(-lam), nrow = 1, byrow = TRUE)
+    
+    # Project
+    sim <- project(params, t_max = 5, dt = 0.01)
+    
+    n0 <- initialN(params)[1, ]
+    n1 <- finalN(sim)[1, ]
+    
+    # Compare (ignore boundaries)
+    idx <- 10:(length(params@w)-10)
+    
+    # Calculate error
+    err <- abs(n1[idx] - n0[idx]) / n0[idx]
+    mean(err)
+}
+
+# Run the test
+err_100 <- run_numerical_diffusion_test(100)
+#> Warning in validGivenSpeciesParams(species_params): The species parameter data
+#> frame is missing a `w_max` column. I am copying over the values from the
+#> `w_inf` column. But note that `w_max` should be the maximum size of the largest
+#> individual, not the asymptotic size of an average indivdidual.
+#> Warning in validGivenSpeciesParams(species_params): The species parameter data
+#> frame is missing a `w_max` column. I am copying over the values from the
+#> `w_inf` column. But note that `w_max` should be the maximum size of the largest
+#> individual, not the asymptotic size of an average indivdidual.
+#> Because you have n != p, the default value for `h` is not very good.
+#> Because the age at maturity is not known, I need to fall back to using
+#> von Bertalanffy parameters, where available, and this is not reliable.
+#> No ks column so calculating from critical feeding level.
+#> Using z0 = z0pre * w_max ^ z0exp for missing z0 values.
+#> Using f0, h, lambda, kappa and the predation kernel to calculate gamma.
+err_400 <- run_numerical_diffusion_test(400)
+#> Warning in validGivenSpeciesParams(species_params): The species parameter data
+#> frame is missing a `w_max` column. I am copying over the values from the
+#> `w_inf` column. But note that `w_max` should be the maximum size of the largest
+#> individual, not the asymptotic size of an average indivdidual.
+#> Warning in validGivenSpeciesParams(species_params): The species parameter data
+#> frame is missing a `w_max` column. I am copying over the values from the
+#> `w_inf` column. But note that `w_max` should be the maximum size of the largest
+#> individual, not the asymptotic size of an average indivdidual.
+#> Because you have n != p, the default value for `h` is not very good.
+#> Because the age at maturity is not known, I need to fall back to using
+#> von Bertalanffy parameters, where available, and this is not reliable.
+#> No ks column so calculating from critical feeding level.
+#> Using z0 = z0pre * w_max ^ z0exp for missing z0 values.
+#> Using f0, h, lambda, kappa and the predation kernel to calculate gamma.
+
+print(paste("Mean relative error with 100 bins:", err_100))
+#> [1] "Mean relative error with 100 bins: 0.0335390242331932"
+print(paste("Mean relative error with 400 bins:", err_400))
+#> [1] "Mean relative error with 400 bins: 0.00716983337814119"
+
+# Check success
+if (err_400 < 0.05) {
+  print("Numerical diffusion test passed: Numerical solution (D=0) matches Analytic solution (D=D_num).")
+} else {
+  print("Numerical diffusion test failed.")
+}
+#> [1] "Numerical diffusion test passed: Numerical solution (D=0) matches Analytic solution (D=D_num)."
+
+
+
+ + + + +
+ + + + + + + diff --git a/docs/articles/analytic_test_files/figure-html/unnamed-chunk-2-1.png b/docs/articles/analytic_test_files/figure-html/unnamed-chunk-2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a514d8055d1f5c9a931f1c04786bfba235eb83 GIT binary patch literal 43912 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

(ove!oM%MY!rR-9a5S#$ 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 literal 0 HcmV?d00001 diff --git a/docs/articles/analytic_test_files/figure-html/unnamed-chunk-3-1.png b/docs/articles/analytic_test_files/figure-html/unnamed-chunk-3-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba417d6ef9d78fde280413c621cdbffdac7b8bf GIT binary patch literal 47153 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

_!3Jj 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 literal 0 HcmV?d00001 diff --git a/docs/articles/cheatsheet.html b/docs/articles/cheatsheet.html new file mode 100644 index 000000000..cf0e01fdd --- /dev/null +++ b/docs/articles/cheatsheet.html @@ -0,0 +1,674 @@ + + + + + + + +Cheatsheet: Analysis and Plotting • mizer + + + + + + + + + + + + + Skip to contents + + +

+ + + + +
+
+ + + +

This cheatsheet gives a quick overview of the functions available in +mizer for analysing the results of simulations and creating plots. For +full documentation of each function, follow the links.

+

Most functions accept either a MizerSim object +(returning a time series) or a MizerParams +object (returning a single value from the initial +state).

+
+
+

Accessing simulation arrays +

+

These functions extract raw arrays from a MizerSim +object.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionReturnsDimensions
N(sim)species abundance densitytime × species × size
NResource(sim)resource abundance densitytime × size
finalN(sim)species abundance at last timespecies × size
finalNResource(sim)resource abundance at last timesize
getEffort(sim)fishing efforttime × gear
getTimes(sim)saved time stepsvector
+

Example: Pull out Cod abundance:

+
+N(sim)[, "Cod", ]          # time × size for Cod
+N(sim)["2010", "Cod", ]    # size vector for Cod in year 2010
+finalN(sim)["Cod", ]       # size vector for Cod at the final time step
+
+
+
+

Summary functions +

+

These compute derived quantities from abundances. All accept +MizerSim or MizerParams. See ?summary_functions +for the full list.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionReturnsDimensions
getBiomass(sim, min_w, max_w)total biomasstime × species
getSSB(sim)spawning stock biomasstime × species
getN(sim, min_w, max_w)total abundancetime × species
getYield(sim)total yield across gearstime × species
getYieldGear(sim)yield by geartime × gear × species
getFeedingLevel(sim)feeding level at sizetime × species × size
getPredMort(sim)predation mortality at sizetime × species × size
getFMort(sim)fishing mortality at sizetime × species × size
getFMortGear(sim)fishing mortality by geartime × gear × species × size
getDiet(params)diet resolved by prey at sizepredator × size × prey
getTrophicLevel(params)trophic level at sizespecies × size
getTrophicLevelBySpecies(params)mean trophic level per speciesspecies
+

Size range: getBiomass() and +getN() accept min_w, max_w, +min_l, max_l to restrict the calculation to a +size range.

+

Example:

+
+getSSB(sim)                              # SSB of all species over time
+getBiomass(sim, min_w = 10, max_w = 1e4) # biomass of 10g–10kg fish
+getYield(sim)["2010", ]                  # yield in year 2010
+

The result is an ArraySpeciesByTime (time × species) or +ArraySpeciesBySize (species × size), which can be plotted +directly with plot() — see Plotting arrays directly below.

+
+
+
+

Indicator functions +

+

These compute community-level indicators. All accept +MizerSim (time series) or MizerParams (single +value from initial state). See ?indicator_functions.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionKey argumentsReturns
getProportionOfLargeFish(sim) +threshold_w = 100, biomass_proportion +proportion of large fish through time
getMeanWeight(sim) +min_w, max_w, species +mean community weight through time
getMeanMaxWeight(sim)measure = "both"/"numbers"/"biomass"mean asymptotic weight through time
getCommunitySlope(sim) +min_w, max_w, species +slope, intercept, R² through time
+

Example:

+
+lfi <- getProportionOfLargeFish(sim, min_w = 10, max_w = 5000, threshold_w = 500)
+lfi[c("1972", "2010")]
+
+slope <- getCommunitySlope(sim, min_w = 10, max_w = 5000)
+head(slope)
+
+
+
+

Plotting functions +

+

All plotting functions return a ggplot2 object that can +be further modified. Each has a plotly counterpart +(e.g. plotlyBiomass()) for interactive use. See ?plotting_functions.

+
+

Plots against time +

+

These show how a quantity changes over the course of the +simulation.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
FunctionKey argumentsShows
plotBiomass(sim) +species, total, start_time, +end_time, log +total biomass per species
plotYield(sim) +species, total, log +total yield per species
plotYieldGear(sim) +species, total +yield per species faceted by gear
+
+plotBiomass(sim)
+plotBiomass(sim, species = c("Cod", "Herring"), total = TRUE)
+plotBiomass(sim, start_time = 1980, end_time = 1990)
+plotYield(sim, log = FALSE)
+
+
+

Plots against body size +

+

These show how a quantity varies with body size, by default at the +final time step. Use time_range to average over a time +period.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionKey argumentsShows
plotSpectra(sim) +power, time_range, wlim, +species +abundance (or biomass) spectra
plotFeedingLevel(sim) +time_range, species, +highlight +feeding level (0–1) at size
plotPredMort(sim) +time_range, species, +highlight +predation mortality at size
plotFMort(sim) +time_range, species, +highlight +fishing mortality at size
plotGrowthCurves(sim) +species, max_age, percentage, +species_panel +size at age
plotDiet(params)speciesdiet composition at size
+
+plotSpectra(sim, power = 2, time_range = 1990:2000)
+plotFeedingLevel(sim, highlight = c("Cod", "Haddock"))
+plotGrowthCurves(sim, species = "Cod", max_age = 20)
+plotDiet(params, species = "Cod")
+
+
+

Summary plot +

+
+plot(sim)   # 5-panel summary: feeding level, biomass, predation mort, fishing mort, spectra
+
+
+
+
+

Plotting arrays directly +

+

The arrays returned by summary functions carry class +ArraySpeciesBySize or ArraySpeciesByTime and +have plot() and ggplotly() methods. This makes +it easy to plot any quantity without a dedicated plot function.

+ +++++ + + + + + + + + + + + + + + + + + +
ClassTypical source +plot() shows
ArraySpeciesByTime +getBiomass(sim), getSSB(sim), +getYield(sim), getN(sim) +value vs time, one line per species
ArraySpeciesBySize +getFeedingLevel(params), +getPredMort(params), getEncounter(params) +value vs size, one line per species
+
+plot(getBiomass(sim))          # equivalent to plotBiomass(sim)
+plot(getSSB(sim))
+plot(getFeedingLevel(params))  # same as plotFeedingLevel(params)
+
+# Interactive versions
+ggplotly(getBiomass(sim))
+ggplotly(getEncounter(params))
+

plot(<ArraySpeciesByTime>) accepts: +species, start_time, end_time, +total, background, highlight, +log, ylim.

+

plot(<ArraySpeciesBySize>) accepts: +species, highlight, log_x, +log_y, wlim, ylim, +all.sizes.

+
+
+
+

Common arguments +

+

Most analysis and plotting functions share these optional +arguments:

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentEffect
speciescharacter vector — restrict to a subset of species
+min_w, max_w +restrict size range (by weight, in grams)
+min_l, max_l +restrict size range (by length, in cm)
time_rangenumeric vector — average over this time period (plot functions)
+start_time, end_time +restrict time axis (time-series plots)
highlightcharacter vector — draw named species with thicker lines
totallogical — add a line for the community total
loglogical — log-scale y axis
+
+
+
+

Working with ggplot2 +

+

All plot*() functions return a ggplot2 +object, so you can customise them:

+
+library(ggplot2)
+p <- plotBiomass(sim, species = c("Cod", "Herring"))
+p + theme_bw() + labs(title = "Biomass through time")
+p + geom_hline(aes(yintercept = 1e10), linetype = "dashed")
+

Change species colours and line types via the +MizerParams object:

+
+params@linecolour["Cod"] <- "darkblue"
+params@linetype["Cod"]   <- "dashed"
+
+
+
+

Quick reference +

+
+# ── Accessing raw arrays ───────────────────────────────────────────────────────
+N(sim)                  # time × species × size
+NResource(sim)          # time × size
+finalN(sim)             # species × size  (last time step)
+finalNResource(sim)     # size            (last time step)
+
+# ── Species biomass / abundance / yield (time × species) ──────────────────────
+getBiomass(sim)         # total biomass
+getSSB(sim)             # spawning stock biomass
+getN(sim)               # total abundance (numbers)
+getYield(sim)           # catch in weight
+getYieldGear(sim)       # catch by gear (time × gear × species)
+
+# ── Rates at size (time × species × size) ─────────────────────────────────────
+getFeedingLevel(sim)    # satiation (0 = starving, 1 = full)
+getPredMort(sim)        # predation mortality
+getFMort(sim)           # fishing mortality
+getFMortGear(sim)       # fishing mortality by gear (time × gear × species × size)
+
+# ── Diet and trophic (species × size × …) ────────────────────────────────────
+getDiet(params)                 # proportion of diet from each prey (predator × size × prey)
+getTrophicLevel(params)         # trophic level at size (species × size)
+getTrophicLevelBySpecies(params) # mean trophic level (species)
+
+# ── Community indicators (time series) ────────────────────────────────────────
+getProportionOfLargeFish(sim, threshold_w = 100)
+getMeanWeight(sim)
+getMeanMaxWeight(sim)
+getCommunitySlope(sim)          # returns data.frame with slope, intercept, R²
+
+# ── Dedicated plot functions ───────────────────────────────────────────────────
+plot(sim)               # 5-panel summary
+plotBiomass(sim)        # biomass vs time
+plotYield(sim)          # yield vs time
+plotYieldGear(sim)      # yield vs time, faceted by gear
+plotSpectra(sim)        # abundance spectra vs size
+plotFeedingLevel(sim)   # feeding level vs size
+plotPredMort(sim)       # predation mortality vs size
+plotFMort(sim)          # fishing mortality vs size
+plotGrowthCurves(sim)   # size vs age
+plotDiet(params, species = "Cod")  # diet composition vs size
+
+# ── Plot any summary array directly ───────────────────────────────────────────
+plot(getBiomass(sim))           # ArraySpeciesByTime → value vs time
+plot(getFeedingLevel(params))   # ArraySpeciesBySize → value vs size
+ggplotly(getBiomass(sim))       # interactive version
+
+# ── Add plotly interactivity to any named plot function ───────────────────────
+plotlyBiomass(sim)
+plotlySpectra(sim)
+plotlyFeedingLevel(sim)
+# … etc.
+
+
+
+ + + + +
+ + + + + + + diff --git a/docs/articles/cohort_dynamics_and_diffusion.html b/docs/articles/cohort_dynamics_and_diffusion.html new file mode 100644 index 000000000..1e2a366a5 --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion.html @@ -0,0 +1,420 @@ + + + + + + + +Cohort dynamics and diffusion • mizer + + + + + + + + + + + + + Skip to contents + + +
+ + + + + + +
+
+ + + +
+

Introduction +

+

In this vignette we explore how yearly cohorts of fish evolve over +time in a single-species size-spectrum model. We will drive the model +with a short burst of reproductive flux once a year, creating distinct +cohorts. We will then visualise how these cohorts grow through the size +spectrum and how the diffusion rate affects the spreading of the cohorts +over time.

+

Diffusion in the size-spectrum model represents individual +variability in growth rates. Without diffusion, all individuals born at +the same time grow at the same deterministic rate and remain together as +a sharp cohort. With diffusion, individuals spread out in size, causing +the cohort to broaden as it ages.

+ +
+
+

Setting up the model +

+

We start by creating a single-species model using +newSingleSpeciesParams(). This sets up a species embedded +in a power-law background community.

+
+params <- newSingleSpeciesParams(h = 10, no_w = 400)
+params <- steady(params)
+
+
+

Pulsed reproduction +

+

To create distinct yearly cohorts, we need reproduction to happen in +short bursts rather than continuously. We achieve this by writing a +custom density-dependent reproduction rate function (RDD function) that +only allows reproduction during a brief window at the start of each +year.

+

First, we calculate the steady-state reproduction rate. This tells us +the total egg production rate needed to maintain the population. We will +use this value as the magnitude of our annual pulse.

+
+rdd_steady <- getRDD(params)
+cat("Steady-state RDD:", rdd_steady, "\n")
+
## Steady-state RDD: 0.2801128
+

The RDD function receives the current time t as an +argument. We use this to turn reproduction on only during a short window +at the start of each year and off at all other times. To maintain the +same total annual egg production, we scale up the rate during the pulse +to compensate for its short duration.

+
+# Custom RDD function: pulsed reproduction using a fixed rate
+pulse_width <- 0.1  # Reproduce during first 10% of each year
+
+annual_pulse_RDD <- function(rdi, species_params, t, ...) {
+    frac <- t %% 1
+    if (frac < pulse_width) {
+        # Scale up to maintain total annual reproduction
+        return(species_params$rdd_steady / pulse_width)
+    } else {
+        return(0 * rdi)
+    }
+}
+

We store the steady-state RDD value in the species parameters so our +function can access it, and then register the function:

+
+params_pulse <- params
+species_params(params_pulse)$rdd_steady <- rdd_steady
+params_pulse <- setRateFunction(params_pulse, "RDD", "annual_pulse_RDD")
+
+
+

Simulating cohort dynamics without diffusion +

+

We start from an empty spectrum (no fish) and let the pulsed +reproduction create cohorts from scratch.

+
+params_empty <- params_pulse
+initialN(params_empty)[] <- 0
+
+sim_no_diff <- project(params_empty, t_max = 5, dt = 0.05,
+                       t_save = 0.1, progress_bar = FALSE)
+

Let’s visualise the size spectrum at different time points to see the +cohorts:

+
+times_to_plot <- c(0.5, 1, 1.5, 2, 3, 4)
+w <- params_pulse@w
+
+plot_list <- list()
+for (tt in times_to_plot) {
+    idx <- which.min(abs(as.numeric(dimnames(sim_no_diff@n)$time) - tt))
+    actual_time <- as.numeric(dimnames(sim_no_diff@n)$time[idx])
+    n_at_t <- as.numeric(sim_no_diff@n[idx, 1, ])
+    pos <- n_at_t > 0
+    if (any(pos)) {
+        plot_list[[length(plot_list) + 1]] <- data.frame(
+            w = w[pos], n = n_at_t[pos] * w[pos]^2,
+            time = factor(paste0("t = ", actual_time))
+        )
+    }
+}
+plot_data <- do.call(rbind, plot_list)
+
+p <- ggplot(plot_data, aes(x = w, y = n, colour = time)) +
+    geom_line(linewidth = 0.8) +
+    scale_x_log10(limits = c(1e-3, 100)) +
+    # scale_y_log10() +
+    labs(x = "Weight [g]", y = "Biomass density [g]",
+         title = "Cohort evolution without diffusion",
+         colour = "Time") +
+    theme_minimal(base_size = 14)
+
+ggplotly(p)
+
+

Without diffusion, each cohort appears as a relatively sharp peak +that moves to the right (towards larger sizes) as the fish grow.

+
+
+

Adding diffusion +

+

Now let’s add diffusion to the model. Diffusion is set as an array +with dimensions species × size via setExtDiffusion(). We’ll +set a constant diffusion rate across all sizes.

+

We define a helper function that runs the simulation for a given +diffusion coefficient:

+
+run_with_diffusion <- function(params_base, diff_coeff, diff_exp, t_max = 5) {
+    p <- params_base
+    d <- p@ext_diffusion
+    d[] <- diff_coeff * w ^ diff_exp
+    p <- setExtDiffusion(p, ext_diffusion = d)
+    initialN(p)[] <- 0
+    sim <- project(p, t_max = t_max, dt = 0.05,
+                   t_save = 0.1, progress_bar = FALSE)
+    return(sim)
+}
+
+
+

Comparing different diffusion rates +

+

Let’s compare simulations with no diffusion, low diffusion, and high +diffusion:

+
+diff_exp <- params_pulse@species_params$n + 1
+sim_d0 <- run_with_diffusion(params_pulse, diff_coeff = 0, diff_exp = diff_exp)
+sim_d_low <- run_with_diffusion(params_pulse, diff_coeff = 0.1, diff_exp = diff_exp)
+sim_d_high <- run_with_diffusion(params_pulse, diff_coeff = 0.5, diff_exp = diff_exp)
+

Now let’s visualise the cohorts at a specific time point to see how +diffusion affects their shape:

+
+snapshot_time <- 3
+
+build_snapshot <- function(sim, label) {
+    idx <- which.min(abs(as.numeric(dimnames(sim@n)$time) - snapshot_time))
+    n_at_t <- as.numeric(sim@n[idx, 1, ])
+    w <- sim@params@w
+    pos <- n_at_t > 0
+    if (any(pos)) {
+        data.frame(w = w[pos], n = n_at_t[pos], diffusion = label)
+    } else {
+        data.frame(w = numeric(0), n = numeric(0), diffusion = character(0))
+    }
+}
+
+snapshot_data <- rbind(
+    build_snapshot(sim_d0, "D = 0 (no diffusion)"),
+    build_snapshot(sim_d_low, "D = 0.1 (low)"),
+    build_snapshot(sim_d_high, "D = 0.5 (high)")
+)
+
+ggplot(snapshot_data, aes(x = w, y = n * w^2, colour = diffusion)) +
+    geom_line(linewidth = 0.8) +
+    scale_x_log10(limits = c(1e-3, 100)) +
+    # scale_y_log10() +
+    labs(x = "Weight [g]", y = "Biomass density [g]",
+         title = paste0("Effect of diffusion on cohorts at t = ",
+                        snapshot_time),
+         colour = "Diffusion rate") +
+    theme_minimal(base_size = 14)
+

+

We can see that diffusion has a large effect on the speed at which +the cohort peaks are moving but not so much effect on the broadening of +the peaks.

+
+
+

Time evolution with diffusion +

+

Let’s look at the full time evolution of the size spectrum with +moderate diffusion to see how cohorts spread over time:

+
+diff_exp <- params_pulse@species_params$n + 1
+sim_d_med <- run_with_diffusion(params_pulse, diff_coeff = 0.05, diff_exp = diff_exp)
+
+times_to_plot <- c(0.5, 1, 2, 3, 4, 5)
+
+plot_list_diff <- list()
+for (tt in times_to_plot) {
+    idx <- which.min(abs(as.numeric(dimnames(sim_d_med@n)$time) - tt))
+    actual_time <- as.numeric(dimnames(sim_d_med@n)$time[idx])
+    n_at_t <- as.numeric(sim_d_med@n[idx, 1, ])
+    pos <- n_at_t > 0
+    if (any(pos)) {
+        plot_list_diff[[length(plot_list_diff) + 1]] <- data.frame(
+            w = w[pos], n = n_at_t[pos] * w[pos]^2,
+            time = factor(paste0("t = ", actual_time))
+        )
+    }
+}
+plot_data_diff <- do.call(rbind, plot_list_diff)
+
+ggplot(plot_data_diff, aes(x = w, y = n, colour = time)) +
+    geom_line(linewidth = 0.8) +
+    scale_x_log10(limits = c(1e-3, 100)) +
+    # scale_y_log10() +
+    labs(x = "Weight [g]", y = "Number density [1/g]",
+         title = "Cohort evolution with moderate diffusion (D = 0.05)",
+         colour = "Time") +
+    theme_minimal(base_size = 14)
+

+

As time progresses, we see that:

+
    +
  1. New cohorts enter at the egg size each year.
  2. +
  3. Each cohort grows towards larger sizes.
  4. +
  5. The diffusion causes each cohort to spread out more and more as it +ages.
  6. +
  7. Eventually, older cohorts merge together as their spreading +overwhelms the year-to-year separation.
  8. +
+
+
+

Heatmap visualisation +

+

A heatmap provides a compact view of the entire dynamics, showing how +the size spectrum evolves continuously over time:

+
+all_times <- as.numeric(dimnames(sim_d_med@n)$time)
+
+heatmap_list <- list()
+for (i in seq_along(all_times)) {
+    n_at_t <- as.numeric(sim_d_med@n[i, 1, ])
+    pos <- n_at_t > 0
+    if (any(pos)) {
+        heatmap_list[[length(heatmap_list) + 1]] <- data.frame(
+            time = all_times[i],
+            w = w[pos],
+            log_n = n_at_t[pos] * w[pos]^2
+        )
+    }
+}
+heatmap_data <- do.call(rbind, heatmap_list)
+
+ggplot(heatmap_data, aes(x = time, y = w, fill = log_n)) +
+    geom_raster(interpolate = TRUE) +
+    scale_y_log10() +
+    scale_fill_viridis_c(name = expression(log[10](N))) +
+    labs(x = "Time [years]", y = "Weight [g]",
+         title = "Size spectrum over time (D = 0.05)") +
+    theme_minimal(base_size = 14)
+

+

In the heatmap, the diagonal bands represent individual cohorts +growing through the size spectrum. The broadening of these bands with +time is the effect of diffusion.

+
+
+

Summary +

+

This vignette demonstrated:

+
    +
  1. How to set up a single-species model with +newSingleSpeciesParams().
  2. +
  3. How to implement pulsed annual reproduction using a custom RDD +function.
  4. +
  5. How cohorts of fish grow through the size spectrum over time.
  6. +
  7. How diffusion, set via setExtDiffusion(), controls the +spreading of cohorts — representing individual variability in growth +rates.
  8. +
+
+
+
+ + + + +
+ + + + + + + diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/css/crosstalk.min.css b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/css/crosstalk.min.css new file mode 100644 index 000000000..6b4538284 --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/css/crosstalk.min.css @@ -0,0 +1 @@ +.container-fluid.crosstalk-bscols{margin-left:-30px;margin-right:-30px;white-space:normal}body>.container-fluid.crosstalk-bscols{margin-left:auto;margin-right:auto}.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column{display:inline-block;padding-right:12px;vertical-align:top}@media only screen and (max-width: 480px){.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column{display:block;padding-right:inherit}}.crosstalk-input{margin-bottom:15px}.crosstalk-input .control-label{margin-bottom:0;vertical-align:middle}.crosstalk-input input[type="checkbox"]{margin:4px 0 0;margin-top:1px;line-height:normal}.crosstalk-input .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.crosstalk-input .checkbox>label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.crosstalk-input .checkbox input[type="checkbox"],.crosstalk-input .checkbox-inline input[type="checkbox"]{position:absolute;margin-top:2px;margin-left:-20px}.crosstalk-input .checkbox+.checkbox{margin-top:-5px}.crosstalk-input .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.crosstalk-input .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px} diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js new file mode 100644 index 000000000..fd9eb53d2 --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js @@ -0,0 +1,1474 @@ +(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o b) { + return 1; + } +} + +/** + * @private + */ + +var FilterSet = function () { + function FilterSet() { + _classCallCheck(this, FilterSet); + + this.reset(); + } + + _createClass(FilterSet, [{ + key: "reset", + value: function reset() { + // Key: handle ID, Value: array of selected keys, or null + this._handles = {}; + // Key: key string, Value: count of handles that include it + this._keys = {}; + this._value = null; + this._activeHandles = 0; + } + }, { + key: "update", + value: function update(handleId, keys) { + if (keys !== null) { + keys = keys.slice(0); // clone before sorting + keys.sort(naturalComparator); + } + + var _diffSortedLists = (0, _util.diffSortedLists)(this._handles[handleId], keys), + added = _diffSortedLists.added, + removed = _diffSortedLists.removed; + + this._handles[handleId] = keys; + + for (var i = 0; i < added.length; i++) { + this._keys[added[i]] = (this._keys[added[i]] || 0) + 1; + } + for (var _i = 0; _i < removed.length; _i++) { + this._keys[removed[_i]]--; + } + + this._updateValue(keys); + } + + /** + * @param {string[]} keys Sorted array of strings that indicate + * a superset of possible keys. + * @private + */ + + }, { + key: "_updateValue", + value: function _updateValue() { + var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._allKeys; + + var handleCount = Object.keys(this._handles).length; + if (handleCount === 0) { + this._value = null; + } else { + this._value = []; + for (var i = 0; i < keys.length; i++) { + var count = this._keys[keys[i]]; + if (count === handleCount) { + this._value.push(keys[i]); + } + } + } + } + }, { + key: "clear", + value: function clear(handleId) { + if (typeof this._handles[handleId] === "undefined") { + return; + } + + var keys = this._handles[handleId]; + if (!keys) { + keys = []; + } + + for (var i = 0; i < keys.length; i++) { + this._keys[keys[i]]--; + } + delete this._handles[handleId]; + + this._updateValue(); + } + }, { + key: "value", + get: function get() { + return this._value; + } + }, { + key: "_allKeys", + get: function get() { + var allKeys = Object.keys(this._keys); + allKeys.sort(naturalComparator); + return allKeys; + } + }]); + + return FilterSet; +}(); + +exports.default = FilterSet; + +},{"./util":11}],4:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.default = group; + +var _var2 = require("./var"); + +var _var3 = _interopRequireDefault(_var2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// Use a global so that multiple copies of crosstalk.js can be loaded and still +// have groups behave as singletons across all copies. +global.__crosstalk_groups = global.__crosstalk_groups || {}; +var groups = global.__crosstalk_groups; + +function group(groupName) { + if (groupName && typeof groupName === "string") { + if (!groups.hasOwnProperty(groupName)) { + groups[groupName] = new Group(groupName); + } + return groups[groupName]; + } else if ((typeof groupName === "undefined" ? "undefined" : _typeof(groupName)) === "object" && groupName._vars && groupName.var) { + // Appears to already be a group object + return groupName; + } else if (Array.isArray(groupName) && groupName.length == 1 && typeof groupName[0] === "string") { + return group(groupName[0]); + } else { + throw new Error("Invalid groupName argument"); + } +} + +var Group = function () { + function Group(name) { + _classCallCheck(this, Group); + + this.name = name; + this._vars = {}; + } + + _createClass(Group, [{ + key: "var", + value: function _var(name) { + if (!name || typeof name !== "string") { + throw new Error("Invalid var name"); + } + + if (!this._vars.hasOwnProperty(name)) this._vars[name] = new _var3.default(this, name); + return this._vars[name]; + } + }, { + key: "has", + value: function has(name) { + if (!name || typeof name !== "string") { + throw new Error("Invalid var name"); + } + + return this._vars.hasOwnProperty(name); + } + }]); + + return Group; +}(); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./var":12}],5:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _group = require("./group"); + +var _group2 = _interopRequireDefault(_group); + +var _selection = require("./selection"); + +var _filter = require("./filter"); + +var _input = require("./input"); + +require("./input_selectize"); + +require("./input_checkboxgroup"); + +require("./input_slider"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var defaultGroup = (0, _group2.default)("default"); + +function var_(name) { + return defaultGroup.var(name); +} + +function has(name) { + return defaultGroup.has(name); +} + +if (global.Shiny) { + global.Shiny.addCustomMessageHandler("update-client-value", function (message) { + if (typeof message.group === "string") { + (0, _group2.default)(message.group).var(message.name).set(message.value); + } else { + var_(message.name).set(message.value); + } + }); +} + +var crosstalk = { + group: _group2.default, + var: var_, + has: has, + SelectionHandle: _selection.SelectionHandle, + FilterHandle: _filter.FilterHandle, + bind: _input.bind +}; + +/** + * @namespace crosstalk + */ +exports.default = crosstalk; + +global.crosstalk = crosstalk; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./group":4,"./input":6,"./input_checkboxgroup":7,"./input_selectize":8,"./input_slider":9,"./selection":10}],6:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.register = register; +exports.bind = bind; +var $ = global.jQuery; + +var bindings = {}; + +function register(reg) { + bindings[reg.className] = reg; + if (global.document && global.document.readyState !== "complete") { + $(function () { + bind(); + }); + } else if (global.document) { + setTimeout(bind, 100); + } +} + +function bind() { + Object.keys(bindings).forEach(function (className) { + var binding = bindings[className]; + $("." + binding.className).not(".crosstalk-input-bound").each(function (i, el) { + bindInstance(binding, el); + }); + }); +} + +// Escape jQuery identifier +function $escape(val) { + return val.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1"); +} + +function bindEl(el) { + var $el = $(el); + Object.keys(bindings).forEach(function (className) { + if ($el.hasClass(className) && !$el.hasClass("crosstalk-input-bound")) { + var binding = bindings[className]; + bindInstance(binding, el); + } + }); +} + +function bindInstance(binding, el) { + var jsonEl = $(el).find("script[type='application/json'][data-for='" + $escape(el.id) + "']"); + var data = JSON.parse(jsonEl[0].innerText); + + var instance = binding.factory(el, data); + $(el).data("crosstalk-instance", instance); + $(el).addClass("crosstalk-input-bound"); +} + +if (global.Shiny) { + var inputBinding = new global.Shiny.InputBinding(); + var _$ = global.jQuery; + _$.extend(inputBinding, { + find: function find(scope) { + return _$(scope).find(".crosstalk-input"); + }, + initialize: function initialize(el) { + if (!_$(el).hasClass("crosstalk-input-bound")) { + bindEl(el); + } + }, + getId: function getId(el) { + return el.id; + }, + getValue: function getValue(el) {}, + setValue: function setValue(el, value) {}, + receiveMessage: function receiveMessage(el, data) {}, + subscribe: function subscribe(el, callback) { + _$(el).data("crosstalk-instance").resume(); + }, + unsubscribe: function unsubscribe(el) { + _$(el).data("crosstalk-instance").suspend(); + } + }); + global.Shiny.inputBindings.register(inputBinding, "crosstalk.inputBinding"); +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],7:[function(require,module,exports){ +(function (global){ +"use strict"; + +var _input = require("./input"); + +var input = _interopRequireWildcard(_input); + +var _filter = require("./filter"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var $ = global.jQuery; + +input.register({ + className: "crosstalk-input-checkboxgroup", + + factory: function factory(el, data) { + /* + * map: {"groupA": ["keyA", "keyB", ...], ...} + * group: "ct-groupname" + */ + var ctHandle = new _filter.FilterHandle(data.group); + + var lastKnownKeys = void 0; + var $el = $(el); + $el.on("change", "input[type='checkbox']", function () { + var checked = $el.find("input[type='checkbox']:checked"); + if (checked.length === 0) { + lastKnownKeys = null; + ctHandle.clear(); + } else { + var keys = {}; + checked.each(function () { + data.map[this.value].forEach(function (key) { + keys[key] = true; + }); + }); + var keyArray = Object.keys(keys); + keyArray.sort(); + lastKnownKeys = keyArray; + ctHandle.set(keyArray); + } + }); + + return { + suspend: function suspend() { + ctHandle.clear(); + }, + resume: function resume() { + if (lastKnownKeys) ctHandle.set(lastKnownKeys); + } + }; + } +}); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./input":6}],8:[function(require,module,exports){ +(function (global){ +"use strict"; + +var _input = require("./input"); + +var input = _interopRequireWildcard(_input); + +var _util = require("./util"); + +var util = _interopRequireWildcard(_util); + +var _filter = require("./filter"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var $ = global.jQuery; + +input.register({ + className: "crosstalk-input-select", + + factory: function factory(el, data) { + /* + * items: {value: [...], label: [...]} + * map: {"groupA": ["keyA", "keyB", ...], ...} + * group: "ct-groupname" + */ + + var first = [{ value: "", label: "(All)" }]; + var items = util.dataframeToD3(data.items); + var opts = { + options: first.concat(items), + valueField: "value", + labelField: "label", + searchField: "label" + }; + + var select = $(el).find("select")[0]; + + var selectize = $(select).selectize(opts)[0].selectize; + + var ctHandle = new _filter.FilterHandle(data.group); + + var lastKnownKeys = void 0; + selectize.on("change", function () { + if (selectize.items.length === 0) { + lastKnownKeys = null; + ctHandle.clear(); + } else { + var keys = {}; + selectize.items.forEach(function (group) { + data.map[group].forEach(function (key) { + keys[key] = true; + }); + }); + var keyArray = Object.keys(keys); + keyArray.sort(); + lastKnownKeys = keyArray; + ctHandle.set(keyArray); + } + }); + + return { + suspend: function suspend() { + ctHandle.clear(); + }, + resume: function resume() { + if (lastKnownKeys) ctHandle.set(lastKnownKeys); + } + }; + } +}); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./input":6,"./util":11}],9:[function(require,module,exports){ +(function (global){ +"use strict"; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _input = require("./input"); + +var input = _interopRequireWildcard(_input); + +var _filter = require("./filter"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +var $ = global.jQuery; +var strftime = global.strftime; + +input.register({ + className: "crosstalk-input-slider", + + factory: function factory(el, data) { + /* + * map: {"groupA": ["keyA", "keyB", ...], ...} + * group: "ct-groupname" + */ + var ctHandle = new _filter.FilterHandle(data.group); + + var opts = {}; + var $el = $(el).find("input"); + var dataType = $el.data("data-type"); + var timeFormat = $el.data("time-format"); + var round = $el.data("round"); + var timeFormatter = void 0; + + // Set up formatting functions + if (dataType === "date") { + timeFormatter = strftime.utc(); + opts.prettify = function (num) { + return timeFormatter(timeFormat, new Date(num)); + }; + } else if (dataType === "datetime") { + var timezone = $el.data("timezone"); + if (timezone) timeFormatter = strftime.timezone(timezone);else timeFormatter = strftime; + + opts.prettify = function (num) { + return timeFormatter(timeFormat, new Date(num)); + }; + } else if (dataType === "number") { + if (typeof round !== "undefined") opts.prettify = function (num) { + var factor = Math.pow(10, round); + return Math.round(num * factor) / factor; + }; + } + + $el.ionRangeSlider(opts); + + function getValue() { + var result = $el.data("ionRangeSlider").result; + + // Function for converting numeric value from slider to appropriate type. + var convert = void 0; + var dataType = $el.data("data-type"); + if (dataType === "date") { + convert = function convert(val) { + return formatDateUTC(new Date(+val)); + }; + } else if (dataType === "datetime") { + convert = function convert(val) { + // Convert ms to s + return +val / 1000; + }; + } else { + convert = function convert(val) { + return +val; + }; + } + + if ($el.data("ionRangeSlider").options.type === "double") { + return [convert(result.from), convert(result.to)]; + } else { + return convert(result.from); + } + } + + var lastKnownKeys = null; + + $el.on("change.crosstalkSliderInput", function (event) { + if (!$el.data("updating") && !$el.data("animating")) { + var _getValue = getValue(), + _getValue2 = _slicedToArray(_getValue, 2), + from = _getValue2[0], + to = _getValue2[1]; + + var keys = []; + for (var i = 0; i < data.values.length; i++) { + var val = data.values[i]; + if (val >= from && val <= to) { + keys.push(data.keys[i]); + } + } + keys.sort(); + ctHandle.set(keys); + lastKnownKeys = keys; + } + }); + + // let $el = $(el); + // $el.on("change", "input[type="checkbox"]", function() { + // let checked = $el.find("input[type="checkbox"]:checked"); + // if (checked.length === 0) { + // ctHandle.clear(); + // } else { + // let keys = {}; + // checked.each(function() { + // data.map[this.value].forEach(function(key) { + // keys[key] = true; + // }); + // }); + // let keyArray = Object.keys(keys); + // keyArray.sort(); + // ctHandle.set(keyArray); + // } + // }); + + return { + suspend: function suspend() { + ctHandle.clear(); + }, + resume: function resume() { + if (lastKnownKeys) ctHandle.set(lastKnownKeys); + } + }; + } +}); + +// Convert a number to a string with leading zeros +function padZeros(n, digits) { + var str = n.toString(); + while (str.length < digits) { + str = "0" + str; + }return str; +} + +// Given a Date object, return a string in yyyy-mm-dd format, using the +// UTC date. This may be a day off from the date in the local time zone. +function formatDateUTC(date) { + if (date instanceof Date) { + return date.getUTCFullYear() + "-" + padZeros(date.getUTCMonth() + 1, 2) + "-" + padZeros(date.getUTCDate(), 2); + } else { + return null; + } +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./filter":2,"./input":6}],10:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SelectionHandle = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = require("./events"); + +var _events2 = _interopRequireDefault(_events); + +var _group = require("./group"); + +var _group2 = _interopRequireDefault(_group); + +var _util = require("./util"); + +var util = _interopRequireWildcard(_util); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Use this class to read and write (and listen for changes to) the selection + * for a Crosstalk group. This is intended to be used for linked brushing. + * + * If two (or more) `SelectionHandle` instances in the same webpage share the + * same group name, they will share the same state. Setting the selection using + * one `SelectionHandle` instance will result in the `value` property instantly + * changing across the others, and `"change"` event listeners on all instances + * (including the one that initiated the sending) will fire. + * + * @param {string} [group] - The name of the Crosstalk group, or if none, + * null or undefined (or any other falsy value). This can be changed later + * via the [SelectionHandle#setGroup](#setGroup) method. + * @param {Object} [extraInfo] - An object whose properties will be copied to + * the event object whenever an event is emitted. + */ +var SelectionHandle = exports.SelectionHandle = function () { + function SelectionHandle() { + var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var extraInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + _classCallCheck(this, SelectionHandle); + + this._eventRelay = new _events2.default(); + this._emitter = new util.SubscriptionTracker(this._eventRelay); + + // Name of the group we're currently tracking, if any. Can change over time. + this._group = null; + // The Var we're currently tracking, if any. Can change over time. + this._var = null; + // The event handler subscription we currently have on var.on("change"). + this._varOnChangeSub = null; + + this._extraInfo = util.extend({ sender: this }, extraInfo); + + this.setGroup(group); + } + + /** + * Changes the Crosstalk group membership of this SelectionHandle. The group + * being switched away from (if any) will not have its selection value + * modified as a result of calling `setGroup`, even if this handle was the + * most recent handle to set the selection of the group. + * + * The group being switched to (if any) will also not have its selection value + * modified as a result of calling `setGroup`. If you want to set the + * selection value of the new group, call `set` explicitly. + * + * @param {string} group - The name of the Crosstalk group, or null (or + * undefined) to clear the group. + */ + + + _createClass(SelectionHandle, [{ + key: "setGroup", + value: function setGroup(group) { + var _this = this; + + // If group is unchanged, do nothing + if (this._group === group) return; + // Treat null, undefined, and other falsy values the same + if (!this._group && !group) return; + + if (this._var) { + this._var.off("change", this._varOnChangeSub); + this._var = null; + this._varOnChangeSub = null; + } + + this._group = group; + + if (group) { + this._var = (0, _group2.default)(group).var("selection"); + var sub = this._var.on("change", function (e) { + _this._eventRelay.trigger("change", e, _this); + }); + this._varOnChangeSub = sub; + } + } + + /** + * Retrieves the current selection for the group represented by this + * `SelectionHandle`. + * + * - If no selection is active, then this value will be falsy. + * - If a selection is active, but no data points are selected, then this + * value will be an empty array. + * - If a selection is active, and data points are selected, then the keys + * of the selected data points will be present in the array. + */ + + }, { + key: "_mergeExtraInfo", + + + /** + * Combines the given `extraInfo` (if any) with the handle's default + * `_extraInfo` (if any). + * @private + */ + value: function _mergeExtraInfo(extraInfo) { + // Important incidental effect: shallow clone is returned + return util.extend({}, this._extraInfo ? this._extraInfo : null, extraInfo ? extraInfo : null); + } + + /** + * Overwrites the current selection for the group, and raises the `"change"` + * event among all of the group's '`SelectionHandle` instances (including + * this one). + * + * @fires SelectionHandle#change + * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see + * {@link SelectionHandle#value}). + * @param {Object} [extraInfo] - Extra properties to be included on the event + * object that's passed to listeners (in addition to any options that were + * passed into the `SelectionHandle` constructor). + */ + + }, { + key: "set", + value: function set(selectedKeys, extraInfo) { + if (this._var) this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo)); + } + + /** + * Overwrites the current selection for the group, and raises the `"change"` + * event among all of the group's '`SelectionHandle` instances (including + * this one). + * + * @fires SelectionHandle#change + * @param {Object} [extraInfo] - Extra properties to be included on the event + * object that's passed to listeners (in addition to any that were passed + * into the `SelectionHandle` constructor). + */ + + }, { + key: "clear", + value: function clear(extraInfo) { + if (this._var) this.set(void 0, this._mergeExtraInfo(extraInfo)); + } + + /** + * Subscribes to events on this `SelectionHandle`. + * + * @param {string} eventType - Indicates the type of events to listen to. + * Currently, only `"change"` is supported. + * @param {SelectionHandle~listener} listener - The callback function that + * will be invoked when the event occurs. + * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel + * this subscription. + */ + + }, { + key: "on", + value: function on(eventType, listener) { + return this._emitter.on(eventType, listener); + } + + /** + * Cancels event subscriptions created by {@link SelectionHandle#on}. + * + * @param {string} eventType - The type of event to unsubscribe. + * @param {string|SelectionHandle~listener} listener - Either the callback + * function previously passed into {@link SelectionHandle#on}, or the + * string that was returned from {@link SelectionHandle#on}. + */ + + }, { + key: "off", + value: function off(eventType, listener) { + return this._emitter.off(eventType, listener); + } + + /** + * Shuts down the `SelectionHandle` object. + * + * Removes all event listeners that were added through this handle. + */ + + }, { + key: "close", + value: function close() { + this._emitter.removeAllListeners(); + this.setGroup(null); + } + }, { + key: "value", + get: function get() { + return this._var ? this._var.get() : null; + } + }]); + + return SelectionHandle; +}(); + +/** + * @callback SelectionHandle~listener + * @param {Object} event - An object containing details of the event. For + * `"change"` events, this includes the properties `value` (the new + * value of the selection, or `undefined` if no selection is active), + * `oldValue` (the previous value of the selection), and `sender` (the + * `SelectionHandle` instance that made the change). + */ + +/** + * @event SelectionHandle#change + * @type {object} + * @property {object} value - The new value of the selection, or `undefined` + * if no selection is active. + * @property {object} oldValue - The previous value of the selection. + * @property {SelectionHandle} sender - The `SelectionHandle` instance that + * changed the value. + */ + +},{"./events":1,"./group":4,"./util":11}],11:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +exports.extend = extend; +exports.checkSorted = checkSorted; +exports.diffSortedLists = diffSortedLists; +exports.dataframeToD3 = dataframeToD3; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function extend(target) { + for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + sources[_key - 1] = arguments[_key]; + } + + for (var i = 0; i < sources.length; i++) { + var src = sources[i]; + if (typeof src === "undefined" || src === null) continue; + + for (var key in src) { + if (src.hasOwnProperty(key)) { + target[key] = src[key]; + } + } + } + return target; +} + +function checkSorted(list) { + for (var i = 1; i < list.length; i++) { + if (list[i] <= list[i - 1]) { + throw new Error("List is not sorted or contains duplicate"); + } + } +} + +function diffSortedLists(a, b) { + var i_a = 0; + var i_b = 0; + + if (!a) a = []; + if (!b) b = []; + + var a_only = []; + var b_only = []; + + checkSorted(a); + checkSorted(b); + + while (i_a < a.length && i_b < b.length) { + if (a[i_a] === b[i_b]) { + i_a++; + i_b++; + } else if (a[i_a] < b[i_b]) { + a_only.push(a[i_a++]); + } else { + b_only.push(b[i_b++]); + } + } + + if (i_a < a.length) a_only = a_only.concat(a.slice(i_a)); + if (i_b < b.length) b_only = b_only.concat(b.slice(i_b)); + return { + removed: a_only, + added: b_only + }; +} + +// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... } +// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ] +function dataframeToD3(df) { + var names = []; + var length = void 0; + for (var name in df) { + if (df.hasOwnProperty(name)) names.push(name); + if (_typeof(df[name]) !== "object" || typeof df[name].length === "undefined") { + throw new Error("All fields must be arrays"); + } else if (typeof length !== "undefined" && length !== df[name].length) { + throw new Error("All fields must be arrays of the same length"); + } + length = df[name].length; + } + var results = []; + var item = void 0; + for (var row = 0; row < length; row++) { + item = {}; + for (var col = 0; col < names.length; col++) { + item[names[col]] = df[names[col]][row]; + } + results.push(item); + } + return results; +} + +/** + * Keeps track of all event listener additions/removals and lets all active + * listeners be removed with a single operation. + * + * @private + */ + +var SubscriptionTracker = exports.SubscriptionTracker = function () { + function SubscriptionTracker(emitter) { + _classCallCheck(this, SubscriptionTracker); + + this._emitter = emitter; + this._subs = {}; + } + + _createClass(SubscriptionTracker, [{ + key: "on", + value: function on(eventType, listener) { + var sub = this._emitter.on(eventType, listener); + this._subs[sub] = eventType; + return sub; + } + }, { + key: "off", + value: function off(eventType, listener) { + var sub = this._emitter.off(eventType, listener); + if (sub) { + delete this._subs[sub]; + } + return sub; + } + }, { + key: "removeAllListeners", + value: function removeAllListeners() { + var _this = this; + + var current_subs = this._subs; + this._subs = {}; + Object.keys(current_subs).forEach(function (sub) { + _this._emitter.off(current_subs[sub], sub); + }); + } + }]); + + return SubscriptionTracker; +}(); + +},{}],12:[function(require,module,exports){ +(function (global){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = require("./events"); + +var _events2 = _interopRequireDefault(_events); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Var = function () { + function Var(group, name, /*optional*/value) { + _classCallCheck(this, Var); + + this._group = group; + this._name = name; + this._value = value; + this._events = new _events2.default(); + } + + _createClass(Var, [{ + key: "get", + value: function get() { + return this._value; + } + }, { + key: "set", + value: function set(value, /*optional*/event) { + if (this._value === value) { + // Do nothing; the value hasn't changed + return; + } + var oldValue = this._value; + this._value = value; + // Alert JavaScript listeners that the value has changed + var evt = {}; + if (event && (typeof event === "undefined" ? "undefined" : _typeof(event)) === "object") { + for (var k in event) { + if (event.hasOwnProperty(k)) evt[k] = event[k]; + } + } + evt.oldValue = oldValue; + evt.value = value; + this._events.trigger("change", evt, this); + + // TODO: Make this extensible, to let arbitrary back-ends know that + // something has changed + if (global.Shiny && global.Shiny.onInputChange) { + global.Shiny.onInputChange(".clientValue-" + (this._group.name !== null ? this._group.name + "-" : "") + this._name, typeof value === "undefined" ? null : value); + } + } + }, { + key: "on", + value: function on(eventType, listener) { + return this._events.on(eventType, listener); + } + }, { + key: "off", + value: function off(eventType, listener) { + return this._events.off(eventType, listener); + } + }]); + + return Var; +}(); + +exports.default = Var; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"./events":1}]},{},[5]) +//# sourceMappingURL=crosstalk.js.map diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js.map b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js.map new file mode 100644 index 000000000..cff94f089 --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.js.map @@ -0,0 +1,37 @@ +{ + "version": 3, + "sources": [ + "node_modules/browser-pack/_prelude.js", + "javascript/src/events.js", + "javascript/src/filter.js", + "javascript/src/filterset.js", + "javascript/src/group.js", + "javascript/src/index.js", + "javascript/src/input.js", + "javascript/src/input_checkboxgroup.js", + "javascript/src/input_selectize.js", + "javascript/src/input_slider.js", + "javascript/src/selection.js", + "javascript/src/util.js", + "javascript/src/var.js" + ], + "names": [], + "mappings": "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", + "file": "generated.js", + "sourceRoot": "", + "sourcesContent": [ + "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n}\n\n/**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n", + "import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n", + "import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n", + "import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport { bind } from \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle,\n bind: bind\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n", + "let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nexport function bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n", + "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", + "import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", + "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let round = $el.data(\"round\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n } else if (dataType === \"number\") {\n if (typeof round !== \"undefined\")\n opts.prettify = function(num) {\n let factor = Math.pow(10, round);\n return Math.round(num * factor) / factor;\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n", + "import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\n/**\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\nexport class SelectionHandle {\n\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n}\n\n/**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n/**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n", + "export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n", + "import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n" + ] +} \ No newline at end of file diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.min.js b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.min.js new file mode 100644 index 000000000..b7ec0ac9f --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/js/crosstalk.min.js @@ -0,0 +1,2 @@ +!function o(u,a,l){function s(n,e){if(!a[n]){if(!u[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(f)return f(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var i=a[n]={exports:{}};u[n][0].call(i.exports,function(e){var t=u[n][1][e];return s(t||e)},i,i.exports,o,u,a,l)}return a[n].exports}for(var f="function"==typeof require&&require,e=0;e?@[\\\]^`{|}~])/g,"\\$1")+"']"),r=JSON.parse(n[0].innerText),i=e.factory(t,r);o(t).data("crosstalk-instance",i),o(t).addClass("crosstalk-input-bound")}if(t.Shiny){var e=new t.Shiny.InputBinding,u=t.jQuery;u.extend(e,{find:function(e){return u(e).find(".crosstalk-input")},initialize:function(e){var t,n;u(e).hasClass("crosstalk-input-bound")||(n=o(t=e),Object.keys(r).forEach(function(e){n.hasClass(e)&&!n.hasClass("crosstalk-input-bound")&&i(r[e],t)}))},getId:function(e){return e.id},getValue:function(e){},setValue:function(e,t){},receiveMessage:function(e,t){},subscribe:function(e,t){u(e).data("crosstalk-instance").resume()},unsubscribe:function(e){u(e).data("crosstalk-instance").suspend()}}),t.Shiny.inputBindings.register(e,"crosstalk.inputBinding")}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(r,e,t){(function(e){"use strict";var t=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(r("./input")),n=r("./filter");var a=e.jQuery;t.register({className:"crosstalk-input-checkboxgroup",factory:function(e,r){var i=new n.FilterHandle(r.group),o=void 0,u=a(e);return u.on("change","input[type='checkbox']",function(){var e=u.find("input[type='checkbox']:checked");if(0===e.length)o=null,i.clear();else{var t={};e.each(function(){r.map[this.value].forEach(function(e){t[e]=!0})});var n=Object.keys(t);n.sort(),o=n,i.set(n)}}),{suspend:function(){i.clear()},resume:function(){o&&i.set(o)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6}],8:[function(r,e,t){(function(e){"use strict";var t=n(r("./input")),l=n(r("./util")),s=r("./filter");function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}var f=e.jQuery;t.register({className:"crosstalk-input-select",factory:function(e,n){var t=l.dataframeToD3(n.items),r={options:[{value:"",label:"(All)"}].concat(t),valueField:"value",labelField:"label",searchField:"label"},i=f(e).find("select")[0],o=f(i).selectize(r)[0].selectize,u=new s.FilterHandle(n.group),a=void 0;return o.on("change",function(){if(0===o.items.length)a=null,u.clear();else{var t={};o.items.forEach(function(e){n.map[e].forEach(function(e){t[e]=!0})});var e=Object.keys(t);e.sort(),a=e,u.set(e)}}),{suspend:function(){u.clear()},resume:function(){a&&u.set(a)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6,"./util":11}],9:[function(n,e,t){(function(e){"use strict";var d=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},t=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(n("./input")),a=n("./filter");var v=e.jQuery,p=e.strftime;function y(e,t){for(var n=e.toString();n.length {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n}\n\n/**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n","import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n","import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n","import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport { bind } from \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle,\n bind: bind\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n","let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nexport function bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let round = $el.data(\"round\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n } else if (dataType === \"number\") {\n if (typeof round !== \"undefined\")\n opts.prettify = function(num) {\n let factor = Math.pow(10, round);\n return Math.round(num * factor) / factor;\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n","import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\n/**\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\nexport class SelectionHandle {\n\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n}\n\n/**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n/**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n","export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n","import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n"]} \ No newline at end of file diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/scss/crosstalk.scss b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/scss/crosstalk.scss new file mode 100644 index 000000000..35665616f --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/crosstalk-1.2.2/scss/crosstalk.scss @@ -0,0 +1,75 @@ +/* Adjust margins outwards, so column contents line up with the edges of the + parent of container-fluid. */ +.container-fluid.crosstalk-bscols { + margin-left: -30px; + margin-right: -30px; + white-space: normal; +} + +/* But don't adjust the margins outwards if we're directly under the body, + i.e. we were the top-level of something at the console. */ +body > .container-fluid.crosstalk-bscols { + margin-left: auto; + margin-right: auto; +} + +.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { + display: inline-block; + padding-right: 12px; + vertical-align: top; +} + +@media only screen and (max-width:480px) { + .crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { + display: block; + padding-right: inherit; + } +} + +/* Relevant BS3 styles to make filter_checkbox() look reasonable without Bootstrap */ +.crosstalk-input { + margin-bottom: 15px; /* a la .form-group */ + .control-label { + margin-bottom: 0; + vertical-align: middle; + } + input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px; + line-height: normal; + } + .checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } + .checkbox > label{ + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + cursor: pointer; + } + .checkbox input[type="checkbox"], + .checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 2px; + margin-left: -20px; + } + .checkbox + .checkbox { + margin-top: -5px; + } + .checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + vertical-align: middle; + cursor: pointer; + } + .checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } +} diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/figure-html/unnamed-chunk-10-1.png b/docs/articles/cohort_dynamics_and_diffusion_files/figure-html/unnamed-chunk-10-1.png new file mode 100644 index 0000000000000000000000000000000000000000..279e505f6b18657dd220372de2dff7b38113a86b GIT binary patch literal 127621 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 Y6K^=@LZ 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

uCN))pzHo^k}0@h$A4|i(&=sZ{NE|u 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 literal 0 HcmV?d00001 diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/figure-html/unnamed-chunk-12-1.png b/docs/articles/cohort_dynamics_and_diffusion_files/figure-html/unnamed-chunk-12-1.png new file mode 100644 index 0000000000000000000000000000000000000000..abac7458042755c84827c68dfb6f35a2d433440e GIT binary patch literal 299979 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

- - - diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index f18beb8c4..8b044caa9 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -3,22 +3,30 @@ pkgdown: 2.2.0 pkgdown_sha: ~ articles: a_multispecies_model_of_the_north_sea: a_multispecies_model_of_the_north_sea.html + analytic_test: analytic_test.html + cheatsheet: cheatsheet.html + cohort_dynamics_and_diffusion: cohort_dynamics_and_diffusion.html community_model: community_model.html developer_FAQ: developer_FAQ.html developer_vignette: developer_vignette.html editing_website: editing_website.html exploring_the_simulation_results: exploring_the_simulation_results.html + extension-packages: extension-packages.html + extensions: extensions.html + mathematical_details: mathematical_details.html mizer_vignette: mizer_vignette.html mizer: mizer.html model_description: model_description.html multispecies_model: multispecies_model.html + numerical_details: numerical_details.html plotting: plotting.html + predation_diffusion: predation_diffusion.html publications: publications.html running_a_simulation: running_a_simulation.html single_species_size-spectrum_dynamics: single_species_size-spectrum_dynamics.html trait_model: trait_model.html working_with_git: working_with_git.html -last_built: 2025-11-16T20:57Z +last_built: 2026-05-07T17:42Z urls: reference: https://sizespectrum.org/mizer/reference article: https://sizespectrum.org/mizer/articles diff --git a/docs/reference/ArraySpeciesBySize.html b/docs/reference/ArraySpeciesBySize.html new file mode 100644 index 000000000..ec43467be --- /dev/null +++ b/docs/reference/ArraySpeciesBySize.html @@ -0,0 +1,181 @@ + +S3 class for species x size rate arrays — ArraySpeciesBySize • mizer + Skip to contents + + +
+
+
+ +
+

Many functions in mizer return two-dimensional arrays (species x size) +holding rates like encounter rate, feeding level, growth rate, mortality etc. +The ArraySpeciesBySize class wraps these arrays to provide convenient +print(), summary(), plot(), and as.data.frame() methods.

+
+ +
+

Usage

+
ArraySpeciesBySize(x, value_name = NULL, units = NULL, params = NULL)
+
+ +
+

Arguments

+ + +
x
+

A matrix (species x size).

+ + +
value_name
+

A string giving the human-readable name for the value.

+ + +
units
+

A string giving the units (e.g. "g/year", "1/year").

+ + +
params
+

A MizerParams object. Used for species colours, linetypes, +and size ranges in the plot() method.

+ +
+
+

Value

+

An ArraySpeciesBySize object (inherits from matrix and array).

+
+
+

Details

+

An ArraySpeciesBySize object behaves just like a regular matrix for +arithmetic operations and subsetting. It carries two lightweight attributes:

  • value_name – a human-readable name for the value +(e.g. "Encounter rate").

  • +
  • units – the units of the rate (e.g. "g/year").

  • +
+ +
+

Examples

+
# \donttest{
+enc <- getEncounter(NS_params)
+is.ArraySpeciesBySize(enc)
+#> [1] TRUE
+summary(enc)
+#> Encounter rate [g/year] 
+#> 12 species x 100 sizes
+#> 
+#>  Species       Min      Mean       Max
+#>    Sprat 0.2992076  2929.178  39573.31
+#>  Sandeel 0.4528175  3768.983  45507.81
+#>   N.pout 0.5019776 16840.828 147886.62
+#>  Herring 0.5752333  6241.503  80375.40
+#>      Dab 0.4916095 24004.843 266704.99
+#>  Whiting 0.4362525 17348.364 137539.48
+#>     Sole 0.3646753 12087.308 148784.12
+#>  Gurnard 0.3122260 11327.057 135351.68
+#>   Plaice 0.2323659 11800.440 113242.16
+#>  Haddock 0.5964130 24932.923 334719.58
+#>      Cod 0.9658343 52646.610 436916.91
+#>   Saithe 0.7709631 16377.321 187775.81
+# }
+
+
+
+ + +
+ + + + + + + diff --git a/docs/reference/ArraySpeciesByTime.html b/docs/reference/ArraySpeciesByTime.html new file mode 100644 index 000000000..6cb9971b8 --- /dev/null +++ b/docs/reference/ArraySpeciesByTime.html @@ -0,0 +1,182 @@ + +S3 class for time x species arrays — ArraySpeciesByTime • mizer + Skip to contents + + +
+
+
+ +
+

Some functions in mizer return two-dimensional arrays (time x species) +holding quantities like biomass, abundance, or yield rate through time. +The ArraySpeciesByTime class wraps these arrays to provide convenient +print(), summary(), plot(), and as.data.frame() methods.

+
+ +
+

Usage

+
ArraySpeciesByTime(x, value_name = NULL, units = NULL, params = NULL)
+
+ +
+

Arguments

+ + +
x
+

A matrix (time x species).

+ + +
value_name
+

A string giving the human-readable name for the value.

+ + +
units
+

A string giving the units (e.g. "g", "g/year").

+ + +
params
+

A MizerParams object holding the model that created the +values.

+ +
+
+

Value

+

An ArraySpeciesByTime object (inherits from matrix and array).

+
+
+

Details

+

An ArraySpeciesByTime object behaves just like a regular matrix for +arithmetic operations and subsetting. It carries these lightweight attributes:

  • value_name – a human-readable name for the value +(e.g. "Biomass").

  • +
  • units – the units of the value (e.g. "g", "g/year").

  • +
  • params – the MizerParams object that created the values.

  • +
+ +
+

Examples

+
# \donttest{
+bio <- getBiomass(NS_sim)
+is.ArraySpeciesByTime(bio)
+#> [1] TRUE
+summary(bio)
+#> Biomass [g] 
+#> 44 times x 12 species
+#> 
+#>  Species          Min         Mean          Max
+#>    Sprat 1.879468e+10 3.974130e+10 5.654305e+10
+#>  Sandeel 7.342796e+11 2.099658e+12 3.737535e+12
+#>   N.pout 2.528021e+11 3.254617e+11 3.929766e+11
+#>  Herring 2.152333e+11 3.944814e+11 5.243289e+11
+#>      Dab 1.200040e+10 1.649782e+10 1.953451e+10
+#>  Whiting 1.983459e+11 2.210414e+11 2.605881e+11
+#>     Sole 9.370624e+10 1.058612e+11 1.280000e+11
+#>  Gurnard 1.067321e+11 1.291922e+11 1.457401e+11
+#>   Plaice 1.950539e+12 2.260909e+12 2.756253e+12
+#>  Haddock 5.358152e+11 6.424916e+11 8.205085e+11
+#>      Cod 2.544990e+11 3.871450e+11 1.618389e+12
+#>   Saithe 6.211381e+11 7.998952e+11 1.062987e+12
+# }
+
+
+
+ + +
+ + + + + + + diff --git a/docs/reference/BevertonHoltRDD.html b/docs/reference/BevertonHoltRDD.html index a13dcf9dd..47dc79eb0 100644 --- a/docs/reference/BevertonHoltRDD.html +++ b/docs/reference/BevertonHoltRDD.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + + + + + +
+
+
+ +
+

Stops with an informative error if the object's extension chain is not a +suffix of the session's registered maximal chain, or (when check_class is +TRUE) if the object does not inherit from the expected S4 marker class.

+
+ +
+

Usage

+
assertExtensionChain(
+  object,
+  extensions = objectExtensions(object),
+  check_class = TRUE
+)
+
+ +
+

Arguments

+ + +
object
+

A MizerParams or MizerSim object.

+ + +
extensions
+

Named character vector giving the object's extension chain. +Defaults to objectExtensions() applied to object.

+ + +
check_class
+

Logical. If TRUE (default), also verify that object +inherits from the expected S4 marker class.

+ +
+
+

Value

+

Invisibly TRUE. Called for its side-effect of stopping on +incompatibility.

+
+ +
+ + +
+ + + + + + + diff --git a/docs/reference/baseMizerClass.html b/docs/reference/baseMizerClass.html new file mode 100644 index 000000000..7de5700d4 --- /dev/null +++ b/docs/reference/baseMizerClass.html @@ -0,0 +1,132 @@ + +Strip extension classes from a mizer object — baseMizerClass • mizer + Skip to contents + + +
+
+
+ +
+

Coerces a MizerParams or MizerSim object back to its plain base class, +removing any S4 extension marker classes. For MizerSim, also strips the +extension class from the embedded params slot.

+
+ +
+

Usage

+
baseMizerClass(object)
+
+ +
+

Arguments

+ + +
object
+

A MizerParams or MizerSim object.

+ +
+
+

Value

+

The same object coerced to MizerParams or MizerSim.

+
+ +
+ + +
+ + + + + + + diff --git a/docs/reference/box_pred_kernel.html b/docs/reference/box_pred_kernel.html index feaa8d662..38425a472 100644 --- a/docs/reference/box_pred_kernel.html +++ b/docs/reference/box_pred_kernel.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -15,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125
  • Gd1lEXZlwgw(woh$);)Z1&|UscaEeoYdV*J+s^;)3r34^;lIQCuHEqTv7MZ}{ z1WIAg)TjVS&+gif&W_O5SLT0dL^u1M{upvp=!4V~I_no3$LE^7r!=d8Jrmpx3%ex`fg+{vulKNcP? z>snV?!u0iKVHon}TYB&}{ve~_Z|TOUN2kU<0O687b%b*CDlPHhxZuy!KsMB`Dj|ry zg@eYJHqSA#3!Lzbz5V*m?B}B$qpO&Y-I**5Rmew^_#|rqBj&b|5V2;vg*|G(y-COR zetm(!6hEf;xsG^nLfF#wXfEz7FU>o-`1-5ad*_3p2w#rDli~}>j~`>&mRLVxD5jc! z>8-|iFNf#&j*5bRISTh%3sG!_90o4@lB7mnF<~6%x#*k3=aD%|)mUnZ9E79~7R6;) z;dX@Yvx5&1U9wKC==oOX&V!JR1wcu$-M&VbdDr}3q3FM3TSZ?&*d-tDN}8G$+3Q!E zOk@YmdR}BTb2Dd^r!X1~$KG$wSD9pmZw}xuIpi>#J=ytLBo;T8yGgO2{b@#SHaEwN z2c0ggJx@R!S^|nY56LuQ2IF5%a`d<`I1zZ@&Zv05m6Im~9Wz%cDZi)#Qo!IZnSb;i z#3rWSpKU`QHdQSpnE=ID6ngta=1I4Bs3}J8A1mlr^4rICY1^ddkr(=@VA}2vypX7e zNQ_YaDE#{W4{mZH&3zAt;d~^etn`YwKAyi({i1Q5uVa$V*vA}GB!lIkLye9kk2kf5Ka$ltA-D%r;ZCE(hC-8fnJcBygtH?=b*4ze4IBOIl`Zr)8yG9-0*$ zi#BC&D@o!K*}1_iPe-ka!rVjO1DJhBPU7J&1lmH@x$4x*GZtQrud`yS&TA1!*}wW_ zr6QN6J7YxruE}~%QXW<)5H~8B8NmsX^xS=X#%;X&@w=w|NN@HUTs?H(S;7JGaIhu< zLYu@#HOc9{erRzmUhvH0nTdkJFIQ!z?w9`)>wW8|=zTCOsU9+%VzBc2qt(zrDp`md zSF02?XMdztWBNqoILDRL!@;qd?6Mez&RdHnrqOcj>OmMG8{{M7N6YN4owb_hLmQqf zrl%`s^h4dXfuYYjrg?R@&P1Ei@bu`|Oe*LU&B4~1%C&_mos-DXA>rjArescunhjVL z<=Uj}ikoKygT@EF1#N!EqS=?n4eV0} zJ!CT8b8Pr$$>GchjCT|{32Cnz*(G|Q#pBL|m(uF5iw+O|q=Q^Pe6^_@-VgWCZO@$=)E95SY@n|~gIX86Az!|O*T zB~=5@;I*SK*M6p04PAcT@>x}@+~yaoahB_?JzZ{!K)y_?abq?2OG>XEnA)BbVyj8( zpp)gNYhKVRWU=FZ1)Z;$v}vEWc=1gvjr*j(R&acBCouu3%hGfTg1iPHr-4-TT{+5Qj&>SWoR=IbQUyKn4I)bLX2ccr=*x1N35nf31&JTKih2(v}Y zLDh#5Yhodc#*p!@h3i_`N|9qe$b0k@iZse6Vu`))^twVkr!w-f_) z8VTRuJ*#DAQ0Tp zwQQ+9x4>4G#=Qzm_Y0*~9a5Y5I9ZIs{nOjK(P6s{-UOI>wY~!!J3fW$1QpaYopR$| znb^4%dAx88e|kO?BkKU68hnf<{(7eJrKF_9HocU{2LFHJLT30hUvk7r)s}wt~D3yq`!qjJVUY@@7A4A+ms=?j;&!BN}(>&`a`@!7EZa{@p zmK~hl+{GxgVyU;6Hon;Cvr_QFSOK2?QOESwE%`luLY%q;>)ScQeK#Y0grC5RpnDTO z@8p!OHYL-k%2ad)Gc-dqT#+%lKIwMYro(|RH!+q@bB{dM(kgDVG+-}e1$U-sXjN=b zz-NS8`VR7P0sgslvT2yvHlYJtce<)n;X9x6BOb@}ReZ+L>Gw5P{ZKe*_RUu2MaYve%H z7h{B{mK}aBY9}Bnu9t!7l4rTBAoKUtVC|WEgbr(wP6gOrsq);=dz|B1s_4G+0<8e zQR0M}{_M|+;SA?;!*yfX>3ZPgN9BfE<4lR#I;@{D2C}*JI|Sr;fc2_Z8&NTP_-Zq5 zf8sNwlg9@5U*$K)rs^CiC(nOLK|wUGb@mfK-niEV+Zc5c#(#-PR^@b*g!S0E>t_js zE$c2# z4XbqP19UyXHla>H+$OJo$}ZUT^%L;JtN1@*Yn4#sn}f&-q1KZZk~AzB2$vmVaVn{C z*Qs@MfCO6gMk8d)yxvu02N#W7O-t0LDw@dbT)qhGsTEpE-7E9b@h*i}(ykNn+Itv; z4)+2h-p*dZvn=-dhppBc$g>(7UA zBW5`pM(Hn@KoVz>tTf?+{Lzm7dcsVYq&4dok@B9r$@=X{9vl}M^sROW6{0< zl4)nuMB#C>+OT-FSiPjr#qi-RukOMFmQOld8biLv11uZ<#72LLsBmcmv-&D?L;>;(gOORiMVjaldxT;}ZH-&dATUCCDk{ z(s;s8Ik$79Y79!l7Y2LX%S;$sPPah;mTVmk)ZDg8)x)O_v8)}O!^ooFER81IcOG?e z)aev$bgzzHw_31%Z@rG-8oM=M>yRo{KZX8rD;-I*uc#sNl@3uxrD^D37*A+ZR*{{N zAdG4!{wNx^?w^!(a@QJag%c|5KeZyz+x>v52>hR20C!v?Yffdh7urT2RV+q8LvU?E zKTGwDXYRwT205YXTs;Td+ABnMfF6zdl+<;s z*wv%W@ASv%cNhy;`e8Q0M2fNqqudG^lFqb*-Tp^fIX$iRH*;|s-^8t-zP)05Ta2N= zIv>-PyVLn9I;C`O(k|f$%@9-1SjBQbvX>pYi-zXNsjEn5xzfD29#L=~e}4n!a@&EB zwxvy+S#Noe8o%$E<<-Cv;wLO{Pm zp{4O)4LwXmL;>GH`o)}~;Bs#T&2h)a7R+U|74v~=uE9#`P`MFrI_Sc~cb%MBQ?Jud zQhOcjcN`LBq@U^gUSSmRx$DQP>|cX$BV#S zF>DBchsc`cNws27rfNMHfNoEwO3>J{6dxKGBJrD^#DWCme+N@PSo@lP24+&I<+A=- zZJd3gJNapWwQ?!NrlVdlq=&LJaNnWE>TGhLUc2`132kzcGCixBVz>$ZGv<0W2S%MH z?sA6w*jO;2s=x-h>S;h}uVr215wsIilTJjC6IgT=l+r)sw>U$Z#ll0sEgQK2BfbV zjPm(A>xc}>SYbLU{D6)vBB|=}l=OlM60cD?+lC|l7`Cj#J4nKp){`xHd~`(Z>FP4| zMNoM9WKx`Ll-N^?@J3gN7qAD2^;i7%pDsY;`OAOG@_*vJ^^f+hNl)(Kbd(95f2pem zP4!M~=PYpAs?ij#_{kEeOLa4X^Qqk=$(VLVg=LaCTlcmDMOPD7Co886#yb{l z`i|@PjeXBg{mAmxlyrX64eg)7TwQOB;PM;6gPK$@h1mjtP9P<28rJ~LF&p1H}#UZ0MIv!A1U%VpP-TKm@oN=JXh(8f2A~0omXO+#6-`|kR#Qh@R zHX!qrsIiuCFsMp;P){_R6sNQ2+s(>T*URLVceD*r{| zBR7}-6D^`E3pZ$&MvtdLIEI#vOg>0PlTQr!%(S zpVoSu51_s=?#PmCvG__Tv-kgXt)Wzy!FbhR5GG}pZy=6%{7$=|W#D#|NKc#>Th^-w zVIo=RR<-b5p7YFcfVZ!d6iKWn!212bgm%n&8bc+^_tjF4s^nTavSI)%2vh3uG47)2 zJrA}pfJJfn_t(kveUMbux*7DT6F(NAZ~mbLL9bG9vCl83s`1MgEE2$X4Dy%GUM%3$ z{JtkK=JwuZ>P<&gZ=XgLEW=+i(f&1j>FN$XPIwB+EyxlpPwIcY8k`%*HYgI(^Kv>k z_DnZN09gCjN2y@@t(G0L4;!Dfy_5k>H1~nxVtMrQ5DzkF)3ZvHgztGKiijF<&mg%< zo<{SOCNSh2@u|6zuJHv2tI+YFYy9Zqj7#pTHmRXwz;;ejb7lD4Wk%y!&`pu3Oo>%I zm$SWtg^a@=DzI0U$BPjx%KBvX#8JUn(SN#QBccDkir;mE&?ovO4Wms4&N0t#FxB{c z90rpSJ$o@6ks;lP%dHln%>Y_Jnw70n*ufl9yjAA}1ZEdHGBNd({x++}3~$jQmj6?H z!NDnbyl3K`{IT9|mCz}7Sk1#xPz>7c!v=`qa8ltE;Rt1JibLX)8->G=9P-EvRq!Hw zz&F<~NYS)_`74kye^Lp&n`)?(Kj_~oHvY`7Fd8S>FlNR5L5iybB?35IIm!CfI8c+& z=Dzt&(wc^`!(3n!V_dM!2&iaBfAMShNfS$=3)RM}Anw2Jh33#Y_!WG>)|x8cjc{dI z!(0AM2FkS1i*=N%ckYE#gmxBO7U0=Kud3?}NSL@9zC$?RVW-lgoma_htY@3=Whgfff}iF7GDR_Q1P z;QR_*8B_+M5`Gq3@kNMHN6c_E{DYekqyJT`-D!q}uEarOi(Y32DFl66tS0I>R~lC@!;wrrsOoaiCY6fVSEJH-Pq0tNomQ+)mz;lohfzkg&3$X?*la4aU#D*dLxVTQVAVM93+AfPXUn@>uSV2wVy^BMg5^VQLbHs}4;^bB1OQ8V-XVv) ztWRjHX|IP9^)7{0WKRuwx6-%?U+1!^vWisghVl)i=sB4yXwf)o?$W)@gJ#NQw42_= z!PWg z#&iEBE9oVj*>YfbN5Z9aR#}G6qnXOUx^Kbhp=*@&_4~?K+L6<7=@*~tvnv9|xWU8L zd*zN(PB|uzb=E55fRS^SvPzsuptoHJ*YieT?SO(@?Jnjq-!+BA)O3S~u*%F>41T0H z@}VHqz5M;JR_zMfkMeg;6z(m;d3Nvz4jPWzZ0VsYl~2$OQrRFfiV)FCD!?fdUVWf>{cky#~J6{uxSh4LZwK zaoC!)^m}OA)@~V)lbI0%<{K7#d{MuTuWf#3Yktg|bnk~g%t;XNoSY0&P)qpt6^Dl* z&DPE`4nOpz#%%0Pb#VbV0(G`5$SaCEjk|rY;VDPxh^NuRKhRjJGw;7kb3=E>&E-6$B<~6!1$)oa6^xa_lO4F^-N7xG z8ub1cYkYzJ{bpF7&8=ejY6A0T=Cmh5-_M_= zFyVrMj&GLFhf@0oMg%4U#@^3&mDjx6F4sBcJJl7YQ!#B~>#nk|>%uvBhFWlqKIoh7 z?0fWhyWhFBc|`zC-SrQ4S}FM#cDm3ab@t1$1vv&aQdEUQjg=b%LYl&nN0foe!R^H< zsgU%y##vrMLNgVkPt7TxlOU%kGLlDB!kTe^e$}`WyZ(Sr-duk0LbLkH99K|!aXO71 z)5+NU*?OuK^o2so)|^V#J7sjp9;8)0J;2H;q!)2o#{30u=^OTgdj2MYTBSD|R;OmI z^^>%}w#037N5<3BN9R`}3F+XAK`jx>X&0E%KvQ_pVhS_GnWM7ZqelYaaoXh+M(?(` zdt4z}Hpiq6Ivg*up>XUbW30HtLy4Z9!OQkz8GLzcFTo;xds-Oj+g5)jn4(_R-N0UR zXio9SX5yEoH0Fiu_Az$s2TrKyt)ShjPv~>sZ-(w)J<_P`_DEtII#WcIJyHE;c|PNz z+JiFe!NDtQI7N4{A7(xmSpa&IzGpM>XG+N$syDG^cjeBVKdlx(?RIa|?C;ch3zO@);D@n%YA%@`E$ziY$ugyu?oZ6uM$e?a zj$degK<5xys3p-D53fK2W>DAVGOOahl2uYZQ^_?IU$=a^koz;hgMD^}krTW7=iJFK zTfwtJ1shzfncL?e;gHdVZ$RJ59G|J1<}ba|@HUhOYI&3)pZYtdVAa30e!<``vcjvY z>hwfP~9n0i`fpIU+Hx4_wd9R@+_;1#VsY6x8EBtQ=id=l&BX8K`zu3 z*{)LdTrG|bew&M?ljW)n-#KZZPl7TrdZ(9rqiI4b_~-`n}hYhG@Tu^Tf>7Wine{) zyY|63C|_`V%?nfYPc$?3FJte4YjrJ=>-!#IQaB^x>zmIpl*wDE#*V|R+#Ew18&O5 zB1QY_7)z)oJggERv!Biwov{?MU3Av0%{~Kp@6q(>`gLo-EvBxd571k|;*zsC|4@6A z3IDC-b0FxGt`uI;)y3VOk3YW65coJSZ9|1fN5Nh!&mqWREJ+{#brYljwThP-A8qsc zm~Z*0#lbYJGl_sL{~EyW3k3)$%Zw>|Dg~RXSlP1pz7u{V`$d(}lh5I*4u!L`_FE)w z*bW+ARZL?#19`=jW^0g0MnEj`V^b-R>NDkqXdr*bmj8m*^rc->Ls0k}8Uz)uZ z9&|C8#59j^1rhVBPBCUc@Odo1c5kzmfnx=Q_pXL?1C}zXW_lU)!7kMOtpd4Zdb|{X zJTbpPYlGv+P{5}`uW8V(5hvk8hurZ~o$?IRXUc;`snEmOisf|e*@_$ed+b@RE6iTX zGztbdsYkqg@wX%tezHc&j#qS#GZQkM9uWgAOZ`?(BlkVmhjE|?zPJN;d?2J|bQFxt zJ!x9M4B1ggCD1Y5s(jw%8b9rniiqtDdoA$BV(i3^PEdi+`xRMxxN}-Me?`6J4tRPIfd=PAuz*X@k7e_0qkib-DJpgtw^#Xd9jx9OdOLcU$*qsmGEaND$N)JOezrAem*@m zwv+U;F!q57Raf$yyu+ZUuMWu%H7k>fo&lkEC`>K0bE*0`&{2oS5u^VvTqzkh61LYJ znZi@ZY{5Lv#y@2~gBL2jP;(|h^cQq>-K|5|UrNL0butH7d<&H&Oq!;N!yK&4yMSz6 z;>l&_`dWxm&qW_$w{h1|>nR|WG4}}1sM%OSPQlE)j&8*A+a0B?us&J){lgJSA4})D z5#Na?>Uq!`a?oeK6fMs)0HOJUBy3ZZu@hw8D-vhVU-%bNQu3qE7hxH#Kp;)(1w6?= ziZgDvOJ6-4@dA>Jh25QapU*h2RB4B9vkutmx?nsE_5KsT*26Wg+Sb6nZRhbW-BJSW zRO}Fqr`PgeU5Bam&fVE~+nc`Yv_yd&9R5BTmtfnK0UKlIo`$Mo2ijhd-s6=^bDFf% zw@~!?p@<3{!k;qMS#IE7ZQn8ur++qPhJ4LJu^SRyVeC#=W-dZ4Hc&yp_ zpA_yN8 zU6YyqescQAswt5>D>AlOrcJn(p%}LFmLL3(); zO#$x0u`F;2>1H;~@1H}GSEe8CN|AafLl2(e8uu5cjEI#C8d;uw*1J)7K4b2knQJzg z*{HET?vdBBvLF~foR`S@V{}mL5%YkWV6ke;R`4$Hpr($ju(NUodTt{=oICosYR5Us zxPeYt7CHom8<<%wi3NwC3%2j7=1S~tY?Ml09Y}iE2aU92s?T7ETisgF1TG~%vM3%j zDOfr4;xCMcxx2Xhp02Zfx^Pl-vG|!pt9wJ{LY&5@pCO++n@#2@_VPHpDpT|IKQ^vW&`8F-t6JkZCP}?_}c{4jjtH5BGL(hxrgyvHXN>PFG6I*5PSuVp421bP>Z` z@Y!A07eA!C)94pg>nT`vy7LC4unsp&u$5O{_P)4?!O4{spwJp)hBed_GLLF176 zxT_N&3*SAX5rlmCgBmABlCjEjc^Ok4JcHgyEU1r@96`yMEvy^pe;!Y7!UMUV*WkCm z73|4GKYf>()sU4$WO1hsQ~asKx9qPul{fq7o%Y}YlXP02s*i?*xPfY6c9o9OF-N+w zLZ@(@oEYm*n#>Qf$SbT|w$77b0L33D?)kHE8>`Wpzblv@&9F_uf1E0NgBT*Wb3jd> zl+W++T+Hc3UUSoR-QOM@?K;a+Q&G!+N|nfZxF?f=KrSBBNKEKNgz0Kp-+ zyF-BB?hYY%a8Gb|NpN=!?hxGFf^6K~ZR76Fw>a;2@45RIY}SL#Om}rvbq|+;xh12L zvd(_~(2oFI4JM+h1nLT;;)HD@I93HX8T$`(p!-3AV#;8;lkP{Q7?rPjB)xK;R8uS; zUKTm88kjP`m!N_kc&WHr=*B!u;`c<-SgCU$ba^$5=*2=_dSbK5#?1eB3G+Z8rk+8X9>iEpD6ix;dWLCFAN-cPd)V z_g;!3^@$W{CFFZHakTiWGsYeaK8Ilq)Vqa;^6t*cwTi>t+xQL>-orEkdcND6=bF6Q zdW0RHr_-J;PzTyR5)?X)O`&4u#-${MAkFD!A1boi$p~PY7itWV*eR=4-<9SburpD& zd%ZtA>0-&Ur*-w(>oDrqmReMKL=6wV2gc0rN^+0xpHa%{; z*7IAgH$6y6D&`6kalKb%QT+ zE$@|Y_8s2NtYCu|2dB}zV7d+S9x@7J9-DCM9?pCl;25wRo(wJ5Mj5CMNiecUFOjhP z(Ns6ngdyRTIy8YXhwT+4RR-SQ;tcSY1O3!lpgew8Lcip=t*$?}z@g)}c2UYk-$Jk% zmbB$>n)o9YA-Kek54T~4W}ps}y7}|u2hy{MeFj{8^>Z=q(<;8MbfYUf4ZS-t82wq^ z%Jz$bcxgrZ5-S)hd=l!unKm4wF}CTo3BYbplHzJbaj0O#hW3S3Z8YqmJV6W?!pE%g zxcP^*t{Ne$o!+;xV}CX9iBC+P>=L>#`(iBga{=Q%=pk4RrT@;0@S?=DDe}oCQoXs* zzGnxPN9%xRP%(8DTAdcR`%e_459=Yklq{xGG=4FNn4%=~9QNXNd7)9kx5_dawwk+t zSC_go;35N;ZK5>Pi~Th%6MOBnNxvdcjntiH^=5&`le?kN;Cf41(H*`0Ji-P7;_dPV z3`OsYI8Hl>TPATDJ!)9@`^(f+oXz5M}#=+Q^fT(hq5Vegu8bJO$((e zY>DJt`sGQKbTsH|G{-kVg9rF2WufFAzd2&m#>iyBU-x(Ja-T}g&L<9`uCFnSy{ExR zUR|3Kyl~a1(}%R5-1OAl)kNL>bEDiGC&{sU$T@|BMJqf$8(!8{czYG8V`iQ)qz7eD zllwJi-gYr_NsIxzQv2zNTPOJ>YLsm@ z%$0c_=W-L)BXgsc{Mtg_>O(6MwAa}7bNZF!56`{FKT)27yUnnw z88xl^t+Q^F%#zi&9YWg&Jjeh2wf(jYC2jy(UC)a>lINhP>0nu9-m|Frjk)~iCGS_o zR&HdagMR^*kO1R+)>qb^$Uh*OF22hMzejtO?6JSV)$S6Xb(UhbOo@t?e$_u(SSV3k zfH5$u@H?wv@hz8J2$+7q@ba0N_9}zlo;QMjOmWod{V~XR)|n=-4k;nI04YEthY%d2}2H`0%tY7q9cLc%vH=9y)mt|76-MMb_GoJ8T-C;oYTVB`7xvmgK#3`@-gs+(v=GccG?Ju9|C||lC z*hH_Jh(s@Tx@jyf8xB&xKhW*&2=l2bSn3)59pUZJE>iPiw0^mRX&l=`9n_%!ZZdSH zgg)jj);vRQoKL+|he79Lw$c(D3Xi7_1wE%Y(&U?~Gj;8T=+(3M@>@X&r ziTV!M0ZD_zuXmvH-*c_+fv>E|IoZrtlJ=%31a)jTJl`yB0T`Q2f%o|H)AQOZzwYDW z+~#?d&y$>!HQm1{AltwV=OMizj~dijbN%umGR>DG_jkEU;qUb7nwf-o!<&}!UGC|p z>+riADVALVZDNs#s}K3fp`Q?7a_IYp{9|WQmOuW$^w$%hFc2Fg8eEMvj`hzuD%r}r z`Jq`ZiE1kSo_x#O$fT9fdP$|lp8Mkw!B<2%roQidTIqX=9CoL1y21-J4y9U;e`=^I za~RK`Qrb&oVm0i3&y%<12;8Gj`E^_CNDZTim~lMIveZ7WTkfF3&n^Y;yVYS5(c-7j zQ`0ua`j`w*fInK5#P*Q3h-8TncUe{FBK4eV5hN}6YQzr-a3(y@KrEF$S{c}a zT^;)6#2$BPlM#}68TwO(@EAjxsf)xKw&@kW>zgKlXzmx1VM};@oo@&&}yAaO0iC<7}Th^Yj5`Kq~NAaN-raR+7tVfF?cU{lv2{sy9vHvgP z#^kto)&G6)T}aTO(>IhLMcsL`N?O*euZg5E#yLZKx0!~&<}$b}1rW@sicX|;xlK2dV)kzEyKf*ExQeXfbQ zC3gvzcT&<0Kg{)0Xq1jyn2hEx-C~|DN^Il)A_=IdTw}K)Zri1mBhZrYL%?p)!x3dJ zDFPmvv3IgSdOqu`lRnvCbiHDj4XGkp4-MhT*40n!U^YTs!IV<2!PR2#c&|1z(f1`# zZ!XmC;l}%&)N`PQrAt8JTL0N(^t??i*ah4w6Q!)cZGu*eSp^_!!;#p5Xef2T5Et}x3S(Eg|9rRx3g^0#q(yym@fjlJl`6~nIy=5Af>xL97d=92F3T#<#u z7q?erL`ljU+R-UEbXa=N;QnE^QvQ-5%Erx}!qFCElqghDo3V#a=(?@M5lBf1Ms6iF zgRJ%;e=J33G`8%K)cOX0L`Egl=sp}Ae$hV1tdRBB92R}h%ArqomQL+7{GoSWWS6dc zo)FYT*-NuCa10Sm`j^LNYI(xBX;^tGssq84VEQvHty_pi^yRR-Nup&3XF44`65ZZY z$ovIes@zBTx|Xl>x`=T`IY?;~5j%!3=nrQZ1F?XFFCpxIO0y2|V@@%9RA;GC z5}3!!3bw8Y!sgh%T^DW+2(PFQUb{DZik`2X z04@dI$dhIkmEtz?<@Jb%Wf3h=*YY3b&CVpwF<4TSz{|@V3B+@VC^1|U1QFK~@3l{Q z$gPU$@!_l%aF6QFDLK-a>g_d#KGSstqfL#EXPtGScz@CnJpQ5B&9P+3<`BN(vPQ_c zYzqak{(R~qh|GKRsZ^)M*?`*|6%ASN$@b~(x+n+;8@C~?vtt_{kKO~VkN+yHwl;rT zJA5L~@vBoL6=kxmq;x)Bdl?KLu~j%w;rB1xeHW!9CUij7iHK&sxge0S3ona>pByM| zSl_jADB9{Oqrb;?TwvCdMGw~ImHr&V0OHC)W~E4=sO=vV*TMAp#1A=hYLRl2{hfXw zpOn=C(m(0)xU9-w?dNsFwuWHc*wr(fjC1VAA&jg2k4s%vak}X6dB&RM>OY-Wj>qH0 z-Y3iD{k?R6CnD-3?edLGGjem-Gd2$)JW$nu3|nFMGovI`gI@^yYmOqGch)7A5hYrL zIq;d^L!LG_>zWQZ+egine)=X_EVeJFvqn@=t|nO+%`)$Z@UP_j<=w}nm{abA?Fm;3o@>O9h=6-r&(4hCZVe#}Rp{c+{gFpNt` zD-uYjhS!Ym;^fnX{zEuFk8AMHB2gV zOMHV}c^(GC%f+YSo}WlJIX;)3NJ=bGWj zfnh3Wa1&=~b4_uzP{3PFv`;{_=cM1PkYO^tB)sQ0j`25kCI}u9ot$*vIW0zy%X_?zv7cfcGMR7 z6P9Bm7y`PUe!S&SVmcO)q`G?H^S)(pd=MM$ZIr{#1j&65ur|T+(e`+h(v?s4^!+Iv zzkBtGl=g7@Vo6^oA@ONYMQAjeOPIE2J5-bb_6p+n#%EUk=t@2g~jMV1(opnLwdyV9%7G0-eOM~`4h=7pXjxkc@f)+_*dYETZQ_q zEU)3{MWIxBF!YHIOGcF?qd@oI^(7-T>>eXYJ@-pC4^tliAW3fTSLtc4b!mGLUcQ;o za;h&AG{5yUj#?A*ZgQYB&!CZOOwcV~d?d?#O|FXBgo_ye4&i1iIl#D1llLV}NhTyC zR1xFkiUtvM$DI`2JQ`yV-rQS$Z#-!}w4Icu-sprv>G30e(zmP`;c&gmC64Gu=0((d zxk$1bFVISq%Lgc$`8td&Qy7^?;u;P4IBlyVH3e?X%0F9Y+#9=xAv#fsc zgO*htrUL)*cADrjKzf^l;{( zztt=()m)WdDB;&9OOVL~Rnh#i+R|=)M5CGs-Vf@<$YudBN04sMjd6xx!=ryeeUL48P0~xy^ShYs7%^%R6S(7V3M?v7pL$yJBTQhZHy1YWzCBdfa0(a zectTrvU(4(G^fpn;=iPSGlhO-=g7~&c zljW$2^~MAqEnC5iHkvWbz(CM9mG+<4bmcdnOnl%`x!=6?Y!1TJT&&0mRy&i$3xYNh zt$TWv#SaOla|jp0sa5Vy8A(^6yB{_%E7(|!twdPVD7xokF7_j{2AQhzt$=$cJT)ij zK|9;Z30!`)=fR9o1Z)C7HJUyyr94t?Z{%H^40g@f`7lu%VOwf%*DQQcT7bdSTiU-9 z*zYZvbk&1j`a&@QXKpX31FaeTicYn+cXaqOPt{2 zWm4|C!-GLNKKs-1HkRI-mbqiy8`-8c*{QzaM0x0hS%lH{EZ%YRgG80=Awfi**wiE6r(E^KSLFofF4K zc`MCf6b%f^zbEX_d*93K4GF<@(NBIJ^?Dc8c<`qL0^+S6c-w^6KHJqAsAxB<9yZ!; z-~@=D^yQ83I-ZYhb{_&4`b7S1i{fC%x_-^C>BBWT9g9x%0xeqb((RL&DVp1vHc_dq z*Bs_vt5lLZWz5ZTw+KADUHxG(Rg4MVtdC5)UpVyyAL<{REJ?=(hgLgw#(r5GMK?`@ zi_McMTF86od;CVmK%=#^YOm!>`ltEugQmDp2;$J3a4q|QGQMxjIah9fb*#c%zEKxx zTWqOZ4%!2}j~dE#Q{|^7pLphEn?EA=p|z&tKT;PzASX!~($h4zR+p(u{+Mi(`>Hg1 z`BDr{l7ZewmQ#{^DafS0}q*q?V^;3POkv<}&>4ew!T! zcAMv0ZO8Ses$y!a@fc70STVzCPQLVG{x~gbtvcg}SkF%Elhm@t9dkcOn*LON4%7(G zvS&g>VS5jo43!eltR#xlh2-{Z%2NL~MnnGvT*cmg@EdgYhsMe#p)Nt}_otHp8kesj z&l6+lNp!?Sg5i}en@Oy61?`?0)kG3c>$-AvQ!wD=O1CWlV|02y9w+rz6!L*-xgL*d zs(^3+4^(j{E?md8Q)f2~9fS~Pz`A35oHSAE0%@qluA*rNPuQFPabc{lQ1JN&-(439 zmh&q>&W9znZc{b_0qAVk=Vdp{a#7@bY3&6I2xMAxf)_DSJ;toWAx}ekFX#}TQsiu3 z?stunbeti_(PG{x0=v77AZA`Yls9$=1M)ot=b9%Q(es{Ug_KU1(En@|N-TCoR*N*2 z8|TEPBeU(#qxE9e=bDg&g?Z%88#*oC>}@IhW^^WnmVxSiZUT|3r1hJ0P!^{HmJBua zVGB6EVRMJG-OrA4SIzBKt!+Jy`tF-nDw3g~rxYEkqW=D7XL_G3p+vMWaIcH8g2!_` zE$&aAdsUJQxS}{i?t+GE{olzhPC7@MiNUsT?96IDgoXmkdUHRFSE2K$jqEp74~sp2 z5@@y)kyN4=|C**U)KxlFTc_ebP`pr{rAj0Da-jO2eWLhSMiqnH##n;Ko13Ge+rp2M z)6oO>SKd3v+x+oNGTdsmGwmRf6FsVyi)3kkY&(1Tva@%E=?|`?)(8v@>_-oBu`LjC zMBk_f5hkfMhiN}Z-_XH$t6w})3I>L%IP?{9irDKVNJINP_4gB9$P5mWYj$_e`rliN z>M-IUP>F6|s*W|A8$1N1F@6qM6hq0b)-1`jy|jCzR&L+Aj5<$GiU?a@D!ii<#B`U) zQ0rmdRwH8dUczGQQ9FYFJ|Aw|gC?101)F)5N4@b@C{9ksRxP<7mf0Oufeb-}E^>Ku zCA!yie7oFZcIqO8c0FkO4?m%hJMVWhPthfSz(U`CQ&(Y->2=eEsjgjBWXed;uxuYj zbK3rR;s64!74g_6Ck_EhQy3esLoG;Dq1@|jf94Ztg zi7Nzy2B1j?1NbjUT9JDk; zFo+XYdlvKhzoPTp`xDA)5W)4BF z9M$slc;q&OZP9*9aJkQhUhH! zNDeAA4F5R9D@2oY-QFy7T*3IyGuMcy|_rq*srR9l>K=E{j@_L3+Q_!Jw z9+&wf77u*#YI~v)V;g>V*zsZk)Wuj3KsJ0&;J%mb04m=wK=DYXS#z9{r~f*Z^M8)B zf3S?@3C<<&uD#_|=BkJDYCETdSi*vtS-m@{y)N}Y%9%#;TzT`NMW=Nm?#uE-dlfOO;|ufV~#vBy*vu4uhXx`kWT z31&-rp&k#sdH$POO@GHrr?#qi(EF-GU7|zu7va)GGF`zXJeFHoL6LVAsTXVuOMM=P zb=(pBgKmBF3g&3WK69WQuE*)PBhpQN#;1jmEm8KFJgG{J!q#=}d8OSGUris^l4Pf_ zHu0RhRwjs=Iuab%Cbxpmj59bgE`KrJ-=ytzt|BbX)92$!xmnWl-c*z24}3LSriJam zpAR#@HJYqw{W`+{cLEkN8T20g#cKsU??v?bQ1SY^e6C!_LJiK1ge=W*Qkv^--4D`n z?Vjgm-Y8%M23tG2{1(^{K$cE){R7^AW_{@wVD=W+O z`gE!Ms%P5;!*$wvdDgniZ)4yD(Rs6E!#wCI3z`Z37spyUa@8a_1Zt`gvbSX**;2<7 zk`{~Dk^LTFs)$chOwN<`SSg5A0687;U6>PnEzPM}o5`uRQMARi9~@#-Sa!F^5Zu|^ zWt6VKiHnn=7^0=hW3F0d_0u1Gmd@~;c#I7v4x%XJHz4`Pb|}K=TKi*q=08tzVM)TcCttNwe7v2VK2>wvn1pXO((kD5Q=Zp!UE=;SVa?x( zMCs8&1};+BYw-U2bR2~cB_djuW2dT$m1xt)rK*lI&W6Xww@ zUrz$=0;BB*0^b2ZFj_by8KO)TKWw{%U`eD#78SPMf^@nVk_)ECz$vrVrNVjod~`(~ z@-=aPUoL8JVgcO|iD&BT3f@c|OeqPu>p5MT@1fBlP4n+nIWO^r#Tx83>cHGqd~QU& z>h;=KoT?tU8WmzaCCuj1J4Y|w0Z9g8N;A~}mCUrGvF-R85&EnpBJ30a8SeMKFB#vG z5b(#&7epEc<*q2DHyP11rI`mBN~w3ou02=O!@DkxZb@9X+B-a;pja#B@o~P78-b!g z>AO^TYEUZ8C+0II!jWUXA-`_hhm&4Xzeyo@^nax>&h9_@*dU}4IurVLU~!iPKW#(F z6$Ku8g{vVlEu8ZMwzm0w3~Jf|Wz}0SKI=mr+jqI1h@v@z@h3rW*v7 zy@jN+y!B$RX|sIiRLN?-QaJv{xgetLFbilMi1HNW9WU-rJDeR|hq|{sKtaNd5LVHU zou*KT5Y~qNFJCQ+iSR%?so5P~S0VRK#c29PQtNfILf&kW*XcZMgn@$=AFNn2A6t8U zKqwlE)LV+C*}px=mHD0gSk#U(sTFyDG0G^ID;p}TYwPO5*XwtylXSJG?ceck%q-}2VK=g@4jPtgwTQVk}GCPSz`!WY<1A`c2nPDOM zxqBPLkG>*U=4-r;ZscXBlGntA>zkWpx+4xR>PriHzkU}QEBs3?4T@QH=-(f$N zFEoB${hpdsLsy2p7>=e9*H@P}=|H>gbGiX zw_pII0hCtY-1nreUQzL#{X%i{a!j48&=Yhh7Y)`T71&{kf`kBM=FERK#!<)X%YZ3& zPb$@U{i1nElaUqT{~US;@#9xb*=Eh{QU9yIgC}(v=d&2O4tqL;_Z&w3HNu;N++&7^ zck${T*UE}8ZYvTy8(z8eiGFlp0$4rCp(97FjId5^0`OD=?2MUFXPeF174={%l9(_{ zt^MB;^TFOi3!~9$gR9o*MUKCXSy||f)lO~fr=5$B#`Y$o%W{)cZ!B#3r%do2_umb3 zkf9Ug|8Q*4=%lW5WaDA&lv?4DNj4i*01E?G< zCG7E16-QE4)k=Fz_IZ9<`OrLX-vmVxL{_+`L2D)k5-z;R7-zIXh3v_Q>D-UHyFXh| z$$LVRjyTyzS8l7u;!1WkZEk%}46%KQDDN`Uud_01)SvgrdH9L`!$;lwLG{sXhll;bt)kq>cjIV6yr->f zz;Ty(;|cDTI-a%OXbg=O=d$xDu~la8^RScy!Z1m}hY7Czyg1v<5bAdjx@W%F>u*f? ztdY4Nw+`BQZ{ zC4KuAON5x14BVP5dLJQ0={TUL-&VuphRQ z*l>%j_;}~q(TC#ANISj+6yCHyVp2=8H%-V7L}q?ImnIb)$S&GO7Ys|s$GlF+19R^; z3obc-3BA5?<2MlDP}swqPU^{PhFe~to-*0rmFtH_8{-my%@GmUn3A)@iK)#`5b+HnA<}b`x*Fxy!^f2 z#37Y5@G;0|%NmUllV8HpaacSJatC)yf#E~1PrA^iR@k@Qa1)zaB|FcD8y+y;@?76{ z#Hb1Ii(F-^P&spQSgFh5vEI+iom#~9+znmdbeC1`vejll+?RY@aTw#z8Ez1S<}sw~ zYr7ofl>|M%=~aW)&kxtG-T15jm_amZOp#97AFbcwIqubCA7^_^e}&IugHJbG=Di#$ z+MAI?S&<*}jjVdPQhc3$zDcC&H2pDG%5~DXb+)hQgU7k*N)CLCOyDrg!Ud=-kn^Xm zBk!IGYXl#11;43f&`10i>shYOr|k+tFqA{~(vF+VmQXPc*RfsFmR~b8#$JZ>V@}2K znDN7FjhRVRjG8`*su3CJed_|p>X~YZy;w2flApO2>-1NB#ie7GmHarlWdyHC(`WIi96<&>(UAGh7EzG)v2 z5O4MTo~L#5et~f6n+m}N$YJMYHeLviCoRk`TY@i8fFQP2bZ6tag%1gldDlaIR%*si zKLGFsvaQEfHr;^DAnNUB-L-T)^0opjBX)apBr(7sQX7X28|<4|>h zII(3H@lVX(1C7*PS#H?x8JhNuSol0MboQzW<-%b>m|2u7XP z+#`Hcm`(3CCi8?EGl(@2?%6w(w?Bob>?x;?A2gU;JEgRq8t6u^_Vz80)J=?}R56*N zpqBHvk6%#mc-%+-bi5QjI_&%#`L84Gl03D4WxUC+0g>2%6ODt>y&;W*NE*?2`71~_ zh94gJ%=Z{m%KE$Qf>H~VsR~$Du~s}dT{{a`EKt06mxEy6aDVckc!aavSgiR}jtjigwhOPQbSv~`=LsK3 zS8XdmY#Ha_j?W8Y-p;jaz1Vtb;}io|`_55b)=|Xn z-&j)p^r5Z{kCPC<2P2S>dE2^c0K~O}y7(DZeg zmji1RD>0!VdM+YwdaiD%92*91{N}E8USW)k9}<>e4ZX0_7$HKe45%9R$aSTS|4KcW zUTL9H@#lM_81*)$t2D3(m4AqFb3NN~grd$nCtpHS5u$>fmytv_VzJ4d?-NB#dGp8HPnPhxeddhsI8ccn9*bWOLC_dpak5}=8rds4vMNj) z*7;DbISH%B&6fQ(5UEpLc*S)qq7h(~s&+Fx)VxICTz7fbQU-ysdxW=pxl!*S-W0bt z8%(9?$ZzxIw@B6aa8Ls4uxiz?a<)bM>bi5PuH!Jm4)K$kZv(#93L4PYTp&7`eePwK zfk0vy*2!2u|4z|!6T_|-QypS2xbgaMj`=WETa@d(2g7bw(`=(4)%x!n#*I@Hz=b8S z?OZ-LJQ2EWW0yZD1b^;-GlFdJz`~o@h^}xeeE_~MI#*32kPHi-dd)|YrAZ) zJy;VC16q!U_l(OZGr=f`-x<-oBLsQH}l(V?$5J(@;m=1w3`y&oHLu@8ueYvt`|H$xg+413@o%z}QJyu7tPc zKTP-tp$hs

    G8iKMZYtl?n8uHiwLQ!W5TV{CV}b#~j<REKg#J&WsM4(Tv0`qr-5Nm`vSO+?K@F6K#N-SM z?%GR@Wd;--n=$n=#yv?Fna$_+snBR(RKv}6EmXSKNa(PKFC-1|8F>P7JUKF!22xU5 zIHraSyJ!!h=%d-xy}q%#yW8-MreU1U+Y(K zFzgj!$ZbW5gC`QeV&+r}_Ij4K4`Qf>KSb1QQs-}Zr-r0YRwWeqYCN#wi7<7@EFT8U z8wFx2e~p8!V6q*J;mT-WhsYl*=Pf7s!C4m*7X)#oOyJWV<$DLO6Kt8|?H<3n!Yfa= z8>;e~78Jq&Aik}_5W-i zk)14s`$s3qrbE|h;WoD`ORKnTYf-gW^2ry3Kqac+JNVbXD~0UbFU*X5(@P0Bb!x<>#Q89|^LEA`Z5K3gii08(8;*3sa+MMc{iRr1f4 z`J_&;LL|RaCQ-|XivR!p_8fTcP5sQOZmDwX#_Kk~pT0^09YA$iChc z+q0U{_0jE^V|FyqS2 zj1LhZ6ywKj!sao|{P$8DWWy=G7KX)Rv2;Z1Mv>NWlAPG$(0Jr&D@QiB2zU8TN8*JbXi;Dj7@lzXS$$mm2jXvC}$aB2J@ zq{fO2vk!WlUr=J`C}`8dBg5cfp=kSQ0q0#+W|BeyT~v%P$S~5C3Phs7FIAG@)#S6e z#FWssv~i`3ihZ(&*AqC%W!`wI-*Q~v4RBnM0NBOvxF4}O1LSu?V7)Qk*bKhwV#QwP zC95Ed@}~FLI*w>3fCRFA`{tOIByuxmIeB?JjcNeA7k8bo0uT^fyJ-$*0J^~f@&*La zZ6jzyz2gD%ts`SyYwZCGLjQQN?v3`OYxk&=TK2kKDQ;sI6FCLI@8@Rzn|UaU+0rf` zk-dj#Jo}4~R7bg?(F$15`nY$~w$S5@&^mnHJJPS*-L9$8|JN^QODw*DT?c-7QM)Qc za}|BDZ?S6#zlQmVoiPsemLRjIrJsU zdg5n7o706A|Ng7fPzW4v_pkF1tv%tP}peFKQPHBEzu zxW8F;PE6EU6#82wG)9LhYf`ZNkr`QST5_*@)~1CIB?3FX?i}L!n*HFf4@w$y2vtd^ z@6d*Ocl_o#Tf?p>>hJngY#0VvM2eqH(Nm2JQyxY6-HdI%leN7g?`l2IP9f*8rZMh_ zyfQS#b{)^kb$%9^%n%ZS^BoWUCTuC}qaGgTGpTlvqt+K&Huyk-VZfhM(L4vm#_FX_ zMZ{nLzf0u79wm7mqiQ_R26I`T|2SdR#%>oQ)2nXQUShqLdOo2yqgyTw+-&^;SNvl< z`&ZA~vI;3f>r?el%R`W#`$`FxNRhDNWre_IlMS~HcHc!fy zNZWNI;BAQmRscYZnC7zTW;ipS!;-FGR(-oDA;z`gk8u{r*$N49)->jYeCmDMf*q@e zq-EViIV$+-`81IEG_cGv%744;=mjYA*d2cLzyF<1GD3jx5MVL;$>=!fXlEv_nMT2t zS+ar(yhGL~!x}rslTqyBKe9~UxKmf?t($B~pzs}OpB;_r=tB?I;gFa$Zc8}WRt_R~A`=R5!0P~hMG9H(AH*v>Y-=Da2 zJVt~{i*aoRliT)_2CbLYjQ&mPcrpPlE7Su4tI2x=Na?Ns4;liz3*K+hdh4ZBFZHrB znXB-=F8Q+pG&Vc@qlKLw0NF=<6CmRL0;}zZZ_|qQ<~^G&)vTE}CIk?!A}alXX&2DL zcdqz)rC7{&$`Oi>|L*{Z`Hw}IS~}xfH(5m+7(Vh-i=>m_l8fmbd+P#K4^wyiCDB;b#=?N*OsD9gXUQ zJhe(=0%Ep;k)L-0YDey4irPVtsU!{@9GW(xt%Q{L3dZN&Q`Zjn^A=alX8Wtrjy zTT$t`%;4$}ea?5>2vk;R|n`-#|WL#Z4a8kD54b&J@uBy z`jM2rf9k(Yi0)TV`0CbhfJ6D`o2-VQ8W}ZF)(`I=on8+Zu0& zbUy9NPtxT{T6-%pUD^(HT<2O=>ngR0uCib^`pKh8tyAD2@Hs4{=0r<|OnZSKj|g!G z2%>s*E&Bzj5D+a#)nO%Trm0r8gS3U~Z@o4U>j-*x?_LfnUd$_B-dsO$VB&{d+k@i5 z&1q%D^o3Kvy5sY8t$h=-q7&%LsV(K>!1`|@sJu709s@gm!T9ynn#s$fqHJ+gE-}e5 ze}22?Y&-8NV>nDTOf(YdQPx>hfmW+5YR>xTr8Qbr|A1$~MUrL@k#?4i=a){dU_!@A zFI92>#Pv-!$u3XR45@Tm=;?xcNqgWEuckh0Y}22c0#(940zF(bcVu(Q^~KR9gKMao z`vl>9h?+3uoBjl4yd?)gG=&q~K`@NRg9fd6YPgA0+u1uQkSdo5 z0>WR5$SZARV;XJZ+Y?|Y6}dyoMyr>j&Byc9)AW=4e>NN&#G~GgkJQ=wTrH7&z>UJc zpl8K^dD1dcVm|yBMSad32$sy09Zs|p-pL8U@*(3Ruh4Kv_%Qk*)u1p%iSQ)VxAmKp zNrJaT{@n0mtx(=fdvU&elK?WSYJM~hndGaSlKW*WiAj!+wbZLhM;!jogT&AitPslK zDxT8qjXBA3!$do?{=D@^3z_H+t(@1RZS|04`#$?ha)*rF5-+GygSriX;+CI#bLe5? zc~rFByo2z(OkHDG^hcfK9B^K?1LdsXub#b6vmd0rn~3uE$57-$d*jKfYHMr9J+VVv z0Ok$iCy-3Ah#$s-IILLN{_VxV$4-4dl^n8!;AUx!-v0O@Zhggx(i8x0Kk7Ls1gUHk z`66y8*GxCu>G~Tpd0I-k3DRpqExrg2*7Lg2w-TUdm{7v1$(V*W_5EEf8G zuE83qm9!f~Vv>NP&vN7xFpOuFO9ksDuwG3HOpLs=oOW9LFfkEw&&4D;+R_u$C=l7s z$HKkNi(Z!iN&ic=E`h9j&zmT&V=h0NRjt(+%T)`G!-^?v?%pz_l;mZk`s4`BG-fr1 zRpFuE#umnTq=78HN2i>+@=3auQv6V}dOjg7P?nYBg>9p+AOnQT_~fNjd6~dhFZ!kY zW1=)!DG%3*s;9rivR{>xF=npj0>WA(FP02yMH@d`xS$^|Ba2%roaK=wt3>_azzAVY zAd#*3W@FV;QVsc$@VNo?CvF^hnIaA@~c2g{5X)*8^Bh>X9C)q9iNLN z`OUMd051aqMB`>C{TVGF?7HZ9~# z+BoSf&-oceXK;MO!B9DR*d<*a90NXi+0{EaqTB(NLhTW)y3{0T@FdXHtU80g)GY8_ zODC#I$t+7KlG|N8SzPNHw0`tWp2vKR)UDhptxG5k^OuaZCT(dfJP#{2zewF4=W1pI zQ5k1k!_iD!f9{J&zk5fmNL)bn&srxEM*{s@DT?(LC~{YfS1Ux_y-y zPg*%u+U%yq=)y2-ThD%CW$RHag4}3>jXy9Wfdan}V>~t8E_SWq<6rK|{&-3X()Bb8 z52k+!>YSZhxO3r5y5y(DFm}2KW8Rs%4Hh)Z{xsQY(>ha`ZS`xuGW4IKeNM+khfWZv z>@~kX0Xz}%8wLZAl6D$kl6-^S=9Zf`zLErXJ?o+6Z;;z8!;R{#DF=85&2`iv!|!qJ z^#x(XtqB-hA!@!0I2D3A?!r3edvHer|0`20^Hvt=rI|%2*W5Z@4lY--q5U;eleM3d z9Eb?-Eh#@E!|$GPtGZ5EnmOXHf|S&Ur~10A+b;ROE--G z=ywgJwD~y?O(4qsw`ko+?FQ*+T?T4Gy$1QmpG$`i2`D+47cnd3yfX9q3bNy30cKm@ z9yZK1w(pofVIlbRw4UH1IP)g@{o;KuZ;5$K$l6tavpn;4^$)`)3i=g&`&qU0XhKp9 zksqxPqLTysIuGku&iN|@YEGn_aZiFz4damJEudZo`AsT z>AZ30x5e2X^|lXhz?##E=YIxMq;djg=K#R$Ts_C;n-LYVG3?rGLai%}+&_T)TbRfw z)~w=y?!Xn8#FBB$I>2(7&WNTyCmb6cx{Dqo@hnFDLnpjh;#mX=)TP9g6k`fH=77u-jxq?C_LCl&h?8(y9flY#+xlKKl{ooBMf3#!lx$V~LZ zB7}pu0W#7&E?ZI(_L%|w&cS1 zSVF#Vneao)9nQ5b0hZ|YLCY*Rem$7LA8R$xO6RWt!@=`?b7;UU_>OLy>pifIk?2F- z#(-4#JRjNt`S71M8o*cpmqgI~|JZu#s3@cEj~5Y@l9uio8Ug8&ZV-@?5{B;Xl+K|$ zq(yRuZloLOl&leC`tp6Y7!ENlNSNaquodUA7dXihS(Dmv^Da>PzDdMka3fOcXiCA@1O zBsCfz{8>9nb;(uM6)CW9A1;It5k7g$q)+lEz~4qRcb|QJz}X?3ZMAazTa3G}K246hrT5aF3p5;RD{v#J0*1X8JM1XYf+aZaszcDog5n{-{+U1K9l7B zQBm`k6KVPuk^ zJ2f2=4JK_z<0?N+Z+J3i1?#(B6ErOsP?ml+Cvu8>QVEyQOV*5K)e^=3x1}+#E*5?m zxfcV%*CpGAUYI~B1TK5T^c;{lgHM(l!sOx(uzCqK7cMx4lPI)UO5mynSS^L=2v2ES z|BkOT$mnZ+c7MKk@^F=qp$tbRL^7mReIY^GLu8yE5lNqa4!(F#oc%qnx^IGrbBwlf zFcM`#G8L`Bk*+d$fb-W{mjzA?gB7_gu6O_?2G&=iELAbFq|ne}XbZRh^5uM;^{H2u z^U3XArD4@liB-qXF@BBRW&6K&*_Y>_O}M}c-nC6_zbf*8+{k0GrDeroxb?#l(xQpuRpARP6mf*Jg-wc8(=F(_<{+zS{ zOC{|3FRIGR*TQLH2QHxZxa0kQ-2JT6^~-+z_@QmcB8bb=%N{pSPTM=!{sYB6MK7Gb zXYfobi;+6f@k0~SrVfd!T^SM2Cb{7NGWD?LxsHug)>qTiou$-k8A6D!T%6$_Ac|+l z7t!&s+xS}>|DQm>qfduhE*`xv~O=*q#;gjT}V^qu0*N%a$EvBjqKfuxNFg(ds% z-bd8zsHz9;>w4}^P0UXaYSYMTGht&x4)0{NV9(w8^czl|kVrc_rl0MV(cOE; zH0QE18fMYglb3NoQ4|<2q6@8F2uGQrmS!8*_<6yZ(X&KdMl-7uXN!d5-D4Pbd(J)5 z!-dY(lMHE?=tDd&9#rG=);}4RWl465t^aSaH|y}bz_TdW@tx^Zhl4P(>kPj=;(I*n zhQ}Ne{Rf9BCEj%)1(fi4$scMz4>28XzA|E(e)sj=e-@Otwp?6ti%|iheKG9*A+fjz z1L7nxQYeV}IqXYtL9_OGZ^C&iwK+HCDY2;Wvk(N!#+v!qST zC0s{kVJa2j6#bz*VQu_ESAQo0QHX39>O>Q7Q^(S)IsJo-^k%NZIqG43=eN*KIaRoq z=i%IJQG1avnRNnny>i4K3T8H-_mCL|`0x6Co#4+(MC-#*CQi{}48+OPZZNW3!P9St z`Q@Q(Vq&UK#OA&Ow?-g)U60T;Q3A{o8$t3kX)Kg>(4oupn|Rj9*HTqkqB}Z;X0pg_ zgn*SsHLY(_eaX#VCT_rNteiP!s}GWvCKb?P-;w$zoOGnLR<&OpV^&_(T@AM*ktJ@yd5*fze@^NWa>9)sH+?CWUg~pd5$*UtiuKOISWM?YbS}mrw>H8mm3cJj9zR6Uc;I(t2R-Zo;uII3vyiwjDo%6 z%+?@In~bEg`pyH9(y0flEuz%!+jmYxyvnf)PEXl}vGMwai>fq-32QMb0Q09{E#)|! zNF~|G2&DEVR_|7-RZ$iDB#m!I;n|@-+J*N*y-fP}XX?acuLf$RR zfAYW2E604_pZ#pI--4_hZ7uRX^Sj9n&~`2Hi*S5VNjKHjv~1SyVWO-sjTo(~uh2Kj ziaW8R$Z5H0^)ZT6rtbF^J;AjzV}rjhlV~?z*Z;!3EYdFH(3<4BY_;sc%+&tnQLXt` zr$6Ej+M+%3i~xOD<5^4dZB=;|IYXv77VOYGln|zlJq72FMXdAMEa{d=-tnteYXV;! zo2I(xYsn_+h!7Pu?CQ;9bi@v5^KYdBF)+Nca6TiJ8!x~q*Azi z04!$0mko7X0}+Xt?H1mmYAjnZLBCj{qhVRwd?W|X4gN1~?J67LTrR{o@&|m_k0qDV^`G?AAIQu898sn_5je6L4-361D%IXo+5jw zX&f+c|F?okTP94?9Z2AxYm2h=#b1p}HYL zW*Y|dAj>m+Tpao#gR-p?KJROu!WCMY@871%T@&97xub>CjPl$lv&8reU4!CvBnBX# z=0tCP&xLGh`S+^J){2W;yS8f@%EI5_Ayt&>$p0+vt^v{L(8k?6Z64q@ZLk>U%4Ebx zp%=!zzinRc>p+`8e5B>6&1S<93@RxX@ovlX(G~5O(HYZb7&^1T2MN6T+323D9RZ)M z789Hj({R8oG6aY@F%&_;!k~&e^E%vy7d7YgO_02s1SMn}bf@x5RapTY<=J;#)-==! zw$X0>)YQW^K%Cdo5eCGmjpIn!R=d&YfR;rJRaD8$*Hk*mO|DoV4HKtMnwHkS--ku5 zGp^JJbD^#g-ePwin5MLZH{BFqKr=7VB*)XQl&P?!nDJlpTCo#QLE4X8+G^%Q6zc0D z9-D6v{4q%ZfZBDL7~xcPAjJUjQu|7@MCxy6f6$}GRk?efPgK{LYjRf`$yOb0A*%+0duH;FR)4Z6our3 z*ds z3Jtkjx=Q3Z4v7dq&iu%OJNL}d*JPkcINgyn3MgD3cPm3z-Rw)?YjX2NSlZ!LVcKu@ z1Jpd)>tYOKLNCa05V37RV`#t+SVyJvL5z&HhPPx_ZP>;BNb)~ zShD{jk4pWz-|Rb-Vc$MYoqG5f+pKLxL1q}SCocTMTgGsy%7LO(BLrF*yYF}O3i_j6 zwESp!S8rjP231F04EUrvvDNPTk+9BbJXG9!w*ePNv)M2jk86-6yEgAc6?a&o_Qqfb-u|Ig|9|-!;_btD}sqaxX(QlTfAaG)CrEfs(%zRus~s z<^1^W8@mY^cV@Oz`Z-O+ys1OawYwdzHCkq#vc>%twlvE&ZMWyy>+_zvdJXHOnn`^Z zQWM!qL{8Zws?x>`$mr`KpuuJ|ALj%8Cb}>fJ&u`j_)B_iNO-})6C}}ALD$lLf%Y+< z^DV~-6`~(uq;cwvX1%HQnF!X^g{(cRjk~rPwzV!jo;3Y zOc=kK-@q656_$?XLDIs)wehJx?U^Jm8#w&-UiJ7LPC-{k4LLIJ-2P=}0gQ!I!M-CDp3CudTnnpSz743id z_9akJriZjg=Dq96-5suVFBUNd**Uk`{cjbVCop|Q2c}pzLJIK*`FuJ8zQ=sTpVGNG z_7h7rUwWUO-aWAuX~W3>y%afT(qn|JKEs$P--ak`%m##~VIx{Qw!PRtz*5WbbnF9fb>|m6WQ;gsiS1j#vTh{bY@8CC|ge?LpgIvn)Gc@vCX$Pqfr!w zZR^c{os8AQ4e|Yney?0_s|ZUAyvqd=#A5qZ1!(8?Y$iI<*ShbHf;^;Rw5fboyJTTERbcocCMz)e;lT&1MiS%8v2YDDnX|^7iD&vBk zA>&M*yA(BdK(eQH*-TQTs$zJ)KmYLulC~6l^*+bGP5O)$cc81hDnnoMl8CV@O)1VM zS6n&oZSsMMUauY2d9vlw!iTcTFVJNTeWDxX2i>xctpeO$k+WO#y09Ud@_>Np0~A`E zn@>lBG+7YY3i{B^=bi|*c70m;+8HYmvF%phBq%8>iNH4;+^1Q~vX)j`*;>!%<=Dfb zn4iu{6yg*$b_2XND}ZENC9vzuaL&4HDvs2*rUM>dBTdu{(TvTvY&!_C>tD!LlXgWh z-?g+1#9dzn9~KKX>=!^}n$P7}N#6d<@7L-79dXMZ0xhd84gq_m9OAotq(4&^=|#$r zZ3T=ZJeXqWe9LvY9aCsnWD>&2CcB+knd|lOrkL{;j`MD)-h306&3jPbd7hmm$VQpp zD&yE3_glY*el^!!{zjE#-q*u-s~T!~l=XVkxQAUF@q)>kPHWXpk%FdDU{WrJ^%pAN{a86Hj$ zb#znDA1W?y`T@z!KB=^Al!GNgy6rO&tR6inN^$o$Uu~~Vcds!6vk${$d-^DH*Jo*3 zYqb;JTi@zVIg_aJ$g!Rqyw4gC7=uEmGDXh%G5 zxpkG;-TCQPe}uh306>I@@KZm4&Wt$`{y@W;B@}I&^iN-%l1cdrJwF$T44!618^w{e zCMuRvSQ(4>{sL_ud*P^NN+JsG^^kPxzbR zk6v2N&v&-{M(*hj*($)}3i*PyEu1OvM<>kkUj%nAiFK_F#ciBY8wi&Tv!>r{P;cRw z?&xu?1ku?l>g#H*)<~@sb&CE3@+2=Dx+ZDk-UOWegWn5Jd+ zBrP~vxVIgYdHdkB{xWz=C)0WFC@m(=UBE%`3R>2)Arf14gj3Jq$>2Pyc?Fg`@&s}) z-1ZOx#s{kRecCDxmtyvcmg%k_qz+6yA3{}F3{VPn&!P^q8ac;xNIPTG#l4A3BIG>5 z^z=voF~RC=ykS~y@yV{=&ioPOE-3x@H6_7*cpo5Tw$b0Hzw||kl2BcSz=2>xBz8L}84?>S0es{{opt+3Gx5i=1(5em;!0$0JIK*#@IFrLBU{ z=eUi;*v5mZ$bkHX|Fb1Bo8boE0gzHy8fa??R@+K8O`LrBNz1Qypo%ZOSJMG}L)SFB zbPM+OUa0&t-YFa6$F5nmt^So}Wr`V=6B5G`@ce(v7)Zkm<@iLQ5DcoYHZ^{yq7qp_ zeVF#97(g`+9;E9LN}o3qMdaAn750kz{O21B&IOx+pQY|xFbx^mC~52znYV&W^JwvE2*06r zFQvj#Nhc&GW{ygdCyk5OQQ~^=q8l>_^T1i1MDZNMlE>C+63J-eCS_GKUz8w=vbye@ zkD{j;$NfuII#V2(Z4uG@SAaRE1XNGVfA?blv%~N5Ef>OX;+|cAa&^5b9OH*rOzO5Y zPN|=)M+}sO9}20{Qyo#gsRlVjV)Sp*dWyZf+QV>Th8&Id(ia;d#sl{h-4P7mF8GBw z`b;x{{!V%Aa*j!LL~ZjbD2vl=dUrY41#f}G*y?mcqM4~WygY%sctkF0iV21WqTk5q zHS7}grhTu6qZPnrIOocYfG27IaBzK{oZF1jm}Y(=&o=}8e+LJQcmr-Qde;n7e} z&PiW|ZGD~jgnR|zzV~yylpSAMlI+$`v8KQxE)={MSt^E*lNvwT){#YfJ;v_q(Ah(gs+WdH9K ziLE(X{}@8#gLttN?{KGMhDigPAL^gty;u5EAhAMpBILf1C=k(@*mXD9)y$ho@ZC%U zPknnP&5`C&qHABT^s5L$fAzZcz*$l>WP)Ou)T^JBXwXULCf6&`o!{$I%=QXxKTVxe%vw{&!h z0ziD8>O+#=zUd%?4b2Uqg!=e)JnOCMb!f#7uKt9S5?jPR;lgaym9YTm>H?(xH-|lG zc;c`~NXl&g^fhjwW`l}&Rd3jtma$XEJPm%!(}6MJmR6t$W%(impvB44<3ulJ^JgWf z9J5Y`$H`yVP@GfhNZ~jE?M3leFlOCcoIq_UPvc(%CuSxFb;QTtn1OX9Y6OP~ z%5EWHbh{rKK-@NrXo75>0?K+UoARf`4w61>CREu_BR~+;;b|?UF+$PCLN9B3v1fV^z1|@0#mNj z@S5jw!)bbA^(p*2Ni8U}vLNcl-as9yTzuDV6(5vO{guF;#IxicJgkIIWMV}_zWKum z=KX4#)sA8gc;(L4^X9^G(~oRM(NQQTy@R(2ny~7!9!}J7okSZgqBSbkMi^re?>bg1#mEca zZz(-S>vI06m~AQ>;pAXxp>HD|xl^A%ZI()Ej`VwwW@t3v>@{(wLYPT@Ec8!Ph8U}t zR>c7tiqi-(ydbsS>{&8G{L%u~{YlLgz|)dL@4eQ9`ShZLrKds%WpIX24(mB??o0l; zNk@YB{VMg7`8>~CsB#@Yt8Se12;wwTgruFsvYmzbON8tuu8-wBSG^r4Cf61Yo&KzR z&!m6I;V_{^_vkf*=Z+b9|E+$Y!t_J)$)SUFCE>+K3ZyuWhIf6^R}ps`T&DGU!PV)Nky3AKR>Xa>s$HT}{>W>JP>5)V&@G9u#*IF&1H3|}v;ex1vde9!1y zNoE+OF1M$CjhyqE0K@e!g5W708cx8KdIo8GyoqnI?woPlkxGII-i$YAjdNkyTd3=x z3MOA)un=2c)AM@P9|;~5Md?3{mbQ=HFE8DNjrzR1`dgeG+XxGFyj*-Q-4y9kCXUo8 zt=&4C%XM(r2R_~fV@r)U2)xl-uBR*cFe&d3(y~}hw8(?~KPoW&R*@$MUeynA;EN5$ zc`vG|u}Ih}moT!U{(l0w040|*Ay-W}2V@y9Bvl(AF@{8k;$two5&r{CKlf#lE$`4# zKN&G3sR}&FOj+>(+6hY3%JY@M^L)r5Oekx~!YR0R_F2sU=?xZDA#6IP)A_&t_IDF(gTTh?FtA zb3=ROm@ZZP%8v@-5{Z4Pz@+&g{56WNNm3IpzURS91*IfO2y4ph#9IN+byFS-?-3j% zJTb!yc)CaBd=EoLQUEzcvi3leB8>*~4q`Hk=TEO%K+ZaS*Iv`CV-9X+>7!^tADsG@ z&yOoKz7`Gy+=PdK03XP8eqd`Ywli^Z`pj^}Qv!$znh|qE(*===wseib zI~?Ym+Qn=Oskrc~`YM=o2l3m<+ONtxR_UUXl`YwjZvGN&lFw{I)vRXyV{D4VoBMqp z_Z{K6V$DPtrJHv}d|+*RShe`Uy4opf#x3Hnn;C%#?`LmlH+dN zJol(BiK?tV&D|t9>>FiE;R_Ej1@dg;KsC{|rovb>RLv{P-J>tx1>Gr&pnX}Uu?N}~ z5!7GGUu*&cI>%JpopDw97Q~;tJNc+)UF)74(K3eQXk$(0ag0f4$z8m4&#vUKFr*%$xOk~o@-S{RfsVkbg zOq^eq?};I91=__u;~9wQm%lxNRL<$fyFNS8r{5HQrjx-VnH&8IRvcjN^&VMG-Oi^` za-%fc6pEqUTI%PjZ#%T)5zPQt(`O0sJdj65BnK{ok51FcXlM%=l6DW)$3^9|`DZCy zUDFGy?UkbwdqM*6h#F{CnW`1WI?4|vf6KT3{S+N;tv~he0U{pIVEyNHzR_U0JdK;2 zr@P5GPJ&Q2u?>HwMYM7}@QfpYx_)ya=3u%I3|p zmt5(`qU{>)57taPHfD2>)bb0giBx8v;{1gtdZ;7{G@TeiXPu@YH`O`JWB*=Wrdgx{ z2)Q+3#|PyhgDDj{8v3&>P8#3+L9W`P z!4iZpCAs?AExR=N>pk*)1vjZ(gU@#YH@+A@WJBwv`P#rmK9r_X^R0iu$1OSwzx0; zpp=o~eOmWNX(JM`@^Gck%4AKOOLtz^ZTgYf#N#lxN|KAO>dgmka z$R`s3fm}nbqzW}!-n=#Eu*$H7?4P6yW$8$CSsa6`v`HV@``+zxTL7?EGccn4sz=>A zNP6t{op1SA&anzXn2u!~75QX||={XH~=8`Pp5J_&- z&4>&&&%>u3`z1ebfl-6Lm<7vgy+3$qOhmW}Rv@aJ1i6M0nc^7gj-;&yBeL5u! zDqg?lTNZUGI>fy#_!r;|+JDdf5Ugw1!TP`0KKh6TDeY17Ql;$|yzbxk-I<=rRuMq8~O z!0Md2EqD}g{rJDz+rGdNd9@=V3m!4*c$e(yOgRY%P)+i6C!l~DEL&6ZyDy>N*uir` zzEacf?uSWw?d@h`Qf$LQyzEH5;OhV%Nh(p1pRG|v18x0u4@;HVY2<2s$6fOQIB!15 zLB{CwZ~O9i>1jAAX~%GGe({tjvJe0luamN zcjsUm5|XEhFv!>@A#>Na^wc>e3ode&a-50nqwN3J}R2Hj!uZ{#(Mm(9jQr^Z4Tp+XFl%=GtaP#Dd zgrylD%k1Xxgej(zrWuv5eFh-2_#-Q0iPGKb=3p#}NM=@*YlMXGS3ksDpY$MLRXZJd zxx?V`cI z`F5lfJ@ssPySgR)eZ)zuFpu=boh^sHMMY_|io{ktI>*{eyvy-AfK0<^WNf35*IS> z3NxB`s57-}C&1v1>PF#~;#uL9`6#(3=s=QwI>8|^SeGXX`XRV33h6nA^H5M&6gGwdGaT`fP*($qZj?zr{#=)%pZo+gBn{3E`P=LjR<_wWAy z%x}#fr9GTRP#PG$1os3Msc(l0OW70(gGE!`Wgn#0{fw$p7Rq8N$XVtS>yl=BhbyGdiQj=r2(W z5W*davay!ewoSp&E6N_G$`ojc{$*8b=<_sKx4^)V);}R(slT(etk8puq5r||x8O{F z2C&Z-yXPb~C8m_7#BE`zs;6cDHO!B0qE}9$*B}u}o9B4``y}R<<*YJ8m%3?!zR{AS zH;o^Fy@enX?FUcSWBtinY~LZ#&=Qdc@Lg2uvv|6CZ(r}D!BG=*;qXt?3rf;EZDEi; z*dI9g?yEZ1r=qk3o252yUbf~vYCRY~4(5;XvfBN0MQ)>#dj*E;U)#yF@3Z0QhSiZ# z=E8?Ma3rB4YzBNC^t=Z;+h+GC`ezymb7;VVTNtI{7r?vV#zA=>u=(lZg+qigR4FB7 zH0#CU6YX)S>VEuQp)ZfNT?4q9^jmEyFPfDjIun(3-q9cs)Q@NlAYR1uI_04I;wTJ- zQvmO5!5|f%kW$6Sj-TDz^e!*1VHhVhSA!t(cG;(XF4Tl2gkfiVixx;o|U6k;cC zgTD!#1`^KE1U@}TR@y+(Ck2~MX_h#57o=rV8a_2Q-VM5}2-(^5|BRVpPc9stkxpq@ zqccqv=rNf;t2`f8hR*klu>&dHz**uvQV)bUpYZB8Qdl-i~`E zxN`9y9Uq3AUCTc8+4XX_#IkF<)`XAhA_S~Hj;{8=y`^Yk`4D0Alf80)?BLahiq)<` zKrZ?&Dcl#5g;o0B^{7|iYoFps!vmlWPPhg56(R5BK*V6_`9@iEvx3`*L)Yl7E( zIwRzSE9%g^D`ogYN4jPX;|0%b^q_f8Tjr?ODp8HO>D+-?IoY%2QfA(2W%vVnC+Y*| z-|{;FfJ^1QgD-Uds^*LA4CTQWUk@HNG%*Ag^BEP*)OhvcjSGP zQWi@Rd~H8c#xX+`ogPPlR_NrmxlBXY3SB$`{Mj>`A{&pG8N7Xf29=yPp51$M;2BZmoE{SR&{ZX?zl2b+1E_ zafp3yU*9TnvuUDO7^bxEx|qw0oyjklb8OBQ>pvyN&)YhGxl$EH^*pW2B4a zi0|l~yX-4#kn0p{E|{_9YC%LHBChT%WPYOc`TdAk=7qXyUS9i4^v*4`0-VJWK_=+7cI*H57Cy;Mcg)`L=!DQYm2>j}K97%fRkMIj zpy%+y4@QC{g5z8qPTOub;1L!8`Zq_zL6`C*W%u*Wi&Rj+^n;3(s(*AIc1^PNb5FGF z-iOsRjwLCu?E51*nc+NDcdXh*N_Uk6uWXiM9*_3grx zBMduvOOwQ_8`pta{wE*AuH}C2wG^6oT=UGv$*8tt&-l~*r%I!#o7@t8r782U`oJu) zCPaE*FfO%^h>qDdbD!Xe7vnB1c;@pU8>jI(o1nzlHHnepHs$PiAoMF)m!9v{U0v*~ zql{z+zHGFF>x^t*2Q8mX+sbQC9?xSFAQ8&$@?}~^O;_yiRhm%`Fb9L{Y~%FSEZ@5e z&25|;+AT)!w-f5T#*J1O1)&jcqUeYTE8*&Hy^Rgmw>t8B-2RYjakDX*V*#qAv2c6i zBUcNZwWpyph2xf^kv|KHw;Pc~z!}>gQ3~Wce+Ltaf)IrC*wetp>=4pq$rZy z4)qoRpzKkE>sutnn*@;Z(eR^VXx81vO@ayP0A!Zp4Cv_pkqYvKVtXRAs~sd^MCvx* z;%nxMVuE}dVSHoLsB=y~VH8k4J=-;JGJz#-$r{c^RiM~%EU^A8| zfGy*Pl|1SrdWssFa;sWqx!~4 zg6>nX3@Tc$+Vg)!s>^%5yP~6U2GqJg2DF|6wXO7OoKV zn61g-=IetaC3Si->e0Pgn{%4Txhtrni=#<=mnYbJx> zTE`h$!BXPd*35bs1$mt>EV&FQt87N){o^vV^`EbYhtSE+k!;<3(j-s)Bd=N&VD zX@Z_&<)DziW<1ABvIQO;FSb;X(R#_Mg;ypTP!AEDdfx?|=DkP`7oO*XB7@zE3u9k& z&FH!&kg^@Njw9#Lzr+YPmn&Z2wS-kDz`&~ zoW?QgZoH0CXnY8DLdJ%z;)k%2Zr%rNsn<%;pN5WQPe@}I`YO-WqwklkB@~OV=`!Oo ztu_wcxKH~K^F1?|7Q~Ofx^1!Wk*hzC0@=*bHvjmMO`0y(uEU82tTdMhUHr{2l;TqP zIL1^8ILMAjjgoz^_tZ?vLhG| zSWF>a3>7^cHvZp$`|(C{K#3edkoxP8%^XC}Bc$y*+`f@hm7L?AAfeqtOTpxesF6)O zrZ<2;80QmlNJRf#od_5oNg4;~P@sb71Rd8TsD~#pR zm;1DkyUzZ+!R|21J%>~{0&}^H&4o7Q9sPjQc}=X2hhHokk8>VHol^!I-J)aCMCuTAG@rHupu20+C80g8vUo?o^&L02FP zHYs`&a7mi$HVh1d1bbBnOgQ?!y1Kqwy&rRz?$@y|udMVc+c%ys4~AXozUuzsGoFzj zGf7ByGs%}~^yvifJ#}Zz0s&OG%TA}X9vPq0LRE{dEptcry zE_j>1>|L7|*WgO%bl}XfNP|`99@It2te`&k5V^8tr(9ml85< z;(OWlaiL{CZgzmp-Y{6X#XeRt3%+D1Nc7#30)wIz_xJ{ zPPv4*(RIS!o^R~F`w9pFu!hW3t*(yFFZG-Yyk(!u(Z=;q5+TGR=UgZ$Tl<~y)NL0U z`{!*q1-sdh?C4JmL4ZnR@5AIb-1q7|@F~Ojs%rdIa9=(49mxylB`~?%{0!rC{QF4y znwA(*);&Eq zxImlaDVj3=WncC=?7Ll}P7a8+cf_^_LtcM^pV^t-HthRR$yxe&-@!l}38agbD7lZ_ zj>}O9pwde07(tLE%_?pt@%2b7qtE}RdR@8tSP=X6haEQ|*;)0^xdjE`cI&C&{+H0z zx{ld!(x?*|MxvW+b?dc4y}RMxnw$o7kizn&2y;=I_ilyRhP0PfW+y=Nj%hhU>iIIH ziIy|DtOPU-c+dcJno(W}@_`-^ zY(Un-)8qhq|5cv-=_$IeH#)83OrqWv)S_PguZOpo{)vKw_+UTD5McmpHd=m%u~{k3 zuvMtA9Xn1|6B{bp?-$M@o3C`QaG{)H0hD!e9SSbz;VCa{Fl#XC)9e#Fe`sc8_*u<( z=uzhV$>7t+mMByitzXTti=DJ z1kN&fH}A80>q`N%pfXu@8fJyZ!PE&~wqH-TtEZ&)Djn*&dL)-;jHJXTF>2IbZkY=wj$2a6rk9$JaZd`p`lg)d!H{KFS!e40le^nB zI6DbE&lX-Y|C+f8E5S&4&pZ8;q+K^kadHUI&LAEx$6xBSQc2sw^>Y{DP2L&4QaI6N89ZhLFF-x_-d&L|)W5eb-YCE@=6Bn~Q!^pbD zEj`pUu-2q@Gb~LsvFP9QNkxCl09c8~brM*(m|%s*0Oj~zSzkKCy1?nGPVM%Vy^Y<* z!DdHq<1O)454~OE`s>Hz)#nQNfVy*g7^e;n zwG3J!LR2HGE%u{R5?OZB#wjxu<%t~%_iLBg!76kT{fbyU<30bAU`F~x?Wr+lEtj*uu;#GJ=L5d z#THV2iy2X+$!0=MRlMN5G=9C87DJQXT`fUAa3pAVe+BJwyhn~o@TnR zODcEpXMKt(m;f}VOCPyBf?oPb^ zo>rMD^xX$jgKF{MG=pQONQb%|`@@~2d4Adyx~K)KCl;y@Mq^^ZT>cXF4MQQ}Anihs zvxIc(47w=$4W5bCRXY(zj~H`X!d!Zfs^KZc+n&mGy4(3ApO;^`b}yJ*;G$3{&TKHk zKX%XEmOLZe))k=>#%(cMv{`_>La4T$tNeA0{tIU8cQE6u^{g0E01|0tUWEZj`F7HP zic2s=@=F9bNz(6v@Za?xlxX@iUH&G}+#Iq+9ZH*xM^+~Q`h?}T+@Bax!BnuK)ral^ zlXb-D-!Q%JHN>$wD0rLvq>jv1b<&GvLhy^SUXp)jX~!bCobENSM@u2US1U-B@|083 z$^T7qHv6t_8R>vtI>;!Ay+ipp0)fgy5JSj^DO;mPJpO?Tu{Zz zYLiNAayqL^wlFr2HmltE0}3@6BYkYr07pLGPKS+WafPRg(`Nl`)%t5UbJ~|hd%~*I zxvo+)b*AX#x(}vzKYb(V9>NTqjeEo^S1ocSyB8aWslW)?R}*|Q3_7OEms@v(v_qkD zG`A}px5kA1>X#Ir{EA(Tm?}&SJM2{of4x+yWWT=4JlEiL{raCy$M+zNE?ABo4nLxU zfXgs2EW*Z?8kDWlcB%fYojEc*7q5h!)x4NqBb#_0Fyvwg?8gb=1pzG0vrEu|-M;*5 zL&9v+Z2#|(OMJ9)jC9DMOeY0Mu$lS^ac-rw0aO;glr?7vNV$kb*W2tDfH*$XTScct zuRlxch*V;kKubY9M@tP_!M$60Vf23NXyI&EBKRoyy8N?=pSOCiv^?rKJ1`%BxCH%Q z{E>{kl^>#&&j=;#M;JH}KU2SrcRIwKAxQeQQ7T|myk94&VrOO^{U;7-?qgTf=Qa)Y zBX#jzoQLvx{_t$*XK$a>UJvA0eM>={32>GX?<|0KHZ*W@(2gw?J!7De{2SrKyFJdO zSZrkl`c7H$T}Bkl?Zphit9+k4F>Tj(e&=%cx?VRLU6!|TG4w&y4Qqb{Tmb}vMu9^X z9+dmUWYEzzCfmg3zeLVl@@^62(t{s5tg5b<8c#7AQ!}6m7og};D#P><4idB76Tj;Cqi)?f(N&G zWLm7hc06?MJ)EUexQSjw*(3zXr^)#v=Z=Ar+d!NhtnUfbOXxDoF|kCoW2^bFX93t9 zOSXukmS9`a!Dc=aXY7`;VZY*|WEI8TIKJ1Vz$D^eqTN9Ocd#Qi2{R)SP=^uoJl@on zJh|4guEX-?UREqOCD=NEhL@BW;5>0jsIrMN->QAkh_D~&a$p&L@M ziwpHn{{>1CS<`FI)W;f&d{DG64-H;#3><*s+#;KHK+FVwH$YoYC*X_ziT}4QKB7@S z#Bv;btJ_6$u`3RSFWnmmCWVDfyh}N_M7WrZHORCs zSh!%KY15u6BCFut{C$TxK9Euy zBvkmP_58#JkqmmK|9rQVvOce!GU^k%bXryjj};Nc^Pj31wjF*rsOT3(GFi{5_}-Z% zB{sKs4OO{FwTXf!RaJ9{&TQs;YsQwwl==X4Ap1k!TkxSqd+K#FaNfRvbmstPyO&qa9&XM3rl4m8T4oI)+>vQ`n*9&lFc?Yq-A$P6}zHggA z8(t4^qBq!dsqiEs286WIKMQZJ)rcAh*CZGVH1-;MmW*_@)dE|p zzC#X!gnk{bj+wL@8(%twvX!@M`0aEEkmZW9 z!^?0~Urc2IeMz0b$7J9l`x7H*Ngm;mV~LveCv;{w);a#$Q=g9`249vs5q3SBt969< z7-8sWp)QGOn`?WSxtca#OnqF^J3ODz@v2e+P@g4>m72Qs@y9pKRE2Jif}W^UI|10q zp-(bI&Bc3%?;n#W`3r0tFM(O)@B0N5oR!W)usFY{`-U_Q43tM} ziU_MxX^89mh!5WyEwgVA)leSCAcnE2+tuZf0PX&rapHo@=Ay0H_x>#Lp4)?gp1N~o z@;|?bxNm+$fV=?)c*agGhiVnTvJTK-AVsD2OBRIyHrVYg2|=$C1}T!rvld`1IW zncSh4R?jy-yJfH|XX%OXS+AOLh>sOJD+zw?G?NnngJS-0C-&gb3hd#R6pg|kYrj=Q zgbHj4ugUsdL$5HLC3(L725Jw_4YABRoOVZ&9Ygex6fP{#e!2!L|75E1u6~k5zlu7P zI{ONTp+t_Rox<&NKNv}Rr|Tx)R9i78KAef&8o#p;-)Cvcvn8+>-G9uOF-M$)*0Dcn zv~pCvr@)0q?&`=$;DPC4V7I~$HWc#ce33O(-6T>?l@U74 ziDUNbu~VUy>o0nym{AtYj3> zzjh{Q=!Zc52ymNvAeCu=-kRce5oQpc8_8>V@E^^aTIA3(J)b5&HqLxr{T6Oe3?u5X z)??hvueCP8RoXoWkU@2%1$(_1m;GS3e5R6S#rX^SES*omWKhumd>MTn34Ds`sTD$8GRif=Fo!6}UogofuQ_B_0$_>iq zVVV`l7t0YwTRVngdNiMgd~&qf_sM77eLA--h_#*?Bji%XI3Nv?;qz7Y{?gxIlm*hk zWRc|RVNQ&1K(#m|jPRdL8o3=vm4z`DUrr`Rv^_-Hs=z4?^R^!&-`2D~Hs6wOR!2!l znCT}K4;XBdCL-q?7ICwhADknsW-vn?@SJ^LEjuT^7*(uG;y9$OHy|0e*7%SuHQG;y zP*uFAO4Un02Zh?PCf}H9`SG^Vm`T`HizS!c9wLXVIF0uTJx>dnE@lDHMetvEp#=f` zFWtauSOw}wg$kSfTA1bYKT2V1^?30A*FU65UEqddO)vI4 z!bCaNnNLx!U@iP}R}^+LaICCBvmTs@i{C>x%m~L$A?c1FZ6}moZae+Ma&;ud(mU>M zlM~}VTbu;lHFo~}9Qk@1%b*422P}Rqw@Iu9^RRBkY{OuT8Fp$AIY zijH#axD|EQ2bC2&(4}Fd`N-j$ORFyx4c^sflj!pyZ`uj@Z}$5)DOer@9s5Jyg$R_~ zZDh53jCp(mK_QrBf&=r#e4e&Qq9CrFbn`GvJ0XkvplssQPfYGTd%(}zgrH9^00=k6 z-MX)k0?!Wi697p1v<6f={{9bY6yrVq{Lq5ogtoWgr$o}mAH^& zvct`+#ulXQOz`%4=>r-uTX>TNjuZ{P z85!XC4)BVlq!$&|2emTF!tx3@>=%PB7_&;pw!svsGdY?$rId-sPRyMN@;+1#TI39q zXyV67TjgKIT(FDL-qRD8^88Aq*j8~}Oy;X<99SlSIdU7^N{v;Vz`^=3m^QtOerbV# zs7HR}9P+uT^q$w**8D^ZL@}psIVPJj*SBzA){Cz!32;5Fl1=$K8>KPz5q)J7#a*d3 zqig9%f79k%X%GA-7nnZF*Ds-3b*~ z9?j}cJV1A+t8T!(hM+~;vOkh&p$Y`Q_AuA5d00}>2f^5EF0|iTwFd#YKGWaj<@j^y zP*x5A`)o79&Wi$K+m>tK{l_S$Deb*$$hOIQ3Oda7g^kIk=#F~gwP44OlURr&$Mcw$ zv`x|b0d`E3H_1;zKK9TfSf_)XbK`mN3W~>Qa%_HeywNc0f9me1dAQ(ZmrcN1g3%`_ z>&LfrlnxNz@hTZqUXE8-(tKZH$F_Y|94mH*{X?d8A!G}3M^N3--^-WuPDf2j~<725;V zU7-t^AbG)S}vZa`KpmPxDP& zLm4lnJ#HloYyM}luJLakLW1QC-Ntq~hxPE)nxMm=83uY-!lE{q@QoNr;sXdOS|AfZ zRj1SgeShc54_^W_S~hVYy1lx(IwXC*mCxc$hbnOW1qhrFfmvR6+W(ROy=&*)LQmb` zA&s_xv&Xix;YiO_m-!7y-y`r}C**4`OM06y{@WO06=3RXrz7)(_>#*0DiyjfBh5CN zlpJG51B$M=+Eg}=leK(%QpcGZ{^Yn3T5AKw{}d~#d)eYhPJ+yc za{Xj>u;WMsO-LR8LL5=Vn$&-m=t}+c&GKz@O4R3(g#2TUyjW73LPml@HRTAIc4$`$ zUnb)DNnxRFn!m=?bUVXh%pnOB#8wmsH$Z3x3`n2 zMTza=fO&$ftMXROWx7@LX4BrvUDHT?0?fBb&+=hCgjebx`Xe!*=116uGC(|g+Erw- zG(*qVTS96e~t;Hz#Oj~EZ(xqQPH_4 z^mG1k|_pNjb zIM6R}Skyq)qa0(8_Xcx0>l?IJe3>z-e|=|C24#jdq~T)obHB_V4A#eah)c|cGFOl! zhCfmcb<(q{C$hPx^;wpGDLnozDR<$m=@o#Z1G)(v<9J4tV*I*}Y0h~eo}sIgF_)xA zimdME;t`Pa&e)amq`6wfq?Bk@QaCPwbPw-B6jMy}M*Wh3??N0yZ$$Bsb{dt8{dTlB z)`RZ8x>KcnCv-lym!`cj*MCMJdNCvtzv;&De$YkV9TO9W^sBF1z- z8E$3k&82Lk z5E@xqxO;J5)PmVy!OUKciLKV%O00)?uV6T^`t<*k)*AprGM=-bOB_!R77Efyo7={0 z3HVziPk-SrV1&+Lz+HH4eihy)RuIHqtiw3K1XyvI*8`KhZuvr(B`HnIvXW0b+JXPh z=K%J7bKduPz7U0=*Y2s$?(YI9suw6$ZT@Nl8QxV@l?z(<_DPmT8diQjVKAEOt&O-6 z&AeA&djG(ri?_iH9)Y&kS9$lo9l3RH5By+1{19;I>A}|sYuurwOSyQnGI<@1A)66= z7KY^lqWL~klKHY1%*);BlX;ZZ(i$TZtUHV0A1~e43WsJVKaUWuBu;HY`pr!{(nXft zDbP&x7vHjTfk1Xa;@C-G<#kDZ8(?61a7lOn}Y3Fez5vTLV7 zx#u6}hY*CEn7)2ASJk^3oP8I80gU;OT;e11FxOVaRx4H9g+}01=tHzJmObyDAUC3TbomE z(1hBVAC9%MlOu`vd@!Cq!bTMScss247)HkVwfRC&lKZ9E(aFyCblk|Rb>-gj&f~;W zn6XVgs|M65v{Z$3J>+0^@+VyJ;-<>E6quQD)^tg`szLDrLUhnjBVRuf0+-(0EeP)l zg2Hx~lBO| awvci#BTF|*x?7NHpc;21%0zM`pR0pI(eEJlCob>^r5>zNKpd)97 zdjjab4aJvjMf)y9n!j8=TU_T8qG%C^dme_$|1EqlZtqIoPEF7YHYJwv$}!b`q9`E8 zm8z1I{pzA-TeANie>P5CemJ~GS%b%Y=j*WaFXK(w7(|hwlpegdH-Q54(w9~j4*U{W z^P^vhI|CEJu|F2Vg#~9bcF@|4B{Nx0*uMMCB!XE%P6M2b7HiXc zSps?HJ|9o{_n*#k*#labdxCQ=ts646YR*DVjM>yf{`or+}1Gm)kw}kmy zUiS(b)Ag>csW^}kA9V_couFLeN4pG=ni;sTFQg!?T3@Lu$`A+8%7!}tnhY`&_X~JS zvR4ae3}tzqV%dPugh-w`N&eN>LLwt8K&vfyb^Tc{-F3+VfocUm8VL$KQz#e+=~DH)J;tADzY+6>|4+$~ICGFsmdw4D zhp0m1?Mk#Jnbarc{jAG;F#$`4C1mx8sxl2~BgNlQvWxk|MpAw-?k;`_e6MY%Gj0)) znj|Jdh$9sd`2#JC*bHH44O{n|W{Z_>OCVG=qNn#?vlfh;P7;aQUefpM!n{B`n9apX z4|j43Ii_;e)P; za<(TnM(_#MT18O7Tzk((SG8wI55C7|qoM8ROh)Sykj_+Aq;YM#)*m{{O}RVjT!;U) zvPVth!+v%&mu!VxAh4vqMbpb>X~t)3`QkR^AfU%qqrLict&TRKa?X89S6M^d*3l6|EMr?<5nuK ze)}-AvqG%QEQl~jUl;zPjj4O?k$1j_vMyq*T_EX+=G?J;vL6}qcx~=Rw72%-rlGKa zX){VZCVReglPXHh%9$721{KzEi1$RCHRWNwuU~rlrBqJW6WN=dm+i=G%`WRAh3@$J zxs{aPEi9y*W66=*k!BC#JE9@wo$RLNNj=)s#@lL<-i|L-Tf+vN3F%oT&bBb!ONA>| zlkDHP*x?7N2NSf!60N(*OXc)_^Y>|xN_3EYKd(0Nx7|c;?ua&TfFWqz;UHRJj51udwy|jP*{I*Gm?>3hqZpd#}q5 zU{8qIENe&$00RS%PT!#+8N;iXC@)w*)9?+15N#oviIM^5heQ#-la)rN(M1q%wuCeWlW(11+ly)0BX5amvEDVY?age#F=G~*_o6*G z_x)^g*AP)jZ|`C$*EyZh2^D))Qu1)_P(MAM&O7)%A?FiZmM@)%Y@D6ggxF3pBi@oj znlY-nwdHXcLkBN_I}8w9Y;-c~5ItV1L)OrBcw7Ew6N&#SWxNM+D70R#X9~V(f0=)M z0|g0K-43w)%Tskj8iKJ`(Sxaj#}pP;fP57`-MvbKdSv7dVG(H;|*IznrTABiiwOZJ+M@3gy|4!6H`Ws0@Vs~GC&)5KHF!-2ofwa&6o zAhMQ^3$9ir!`f*&^1Mzq&Y9~R`>2r|efjm#wTB*_w^sz+RE5gBqjL&AlPAv)vDp>*OD zTv8O}a7HklIptazwksIb@|6jzn5}S7w(t5S$is^slN4S5vL}k_q`c*dpa0L^DaSsB z{Wh6mXB1(U2jgEy<}Z-EedcX#;l_D4T0ew<={0`mg%*qe@j;2ct@uOuBLDKK5QG^J zwYjPUM58EH4*(q1EcveOX@`YtnFo@!0pxqb$J-O|h?$^@oS(qu00opEB;#nY9P81s zxoScPM3n))8R{)CLM8OFCDaGp$24Z5B7z~MypYG6aQFpRh}9?hPu?H>A?1>;k!|Y5 zs$d@27v;Xg#gev9_zgG@`=QMG#I|SrI)`3No5P+@WMRt!A~9zgG?M3&>IzgRt$(r= zg#}%7LfekQj&jf7Ylf!g={>i;Ec5CS--IlXlMR2iP@Vy&$-0c+KU!NmmJz&1Y%WHq z@HZi(y8fysGAXI3*SS6beMTx(WvfpM3JOhiymeC_4!kXXp9_-LlnCMvOc(Q3PxmJp z0Q_yRs5FfYu^hgy<-K-CT4_-FQSEeVJ9SVqC`Wg2o2M?)Nu6MNq{{Dl^Ny`o5bQ5H z_pH`Vqnz!n)#xtL5$#z;m8RTgEp}R!!7o`)SGCqoTC_mI_Oshy{o*ihb?v^KgCP5k z--}N$^B8MmNAY1_dC3BK#0?uC%2R^x<#FK4&8LA$HOn`9Bt0plKP04=GU@$m}amyqze z9(MrAHQg2fN+#d8gz|rlR7gC&{5voHR3}mhY62xl~zQ zE!Aejhj2V!m+Buu(V8}lC$0L2Tj>75WeV)YI%3X2?bc~=R+$R%vz*Y*XE0a}O}sKD zF+w#1>P$FQ?N8NG1o>Ov5owT|ch1gpP|_-olUXcWMdp@iC5rR%f}nl<;U(Kv@itv9 znWGe>e*=ZcO_kYk4(y=P*Vyx=*|PD`uEP+vK*# zYScM*yft(X%VuY*!`9JiPO}NX`dU>6f3xq)<%T($LK=B)|EOloodrEWtOz^b$7P3g z@4F2EL>(>Z2RKseheN>c{_36|KMG3~>Kr6=`_Iv^d<4dw;G+Q0qdfp9hS4nDPaWTz z?8jXL;vRbU(W0maLlAP8edk-ezrepb0VfRgDC29|yEsfktDCioe=kfZhv=b?kSfWe zC~c8SN+xzA9o8TUCTHqM$uLv2q?girhUl1_v*B_p(fXv@6Ab~j<@odl$rh3}J;@It z-cy5&NTz>p5R8J>gaDK$CsW4G@OT3-MQFYi%Na|1gdV4b2s=CHSIi>CsEHVVOo@TB zfTZ;aU$WIa0@KDv$7G35+K^3vj$M)YKE*$;=e@HH=HI_9Y{K$<{3I*H$eTaKz@<9$ z!)aU!F*lDQy6~i$DJeQ|VZ&SRU2``E)`iL_)SD-X3ElWDzKy6M?g)N-DpDLWjYP1_3MBX2L-kM*t)(ffa(AUuH28u zHPBEH_IT^v4;xoG8Nc4d^Z#}lpopE4D72Kv!a-_Jr50*J!#D0#Biu+vg1iQK}V8qS|KMCI5Rh$!n>dLT4e;}QF z8GS%{;Nm`e5mmZCF`q@cc5mkAQh377ejhk7yfOW%SbiHv;S~=4`kXu z`Mt0OF#-6S^YY{LZXmg&P54OidO;G$39;jvFZI5y2F5Ay4%W5;&KxupM3LrOtee*l zgG@6+odYfUJ(L^TB6h&U>?#P)|Aoke0ONn<29MNzK6ldhQIl~+$sw{Bl$8{sG+2J6 z?=W5D`#|5=*Kh+bXMR`wiuj>G*7R`aSa&;vC5kYt5Jmy=VDrehlM>Oq_1212^%K!` zak+Nc_mEC^hsB(Jgw;p~hsNr6aZ07irmXazYI4s;8TLdZ)Ew)s82CTjxx2E{Y-08N zvcR1A9>PFh8F<0dg7&bDgY#cRoh@?CNi6X&Fn<^u=NSCtB^*Hww>B5aZY&~NYa}tqqeJjB| z$;T=ddSU&a*Qh^n9oM<-*6|mTu(gtww>-+ntES$*q?%a`|1S&hTfjCMu71m9){+ZX zw1mbb#wvbCF~_zSCZ6R@kb&izyuhx?dnch!rx9#E4y=xQu4AqCxq5r_bA)5iB?&W( z5u??&&Ff7#He&45l z0r#-kSv9+z)VI>NHmd(Ef;3+5jAl9F5u{7YX3Oy~Qo{>6kO{8nP2_ES8R%vWYWL-> z!WjZ5J7z}adE4TjJL!lteA<4R> zr=oz7LB>+V(r3J#YFMYk7xG*y`&904S zaSW1|XlOmLNgn+Q22l6>@_R}D>u0tW41d;F*{oQyTpSYdy^1Og9wYBnCBgLl;gAM+ zTA?v}HGhL>XLc}+GQ&j-zJkhHkkoD6+xY7-!fY~*E9wu!ZYCqU@8F3;s5InKO4@`A z6sSszUca}{Gy-8+2T$d#>%F)vn$MQS^(&HOV_@|}r^Ci3(;ObDZJ_+4Aoq=qlB?fU zHERerR^sflJf_*0kozSl1txBAl4%R1iiO`4v8E;Nd}9gmhVOzTV+YF~(S=ETM` zY8uyZB;(`mq)X89*PUeB;H_9$QiE6**xbA5ZxzvR=f3$tYqsDW0s2`VfNTD`1WfF- z00*poFTwuL@I*f}S`XFyNBPz+P@j4fpI{+K*9{vxPl7cda{hfgDvh9)p^DKP1;XyT zDF4=qtfA+E(+2Kk*#rV{C=U<+c&+vj2MEx44xDxBtp`1X76BLuoZ$t1DdA&;-zC@Y z|Likzh#$`J34EO;e{x#if6RFJiQTD>(RT<9J!z|@YnMNjQ;CidT!evD!lffV7pL^} zQN<)QqJhfr>vB`aI167Y2g#eSH67)%JgJ?dPxX!ENB!Y{7k=LL*Ja@|wTW}+aODQM zS>D0hkHX88>i^W|0@*n8Iycpyh_~oRX^EO&xHi39Kko}tp5*IR0Xe6J1v8O`orkfk zrF7Isn57SCYtHsL%r`RL{g2t<7?;d$-j7)uAZ-$T809M%4+HXGRb?Bx?_pja)4ssEJ zGYi2HDW>D|WOw`7I}zcXPJhmqGCVWN7o3yrrp9O7&O70&Y?e7&04#4eB*6elN}%zd zLlFZv)qjFIAhJf1fc;52Oq2BBpuqc*LZQH`{?@_gso$3nf@+0^YJXmCkARHJ{-cTk zGlO`L)XHh=o&JjRv^*q6AJ{K&>hK4Un&58kfOr$R{$0~NG*sqQ`rhBDS8$XAFid6$ zpa>x^d^p5g0YB{tp+P~YX6(Tx%i)lTxPMPj*F!n_BPzxdw0KYp9rmFALMT%dEJLi0 zE2Z-&XWbjQNj~Cb&9{9=%vG2p2Kl|qJAz)zNkrHwX7C1Zn2z}}R#19(7Q?6ZjoWdLkEB`Y}`A(BxZoHC9fdhr{;6hksr);!ew zJFhD#^Xm^f%Ex2^+7RV%|87-@^B#24Y$OHDcST~faRItLeD8%L$V5eAoi1;mx4duH zN;F>Q4rd?lxz9YO+J8H_-aQt34H1;kted1oDfAareZhyKwjtlsZr00q+0E{CQhA}q>Qw|wo*YSF4<{N3g?=Jax_`uT}bNSuIDllDn#!QS3asyiQ(T3s z?;EDZG+_d@bFPcK{Uj)nbHl{Ar2Evn$Nrf_bMgs4WqKJ?hcFIpCajUoUzQ8>k{*$m zr(vTY5Nl7FsnQRFd3Og)Ens8-DVQyV3Lr=p3R!=r=G$&Lc%AprGXNF+8tB@|fDD06 z0;ovbAMefzfl=QWNZZR)F7XYm2N2^>1a@TRRzS4P zQ&HeCb2hsLEvU)@%9@9 zcmAQGuB)>%?D>hEZyG8wzm(WAT3VcrYgh+jWy;B4%s_JP!5`lll+~9S4pwN}GiWg|7UbHt3j_44vQ7H*baPAN&4w^F zD8cmiYNv1%pJ^`aqLaKo?t@6^YL3qKyV}nJF%7Eic&j)TYrs2pe$s-rcGd7vAotLf zrq6Eprl0FSjpxDeDG{utF(XxS9AvZOU1K99Rj1n@w9(DQSX-Ht^sZwD@Yo*vHa_CCE;G;K?!8b$6 zBRYo)DOPQ&48xz_fbEHCx~?jjb9v*TxoC~enAN!fXC)>oXV}2?*XBhXEPQNA3ETfNCHoPOo%Bi{3H|!jHB$P?4@N$MU3r4G!s+1OjF*$ zwyN6KUmC~1JPM9z+CudVdFlFdgi810uZHrHSh9|oFtze5Hl^J8e3VP`A{>Z|E0!rJ zOWr(OdP&7gYQOnJsgZq9Ezvm*TWLJ+E3F$``I*aHX>l=2Y141S*+h8SF`cU9{ZLIl z-yBvV!HJGX&dk3Pz)dKmMlkt$q$7-aA4g z!fRIzBh;w7v%?aV>_}VM&CWCW=KT0C+u3BKV zeNy(NIVz@QBpJ=S=i1gY`{lx^sPaC#57VXn!sdj0ZAVn0NW_^}ziTh@X$w>y)WwCg znGbiG-=^Bh>!fnt@#w>N+!@bm?A=&#ejT+)xa2jpYGNw7zuIt1{6^>?CFZDw&aa#$2iuiQZ_7 z*~!^k+@CyL^N1Ps%Xfg{)N}-Y)D)zg&kvOL{kdC3ivNM5sn{Ka@$L#n+rW@bpgpmJ& z17$W%2QTD_M5)w59Dq-0dPk`a``#ZNh8QL-y1<3rwc6xeQtj_js_uaP#&iWQ@g0d~ zZONt0mBiRAL8s(~820-E?mo6YUsG}`Fc;Mv?7P8t4j80`?)Lpj-SggK4=l@hE16Vh z2e>gs1?-`HMeHK7U#7LqKmJwwE=3saa47yaOwUJNs6pIq4+rUkI;PIou94}42dM^+ zG7WT$s=l5HMfXQsP%vHs+h01lPT~X3gF008ala_ywCT{$KOPQ_W$Oe-LL*OZt1AYmjn6;Xe9Er) zS+H|kd4eD!*cWX!su+mIF8-%eYTorZ+}OVLn2k$;aj?T)>3GjA)LKAGdMq{Npai|upa};oqaeA@@ceH$I|>no6^TN9#r|@2 z)e0I6C9hpqmyI}p=sTb+=s5zz_*7nDpV7krud}w;~E8Rql20f1f(==2l z-E|7FoP2^)e708CA?!^^dDob8z~_63nbQi>Z+}+ke4nT=z}KB!XM1dA0BPr>c#P?9Z|!#DzD{y*}XQIIC6C)6P_Ly8ho=|O2ji6>ds?@Oxe5O zzWr@PY*vv0E!xypqCG~Eupadr{MTRYj?S73Qg4m{JSHW1jwJskhBFZH9<9CrO0=Tu z>+AO+gNPYE4+ka3`u|qYa=$BHEcfY+9Q2yrP;)rh#x9b>j>P8gvaFheK!I~5&cy1E z_YC+^GzYOix8oJaXok$WlAoTkZKH1N{4q?k6jk{%Cg|g2c-o_lo|g?ch3MK|+y|AS!QhgJapdiLP zJ?WA9bGweIhi1r?{DIW?9^{E%BTe*f$Xh3U=})Wly0d~H=h z?X^KoCCtKuZ!N$1KOxY292M!*rnE593CZ>LexLB;$Ydl^_bRrVv;=XI*DPmap)p-L zEd?*p6MG4p^$zCEQnr6Em%tw_W7;|7=Z}N8!&8Z&tg&5{QrH2p{BUXE`})Zqqx-?) zt+%B;^U>muOqbYlccvFz`5>mjGwz(2U~?<0@r_f7j{uMf6`4TVPXI96^1j2PO$FlV zOW_%KT`&>=2M%9hcvQk)N$pQN*TDB+-z#vu4?NsnnwM1h1*hJwgVSbetauV1!Lb^Q z1D_)NnWwN!p9$3PaP1swt=|upUfwmUF3LqqKd0+IMdEFY6Xew2*m=kgQj8s? zvfLDRk+{VVhi9?>aHbrO%qS)i-;}wD3GT5=q#F47$#EzL^7}&usfDn73~uqpP*G$4 za_h4-j9iY-PhFV)b~TokWuKkeBtA?m@pL%gueYUiL)f;qt-Fe!Jau`vi3ZaoM?K<0{U|hFG^88%`4&oU{r3WG5OkOonRzaN195^N_r#3<(k%r9pVH( z(RtUjHZ^&&eb~M@tG-TwaWwbc+aY0}d=-JkS!k%eSE8uZg}q35!+Eba7r>=I4+b7} z0&qnayH^wbZFlgzmY<)cqA{4K-p@;ZNO~wh3HuRL;831MHNuz)>Xwm+QIZ&B{+UHn zPVH0GZRL<2Foi|pz4T@7WE+oZDRgk?N4%VN3SXPl91LH7^`lJu_Sq{oNHoKY)92C< zio#njQzh$rW7xURfQZrvpcPMP=HN{Im#SwNR^x!V_^U)j00S&`E+IW z{q6}YNW8wxPUHO?SbT?8s4I z5&+aY^AtB``dhQ_$7AMsUfDWhDGh(6peyk$v2r6KY$os1=X~;8XUADJ5SmD?nAF}= zsc50s$0F?IaWV@$ZM)<6Wg6~!jGCvt=`3l?b=wHSTHrvegcsQVEGBk+14OJ@@A7hi zXA2tsN+6U0nWV2}R}8O+;#njS$HpPtXAOPny?Jb#ocTVu9Nn#`ON8L*q5ym9xMjQ8K(swj1wUMZmI3er|?`gxLOyO&PzfgL>C|h!&{fv8Gq%q%A(vvPWM~Kh0(aU2Ykt4T+ zc&9|uOumP0)UZZDS#jn|X@M)B%(E3Xij*Q4K3q1)B1t^U^g+fW+e)ihkSQ4K8KJ(+ zYjt?QzISbZIh-7()Fpe%_3L8-o)58`BMb9sR* zy#T4z{HG zwh$Z{r#)4Y_-E25*X50Lg~dt@lTKQaKqFLHG6@ADbMeu^j5V+&qAJd-w>=K-$;BXS zDb+~@NGI8xS&O=(`Vu+qZuGG`<;#|gXqDMuRW4Qych)96*!j5-@+@2+R>ott?g^aX zfAe_;1JaJssnWmwaZ2;HHLqYC#~=6En5{SBS{!;X3YjzC>SW(?cB7ZUkRv6~Tn6{j zJ%0J+Q&zmv&2dd&>G58*biLi_ws!4szI6(EE_rqWQ{t>bMKynVE|p6C$AMj!rw~y- ztv+$z(RC=Sqyhw3KhWj2i&pp6=x18|Zn#$CVFb6%^%V;`zFKmgowp06O*0ke4a?{_ zCf(dwo9bil5+$~|?d*=LPk*4cL3iqRAyEAJAc zjQPsBat#)9!f3YR+S`24eC`?45qE6mCF}yw*D41IUwvHa{0<)yybtj=o|9fL4Mbd( zWt{tozD?k0=zfM!$0Z(Q^)F**UFspr1<1+V8!u$YNy)sjyI!uI+xWZf0>V*FZf(EH z#DYwyyR)>_;-cDCiQ|WzL+H4O^l9a%9Ts>3{N!OvWb(5U|01&7_;PYzT`qzy|t4o^^M-hj1u z4|-5pEWZzZZgTD_X^njHq7Z)3+R7$qEA~5=JAPO=SrIl}fDc}JR*Y}W)8Me^b#YhX z^mQ5r^BZpf!HTcmQ>@9f%Lv z<&pqzm!#MB*r}hoG7)wGGR)POg4cs+gz z*chYmi6Mr{h3Vnfa{NH7jT(4yjFGN8j`1T7U#IF6gZl%r9^b*+F}10*Z90ZrO5AON z>MuWQy;2{z_2UNT><^}LN3;CAq{;5;+vxJon)+&WnGg()&6Qn^+7t>la}! zT+UxzgqKBDdVv!`n^ZAbvy493P^k(;KK<67#@x7#2^43x)v`AWJ>&|> zKwJhQpp=ZEW)Y$fVstdElO26aBIqfYINkAhrLYHhK?Jk_XNT=T11wA94)&PO;eVGO0b{rXryloZ2pV^(F zrbmV|5WQQe=}mNULUb|)s%%c>`|rIpXyO?mCyM0S!2^f}l*(14F17_Kgcp> zU2IWgSh#4=W6MOLqv69ByT-+!Q|srz2z9+K=iv%TeR_O#bni=s*PuYId(;|zMawFl2j+{jk;zT5*>Iu;qA527_EdTj14G$ZfYjGL0k{x$i(_;cXk^zj>2(| z^0HF^=YWa0(l)6;Z=UNtQ5TyQ_fa80k8u>CU3Lh*MD+85|5cuKp??8M|0t*WU?Kje zD1FgueEvwXLb7>00eyRPXZ~N4|MU~19Yod;K)(&tze=5-X!CyD2NH4I0((5;*#^(E z26|?3ME{=mOksFt7d>wy{1yCg*Lrbc-a02w7@OMRuids^-nIW=B*+reU64k(mRcBn zfnGAFD74aU>z1GB%dM18m9$lsqh1`zFs59xp$lu1BA^6su>U4eFbT6NXK5?J!0-6> zMrVHjB(UQhz@CGOsiE%3xQE}4Y$k55`@bwe0gQ!I!(Xbn!sT^rO+ATGQD0TYy--6k*EH^y+i*)x9#%xSYk%cAVV#`UJ$KHKkWqs41_)fPRB_MytAtk9wl!wTG zfMSI5S#ui4!2?dX;;MOf#h?`ig{o2@?!m!;sUq~uh)A&hn2=AGb{?O=jj3s|dopg) zw0t;t>lPc?YfxYpfbOtTr75blhq`mcy{*reAF{}iG!>%Fn&&9pc5)wn*AI_HqvDei zpS^;iq!of^>V7|Im9&?3X{_T!lata0UoKllc)wjKnFizS{oTisx=A||8YAo7;M=9S z1ooV^WTu2Wy>Gc>~r_$#?lt%CAavDt*2n~6x4}8 zz6Q7^+9-a~y$gxu%dFb=XFC}b3%*+#EUXei)*a~zaiMdXca3@P=Ha}MCZBZ4xG@*` zueEy2-&ofkoex%vzuUoWG@X1X4p)1-ghIq{(HopNtD>oX)z9z?#&L-mWsJ`A!E2(i z{*tP~v3ccBKPCwNdB+W-W9w;-Vs#0%-1Pp|$x~diVugG@wBtSPK-p)o+Ei*LRvL?F zyVKZkbG`KhvQG~Az=sHxOK{diRlL@@=72<>;n6~Q#GUE=q|b=>b`t>W*)H>({QF&Z zkxMKR^DMIQ8W(eY$yZcg_7e8y2eadoyytDb>9bE4GPN%=jqhz+Ay-`wx@18sEo zO7}Ki-Sftm^aP!1PUwBJUj_4SiLGjv1bfU^cdS-d$@6762Dg#jQEf1gGrR<*A*6ux z07ydROA0+qrkR)j+qnxti+8aiS);!sB)(3t9?DkfAiw|dX`)CL^owAF=_Rf|fODcw zAgu7jL0_V2tq}bqfy(NGKqdQquef7ya_Bh8E+RW!x3J_)h>-~6YeqTnc9gCfo!@l^ zHSxpeT(&?l$->ckPEQ6Gc-&OAY}0e7%)jG2{Q1VrdU(!y-!SzTPA7|Oez_nj zzDkz;mD=Z`k#xVqU&BF~l)>Ir~{V!W$j}bA;a4;B}4O6Bry&ne*Tn{V4Wv@vdK}I_}ytL z6{u_;-Egmbv%}$Daxwwql+9_SV^cQbvPhqW>^|N9myK>+>{i)U=iI0Zc_8)bTM%po z9YYL#ZMftAW9+TMqHN!&Zx9g)K~zAxL%NafE)nULZfS-Vq#U{>hVE`@5a}2?rEBP} zq27C*_x*2wpU1Q3;j?qib=_yI^;>Utld1V}Uw_&&9t{?&{1Rn^S83AQ%6l63AqZaG z{9`)K-DVbg?&zv&Ymho5=`%@wo|ciNluy!A;$YerCI0lPDvBB%7~8QGY&${|^JpfyM156T>;A>Bn1 zK?Z%`($9@hk)bO6GYd~RKT{>D5qC^Zz9t$ElcOD+kOI$9XjIIo=eB;I>9KcpB7c>~ z)9*FFqUr8QC`{9W0s7{kOFr=K%EtMP6_%#}L!e>wYmg!`fQ-@HUJTpEn6hP|9xkg1}%AmQB}jD{#?*)(QYV$o29#x zjPJw~YaPEX7Qo&b{-kNjW9fp5+A~}tIo{V%W^wJHm#o3r`NNq92{v#+HMg-#hCPnK zxK)&JZb)gEuC{#nT1w5G@~?^mRfa00{rWH^)b9bR3DJSIF3+qj_;G314_8v+#98T! z=x!P2%}-5yndwR7CLfS_!#a;ayXP8p>sOi=gyCZAf%!yo&0_-XW8`%GepYG0I91}& zWI=Ei-krfc=W@gNj39H)xAhdQSS4s%;8WD0PQ#O5v0*<~E{H-oVK@Y&)W0_r@7$4x zjJ_+q>N$qVFY3ow-}5Hgq|>&nCmGJ#+=D*huuK)PM%Qt#^ts-Zo^Y5rjnbw$m{dwttfAbr-@EUm-UQhrT^AVDG^1C=b7%IWu=83F05T zm#SiRnLjRQa>9N!tvAF~oq!Gl&kSiK%-po=r^&KBFldURyOLPg(p>7D(;j8^5E|twy-p_-^Q)d4cOk}no;4oGFeZUMAg) zJ)U3@(^>iBa2OxKcJ1p{)s{2u*3=uD*vdpM(HGG0uyTfNnCpSng(^kwNm|Eknk&Fm zb8I!hxnA~W6TWVO<^yw1vy1)84oF4EqnFoY+OibjPDByDELOE|XnPCg3yh@iY`-jb z97o`G$6xXN6KnkEjJf0j6&~RQ*t?HkUkU$rbFI1s3|Y4qxC2XcGDsms@4y_IHM%dR zV*S)CLkps$ow3FPqS7|w8gd1~RPx)_!!`$=WI?14hFY2hzx98ua>8D)B3ykq0qC>L_fG(?&8Rt{KwCmGBGs8$iKq~58$*p*|GoII&7UPken;GG#(jkaXR z^tJ2v9}}LHbDj}$Spf(5+F*bU6E@2%_kr9)=bMkXrF;phU1`QIHOP=-{&av(ulJSC zB_5?KhKsM#Y%KvUqc2T(x17snY(>mYEM4C>M&H@u?xv};rGQF{D>Z|KhN^XrZ&Cpn zHXDMhwuHtVO=MfIs+PYqf3;UC`=cr>Oz~F5^MmdnUGm4z*I;Vw2guAR0=jb1(AXA9 z2H1g*i!weT_;|aW-%;v3jt!e{*1@|7b+qtJ7fykmV_PDEHZg{96nFuk2^k~6b+ZdF zbCu?fRD@Sv0#EAV!a~l5H`?ImkzkQCms@96-6eqm1b1TtU(4ADK|uBo1?77 zd}V^;mN+9)DJ7QI5F~pY!qSR?7yeQ#FBeiH!}jpN4x?6OZV?nq@8r7Si+%PoLp!fx z4ZE}+POXb|2q;@LVx^1eQ33@`tKt&V$*3`jhUjcem2bkQghzF zd{^Wrg9l|E>m8)L<4J!U6D5-__``ibue19!#Ve)c=`vGtTYr`N4dSBXTk+6jb0Qw< zDbv)&R&Z(xOY!Sh=*UUd9%-}j+`}GMD|X5PUNrVc^nK;J~rSgG420m zy7;MXYpJn*Ik3s}neZoN(fomAB}gG3Y2go4K@rTTB=W}9Z?~#_x-mum&#FVbkD5XO z50yR@l^5VYPyl>rYrP9sfEA8!tWV^M1L!t4=|$xcx)j-E1hBaIYQc6_2kM0n$hF-r z065oAKn1)Ivy|c0u4c!Ke8tpp#&iKF7H!o>{#%3|ysKj_(lyTk=bCS>#%46@j%06Y z%Iu^Q%+KR(X?ggD3;aVb*ee-1I1dGzLN=dq|J=7gFD*0p!}&Qm2J11SvSw6gN!5#E zdx(R=0TYYti_FnN%9(Nuxa}E-b_N0z1gR3bC5trW7&4wp2>6Ss^n>*4b6AS0^V9^T)olIQ< zD$^3Wpqs8$uX?*vqWcovr09w4^4NFrBXaj_!g$OC= zMK51_EP$9Ui>%k{)>}Tq2Ttv(HZy~^;|0KpP6mWS*W>Y!3mP~eOj0&_g3s;(x_j4Y z#Pws~jYGOa$by+~FRMa@Bm4m8VIt)5qHt1@?CkZ|WnYzP#K@v8r~br!9W^ z8=oJo@Z>VcK$qbbt(Yo^BT$oVnlQsyITQ;osXjPw-HX0`C09TKQ`~mMGjjD@G@nO? zxGjg;qnY`Ie**j$Z?}X${v! z`^Is^^ao&!gJD4a6n}>A)qL%p8*Gdc4(LY}q@)nw2IVHM(T_o7@UhSdz@sM)0GIt0 z5EvnYmLbToN+;0Fkpq9%dxo%aEp+&cA|`-oR?Yu)%waOL&Bz3w^b5JFDC4>1GzYDP zSqK)|%*S65ekk3nUDEuUK%W(|`5NrsWcRg`KH(*GRjuvmS(%yngv~_aY-EI45~I4< zi+;V9hT+YW?BqxkVG{~UhVSeb4L2I=!xHFR`K-+e$t1pPR6Os696w0by1Hox_<%LCM$YrU#fa`9yb&|%m zU^4HRbg&(~Bre-C6;1aVpM6=TNLJ6`D)FM<&6k-gDFbY$B)HL<*r3p^;g}c7s&xpF zKC&*JK@4YZvr^KOJT@2n{9WLNGmNA8;$^o+`gK3!rf zlGn3?{_Yvgr{`3EGCY>$+5Aqyz-|E%8n+9}jV=JT@FA|p9Z!BY-kV!H@@A!6tAt6m4zu;@TMr0Tsesl;zlfWR@i&YLHX1H$56y3Qp2m5d*e zG@T-kr_s?{zIRubn_9p~uurA8<``?}#kKCuh1n4(|GQzxy1L!WTyoh_ zM`iJQxU|-UYxv(bf_yxT^hp!E8Rx$t+eyGrAvUnhRwWu9U|zrO25SF#NYF zKztFG6r-eOp+|QyY)nM?W}Q>OIi zj-y25(A&MJIOJ{iwcW2ME1ezXJ7YOpV&n#9P~mUi>&o#nO9vWGa@*C@YN^Ftk|9J} z8T`7JefOj)svRF^MSSib=+b4-!*-)Xqou+x>OJg*kS9A>6Ri;8usiz(@4I)HrFnNe8^GXNi@0 zPY(d9vTcjSF&mK`ASIPBMy`!?e*k@CM)1;I0g%c>%gTd;R~M$C7(K+3>S4d*k;(TY zh&&I0G%ZwQZTf+@(ovb5c3lX(ZS{Q{Fz>23P|t*aX+EeKDrsr@-|qlH2Y8J;&cBl` z38a~v(WU+;=dhCAm!M)i9&}oY>M@dDHIq5vEv&w=ryqrV851TdJ)@u=iag_7;~BIS zQHSU=nZKcI3tl?#!g77q(&8zuH7ma;-ty;%-Qd9|O;!&Jr-8Q*(p&O;Tkd0RXj_zo zypbrMUbJ!`jR~kw%W)B~MT*x^Q5fn}InsC435hgkihc%rigH-YIXy#dj;?~n$)?B# z^kF;V>-L6V!F9KiuEd()O|*wW3cNi1x`z^}xoNlVt0di9{9>jiQ6v5DC86O8Rlkd( z{krHxk#$eg`=71Hm*@F5$B>e-u5%WjHR$_coUqMgi>d~Wd1N2rhi>~Q&E$nn;e8LLuP5`O3)%glh;144WIhas!1>kOl>Ocu39!peM7X7;5LpkfgIZ_-A}!K( zqV1@8A67HON==o6cqA?m7#`~5zi(CZ_}X@rFMI(|{sjV%ia>--AOc4wI&S%%3W_72 zE&;c^wg>>~(Vs_@w|jkCCi{Wb4sQK7feU*>}smFe~j(hZEk>Qsm-vZ7ptPUVIHL3bR>5CdfEJz z$YnW_aLh(PO+XE_QHOofBeaHhJx{aApR0V_t-IpQRzX)21QYCx5)!&ipw~2aXxezn z_df1$L}{ZGcr4n0Inifq50-HuUzI!hf=2=5NQb7aB!k>m4l;JIsg#ZFl(`l~2ZYD0j2t zH3y5tW7L`Z8))H58Vthjw7_iClx%QlUi`7>*dF&6Ig zbmb#(kQ^z(yel7-#+#`eC3Iml50#pN-!%fpi|R<>i@-jiLdMH!LC4${9MT0b|1cE+ z_@-DU5t_qmJv}{ubJhkhS%l<(V%=X35hR*+aSTL`o~j3lUaE_l50V1h+Y5v@+;z1R z8G%e5Pe*DwZa*|L+bk>u5U2|1h~EaG5~bNf-co}In*Y? zr0lYp;y=KCJanrS?>d8I4X&)-cpFgrDS7OJOpV3{!jO9YjuD_IYC|!9Lq{Y@Qjewx|6LA$9m!B&RYV9wu5=)ynU($ zvUOr2F+^`o5>x;B4M)g8H(y!KW)7W}Xm^+3NcZ0B~{Q5`+>0EaslB{WHgpTaHD}8yiD@%mPu1 z%2HCmY|ODVi$damNtFG*GtZXt-!QVB7iLu#;> zlBB+4|BjMoC9plEfs0lnOa&UJvtG-v7LMm19qy!2NC5hckDpqcXYV?EL=q6&n>bTS>m{bpA4DzY_QIm!V{3GPJEh z=QRQdw20!Cm&IRY^D*V5e9T_VujJ$vg+F%x7keiM%Lsr*unvMw{NTeGTW@5_M^a>E za51F&+-`Kv1#+@&x9m3)PTe;xhYDT`ER4MKJ-yGbCtFoUcH%WZiOnWo&EkK1pI*f$ zs_q>3Rh^*xIcU2wq~b1}@IW2ag?zwjl(czJVf19{H#rK@3U?^@tYwcr;JXs+0e_^p zxm~I0#s0kYfHmw+b5i~%9w@nVBr`-5OV-h_-b``juZT`RE!8BSR_>J%^E$q9 zJ47ddg0>Hd*EA=eHxc9AH1-wR%fbl?#$yu3HHqWJ(1Aoj>|AG4nuZk5q(P$<94GUV zg7ea1nnU|n^5f|AHM%!n&IbSD6T8wl()SM=iv=4lfvEaOcqX>TsKF;q+*O{VumDZg zh4_IX{4J~RknyQM|Fk=EAOEP9?fTgW2pGL9`&83oUlWMN$p9O`2x8a9w%PzybD{@2 z2)x#G?Iv7_U6~oYkGF!q`zph*!6_Q#1o*K3@6!PEofNIk@} z-td562}rB}<5zWi|HF{vg?D&27|*dYlt4(oKOL2y!w|7ih^5kl^o>IHs3x2yRwGqWr7tWny^ zxgOesD&ybWG__ecXNr^feF_t{aMB9#nHWB^xFnr~w^|Ft_zhrq-Nz)MYAemHPZ?ip z9M-|lMdQ`c*=V%>8CCr*Y}LQB)xN9Tc*Wp{`&tstq82YFT+|(hjX#)_Udq=`aa*0v zNy^lvvGc%LN?c260pL&)n zcUDT4#WzY1o0R7NoLS06LG&?|8m-qUj)3ExThCPphYozqbxMd${?LzVq&``x-68kH zhz2zN$r#Q0jIc!7PDDi0xn6?Q;!5s)t|**Z0O0z;fOst6zveK+SQn1- zv?e-+h&K?}&5Qr%XsnR#GRj}N=Z??_g@z`!in2HKD4x)=>7{VQl#Urw$kypRx8WCU zZt0$zA#^KrmOy8*2YbEM`>N(qfJrzW6O4->wojrZO3DY}6UI zD+DG_sSPzhu8nw)H?glfrgi?i(;v=-Nd$RmZkMDty>0m(wcR*Jo`A&}g)_UrF{&&= z&b|~^I3f;bdY^f;K@j1lY~=A~I2|pvWB-v2yzQ~x{rnuc1mtq>eaF6U`+V9`{Pt+! ztk1mSC<1v52rvN60cuC0?vl60oKOUm)>5#E8LMNB)@iS}Flq~-=8wMbk1i_+!azLc zu$ztOLZFCC69IN$zYyYH--}#wTB@AP`+>}17z(15M;tihvdoev^WyR0&id)`VZ7Pg^y77nrYy=`dVQ(9&L{J=K&cT{h5fHucT*Hi~%y{dkXaQ*KwgAtfSrk11hx zYj@@M?~41{H>M6}N_A>WBZpQ3>~?1{Lj57iCD(ogYiMwo&FIXz;H#j`hsI z8{DjUT;8!gjna-U^QvtY*MmjVXdDT~biA%-Nt(oyq<=BG&1dVjyz${^$eFpk}VW-y7ylm!Gr-E zm-J%CDV??V`+*+5EB-wddXiOYWiT`D#~01~x1$%tJ`;VIa^w1clV~ccnpYaGV*RX-9Gzw z>4Za~Zh2N#ly&B4{RzybLyF}IboLx;jg;{ieKEhK0Pr_fkkzNKZD&<7fzocl^8$^@EG1>)QZ$^qKZ(Ee7B+qkzOLwBdg>ko4%R(UYS#|Wh=Dn zy-?5%@EL8+hRzq8IN!MV>Mh&acN3unK(Lyv3*UER_0^Mm^19}g5rpZn>-t&d#i$+b zK}okCP~Ed0E!gix#^%gNLARrrWKSNBg%5KfB8uE~-A$s%pwqC~rNBw>Hb)j^)3Y$L z{QAM)*G3;?dlfnhe;Oo2ZXMvLwer82Y7-@?M%n0EN=3d!4vr4IO-MAd)!E#6Y4=#o zy|}mh`*eHG++-0FTuwd%8%E+}w)RqlUK1!3Ug9xk=aCipKdF3TXub})cKDDdC$ zw*hQII^IVs)43bdQ(*+)A=jgIgY*Ij)cXl&6$HEhgnR61BVcB$uk>XB&ikr5I=^;Q zz;?6z%*TUBGYLs>zpNHEmMvMzIg41rIBB!*1XE_kOG^j*+)M-06gVR%vAt9zG@mT7 zeHfk*+mN@kZf4k5rN>8SWf?NjNf=WoG3;0S6a}QoFhn<-^}jTb;2bT)sui%j#MhyE z{j$GTN`yqI$t}kmncstw>_aZ491%(po> z3hu?mLnS7WP+c9;%P1UDtaFjd=b#CKOWb}vKbs>W$sMY}BQK{Y^4Y*FFC_{c+kX_z zil#;?6B$l8zO*;tQcP;J4;(cuLs&U_zOq8)$*1w%rN)th@?+Sg!fEn53l=Bo?0{_OM1d+k}}`6g41eVywJ z)J%=E`l~h&!B`E*{`3vTj)LW5oxA(OdAr|7ubR=OEUyIKYqC*aoKoR;eY5f*7Yi*e z1(rA89GJvGLxtP4-AT#dEc(tUcACNXj+PgKjZo3scv1PCOn(vIRTT29|73$u-y@fc zmX5oY|Ej7e5x5m1{c{&6zy4Dcx{gZ|j3ah208CH8MG%of3A6OuwuB*K7!0RQ+!ip6s`q3RJJ7Zct~@Yq#oKvkzaDDH9bm8O1~XIw zDRV1LUBK>bn#yQC<&7TJZl0Uy4wxk)4Q)@i!su{T!GQCiQ8X!xAW+t{o47Jh65lK7$7;l;1r{GtdN3a*|;=sRh zVj}A=fd1#Dzk8;MlO6cndBT-SL8tKdLBZC_A8tm1jb#BUPm!RDoHHJB{a&{E6;R_h zR@GDWiMoH57^F^0YM`OYPLkcDzr2TE?&nr<2|Kz!Y+c@d*#q1g`$TqM;y?3bB7bRR zZ5rXq+UI{W{o7Mjqsrw|aoS$!I zLk_#c6QEX4FX6?z*VIeb(n4s-UbG#^h+>`W`uLA`^QhLH#wsw6%?%a3U;FRmr?rff zwTyf(br+iczhD~(IT`Q=$CaDSCXh3A8&xRhJ1$p1Zjh?}nQ=y9xwLQbl3_XLWuE3l zGxH&XZ$j%E-?5h867rSbsIU?~P@rsaLgMysg~CWy(xkcR^p~$qIZAd7TZCE zhV^1in{{3{a^VG2q@1nl?#A7g0NXD?B^|lCI*?w4WT!9M6;Xkt71e;Y}{3edMOs(Q|@%E zrHq&cB-uBcf0L@~QV}D&qxv0?CCdMK@=}MNcdfg|uJt+*-LXR`>he#=-(=i?V{vj` z&vs~zfSi}SuQ40q<(5O4)Ld}+EjS*b;s4BOdJY(;{x>M$Yh8O)=eQz*SaBlm+y%hT zNhZ52k{w5YOa-q0x$FY9`C8eM5z5v7e;fxMWPTK_@ZIAiP={foArgakSG$6w>K>~2 zfqWE6uS%bT{oOR9yFxej@(nrJa}vigr0%OAI5URDm|9!Tb2m<1n(XPkM%W}{oIVd3 zm;JHLptbr}#X&_u$%)dbdBfL=0v{HnWa}bS8vK~Q_s|;cziu#R-Tr0u4_!v41C`YDM0rsQn28Orx8h0+h*yIv(-ci|rY_bJ=j5BLyswRIgdijXH!E zL*KSz8_rKwBbiaz{Q71bG3XV?BIV}xnrU4xvUz?RIhj7tqsYFHJolAr6d*@;uD2x$ zb~05Lvsm4F9LN`advY4vTcLk7Ewl+X)j14%;S2Wv%DuJ3xy8^yC^nh_X8ExhBKS82 z>n|pLTz#(wuf_aYHg!_t6HMx`jCYgX(44-(#)A#3<4Z#m_lu#AF?<-T%hmq!{%cVE1A1Y18MtuAxpDS#8a!{wS zwoMx)R?w?{X+=5D$z5h;yC2P<^On+hnv~zCBlWEi7dow8Q9OR=Fr2TLtEP79Yx5Wf zS9%R0%+o0;6`-|avLgrA1F;KIW5o4tAuBHpQC@J=-mS_a05eO^ic``z_4It5noz%p z?d9+2CBDQ}U3iUNF+NkZns_-tr{vXTMyLkyA+q|Z!Y}-RutRD7na>_yq`UD~@Zc2& ze~vRH+fc%{XOUA*<4aw1YzNWZia3(B5XO598*o3rk7KpX^NP0Bn#Z9}E|f>igIsrs z!9qu-w*S=trHqDt@;Q^BN2>4*g z2})nQau2G${PkCwSippr`G@%*g)8eU^BPdw7<98?gq8x$!|(&Yo#|fub#g_pJ)=Et zaW0Q0gLd>FMcs3!?S2`QFAh~hvEtwPE?R`g#nNgqrS^f`4oS^xmo&PofvIQTWQ5Bq zIT&=Et%junMR3UkxxoY1_vD3M_f^6o z{oQ=n|OtA*JA z`bzfP6=X&k8aGn5;J~Wh)4L{P=JW2dS=CG2#TI)}q~u3@1Nx3hpFe@$yH~9(JM5A( zd6ZN4H3g+R2Ah?s+tVx`A4B*0pN4@&kgPf1*}SAZ$`#mZA$V(~QSjBcrPpTLNL=yF z2ZeXy?G5M$(T5ZZ#!R@UUqyiKJt-q0>XPlCTWxrJcW!)cVGm)*a2|X6-#sDawK>LN zIVPAE`#|h-WzDe0Bjs!{R1>rFnQt+1Ye2*9i@TfomG}fR-WkmS_Kwg)H#$qGjHCes z$GqW^9usrH7`mx^jkJ(c%tDoB`2s0cNV)D=3|;u>9yY2bw-H~>-)9io%4#w=7KVOI zp@d&dmtfo8K#fmzq{nx>Gsf3yix0H>SXQ-rZ|qLCaxKD4vpDe4|5OX)I9L-3AK5;> z{Sfc@VrnpNa3QLJzdzs+f2U~3L0IEPMmW&?nTXEVfF~=%-G`jon4wJM^Z~p9M*1qv z4QfHTf_v~K%|-DTU!^^#L!t*;;G^IiDVzOg=Ls^VS)3cEQ*AX<5)pS2|AzY(p`YM_ zmD0bl=9x6nVKpxqV@#AoE$d!jDQiP#zGWiD}o%%#Y>_+R+HRa#)QGuuf#XqN=#tQ+W_=gxI*w42uc_Rq(e8Uc!80cON{ z7~u^B;2WA2(Z7JHkxI^_s%Qq}H{-}Xi^Ui{8{{TM^NAF?R!OfTQ@ zjt>-RnTxTD4Gk=+N1%1RGyQ?eLPXELwdr|%|0jDkPKza+by79a2;cALsJwAskGcfu zGn{vdIH>7m6kl?zO^*Bfsqe8C)^FJ(WH+DkpL#`2KMsoN4qE++ke)1BLg`{V`Y}b? zOY8}8`OF!V&i%W{B}-8d^TWC9H7rrt@EJjSxwnP4nsD@vu$je4nJ7i^;OqJJPZ|E| zCWX94IDU5Znd53koJ1+q!X1zxjgN_ZhHgu%)60UnHD2u@=&XO-e|p&VxZD*$S@t$q z?lp4EE9|xiYic_nW1nzttC&O+)IUToNIgKUkjazkUb@dp&Ea-Fw46XH_Q$8H@2X>; z&moAPV_iXLvldSXGz3Bm0*w39>+2ESV|8xT!LY;b{;IvU;bhZhXq>(R&iISA?|rFs ziv-Q=l)YbLi|pkIHFiLnya#6pR9>D%#VrS@OBk8CC;h`auAH~ZF! z@lI<0q^Pfy$4}1~bx#+6m2+=AD>KYE>lMqK&e#&PnjtOy%?uZc--m?PX`aO}j{~mH z16gldHBsM1qDhEpPHvgn{L7%G#^^TI+z7g~SN%dBKjCj?kjmkcmCCGXz8M`;;7fFg zGeyl=RZ$tNVTATiEC41(V{H69!;VO@9j}!rDnDAag;^5%Ou_FH>saRatR*a!!RI$? z&`r?OAZv4b$wOU_BlR~QA#P=_6qYnuS&B#9Ais+!Cdc6%im4gbKZBv^ZDqbIihfxlx{T)BZ znpt+j!x^p)24_DEg(m73G4E|f?cUEN%n|LCi}3fS*yrtW(Rj1*_;B7)zcU+}h%{Cg zS*gaQp;}OAIYm_e?`8kezjg!?BM_4S@s10{4yj`xnkRgTunzbxnI?Z7&1K2ymhPH0 z&wWM!#==*z$}X}>g3RDz%E}R&rM>-H!)iq+N@cnm{+KerN~1d1a2iblsWPE$I1`AW z{~XTRl(G|OaeTEt5p^J_#xS1vWhrhbY9C4WCYUNI=Y7H~csUQhU(UjNJmY-KC~n5X zDPO)KCzoJR^G_7|q)R)lPi@po7f={9pijm(3*?3aN#|=AziAwl`W3y?o;uk^`gMUk z_mOZsXlE~@QP$QMzb-2JXL0?szWaM;qVZwbVuSXv|lek zzJ^JnvNwwU686~mBI#0~tmqy7e$bdsZtXW)vH0g*M zM<9rJ_xDCruJ>_UG6GbD7zg>Tzs=05^x0y{9d22^WEBAD-@6)>Uek0crHF&Jq~^Sv z4diCcc-5R8jqh(ZmIIcc8uaj^B!cEjzcoBkVO!C>A~uv@Gj|RtyMIST*~0zE^;QSf ze^Gm&?`rTlf$F{@i&lRei=qO=nFs?(qPf#VCtfB)n1iG->#Uv$tUhZ6G1-lK++A7=0;2Rar925Crm2+@(A9u(- zIJ7bNW^RT@<^uL`VjLN6zH8W7d_tIwWk&a~MkUZCpd8A1b)I+P0r=DC-A4RSM0l3l zHAG-~KJ!uzooO#Po7C(Vq%+3zJFG=c?4c_*ZW~{|LfJ~&v51a2mN_PLEj|`xS6b9L zKQe7E?vbSbk!QXDsY62>_dk^8I*-U=E~a*1YoAwaG%CrvforMaiJm0qz5BSgwl)GqQf}Gph`&?Xa0-meg z!GFXcKCvCs(|nfv*$B5g-@e}eXWa$#FhE)?PqepW%;)gK_bp9srp^ke+1m%(Q7vhXBermM_KAy2X#f60-l6N46fR%m% znD%tEzug1AkgyaS(>1FJ3P)Wei#iF9tm+syt86GyiNJ()Y;Bybge-l>n<^9kXR$vZ zzb)p!F0Be)iZ?bamd1c##dnoKK3+=ikkM&7F32lK(0|N4v$3j1ztQAx4(eW<-Wu>m zu9K+Hj@YPa2#0={7e`-0qvG@krhG4SJ>zwy-7nRP=9Q!|Xmv0|p(p;fm5AkjzWdi% z@KbrJicFhK`7 z$RfwP(T1G*$szbu(Ke;QjS&0APnV+G#hP=bKqn^3Cig|+o!KvIwnX&L1ZAbp_}SSS zkN>i6WkYiw-w6$_-R#JP-5lzBL`2bBXUdOs3k|Sq&f^b7QjniU%^Z76-#2Kqe`F-W z1pRtHnf#Y!)^q6VQHs^2Z0PZ>Z6=|0ARqiBi{9t+xzCCcEi~0gmMld!!^JEJGSWwR z8->PsWHdz6VR+C^=3$3HeD{1E`tT1r4v?``pRQIO^_tg0h+##!d&;6`vC(-5*bKtA z0`Ei<5qmlneUt@80seI7zx#xvut`3OLA_>bVetLRLSWDrjbNK2W&*QrjEMeDmUm1q zNRml=BM0l{JMc$MAx%yoFN*sDz5A;rAcNAW3CiensQ9u(Sg;?jKhaRTsS%)(=WeQF zo|-s}G4M0k!)-@PZKu_6ZeEiCWr^y~AL@J()n+9o{f-fiAAwR`#`=eEO+001g%|pPCG~~YB%XUzN?tTiR}tf1TiNMxkIdG+5K-{j-H{%$e7!Zk_2KE2I4VDv0MA(& z$9Gt&W~pr|S8u5x9qtGwO?eOsy^vO6h#Pc~lvr9pDzxGM zF>V0qQj(rS_7H1JL|7OCdi&{2aoyn9i{QU0EmLJ{93q8D;Cz^i>k+Z>PB!x6M_^fj zbvhz6>)<~wBtV64i7Hu(d(I-VaJ#1F~>%mWN^GY2kUI z_%kX(ETj!CVz%N{@+;LOJxqhY@yO=5uBH^C6h_AMzdiW~4ttFn{%}^2>&BF-wrhjo zyXl{;yFXr+y;23hZQM&Vr9uQ&Wr|drs#~Y?oMQq0TNk_hZxp=}MM}+U+F|XCL|78K zyxcak0^_bMG7>sJ8ioUKwQjyQb2QY-rV>1tbPKYi?P$HC^WqeZ|JZr4_&xLa_;0%4 zNH=QbZYty_^ISo~w)M~xtCN451UYJsAe;Yb0r=fG?Si9;!T|LJ_Pg%khS#sZ9eEGl z6pbtBH6Pq4ao|t`*ajcwp1|GQ_7rerlb|DgawD9xA@?rY>e&%J*7&WUkh&K2*?m+$ zh>kfEg?p3B3POCSyCn{!=XzFH|)Jf?1%UkuIzi-@Er=zn{K&7{5qLVHJq_hLE(}ZY96P z9nU3yu=4u1K{i|FKlq_=?7w~7IiJ6z|Anl-)UjuuAjYpgp=}OVAYy0?0rJUwy5C7Y zazV&m7OEe)c3~?F!(UBkNXHT-I_j8H`@C=*&VG2(I2$#w0c*3f0&i z!JVysY|8l(sWJEWHFr@D9(0i!Vfw))LufXC_*g@BjJsHeQV`G~}Sa zM&wN-v|^pDH{b5l3)E$d6_SOrLAg7|a0>{g+LhKpqDyF|NCceoM=l9^C+hy&aLUYJ z{o8c85{M`!RVHKP!GUft$!<*ohi9|hAZt*Q>GNHXDUX6_kfz}1__(jNwA8HEa_otY zIJH#m0l;zreZS>P{_uc9+6Ki_aj_lT3VvE8r7NzozRe>B#C_T*zLmm5{{p*@9k?T8ZkkbU!+(Yr z%2+6LG%QY0+cfE^Zsa8u-HX!DS-@mdr29$&ga9X1dCHcT)8KR6!nmT}_zj!t*Kk|C zlf1}gzt8tHyJj@~a=YVG4mlI}1G%h?C%R*2f#k8}s2Ny<1^UYdVmMc2sEv45#6w#~ z&3n%BisDV#IK{2l>qI~BPdF83N(3=b7C6Vcs9rw&`|K;e@%y8*N|5>JgY4};3RBwN z7*(p3#4Y&{N&^VWGIH-vO&NVoy*DmL`CGM+a6ekFEin8iNi;E%j&_N;H4f?gBxhE}( z!uzxRy9@dxizifRzrArxIF)QC$L=;ue%3wqNvC5s*hdRq#NmJU@W;hY$)lO1=MvYY zjmG-RL&v9-P3>`+={&P~Uok#l7}n=+{3y{*xLvDWaY4Ozeo{0qdPwy98=N9fG+Z$eqjxkm2w59PK;x z6;uHoDfJrQ1XwYu!va22XL-F;NM~8@@wp?&lkrph!!6(u4YTaCAv=z>I0IJ$njnms zt=kuyGVEEiRw%yV92%so3oBSgCBA#FkC1Fv^&Z0Lj!XPl#@A;{Pj>Kbo!rPUZa|l9 zi;TqFvzd70jcNZL*UptvRAiQ7tgqJo^Ih9rcrQ3TN2tMbqeW5yn*l3)5eOBS=S6%; zsi*|5=1i4;A#g)sVJbqWfB)~1kZ`2nwI-VP3Q;j~;yAD;@3&?P%QbG|_vwCRYF1<} zb)n1T9+C5mbPgt+Z>SGqD%^4d)8Wqqvs8c5bhd~CGy0hGCH#AHe@Z4Z_{NI){6eK7 zw6r+LxNXjx?H)Iyr`cUQkIvL74RzqT@R?3cYdVI2;aJeB05koZ77IPWmZ|7CKT$&s zQUC>qHUFo^K_dK0UYW8i{c=L#sQDP`XVB*0h%>Z{U*blro$7Eke|KO1kD=cyp(~8k zQof!BVG%sUMm38fe0U80kWl^0d5Vazo`^hqX6qdI%!D`a2?>BaJR^*Y)G}H&WUS0)#mC z0xU+`$l5lL!QBsxB4{nuP|~z6pp}Js_HtPPf*^!Sv>CWksUCs8K=yAo5W^P|76#0Q zNYs!14`W{y5LMfSi=?#D4bn)5}v=T(he~=~0WZ{j` zo!Q6DaC%$~rfQWTy6&=!?U*Nx%a0R>Ar&p!h|OlT^w>E^PS`SAv7%ly&z9w2+0t9~_69n{dK{#@L~oO8Eoc5vR8x&PVn~ zzj{j!C$-@u>)7^t0~S2&DFe-W(roOfsb``6&)a0$Z!-~UXsxI`zf~3K zMp7It61?}{^BKN*OvhV8z2=d zY35VlIcmi{Z*sFxpr@rGBY)E!Qz+b@@F&HahkCoKxrBym>=7U=)3MA6$xY4&|CGm+ zc~<9vQTiI{ch!`zTlx>HQug7&k-IC&|L8@Tw`(!{oUMe{>e8#@N2um6M+$ZV%l9LYwm3GpPeeMh(g`|=0A^gE|KkGoUj{sP z|GB7vd@sQHq40$-?=#GtX=Y)ubOBTFDV?J0+`_+o`_zH`*n#G@0z>$4D~o<)b#o)c zh9AU7y2hPUe8e8WtWk%C?F~pL-%1Lw;yb}kpr-V?5_6rxi;T9UXGdPeR_pRvx6#hQgK9HVKLk!z{y>hKjFjE4CWx|6$|u*8 zo~!0NQ;Xxa%>5dU= zM%oD&{t_YJnPeA`WQ#n-l2aVpmH2VJttf&zU`mN~0a<`g!Iv!a%N*ZjUcDqIkwzSh=`0_i2&S}+Q9oZ z%?=pJCT3>|U~0ZRSmDZl?G6+diTw?3Ymd8p2VLmwxqw46qUK^;gmTCW@ZghpKODgd zXO-vfVA8%cIEojI2oG4AB-?A_UsF@R-Rz^A-~rj96kAodMG0wDcI#txP>hWS4(HMd z(mq#6oyh~y!mB`M_Z`76Y-_c>3tbJe;e*d`U^_F13URCmdZBJdHiFYCmZ+wZ&ahtQ zOtDO#u-&;KMS)7Vu_*m4wn$UEQ{=|hUS5nA-ztoX10+weUve4!F5!#6Y|9+$(CMf$ ze1D&EU~wfAkx30oHRb>4V~j?#^*zTz&;>5UD!qcbBfw(No?TayA?bgG5L0w?l+Q=F zCmU4oHlp?O_T_E7o13Ok%}5~G^x{oi1dAg_d-(_eM*YEh5JLSp>FbA z9>)CY-m1#9<$*L6HcxhmGm}RDqNb5Qw*^uyNpPL1?^gwU$0JLMj6}Lm+~@a$Z9%Zb z#~aGv{fXUuVK_K=|FF0`A7;x+hsG65$mraE6Wj{t-rvCX=I7-8519l!-ASm*xicEuVh;eUX`Y8VEKY!nCD^vJCjyeq63XO6T}$6a zbb`zbQJo-^{IxwKqR78b*@@8HK9oxw;>~sUp+J7xPa|H6rGYN$ z5E}Cjd6B7JU~vKx&)je@@Tm{;r;HYQcbH&IF_Py5yo1C7x^Z&`i&)La{$B|mLPT>^ zCdi~SABtGFbLT`nLEAqXwnx7rgRzYg4Id@7I8zAN9$sZ@!--^8d1nl-5N9_^p zq2KdNHYE0+H`2c}F{w|NejZ;?7LL-s81#{)FZZyL=c+Kc6J$!sFGpxx1SKzs z*{`;^6M66(S~%tlI=xmF0P_YoMs~xnBv_^T6d>6>;LfHlY_5zINjAaXYdIV!E6@~60@YC0-wR$jii@=;n`2LFZWPcJRn zuPv$}>@8=X?tvcHCnmPA^&aM)`Eah)cB@4#{jGC>BMFlAe2IaO@Y=* z<0|E?-%*~zo);D`HDhItWY#Pn&>gfWp$mJ}j2!`cpZ6s0qS2#v ze16WBASPxe2zAnXwN)2)jmMaEe@K2dYHkW`($s{7qX?V4%>`0h78X$$d@bnV}^{RZgoag zJDO^LH3&Wk)!x0jt@tpfx&?{HHW5U<{ct9J&@D!}-okv(=t*?`!+YW`;y3<1$7JXe zzYjOX3*){2%frjOX$tvKcl)vfpYVl(7l5$j5X*k{zVU7|%j1PZJi7%8GQ0%;V^Gd}2~!5kVa&<%k@r(MR5$)LMMdn|EJR&7y;#@?g1did(h z4i=7o`t}k(iSUu7hhb5B1nZ^lfa#(CkkTseJeE0UY&IJN#W|1vwWdB0WxurZ(K=2i zuHF$jNi)6fGi6;*djJ_KxsnreL{$sjC0bIUPUAA|_^OEONg(gl6ZH9SU*M0~igZT; z1(64qMXtxnF)W+2;R9l>`&Rz^UI%HggP}d?DITk-TYs^sPDT)j4AOmOpxgg4L-fX7Z$T7qM z2F<(v)wgaf~5+*UASOZcskIgY{!?rMsVY(nNv$ zf+*Zx!*a)9&GHCvY;CvtkN;j;cMyVLykMop2sBS>24@-9YXJX;U6rNTz$tXe4hzI9ysSzofS+k~Bt5Efrs4 zem@x=I^t87Bh4Pacy5IB4;&pGI^LJ1OM0fu$}~xkUQD^pNm2?eSnpVubvO#iB3juT zA{!T+3r&Sc5NqAh_rjFiYuF@86KeZfqo&;XzTai zXVhKRN7v_XNd#jfITHzz_1;`i-w$n7))$F_Yd;XHwMg1X7a@Bz!Mvn@=NbBS1d-{V z;yIJ`iMr|oq|`F#NjG$~7>?8{AS^od1m;%Q`0l*Q((Ujfngl;vE0kPVqbjfY`};M_ zQu@a%3FEN&bS3UdEHLC}2u4ENN@gf8^V;U)4T3l$2{=a$Ki*Q0cOhHzlvf!jMfAdV ze^&TAd8SjFMHGL(={9eM(#@rnb5|FFtp4n`w~oGtE!2_DQgeEa$q%g>w>~hx%!gYq zQyNcgS_8-r9QTu2LM)+U4kZeMo+IrWK~2xAzw_43Cl$cJf=z{Euhd zui)l%yoHrZR6Dn;tE>6%_jBx~<@oe^L-88`OLEGi^>V{oU?ACN%e2CPqB*#K-Y*aJ zh2**#yVh{?08egre^9V>Ijykv?FW%*rZ4iMlUZ9>@ad+aujCy;6bmh<$f|r9m8)pI zkLCsbPwV~dzoKekY44cNO`o<;gW+g&wxSH3&X|K+O2_FJ4B<~vy2A&XD>MJGdhuQS z3_tkd$}Cs)T5|49iB!qV(IB&Y8)mvtA-n8)US#t8&4gl@t-WG4k6sjSI|)TQV8yzVA6|GWMwzw>|2iUGHT&i za;Qurz5PBPD%`K7vqqtimY`^uRtnDJ(T=}oI4p>271#D&Dq4FVD;RHW@xa%o)zNRv zbaI7me_X4L#*JV+!5gR2V@at-namaFKNEY>N~qu+sj^kQW+LT(-j&ev=iyV5QO?lD zll+ycY(MWxTSF>#B#N8#Hy@YlB?;54WN6CjWxjpmyLG_!M+EDIv|Ow~#RlI}rQfvd zv3|80f?O|{Aix3BkmaY-VcOl7&~`~j=CbbF0MMndFU>k&QMdjJOCZuN(P}1uWs748 z?q`~*xObY(tACgfMZl~XReaMfWrd`3@*TGYr0C#MJ7}toZ}cOxW&J|6i58n$_*pH3 zlSjnL)B{;@f1g~N$lK5M@u2IGsVkDO-*t@iKmscBoHL*F;XV&4L=h}|*qp(eE9rB` z?G3lvcOYOc7DbC0ln`9@PgYj(FzmmGzMABMiktttW8m+G!a;n@GsG-0 zsWXhIE)kv{4+-H_>5ac~t(8{S4~x7xChjQ8>Br3wtp{dp+9KknV53zZEr z>pkx5Sv2Y};LZS3YtEtb-=ZH4fP12H9Q?3eQa#qS6(s^Lce6$%f!9UAOt3#E1rFiVK# zLMCl+Y0o!=_He8yy#p_|L#{?P3X6B_{2oyMiJ&voGHjx{Y}Ns)By(m{4|!J5Ow-F; z(BmJgTrV_2);B^HlM(qVQm*m+P{XvdkC$1uZ*b4>Cj63boqajZ+iSNCwV%8>IaWNr zgDj%K@eDL_v1j}n3N?hE&t4b&bt01@axi=O9rn z$_mOCkweU@PwnrF7DPy()4AYS)rGpxO*Rw5_mxz$M10&1n00x*E(#3PC}}e~)Fx+W{}6`iPYKThG_Yh7?O;4a6k+2+uXX^^oK9eEYW z@~~$WCQRzUsyWZwjc%?{CehBV!m081FM%1B29_JCY+UuaDoD-x)xxhSMor+}ZcA@v zZ=!;3HV1ppySf@f8mBxfPNgy)EDu}_^=#Dpzo|!B*-nkA&f_6g_i1kEMD(sZNfAu` zHrv^gtM&TZJTAQW4c&|Gdi&NGtdKH3>($hq)kiBcEINOiqz+EdV2@97ade@umN78H zub*u#Tv@}B%ZtXm%%!$rSy=Se2v#mtN7Ak7Hjfg%=5RDNF*!H!zBb|C&-4eft2|x- zLJVwP>*Zj;AxjEO9R;ij9e_&4I&xo1%}0|z2zc&i1vR<7LnQNlJcsisE^lkvzW~BB zdI7`*4i46qTmh7+?s>mdvrZBKG7;bl1`HTJlz?8HkkcIGY{wYq>iZf*Q7r{(%8Z-Z zCQ?5!ONaW!BbjH_h5G!ef6{+PsW*IUDD-Erehh^*=u+}|4YhFxMBcnN zmQ8VPb6|+%KllE|a1tD;Pq7tJwdpMR{@>;0%gqq3cXGbq7K+9w;elr4pA;pm;wVnF z-6qAszuWJ2MV1Mu5$VjNiC=9XlDlY3q>M93Ic(B+r-hAZbhX zR~I&1Y2?|~fUsa_sHVq}Jivvj8A(nRk;h-Aw)yCf9TSFnBH{7U<oy^G7*s7hcxwR~<4btlVpBBI%qshjs%GT^m|MX{#wYkb$iIlvp zoC%xVVhH3mFp`<_uUu5)EI-R3L!a~q33qUZV}4A*!9+&_l&P-s8(~I2mz|-<{8oNV zeV_O&sI-#6F`a=s!=|+D)8XZg+~Nx_bonJqU>7NTz380m$HR5x2hfGd*1!(6l^2_8 z9wxbKjbVv)B^9?v*MI{0v<6W(g0L&oh?P60k<8y)05}yG136r__XFXVESB{vPWh{_ zaI_N5MjWBz3Iw)>b$BvhH&$(eFwK_hM8V`)xAXnrK)?q7dN`hSID_k0%wn!=)QtUg z!u~HYtj?j|%yvM=Dc%*VXafY$Ui^So&#vPY3S39et0q<{F*r+L%^@*;XWB;dFE=(* zS(_scS%WTko#gQhj72jrOY~pL2aFvnh_tJOFK}H`9#zi;^>jleGsYySzTt0!I`qTtsr(vCHwkh#TFkt;WApUwKuu8eN3?*c*RQD_?lus`=OcQR~ zPeb^u_eIi2SW(ioij})C_P?QRIcemW&dX>Qw!YT3%F^7WY2qdL z@qk$p(QI&%n8BVEfFcl|e2^@^z0<5paGm>NI*l@2Fo$k?&uy-;sdlG(h7c{2UQ;{7 zb8BqDvR?g@T;P=V$=`#}xbzlfD#zb5erib>*nz^&`ojIdkDvDo zun5n$xN_@+lW0pwsNYb?bU;!@ zJBK3HNov}eQ?4{-rGRa zzd&V#NJ<(g%92CE(7E#C(^cxvW|(pGJ% zb4Zw(&RU-_kI{9blacBZb`Hf{eXw4XN#Tw!;vnaZUTvCGU#u^1JJ0u}OT&UXH-I#N zpiOT;4$*}IK6?d3|AEU+`bD14OJw|Y;#L6{;ns|jLN72du>Bo23$2Is)+>T=IpZ8- zBXKWBe*q|YB-QKjyno?^1HlKTrQiqrhMe5o{x+UR8b7=>gydM^u7SMZw`+i`6)ybQ zcM(9?5{)D&JuknvV>hx|*OJ06xoAwDB9F}e; zovKjHANDNDFYCh>Nen}&Dj4SY2>J&kqC2Ii0(0li?wsxddJMQWe3?j_D6HTCPZU?S zbi-^~2301JjqE5ix8ILM=tiTskRXPqKOr@#cwwNw21dlO2UJd8qJv0l>c5!h_v$wa z$#O@&t4Ibdg^D8%gQGS7TA@N}k*7g1CySF=Yv9$VZM*Z7t`AmMq)g1M8`zndJdp1$?{B4#UGgQxG>TVby zBsuhx!e;1V#hy+#`%3Q#QmxQ~^vc(Y@&5I#=73%9vLSZ{BTUy1@oui>2J1AzaMfL9 zF>f&lAJvKC6U|V)m@JF9gk+)iNbHn3WembygXmtrq*?jdR-9?u(>}%xeUQbzjLY-! zc{wub|9UNfvb#%~gV3?pJG-1=S#fYwsyT7H z`4y)FHARF4>s8ODuK^zyeMC0inKW1N^bsy1`lf13fFDbq|1UMD6tt_pRyW}f$)n#p znmrt;ML|g$O!@?!=z7K?@g(H_!js|g0&(i@P6`#8c?p03FEz|hF5cY=m7^E-LVQ}xF^cG-|* z59G9q2T#Pg-4|^@|oA~XJdoGG#^3TG-Wa{-y0|B8PB}(YFY9Qi$sK~iK zAA3sbwMH$?=4Q4A%YbF`b%%0^{J;u1b?=}v3)`Q5{byOygxOV0-V`2!yVt^(6-vp-jw_$%1#ll;hkwWzvU`NL#wZ08LD@=RQtA>dPhTSvW$4l$u$>!&EV5zenJ%NNp&4U znY&W+2l6ju1QS9m6ljrXh9&CoTAs8U)fun* zXF135!gw`F>>+lIqY~m7wsWnOb&`|H?xYy0mr|(`ob4>LcJ;a=>O0-R7`l1KIW4=M zx036@G?5)^kE3hrfDxY$mQlRUYU7H&gnBLVav>rh%*Pkh*w|=J%oPa*oEGrKD&@S6 zl)#h%*~V=1o;NG6!kr+aqoepD8Vz1g_o=ITLFD%LFnk^sn|@r;jn%Lj%KT>cBJX!; zaQ;1N51w9JboY{Vvz2-;25|f#2qO&=+xmTJ2$Ko~g}?l~+eYt?%XjKs(L^Fu;p@Qg zs-#MIq}0Ad(WCq>0Lr8jah@NNX=}RR7V-Xaw?CDintQ=u#u%kJ4vH@DdgbsjlY}G3 zY5kEpAT;^IE16h@nDjWxpOGH~3UC(=;WgzY{Y`QUy%bmfV3+L;?L@O+Aof;At^{CE zv+oSD=VcOn%Z?8bRpoJ!#$FM&O0h&K9lkHpJ^S)dcQ4?}J&Pi$i?3;oT&Z`7yMAA& zlXVqC^p^;$tX-2WIKt5ruHrA(0t$!l;2BKpn-QvHCFq0`-J=`+xH)Mg9?Q&o^L~Fv0Deb~=HsOMH)RLL&CN}UJgKR!F9JiA$ zx}OUAufI+qNwL=1I%`+>9s)Jqyc_v~>rTBnoMz@(hZogfUmIxa4@-nt7PmJ>^GTE^3>#KS{8g`xd;QgxKvJ?4hNJs-8Op ze%sxlBOqeuXzY1wbCLBY2Y&i{{l{{`K=g*vgJcloy7X?Z*qFp4ZtG#YB1u{Tgj=L6YZb(!lI(nNXB!eXN;O?9d+&-jvk1^mqb`h<%Is`d_C& zrsEh0tstOYc3B!wx=N(KLatb=^BbJDn!ZpZli?o6vTxkFBBHEKn}&Q`?Png9T+48U z^sQ!N77AfJnf8{V>~A$;UAQ^@(!s(a*G8 z<&km^E^$i=oxg^lu93fBkky@DLZ90SyBUYW?0)Dc?sIy7z=%3}D=m1Lim4$n-BlT+ zmptZzwZpq7jIPceSUVAGm@pt}5DIsg5{FEU_o-u8`ZrQ>&EGk%jbmROv=)_005qO6n)uIQTR`pQWWaw z?H&AZwo~W7hG3F9M)cH%+Ct3hf3mjlLz&KxMdMW~vTyPF$CME(bJGt|hQf}_vsTnb zVs|=0f}K{5SV)vum7?Mi^rw$|AC-k1ZA%x6dkT6jW==>SV>|$ba6*jmAN@YoRzlPb!-<)M-{u!ClPEBB zo~gFiq08#GMLK+Q+VDPEoTE2S$`N|+fUcjYmk={OuxujYyVYx+gJ89S7Zf;=Fk7mD z0tds6wt%f>RiG81Z(FwM*wubP0qV;c^mL%mABah6`*2d<{HlV8rmX4kJzPhz_SO47 z1s)-xVW%?JxM!1vS^5758Zl1R^xd?1fu5*-T6W=MXo(U0#Bu+_y0ar@D^BluiD_Ht zqvj7nso-Zn04zKE0M{z#!R#tBkF*o^)ZtmdMRnE8^+=_rYk%LOj_#G$L4whWlog1o zm+2OO%CDuX6gJOe#nNQdCQC@a5ua`{EjOF9`&PuV%1Ul?&~R;4po?MEyc25~Wv-U~ zZWa^gnO0{IgEIO|DP@?sm@7@5_RW^4HJn+wPg-3C?KC>Pl z3PKHPc4DVIPH_KnNKeyI^oCA^;k)h*p3CKGoX!3e2;sC~aT=TJ+0Fgl5LEd+xI)GX z>^#VWy?-qzKg^jLIY`x}-oFr&j*l0s`k{Xn^)_!M<+L)Y%!tM;D}5AX-uov{iCD;e z@c!QCl#)n0q~xasc7}51q9!vziy5T6vOgPQ-jCD$_{DrDypYA}phkc33tvP61u}Wd z%?Zl<KUJLiZeCYx<@cf4Y$*8E0umC=|by%-PEUQ)%9xQGD+@JCh4u&zq z+H_b4R4zZg<_Dl=+vmHztuUQO>Q!ibeWKgTUB*iYEY%Cn#~@OG{sN%abRU7%ozi%R zUVN4H*o;S7V`Jkp;9o<*-#WVgqco=78jg+%cCu!M2&X%vi9MV!XxXP^`7SF^e~N%f zTF6}NE&Vpn$-jENDZVJYH7`i$EqES;Ct14MIpCT1JsO5nk;-=|WO=icD|xC@1hYJZY$TSmpM~H4A*R)FuEVa!7dc0s)W$501q+#C+ZZz&S|Cs7^@S)~T%HemD zZJ{Rc_w+Xw?~KLl)DaMu z>8{YTxy_n)E^i#fMk4;&{-UMb$N>rE{Y)^T^zd3fqU>@dx(cCqwH4wYU z^3Xozw@6eio)(Zx5?SDD6{t3aC3l<;339Zl|Kj!h2F!A7^z^u#{iN1euHI36p)vV! ziW;=ra>&LZXk0VkI10W8Nt2I=c|#}^wQ!FF9sA|idS2o?Y{N1ZC$}&!XYw|1 zgW)7HaF&71Gwdanxi1*o`?lMaZzhBx{SO2t)NTPXz55WbK|Tsz(AZmG7KGK0>>pp* z?$8N7T~6Bp^J4&GybkhH&Vb78xWT>M-7|oZMS-jM*Y>cP>5ny31!zPn4_;zhZ+qF1 zIqp?dS?@Ivu3n&kVc0%<7U|rAfI?;q2Rvqkpe^F@jv&C9tmJ*MI|_iA4%4&E z{~?47j-=P6Gi01kNd_1 z{+Cx-+i1P(z*RIzYwt8!0xAZ#iLuu$pzh0=hvE*O;ks^Spg@MW!#kNsRk3^OobFY(O##AXdhM^dQ(+0KIAKA z(A@hH$6zrYep%D@&b){BXCSU~Ft?tWR>%+X+lW1h3&s-S1 z&_0iuhA}rrA2yozH@;o3&JOdwtO@cP!a{`&N77-Xj88|FU;8e3zN|LKXs+_vV|<krcW5XlWVQ(@th$mhrocF!K`5 zs(71?D&k=wsOvI{Yu;#QMK{4;@!vw@oojNq^K4@BbWQpv`HZ|`U#_Gw#WnZ2DM<}U zlx~9bFend2FBb0M9SA2}0t%AjJQh~q2GM)^6}#>S5urMLJd*{iduufPcFwK!I2hwW zEMzxNn3vnx-yBwwy_NDW#)Pl|_Dl#ype%b_jH*@}WAa+g`(Tpt>Ygmt!r&j@*LguNcOA8`1w^O+Ntyt{Hq!BEb^`z|IbqEe z$H42U+V1uA`3hD*U3gbW> z>l7e-g27Bkgql9Ebi~Az=`6#48F^^{O40BL9j>%o;40CmFC%g!|4)Dd<;i%JYj`y1 zSE_$%xz}YS7&1bUs-xFp(cg4)2OQ--!`GHiFQ z`_70jLgq?as*9UvSN(YZ8i4G_4{}?QjZYAh&E=L{)**85u?u?ndfz>(_!OgvjlVF= zgUB1Ba?34qP5>ODCvox9-K!A=y7wY*YrXhFuF~6XN=a5q%Wr38g)ylm2)W2v)gnsj z-k7JXAii&a(lIa|hX zw(ND`+@*2jFAbq8%k++bj_}+}p;C!_!TD`bUAx8YjRg{Kvvys5 z!90ZiFaa;8wnZnux1Mjvqfgmv?$=uE-)uTTLG-@*v7btoyWq$0C77^qqsUm7%>_C& zH;IYHwkmt*SjF_`&-yv{MU<+!g4<4lbQnSu-A-FMQV(tZ;Bg+W7#8Ue=@4Abf6};2 zGRQ>AGB3EA$)uBs*Ij9Hyqzfk2f%cu;wwOEDtg9k4}<0%K;TsZ$NUB?726Kbk8T3N znrZe{l9w?0Bno`bSk?lSPIWsh%pZf5Xpyt*!Z2!CUC_XbdD*eSap2Dym49R1WSwxA6ccUeDJ7h?k zAX?6Drf+JpBX1Cds>DP$5g6^$PoI)*Ug@eztvz2#J3kqA$eec!7kk!;%g-$M`F$xC zP?O(#`@F}Ropg% znZ|YUxVN5jcMUgFb9dk?XRwhxnQg^In9Yav22OO7>ThRp$hJVu*cD}{LOOI&scW{L z3{B^(o?er@ah_i>;MT|SG=nx#skSJ7`wl@!UYE(TyYQWDyLS8%;Q2vT$4}s~s2vxw z(XE3w$DV~pI3W{uyxTy;yk*ne_9HStOhlDHD`Tayo4!A{qoljO|1=U_ZaWhEKHv)} zt3}434N^*s^w!ZWkp_f&x2Kw$Dm`d0k+FX_uCh-mddzDoDGa!q{+16^l6{tNg|>YB z_vL#P{rk;^%Ir8=Aev>dUDwkw@=+nw>_ zL;H&mj6Qw?4-mrGkATeQ?SJUyPh9y9-~v3(E>B7#_5e&5oj_3gM@_q4{M+mL_6T4M zF{4DD`O_~__tufvU0!KFEY58LdYJBNAg(*)sKsy)2lmGe=Y6Dhfb@9_uzmE2VGI8x z1VAsBrz4#x0BQA{2jtKU*X_WE5UB%v9->gOKIe-<5$xQ0q@~*CArL8a%I_eln%#{h z#8S`>^xtB>s(?N9N7?a;PB`R88?)}~C(L|NzM!+1pd-;Z+Hs66Xe>{}OGP5{K^xW;=q!ni0Y`i{DnLnVr^dPR?a(j=d zXq^6Q8r3CvW?Bj)72Ba&T5N8PD~A`%$DC&VX-Y43jBjoeSIIVt)~iCUSUlFICS80M27 z$kwd@v!V%i7O=O_i6n`W@Ey_mufJ7edQHCwV)diYBGWk0i7b~`CFM3s-_Y2mY0%lB zbP`x7TL)}2F;V#=4SlbQ8aa{~@<&I#OGcpvb(JoxRogbwL{^n2V@w1bs|PdwtN11F zJ#Knz4;kQp)yfc!sl{;GY0?MkA*7(~bpS^Nh232R&Kc+PK=CTUSDX`SY5=ZqZRjWn@rX34TH;CM+)T0m%m!=k%SoOGwAW9V%o9$iwdQaU&AH@a;;pyGtm`D-ZRlCL?OrF zu@SQqfr<(^SsbOCc_sJqA5bHAbhp$r37M(liIKD}8Yb}WqBpfpwyAluqU7GreXi#m z<+RYno9tmd8s-}BXgR}HJuppgFV&C&qy?)}%&$DsPx9xh86W-Y4FuRwOE`p4Bn0Cvz(#Ay2Cg$|%XHWZR1PEI^ zA}KWc9w~!{?bK2&@LU~P5%C{Dp*zSP1PGb|@OS(~nCW>8{i~*DKd}Q%$N^cK)?`Ic z)i{wc$PQ1(^Q#+P_qTK+v~JpuoXeTRMh8Fpy;(3AYDF>q*O}<#$6Umw@hEYMXXh8g zcJER-CX~PQMgnq|I#%^KIGE-jej1izt9DlW+Y9I;qJ-sSc>w^KLZ$J4G>rzgfI_AD zH{MrKy9Z;Xv=$2+Nbh37N#Rg2Uv_9CTg+N=LL1rYNW&@jy4xF9!E-059M}B8rbbaN z7>X+w&$8Efu~7D_{?EZ(LfN#7gndG^i5Pto)D#N$L5ls56xY(hPdjy+@c55>a)Xe^ zkG@;MgOKL+0+4Y25tYm6E3Tw5dGrYXm|9hn=r;#AuHN{CB7x&&A_w#*pV*gh8#kk? zh!n2LzqYYbT&+~4OmBbGC8cI{e62uUAmvHlU1Jq>@rqh&g6VWU?h#3P54ydyi8h_4 zxyU@CBtl(EAV@BJV+AQB^k`eWAl|4?iV2UILw+EWIUs21lu{ab{TS!uG|5GMwKtH+ zDkvPQ>1C0@todUxYDpd>0(q=CGYQveC74e;kBI1$6%njUBjd5j6Ia`fKF{7l(E6n1 z+!=fqRZ%)0^eA}|6M^w_QeGLUQ{7i~fW)8$LStNfr>vcIJWo}8N|a-$$?LkLDLp!M z5G6B@Nxe4sv}e{q!BA>9=9R=^PDxR=!*8aSc+fYN5ug`Zf2SWinA+z14Ygm9R-F?A z^5k0NK#8GnPc`TFS9!%Zy=i875YWBMDum&{$z*_+4Wfk4pb70B)ReF^dpNju;ONX( z{=Wi~L8b~Zsl0ltgLk!8uj<~DDg-m54~6e7Fi{MSGp`%n4(>!uAH)W5Z*du;IT=%x zoG`4ZUKx)1a=f8vSpNO)05Qfotp?@kF&QEbz969&md)c(#NPe%Ch6>3#_s3k^=K)Z zH&u0m;7USVBSEPf!j15zL8;n1Z3BT7|2m`zE3YAuPNW`i9!-( z_a~eGhMI_9BwhBEeer(F#??rAT;)O_LA)k&M6S6*Zb*_+g8ggnBd6uv+d5^+{XLr4 z4-3-T>yM(=-wiP_POSQT?0-l`=FzFKiWG)lBW$Z;c>Olq92o1(xm)M*SzEHZI9n8_ zGCL?X#XWh6-eV68dwHTcE;6VL>Hp)g-*P_4J!vBv$8gkL7PU-lefSHbmq`H8KY{x& znG{amXrhwcFV$l%_|qJ`;9OM%63yt@Te3FUAY}4yuYX5e%*tC>ge$W&&$PiUm5IY;Wbzahx)5pCW1AgW+xe%J%76ib=F zlko)f2gAd)Jnpbdnm+Sj6#%<992_9QjzXW_vX3Y$HC{5RhP486l zkd$N+#I?PcHdbD(s9z;3K-ZMZ5GGZS4{KssliO4yFY!QBU6+hYE^vZUEAe&6a)rY{O-(z=UY~RwtM?0*LW@ifIH#P+R za1CW}U0o4-i3>jX%Zu$R7L6I8qba`?C#_=qOFoz#6JX?q$Ezmto7lB!Sdvv{N7d=f z-}HJj85~sPB}iDvJ{{0<%${=M|E~BPXRY-BA8NZW#GF@#dP;6FSGv>W zb|XH7q+OM?(C6Z9b8uEC!y)A=F;QRBEu-Jy%Hp*1blIGu3^H0~R;DB9Ulk)C&vR2<5STJ0r9alFxh2TL;A@-O+Zl@PaK+O+#OxYs45n9T$$pB6pc zQ_oXhUX)S?E~JFDAnUQVT<2wo{Y@683SExLdt%ZR546_mZFiRvNM-D<@vQ})?y@*n zB^e3Za~gGylK?ZT0PdsMG* zEQy?~6i7q3mW3NG$(_^7|DowD8=`EZEsUhJ0uquUrF7TOB`u(IH_}~03%qo9w}`~h z-QC^I(4EqpXFTWpfZ@~3&E9LTb*)b}_1!<5CNDoA)bWn65c235@XQn9d(1jka0^CS ziD{s$Z!y)AO}QG!ey+G2IMC7})jIy|KcNb$LoAc2FSNkk!Vr^iFWMSX(cP-%7sBom zSMBu1s~dPCug@pxNP1#smaF(d$fVCduRCH00u7l-pcCUQY0Q2t)94je#7eDaCo#`1 zjl!pft6lSc*Z>ZsgZv%$%HeNeaU$P|7x;gtuSLG%i|L~7jtyeuJCSK+tXizJ`GHFR zb(9VQKC8{c^I`^ewsLeqXAs#VC5WiK(j{bM91b6YI85qr^PGZaO`#oKfBQiMa&jLp zq(z94Nf&lT*+5{?nMWgNo)%s|RvQ@7tQl`3trh30Tz`kk5qrXI5!H;r3mJVhKg-X| z{4%6iYfg4y%$I~vHYW6nAfYWjG0b}yI~;5*=Mb??r3?N327|OU&S%k9{9xI_JeD+k zOSGW0d40}br(j(@AN0Z1gzn+%cE}+OtM1DAf~dpW|IQ@NL&u>0<>$joc_Dwv9ID8F zUA=8k{E+-C>k z{YK6g)b^qXx`x^{y-J}q)hbOU8_g-8iks_COCL7ejjZkEYOM&l(6Yoirj)i=6FyX! z8zfwlD=l4ur!T;QK`mkX=Cj}TRU8P$`sPF;+G0s~d&(0e^O{9hH-VX%%S9=LJ!rtb z`u*9DiSu4{`}|!K`mLK*#4@ZlVw?U4XI^5{xE{{-o0 zV*#i;ws&cx1N>lQ$GWU8^%#D%GM`hU>gp8zf*J2qPI_>GN)`Jc;~*$Aexa>Ux*?`^ z%@{?m9TzteKa=-d&v!tIZg^LcRx~v^*{agX!og-C7S(<;iS~FRv%PA7@8yMR$Jpy= z2rbCu#Za`2_HaUBSAr)%3V&~293+`0^=U_lk37(j6`Pe+k$}$F8UJd~@uCyzC5T7! zMaw-T0zR`qZezT&B3J^utMbKngP@a^ckat%$h zg871ow8+k=?$5)4pi;A=tN3e^X1YO^qxn1ak$6csDeG?V%caT3~2QpKG! zchIR5BV*=Xg>}k@*%T@d!8*Lzu*JmN zhtq4Ym-4h&{VT|l*L&QFyqT{#ynK=;1er8QL%UO$6xhvH-8^pz4Py-;blA%YKmGr-h{cJRT`$1||6-Dn&Mrwy=HsHvJP0 zTB;t5CcHXvnx(q#(juYRl2&oUqin8oYP)3SED|Yd{EjEKG{!ITB4r#{QSRURddRM+ zmnu5dDlc7CJUZAD%>?syVyY{hGZ6@FE*sF+sBBNJj2-;EqAO{0Xtc2FLB(!=yill( zsQ+V~>kJODw$!F}59CIV!YMaQH_DRbIOy$@%{`1LDg;@vg6f3G`HiTh3G~=3Fu@H* zRQrnE$-9QhPz`q)Nh1-{bXQiM6@;znx%_W61ocQGI4OaO6E^%B`pwIcQyuLXHJ80w zwNr}+ddMCJ6N!6-fOOzzt^}_iOzzE-$gCF$XlG`ys25;0G!uGQI8dl~xs7^h|0lw} zv_p?zRnAqEO$ zb&<0E1N}n^ID6zywXXd1{30AgSuW^mb!$TFSLpGLGG5c~GwHf?^NVT$ktof%3~<+K z&j;s${QByTKkrm<-BP1Wc};{M{FRot4OmUcqQUv{o-#XB%d?z9#gbmp?P{6oQWR|( zHp9EcM8bjulC%eMA?u1ahk-)%J|`uM1mof^F-0xK!|PUKSmr1)uS%#%4(ac%WKZQUi58Xx>&0MG zSc|OB%Cgf+ZsE>HX_R&qEO*TB$F%xxGVZe;xqeUFH{XxtsQTa~YF$@Aa5kv+^B#Yf zdj!(pPEy#2VP-t%v_sSwN?@&nD+@7rl)qP+?<5LyU+wf5SRJl9Pt@k24#NaX)e_>l zT^BIaoky}JBI)%JPVvw@L6i;4ep;Uf;__4A$4AkC#P)Dn8;^}lsxj1#8a zxbLU%*LT1-%IdKMQxkoR@_##6&h@%V3dk`Y{sfdUjS$*EG``>%Aa=ymAOa&6qYNCwPhS90hWv2aCIn=@ zAP(Cyut*Q!Bc+Vw-60$v9fgO3iSppTO=~?mt}B563l^hp&D-+^vf{D?gz`7Y@$(vC z&rMv$4nLjd%@lM1W%SBw=+=Pjj)Kg|A~U}j@O&Mq=sqKo>nyIGZ}&^zu_Ef5f)&_* zN|8e`Gj-tzc9UrlYF?gtyqfsM&@PV9&C}WmoQlCY1F61Ik;eNH@`E)IydBK))1FAJ zV6TL7h5kIDPvk>D6~MRuju!i~3EPl0d-3U}m6VNx#XqphUV<%A<_V{&HB1<1X5kg1 zayndGA>6~LOd^xN_1<1U!>?ucSbD)RjKtfly`=n9tweP<=sb@NM+JOg!59e-vcA z;B}}y>HjOROWbCGPRvyG&CeH*HoLPOht2c09z*!qQg%z4dW|vg!ZvcGLlSimr3@Smz5GoSxx*2pZJz#O4~{p%bsIeS8W^TQmVL>7zK_KC|IpIk;% z<&^_EKC*F>PybAOK-XDB^T?qnK^}*WZK3SlPg_|uTr$V-8Z2;61QgmQVDv2nW z74I#yE4^Cm@CG$jI@LH9Kx#8gpZf3%xk$c%SEz^!n%|Ik%e&eSPWz(%?OqCbQw3qK z(bnRnM#C=oF7P)Cdlabx^g5)YN-PRf$U_F;nU}8PRa!e8CC0S$ZTn8~BE8IU(!^(5 zPKW575Jv9CRaSG+*?MsV9P0>vlC|6A+#}I47N3^x^OLFd8JdwWM%2lppCY@+++OzT zyUGPsM-129;Evoo8##QtE@6)E%PqU(HT+%jA6N7*4N)ll8zra6%N%?;wB`ZQN#71! zqm1_t7)|a2uZX*l9!-7L_XRneF{0={o-fb~t9E*Asnh9UvG;8mW*Yv?lI>+-5G)Ni zd-X%=Nd71meMKrs>0^+^6HSjD=9I%@O(fEzWSH6f!FtL%r?Ta`TekIo9yiXw0?IiB z97W*P0gpr{%wPdy^CPv&T&2!6Bg3jVgMr7u+Ru_37EI?LM>`3yq}xyC^6U3c_I=OB zzD9|z-$A9>R|uDsGxn(b@&kb|V`4PMy`)BdaCQBG z=INS5OUHbM#Fw*sqHumi@_9h4dYh@$$hCNw1A?y5Xl%w<<~(0H^}V5etKao!@20WG z5pE8|3C~M9AhS^yUA$Nw(INj`*qdak?p{(q_YmUFq*wXjVWNU_UvA_0sf$ZB&uUpT zE)1pe^qW>RL=&Z>s97jOAumOC*fYFvD;-j}>{$?MGTG@o?z8gK5+{apT4wKrjF z4a*xrpkLtM4ngrmD+S7jpvJ?K#~NBB_rO&;Fdfm00a`3NCeENi#%b(D7DKuxP{1b{=VD zVUe3cZ0gZT>&eiIGfZY3gc?l6%~T9ubgXMM!XJur%e0stlN4TNje|- zsxv6;S>oO$`qax4O#H%jj0s=R#62~?4asN7{7Y~_$zO}ylX^|fd$f*<#%0uXo|PO0 z;ecS?C!f8#S*oe()>h*MeeoPg&u4HRHPC#J7%_zfkkN1YZz$I4**G0OzQECbxa zK_;I*2MvYikA|O$^EFlr{<^;i9YGnA&~_0zEKpF5`gy7Bh2rsJVmYy_9g(AY$&We@j5c{c;`7%C$v=+JCM=I-PZhb1dWa*3=p{e8Bh~Al1+0tRevpbP`b8D@ z+v&J)qU=_Z?-&5#1b)FKZ$Z$9uOgLftVT;t^OBW0T*+1yimu4N&BY>eoTUAkelc}N zrz5qtsKoW@+Jl&%c;8qsDD&~0+^>mB#WoV1Wbv;3G3}Ph0ykhX^8!hAn_7wRD9tuO zi8GJ%7Q|@2@3_`d1kdPu>pM~#1sD0+3@Sw?Kztem&7Hviu zCa-NGO)?kIPvO62H<>etEX78|gBmW!>8r(Y)GZ;uGqC`L%^^~4X+`8Vs0~xku!VvgLWX7lbt}9GZ%MD@<`TJMpV|Ff)dv)X10(Ip2*DO}yhk15%?hxEF zeFMA;_ym7#hYvNJ6sEg00{#E*1^A7`zl4JqXQaGC#1rox6i0C(PT-Qd??1$dG3og0 zq&B{}^$xkx)vp_wv@5FJzlQiHU@gC#;$j71RBxTW{PL{H)Yo3&h zhrZ5e5#;3{Mu==7McByZ*n=pfmOF0O%w<}=`y2EP`mKnlD&igqLuwzrG2M`SJw2?m z+I2K2wb{8~*Md9?A|iE`J03;XDpzPl7sN=6PEW@4u8>;L0Q#{`#BA=)^;sy(epCiU zr;$9UFGPC{Ey!sh=zyurIvlX_ zdjj>&K>$D*ON!JP?`GL?%%YL(pWm$a*A?R40HP3~VzY%m>1(0aPZX2V!378dD!O~% z5jCkN88#^&Q?SjEO0bAfb6DWn$t%JCKy!20j~(L)xX!H~docX{9)`vuos?hMr6h3E z=|8f(Pj9ySn&CTDLmWE>+GjqeOiCh{!{FVR@JOUN+@aEz%a;vvaQE|t@(Vd_%F}K` zKF^7;TCy>@Q4?*sR}L~%@u6n)G1L@z8hO3jXP;z!jS#ZUP+M_4pHI#}teoC0gy|ue@-l#|IeL%u=`Z*?dy}agpFe1%|FOZ3xe&KT;nOkLbYR7#)2iv7?vE!}Y_>Z% z&a}DT?MmKD7VA?Tyto*1Yd<*XQlL`epmEJCY9k3Td6R+@@dwk4e-(Z5F0Ce*F57?v zDZYnZTqtJ|=r8k`H=AY-(~={ROgb@RsE`fG{+V%xqMLja7>bHenPGnO@Ht2XT+E>q z8ZLd35TKQ6n*0tFWYC$%%@V}N#Q57Fp^)0f;EXzI^FIKB#;v3Au_vW*RCwu)1V)xH z$)2=?3Z}1)`*y-DFhroi!BT7IfZK<(kJOb!_aZh)AMl80nkxO%x}JVHQ&>$@k#VG% zbWETlwFr~h4T#m&Aq+2FOSmtnQGjx_mR5SMVtvHQ@gGx(mPVo-F@D{~@Uf6BX6Wc_ zImq}i^L6atUh5C_BX(%>6tVq~{d9Jx(W=IBi;UDB9#S#ju_dmv!ydI0f$D0#sW7#W zl~m{wl*ur6kAXWE(n}?Tv&QJ}~W8|-eqRza#fmfzda4*O#l=x@Ra z`E;{O@DYbvdnPsmGeI=y45!T1=jYWwIVsGwaojf-UX`DSFGLOv-u_sn0o=U9)MKOp z7K_o_pK&}BnDs|G2f+9XvPP`CyoAFh;#nw$S%+fwGWV&1kK$y4(#i&!2D9xI4ff|@p48h2mFQa9)BNiUXl5LnpG-Ubh=B1 zr*QBDU3LD!A(o3UdrMqUp$P-c>aKnsI9XmMEH#z^ z4Y>9&-7891#@21bQa1otTiz^L*R6=Y6M$_g-NjsJ3ZMV(DyR>)8+@a z(9^y6cl;U^7fzK-muxG1yte7%T4AO&iq-0TWQvQ$(mW}4o*j&&42Ktf2mbS7x3M6& zd&gkRn~a){Jno_BsUE+@&IX)d_^2xcUV3-Dt;HmaFHtPw57pfPdYu&#)9PJP9 zD2vRHtNp#M{Pk+wcc^fc=7Kg8@NAg=e24nxSZ-+Dpi^rUU~jl3W_{Rhm2y$K48*oz zA5F@k*YM;fxBOGwS-JLDtTtC06A;!f^228YHDB+@LvyIMkG!n3d>q};Ynn;+nIr}AG zuL>kx@2-qxG?6BP64HNJ{iJ>zGLRpQ@QpE&b~s1YjQyqnKD0^rtg}x;fXwA$lpsOv zsyO0{tS6_gN*m?z@#ZjF!2Ja^YYjd|k}-1R?!%<|aRCQc?@dRI63u189f|9T`;X?| zFLMRZpL)dnY4+B)v3KEGejA?)OZ}#!k?x_wEU0Wds8;M&)PJqQ^Y6cIl|O0N-HA#{BtaO;EaFcE`ILOdqjd61(PeY04p>PP+nwz)`4OKWQ+P(`$z(SGKRJuAHa3< z5sMrj_PIjo%~ut_RW4_OnN13u!oua>1bo1DzkG+y;d~LPCNs1)|5xtKtCDluphrTV zprLTRyBGh6G3x!%pGt7_FF4G12yw1#PHb#%&;0dbpeC9JTDA?dG?yXJrIS$qly9G3 zeMM*c5UR%%4;?U8MXrG6rwy2RD_kNh1SUA|w!7sa?IlNPxJKTl%C`QunqG#m^8y|UMEEIui=nMg9p;7uzplS-{7n2e>IInOL2Nm)wn zW>uU;mAr(eZ-%bFH()?Fwh!MD2=%5I^lslQ@NUP56*-@`?N!gtis31Gnz$t~<9mtO zlhCk5TuF*P>?c@)Zz#Lce3*U@gv$I%aalFxP9g!|7bV&l+9_!eyUT849#r;^3`lv{ zl;LfbwBY^Q#}Ns??R;65M0+`BKJsdt6-qs-Ta=F9SIm!`yQI&_hT#~`8SRZZTQ@Q@ z%1h!by}u&I7C&{})XNmhvp=GPgg1X(E-cI)iMpcxiXid9#YQZl*d_0$HoVurHXEZ* z4gPS;vFlQ#^ujV*v}I=@S7;$HIy(uWPm64$%vf~zvPIBA(W5mxkbDH5f;e*6Ncsu+ z>4chv_GmLfXt!**pQW6Poadx|LKumq2Id#95PELv9q^L&X*7M~K?#NT_--nBx%*{| zmMQ%xA9ebrKB+YW!$p107DEsD48c}0iHZfqvPUsP(bT(-eh9T;xH_7;Ca)Vj7f8GC zF}l8J&0kf>WaZ_!#SBR_b_KX8&=8)SDV$07S@G&h`fu>+x?ZQtogb!~{Z{dwKEUo;T@m;<0z~|{c&v&=i5{*klW%DNJ#N({fJX&gAqsTyn#+0-5l+3* z7&Y^5*oCypGhIO z?N#_pI*1Z9a7qqBu9?eombHbO<9L!qqKe?5rwSu_*T9yH9A_m%hC zA!qZnaJB#S(2P$frK?Zz*{2;SFvVgO$7)c~>}Gm#VMTyqzgpAStr8v*Wravh+UtVN zNklL96gSC4fk70@7H>D*Y(4G#KeBzT87#cB3%Cg9MnVzm{IVG-IQT5&z{xEzht7{? zWt|}U=NF!7t$k`ecw2|vKJa#BRLo-;a|lfvebHgxZH%Gq5z05I`H<$tr-F;U#pixF zC4=eysoHIQHG`i5>6( z8@SKcmL*K*XtyW*ruET7cd^44+)-fi$25yp!mRw#g_p(#)ujdUp2bBwDhkZ~nz1Pu zGeITy)&vw2Q}_b|Yx}C+S}L{>Ogx8YiAaEvm#;%_g&dTG6}%ak0BOAgl^T zrUU<7>KQmby!U@SR=@T5{Ce;{2+guix~DtO&mh&*ZLSi@Gc!?;QTzS;5m|q~z zgpRs5sH9#1?vlLw&`KzgVBTeCK~l>iGYQP1a-LprM0Gs68DmK|)4N;NcY%sy3O7W5 zn9cJMGTTs??&g;sh%l>XCdJxTeUq}TU;Z&!-}sV0uf6O}KM4X@)qhbz0Pxem$Ii|U zn;b*ynztEMnA?~I&bx8lw(0dkW=ho3E{#2QZ5}Z)hvtwM2#i) z8E1&O$g@1mZV?Kk3y}$Q-9C_c?0xtH*m(6`?&r=&U0bKZu>^sWd;RTZnEer?&u~u1 z6_#BNhUFyw$=uzziVWia6t5x%r1P}I()B99(SLjNiu1p#TRMU`t!qajaVf!yv<^nO zQu3a<=>^-XpluA# zEgY*lsU%ukYy4GlY-s7lRieck_hDxfzk`qr9e3{kmXAAD#mTeymrPYXx{pFdv3*DMCajb~QU%&>9S!EL-LH)JubA)%Kh4MAAkMqRImE_S~gJi##!ngiW z$#yeTmuvjCbM}jTsE!ZCgKV}TC$=mm#}c^>Cnz^siV+=aO+IV|?}qrGdyS+-iQ@T72kXcz>WS#j)f`;hz`r zrSvKOwo0;vjeZvoR2{CuQ9pz5h#tob#-)ygCn?B-@;YzSK=H}?mTjl``|`^eBNc;* z1*Dym;nA?8eJM7>4!yO0G^D-4?B1WkZd3xg>tr=rl_fm;h)^A+o^^tRVyC4sZE?lj zZ_%uR4P-5D-HNUw;fHh&j30g!9QC#n6PM(u^B&9R4g4+B~>-FuQ~*NA=J1gfXpM93nOP)uR4bm2OFR zDwJ;nu-Fg)VZ8}pIl2HHJ{ZP&znzHk{s~-v31M&c@9!lQ0Qz%yWMre%){DON<>^$h z1uokXgX1##Oz-J<$i~f&5a)RG(T1m=as!*QiYFx~I&Fk;=g(t9h ztpf}BN}-E4wPrM_K6NPT=JUg89}wXG52o?n7Wv#4HCy)P!6@6dz#@MJ!-o7jEt=v} z*#Osp%UlDLdH9KHvV76!sk~u-!IWRAE+Vw@I-1M_=-radPZG|eie8R$_~L@uOLsZ& zCP6JRNjHf?o<#%$W8nw*X8EM)A^zU;Q6Hdl0#^zU{l(%8?P$UaKPY&#%@&8WS>u+TMbZLXUX0Ht{$cGN;s__CYnpwM)4uh->W74& zv!<&%EVPeB9IfAa>KbVxvcq1?IbX0#m&4gjS6|#f+c5OGpBMd68RYV$i088Z{&fQn zvg;!!JCiJ`C3kvcux~rtE~|FVmc)>v48OV|Th7pRdoQoGl#`sdnb{@ry?;FNU%ejl z8X@x!T99ILJ3BOSuCm6lLB@Nw47+qIq(U0+Ok_d@PF3DsURC}Ek3t%^0`2p%i)9#$Z}++4x2vX#mH};+Ec*?Kpg0lJEGL=Pe*5mJ zpR6F?5u9h`IPBe5^S;Ps)QMQdgSYFuBTsEya~u;O0A63x=jYRx)yE$zxQZY@ShA-c zi1nVuCN(1hxXPvJ!*Q8^@4e8Y9b7w5P#Xm#Fj(#Yz+0r?z4@}!l)O5`5UH%~`JSeY znA@fs=)()Ev7FoVM`vmWcs9@0KTzg#QQD~h;LXOW=V=cn_p+}oc#HU700}^JsrdjK z1i4EfX7%^UH*i`M2Y2h=ZFtT{ zqA%dJ^Bh2FOyw_QQA}C;!-yBYCkvti-D!TzvZ}9>HD1yvib%<_`cZm}99-IlI40mp z9pTu{CA**`9tNXT*ECS~w=(kzzl1)kF!*b^Si!G!7R6Z_ZQ3CB_>!=w;JSXMeHOXW zy! zd3CyOIfV`FNY&Lmb`x`>VsyP)Q`4^ob19qX68(~j;K5Dz3(ISwp!BV!c1FgJD1{-~ z+j(ub$U3U7CrZ=wse+A_&>lRO@T8Zk=^Fd~GYiJT38&XO1BJ~G&c~_uw((;6whWi{ zQ~Uc6jlF_P7I3kBVrEr)Zd({t{e>=+Bjo-5IeX!cGcL1zcP z%a<9qBidB;+95J}JP<&)XZPGJKhC`KFvZQOS1`hAXBmhxBIUc$AjIy(CZgR}7w?mb z{8W}T6wj7j0cW%IHF73qCP2TD<5~1p+ztT2q69u6(fUgT8U>yzsTy(K^UIe~C69!cvN{n?x-%1IRplYrxEUjdE196j6i7f1whdutoq zs|q|m14~bTrUobuEHw%DFBl9wx#=DPntQM;+jljc?-({uK(4(9$fdo8tABZZIA7is ztULG{ucFXVkfa;RJ_f>t6{rJW={@Vua5vSAI(|T6?g(&f%-gm-*#UuIeH$ArSkmCE zi~RW?9t>7I_y}|mYR#^xG93ZZNHwO?amQ%voLf#i`}Tc~YkVR&R|_?q)sqM#u7i61 zC2R=WSA$(?&7N738aJhWvI9|G_V9+$upU zY1~ZfLcw-nH!9$nfy3v+OI+{O@55u`&|0-oANz!TE9&2A{O0c5y+TmfNPR0Ko${Fc z=W-|gb-_LIf7NleA3Pp>mH6ei2iMgoEL1T@hL9+_6bzb!TtDip7>G`7)oQJdm~5y4 zO()|<+i2lcj(L@%iHw5-&mzhetYvj0^~2Gc9eWCa_Ix{`p}oe&?q3r(8Iz_Bg5PU8 z1QKnkZM;Rc5e>j92SAp70)_rXGn_F-*2n63oyUn1Nk{v;6F6;S^V-$yXV9n;5|tke zwRURlmbHQ71UysdClvGYJk?P%I(ng52ODe6g-dIdXM#ay6bs5JnoRHW-+|(otH1ec zSfr~m2NUu@xkSg_%QBKA-JaPkbKjcmG2={_EprW{d5_F?n9iyYA`qYct|xG-K~SHj zVbfI;>;qlD{UwA@<+#5-gv}bTxw{iacVN^hfL#SCvi{gt^wKkS z*IS(Hm#)6Se7b@Ta|>AwW%ba4;+^{LhzKvxYu_&cl zD<5c1Ek71Z91C(8D*rL&^p@^R`FS|t0lhJtWF%O`8%wPiA|;t!`c-&Jcl2?WfM%bo z+-`VIe!2Y@jwm%yEQKxpy+Hb7m|uT}Q%*o=pw!>-r$b*{+hYUax_N%AvFbD{(W4?JvA$48FzW2R zX>^frlN&QXt<*`oedB`Pn@TWPfQ5FSf3o5p;#A>GLu5pKXH+)Fly3Nm?3Z5BDfni% zD!~o6gNF1mv@oNAU3P;x^{y5DxF<#q@(bYq;YpyS+F61jfJe+Iv0>=@2duC&4L>zNGZVl?XW=NThc-ta|K z|Kevy(ZowN#x#_jO0)_B*yHL7o*m`D|I>8u`~6!0)6snkOTUfspMug|SKWDFAdihe z0xqN#Dj-uyQ-m#W^;M1er!PQ4Afs0+>z+~5)4}i+fGvU>KXKvU=ClEtJK&r@XscX& zZ&C8v_X&txbpxk_U}m4Yq57LeOPv;&Spkqi7Aa@{A*X-EKoKf>F3DmANSTvO&OHy2 zeg$6?t|xT`C-(S0@`^Fsw9px<_si|v_Y1! zyhA{P4xzS|kc?~W_4`7`7Lv_LmJ22y@)b0bs_7fJRoiG6WwiW>zzQr{$`O`N6>?KJ zQxx+Mrvkl_QwsN%H?(eBhZ8#J9yT~#qH`GWZ*{`%TVqx$doK}f>eRg8+n=s;TJK@VDL~dk<(_;9Ch-SA)vB(J8BUYZZop^lfTj}FPa2dd+=Y<=+h z8{r=7zN;~2y_2DlRWn;PI}D!7MW}>JbOdn3=a?`Kn;TFr5(YRwX{x=3jmQFk0+Ir^ zL6ywOYx%)Id`?zNyD#7krT<{miHoN6)`@VmmaenY1m9m8b93j=_X$MjA2Q4t zG1VChaH)8|cP)KRFtMw^sC2$PKp0XqoX;snJ+HZXYdWuMWLnnJ@k8}_R_b0JocXPL zz&J^wse|xxjc%)!vNzv6p#JpQ_!|5jqxVsJF*b$$x3BauLe-D0=2u+L&pY)dUYQbw z5B*qr{5SF+OrN}$$hfWeuT1u0oL6J5`&gFt0=Esf7T9$`p4e#x<+l1Nd9pH_|L+A5 zdVI(1x;N1MCL?V(Ra^C0&w}^~w!V5B|H&#&EUV-}7Kx5#lf>g8$!x3)``7 zPFBK5`CSOp!kAkLlXP5&TuzolxSKaHt46o=^PXzqYCZqjfX~D9x&Z)f`2TTgt1Rm@ zOaJ{`U>Y`V<{2U^zVdL0M*w^syJ9p2^z#qTLvU&`5p8~y8xiSZb{64xHPcGZ+Q@`p6%S}BiB z1MXsKi+C8GaTFy%vg?!lt&934_NSC}y%uWxz7u_3X>r&0>F@9Vb9hpT9;!MFXH^Q_gv^-R?? zn9R;vGRq%*YELVw=M1W5=v1YMnB4cH=D%mnl8_k_ME0_qI!C=|tp z5Tjnh%|nb(R7<{3-2k6b+qP{w=33q&`}^h|7&u?SFbt|C?*uPmqU3t{=Pk4d+P&|m zvNor(o;iT;JNEjdEOSq9(91Iv(nl5s^meZGU1t6T9W6KDx;6~y)LvHO^ZjQrmML(1 z9_0hhRy4}802(`Cg*)>m#2bb=rMdc4_?Y9l9gw%QpSTqbkv+;8a10~ABe!s5b0I8K zJ>{`s_8#ZH({?`}ki^F-H_Hk)u2R4>a$ASCkRraiS?El9H1$#O#e#3 z>v5CjGs%z@DgJ@jRM13@wqPSy?VyU)`ZeilhigVPeXw0c@F%aIvKN12ow$*qtLv$M zWqObOlG6heNBH-b>3f~II&=2cS*MjKfbVS2SGTm5*EAJ-OHqR1-`|O?&ye*g4BDr^ zEjmAi7unRin|bNDT(a5pP;w)flRnCq*`GXBGq+cdq~uCT=#Z(-%ehF#}q{V|;oB$36NPZ%S&&f$8%o*{*Q z^Ig$%!Y3f|?fQHDqeV9+d%c|n33uU9h{7#>oxea%5lY)_GCWH7!Y|tha^Nw3yf})- z_^+?0%%qJoiCe)rpudnZkp z(U0L2MbEU_yn?YE(DL~Oo=d{;ah8_XIhVn_IGc0z^tC*a(0GSBnZ0n|4+Bp1_!Awv zOM+~b@v+I5ch@ZjZxrJWy2fJCWT@U!IkmNU*}%;y2c?kVCKok>d` z+o#>@e7D?PcWOr%oO-(Ue7t72>c0C5?%#J1z|s{#8lG;J4vUZh)cbA_1eVbO-9Vyx z%5<9SwiDDwb>W(TiRBd>j88*r9mQj)jkDO~T0U-VW%aMj>13tp{2B1%SKLyrB{KVZ zy*#Y-0h};QH)`l2+SnlsEcBbd)%)?&{_f%N9 zg@e#e_j0V_u9O|W_>Q2N3&#XT0qxR zacL9~WXaRx)KRwRIf(cFV<|R2QSqlwI;q za0#s#U3dwzDZ?{U_%G)KJ zpH1^ImyZo@gyO}Oju~z?o`vh6^pSaI*q_Y5ENnGy*;dAEnOMfhcWahK=YFC7}|GNbJLHmFb?py(z@+qtvK+dB^3>(*E}wf;#}%hz0DqJp75u9v|YQPyakAlPvj3-6w6rmzhW~|+j z&Yb`%=L5?6Aq?*GD3m1%&fj$4Zk@ObnykQ9iZ8;x}N|)g5qYuELf+y znw}S@g3yx_>@USZu#grfXZQWE!4!aJeDUi`xETn68N7jho=+=)3IIQW`jBySQkrU` zJ}ejm8s(m2HWy~psL9bRRb6@M+qm!UpPg8aQ5)h!x(I498$vb5TLLAl&|R)K?$P;a z+nx`_*)z1<@x2_E<%VrFpsQ8SZ_{pp*2%3@KT9Uh5BYgK?9V`Ho=>zWdde^Ia%tY# zfrSNA4CA|7pg>n?G>UYKSr(;_LgOnLW73xOnO(K@dDHeMkrTRwQ3a4pYg(9jSHnZd zz5cY!bV7vOe4fDgqkK#mQZ<5bE~7L6{Zk3kweb|)p3U5p^TvAj{u0ZE7`4$_mIMQP zw{3P)?T&n!TKi#EGV;?K_Q-GH0}>G43%I0Q%s2BN`IT-6TDi82H$GOBA4z$UMU{e~ zHRc8^C|q6SmFLc{Psa+aWl{O=P@B#f;$QZbJnBW84K{D0z$78O_Evrc(0>2#CuG^){mB&Dd9ucCNVlRKFama+NPcnW>mu#K${usAEM#CH&>E%bBuy((QFApwi^;ON7Qe|D^MjA2iBrKT z+XdCVNLSk9>O|eyuSNfz&ZL0LvmxZp*|C5KZ%n@U-3$DSeIJ_)UGar1pxCwO8XA_dtzeZk-HsW0x7-#+^FBSVbre;&T@CmNWKF)ZHEDB9&KIq#Yvx~`$Ltb>b@3Lr zSi$XV%|hDz74@$HJ5;si8?u9}IbDTTJ$)6@jq;0kalveFSpt0a>MtgZD_OH_UVW+k zG#wI|1joZ$9b=N=XwOUEfEKTREuB#ECuUu(MW!qa75S7kBo)Kx-^F5Fw-zTGT9I31?u z2A(;pboNo=u4>|J9Yj*jX=tZoc_W*m}(AFsPI%!`DWZpp_&30?_4JvZ{ zae)_iemE#hAo+5?_BDh9%*li~OG0YYJ`q?yd-MCnGI3%zt|sGNs57|t>P5nymUX$Y zu%ivTpD?_ohUJe}gY+&BmLyRTnIw@E{8+^^zNTV;9u=TV`2Aki#6|wss@7L#!`QMT6HwQ9Ix$JEXx4Zvm#$gp=yXlTK zQlqz*UF7uoS##)Fv*ZqTw$0#o-Rvc{?am{AG6!Gfkz2RU^kfk}KJE%d1q)u~#PzA~ znuO@x1_JQbtJxWhl4a*IsL(r zwhEWj_K@p=i*S0Apr489V+VtGL);Q6!o%LaBO!UC)ctc#dHOmn(5djLfXQ60h>NanLE^eUClD|6)_qNi6k6EEMgg~)u@uxPE#{!|WTz#?l zitOs${}6SRQBA+`UO+(vL`8C>lypfCP*f0!iAXuRyStI@7~KehNZ07mqr1C%G>nG3 z{qMQwzT*Xl7o6w!Jm2ppf0hw4Bd$XxNG5KQ&Tso+5%aR?TS8_l4ZQQnVB{}m4C$t{ zPt0kR^Oj+aVwO+W+l(ZKAlrVf>5sQ(^A$uLM#Se^<-OsPfmo9?@TT`dT$(mobmig`E_%~ zL|q?)O&ajkMB{mN0xbh{&?C1fRfC`xrEB=)mO4B z*2RMF@nP#EYpLA)E*6d8K0Z01y*Iv$&LinZ+Rmo8Ru=FP%C%#d83 z<2qYN^ZLVaXoMFC8NYkhuLfR8A8f56*qv`Ge|NfqNu#InHO+WRN@H`E-WCy<)MgxY z_dzrRY8mDnIfkdfSKc`JMu3V)NrYIo&xOw7d7xvR%A+}s$8NJll zK`#59C0SH0+lMQ>ewL77j9tph`43xV!$Uw<>mh1HmBhaTRB$p8a91&^4b6|DkKw<< zl9by44lhyOt?-;EaW|x`#A))7+$?YzgYfSyq1O=>T40;KPuhI>`B4i!^>Hxk4f>p- zH?&7S#$tQwD{nN^hv%ByYg}duZn0-tzkur>A<<`(=6X2D40XF&!_ire=q!WB{{>bE zp{gd2QMWK*eumpWmrg6x1^UyZS&6XAWj|#8`PIp;G5ahWI7vs#} z^3FWJg&O)@I%HG!Gb>XY*43%yK``VL{w8C11uZrWg?^89rPz8c(#mx(lOnq)1II|h z{b>n#bCWD{ErL83Vx&9xGG6QfjN}T7b#NO6${mOzFnUfq9x-m8hp4{wRJl)?8gD53 zLv*Kbvc#0*lodxb!#spd&ne%4*_I#MzWT1MRA%);nb0ukuFToQ>i2ZT#S$Xr@>9Xc zh7^04=^a3mqSON+qL^<`Z^1O)_n_Dp?tOmqp2Pk60pXvzzR+2sh0iDT6~Peq$u%z3 zEtVK=(yZx$M~@-E$8`4E{-nU}(iU&&Zrt_vT;4;XuN`g8H3GLwWXKLS@kBOz@%qNv z&9LS$LgG&X0h0ZB*J8q#T$b`febGi)fJ{MO zgU6TiW4BulYvOhkeIW0AAO(d&vYWucrdeEA`G8 za)}pD+CLAHX_1amXMXw6a+ya9G2_z7@m^yGIGRIxgm$Zb?8e()Xi#meBT>9!$?{8wI$$6U?+*@b(3%!J?MqC~ zrnB$2XlXDihjjDb1FDlG6g>*KprYBZ9=Yr)WrmVAZGU!ICCXH5R;nA8#N((s9~Y%K z-T$t3f<4qu<9xI;O?ISl;1L}cy9m75+M#4|YyN+;R@mMns%9=%}^ykm&1 z>z-5gbj>W;COM>My8|5m(}=s&PYRxP_yVqHwQkxsVU2E9 z0rP1*k6(QXlv^CH=K{Bv&T|AXulY=KamF#zx}=kGyhX4=F3FZ&C$3Hi1T#(8HJRjC zGzR}vNsDb-Y0LXi&}x3mcNm|){)|gLbX<{KkJ^WK>LcI~JVIP3J=q@nnlF!1Sm>J(GdR?GUT1CY>EbOp@a zR~vSzVo2P{a5a0#5Ucp`bXvTUQu0DoQDXBfOxHD1jGZPbQ9m=US$f<+>W8(W3TDfp zHCRZQEYngjz&K)tW!`Lo5?Ie;2VM+V(F4^Q6g_LS1BQ2HnKP5Yv^o0Cz?L=fwT7@N zqRuXLp;y-LA@l82bC%3T)i6L*hqFY-s7xPNKZvfH8gWaW3%06zf-a}D9pInp|9Oik zp#9VhJ!_&13|yuf76VjKdD{aZrV?2eMpQ^oX$!h7Rl}zB3A*M~vjLsCAaT1wi17$r z0r$@XeYh`Bs`H*T^jLZ6Cvk~Yq{4>I=AKJ|EE#*k#blIy4 zdo`PZ_BZUvYX3+5qhq_Lt|vDn@u zHD$+gg*-f>U(TP6JY7}nffWF;yby%BG0ps5Pbad9+FEZ~q+u&PUOtjj1gq@+ncP8k z**lZ;^7Zi}9Yr6tN#uH1u(5L*He?$jR3iahz1KoIbrrtMT`ufHiJaLAs{_Bus@Jah z6cBp~*amDA5%GfsZ&+f@(=h41E^F0~+XRD%b{F5oce;iguKb{uo{g%Im#_l7BdOb` zWmmZs5f7iU(_{sS5LR|fAtP7GM#E;F4e5Kz>>BM=gfd>!!f6=>dsqH7b-dLVU;~G6 z!09wR_bjDVtZN8RIuQhN{GC3 z(Y)ahG?*t`n2aV8LmFowYO27xRTfG^7YH~zx>+K9xN#iH+^QP>AS<}w!Ip7ce@b{} z+MgHaqe*(N4W_<;&RMnVQ=gKd+J3c@n=X~Nd)Z1m(3KmHT2dF!m>Tyjtv{aeDH;|S zrDw*}qe`HUP`y56Et_*jQSS3={$Bd}SRl7i$WZ~RbfEb%tT`Bs?^Z^g#zc8MMwi|n z*d;blj%SJ)%uXuj#l1qu;Qv?hfDRN#OSUeLf+WIG)tz(fHk$7H)h=s*rC?MY!-~*m zlKxReViP{P{M@QxAG#0hM9;W7Z}_Ldb6mpp#q2qBV{RO&qkJRpr|~Z*)+^)K()-MB zbis^nW3qGDbI%T#3Bh1j?s1V>Jx` zy;go_0K38p_Nxf|b%K+n=yCx}iB|XWZQ$uR_BJj?V!k_=bSr$mKu|dWQ~g_5M~m{Y zOiz2~0N(x5>nLy}1MO2>5}F(~IE2&y;X`X+oya$DwQdSOYnl>4lT@2*|@uj)(H{%5od}=oNN%u8KWR)$F|t6+ZtWnH){2-uj=EyC6JwnVNz3jQO0^i2@v`|ID zRED8wLt6;IgUTjGWJGJba+IZcKUNg1BK}e#-)63@@IacNv{W^0o7e5Z3SaAlPHtkZ zwN|o-Pw3oX(Itf&fvj$`UUU(Ohk<%VrG%;b1bzUrxzqRrx~iWCswWB_A4bHp!Km1o zR~cbfFjq3{$I#9@BsV_Gn1^2K_Ya%P>Z+`UHB=`pR>d&qjXhS*YK^-kb(*CW(w|Si z?eEi7S@JKSMBpxML>WHl4s0Qm<{ZsT=vV(-K?R7LSf!xB0TjU{{K%)K`ELKe$pX#5 z!O^4lJW9Qb&L}^gDD@&nGtsuAGR!M^sa8MtJZR3ca8^*!`aF-8tHu=C(OBFq>hyP@ z{TQX5`{ro&_7_@v{>TT#y15j8hJK8Jo)HBrIiOhR)qcLAj%4GEkc9^4HI&=q)jiVs zfds8;x2jzUG;>DxNuY&}sP2bHk1hw6Zsi+M5;6Erer6;}SmEWJae^LrnoX=y=kyN= z+-iQ$Q@lS6gY~|e#nYBK(Q!T5U*0hRM|43z*%9E$tqpwGfRgROd+`Fhkg59xuDhx< zncn2gQAmU*QSJwYrm%l{CEi8ZE+^plLiLsE!DCzfZ{j=RuDxD^ME}}Iu8TR|!$z|8 z4YUVAVP%P#cv3-kBM!OK)*9&&5WUTV6UP(ob32PV|B7cvzNq_9r4SO4DNL z3+;%f<;Q{ZlOjtMEFK4CzHPadG-m8I3$zm56~F}en>lbA(^S_@KZ|y$ld$8o|3)0# zUY9*F715g5{@Nm*ui)IO$cLUfwo10hdG$ySl^p)=`5JEd>x*g*jqmurTW#$%ws%=a zf&qL{?*=a~G3xG&q8g_J+Z4-*)Oso`5EWtkH$5u|c$^T${;g1QWG3CULZs+fbx$`o zIJO5Vwa*`La-FY~D9HAq$>g78ZrSqq2b_la=7jVE(TKFWbdFf}%OCmq<$x>0L$zQ- z>@jK>mb+(Uz^{h4J$$H7`jW`-kA5cSEnd+p>#~%H^p3Oe<9AZjCCye!X+j^vU*_;6 zNQb+rsnmP6mFeU;K6i-WL#VmY!gHgK7cruD`J{<2N?G&Fm!{8zQ|c{NokUM59d3P_XtyliY+l_WQOvF4n)7ILl0)pFC3t#NJr17@sG^Yqu2iT)l z+=Ja0#g0+eTH?Ooa?=f@>W<{}OZYhJ!mDtQil?WcGF4)1TU1m0;$M-02Jsn=L+Jl$ z0p8r2i*n*w7_GiMQW9`|b%>dxn5t_~*L&WPQTFHbjA?2<1Zh%X^(-i(s4LJAvzf@_ z+_2ea37<1+r8f;k@vEHCFpq}%$NlQ$uv4wb+xf?LeBF_@KR7?@tbLcQA$)iBntMvt zuo=0U1lPinHhPn$Z=(64y-SbjsvFcdu`V*6VbKMWG;-Gh#R;%Vk|y^y%M z;b^sC!4cvYiLK!lvj!G(e^PwP}J1b4{?;U?~-cPU@H2Lt`vk|D^_7c z)!y9V{?`tHZc&z&xK_OFYre%pjR*pi-nYjtC=>!kNUV{&Ojc$Dpb#>v{WZjNIaZ>E z9WII^8(Q`}bf-ZN;J2u7<~FXoQLdF5uf3Z8Qf^Qi>1e{8b`YlJp0!W0toy}5r!(x7 z>K2vPNVNEHf00T&;&&8>5;I&8lzILs%YXJ-Ni0=C98hnt?vp$|TA%9*g7z@;=tNpn zXW&dXnv!#SN%l;I*$EH!f;%L^QelQOlwB}75>77`7#u9WtuCm+lw1@wC=Mta!U1fd{fPPAs#M~OweqX z{O*p&FlQ=wp08Z%3;Wjz3CYCj!K27XZWGedT1~}ihuJU}o~C6Q-5G^QP$B^*e;}4; z6hRGc>XefO=`%+TA7Q6OO_J#+7Qd5NELvkuUJ7V9krc5@=+ZNly%j&cH%JMkTc4>S zaC#G6E@L^%U{uU`Mmp7BC(0np(U3q%#>0NJt2@#9*5qZF!GywDr2{a6$`=&yQ3zS@ zZGTiK5f)di`4{l;18NROU2Bp-M2vc)DRw+Bj54t2IS&bDsXT=g z30V7lFHH(9f$C8NJ@ZSCPYsSI&(#xrg>XV$_=1hKm`NhVVpppzo;&sr_=`7MGwy1Q zJ`WEm(dX)m^RbtUXGpCP+!j*F_>7qRl;&xt?EM@!uDh~WepVVFW;*<3J;&cuZ`32x zkR_r5^$xNo4fX36c?VulFk&iNO8@9I0=ici0Wdot);%ciY^SIB8_o%(v!z$|UT5Ix zsCzE}bzE}A=-y4%ohU`2?T4b}kF&YMTB|YT2q+#k45Q5uCDR_MB7EJ|yVDrnh!sS! zHS85ZcK%aDZJyP&mHTi{;xC&LEfK_)%#}bLbkO4I>6vnrUeGn~X$I;LwoCjqM_T_F z`PulmYKL2_oU@#0R#n4*R6^;FTYss&H0&kuSa&&141RZ`TuHmXQ=4fJPD~{Pzw`#z*$@1_qo|rp#pYxZ zd@?7Vk>RUf%Jn3@u=RHWu69ImApXy(kPVVNLWV#`3DJ?QTK5P;oW#_m^6Rvs;tMG# z)V^!Tug>+7p^ZC@OtW^vZa0iar8I!V&Xl8{vue0i1_y;sC4jA3QK~#f4}?BVJDQ4J zL-i|J&eEVbQJ4GEMCNDzsr0g{n5^uib*}_3S3grfA`tf^80lUE)-P|fC!U+-rEae z+TWXLIH6Na02N2x44hVa2u*fAwxUAx8jn(64m_&I|afnZH`cJTdQC+fiya+wsx(KJ<09OVTZ$jRejP)C0iwWdh6s59w8O1fbSK#9zfEZ zz8_4+r$*gz;%#m|$~6PqXYqI=RCXykm7tVLjn#zx@4<%yO%H*%dmmowj=rp~&wE3w zsU9ey7xglKgxX+enrC`L3{yKadq`eiVW*#A?)^xrwldC%jHN5l`=*YhowATG<1`VF zSAJKkd?+XBRO@f}n)rF=qU~daQ`#W|iQW18ckb4~LN{|_M5?XD9LyFrtZU#HgH1Gj+ewDji zhS-HhMPl7~WeA;{EV#{(PZ8-DMbtMZB_RUay_-+9j{DfWwT|5E2p=mCYg3x0VO?p{ zJ=kr{(icKM(w~2ay)+*+px&G#^z@IeL=wMjC0y;(zPB6mLah(z5q`!vGh*p7VyWfs zz*!>qj{q0y3Q!t&|Ay&_9hZvTx?UM#o3#{sdJ}hq8esf_n&Z1KQ_Y2AD_iR=Ns{L; z{)qsdyMlHzV{zT2^(-*{Y))q>uJ9KvmwINVmsxwW@vn7qi;~J_h3m9ahOK3P9b6rJ zTwNs6w>yz*UT6(zx=4`TD>zl*r3Q|qyx88p4gst$vPqkK5@CXWjn-w0im?T6RDVR3 ztX%DL#36kR3?Sw@5i1P(iAu%$uko3h4Cb|8U^RZOei;?wa^KuT>cBn#p;=2V&8{`1 zPQvmzwZuQC$Y;P~-l23?-CC|Te<>$t(0Na<(w9)2o+N~$3r;VMiMUMF7&hDf*DScg zWF=>l_&c@h>k!j90y0}EE|0(%89MQ03;bRU7@F>iEm(`uTB$UTjgXWErSDb1P;qGM zWAc9n1szhpe-xZaG{ZNiBwh+O&U}=wwIn(u&W4allkfd-{U!4LZvF5v)nA#@T=I~q zq6mH{Mu2u3;~~xi{>Ii>NK?h7{L9smBSMEtl4i^W3w+X=#kow;=jGU(4M$YEWMyQG z;2~H(Rhg|6K9sapWPN)Hj6YW1ba&6BLu2qG&CZ;%bQjM{LiPflD~UYf);7uB|81%HXs*(j@P19=9t*99K=)YbPnBpw z#G8@k&4Hwi%THWRAerH4QIF7Su-`6Q1bXmw`Zo05oC;uFw#8{D%$v|q!EkrpGD~IR zeosK-oGsIbV`zWecQe5G&QX14BR*bw&JwlJR6z7s3#zlHh0Q+op z-bav1Yjav~DvW#kgLmo6cq);ZjX{La3tJ)F{KqMVOd(s3H5rd>JkDV8-8G29`D~T% zhoSZ#Nxwx0*Vn(^KEp1S?PV%}1{=gI{39kDe{Q2b8>F7KBbaK0(5 zuYy6nV)Bu4iNs8u9h$j0YAgAPp(UKVks=pLCcpdd1BRpsIf#<7r&nD>BK4zmhAsto zjh8&!JgIg&5%bU5#m#6qe&GV%&VRvoQF{d?b6oMCp%lJo&j9Y)$7@HFI+oQ(SL8Sy zWWwW(Q>)~3Wpu(3MqJS>9!?-1fQD#lekm_pp2eMawA$dDLT>rB%`MYy>O0?N^`j~{ zdHt&5QqV6kw!WWI?#{gPabSTp0du-AP!87G%Jc{Ae+l?Ryiq_(2q!+NZqqjORn3R~ zrh}xz*LF*gq18xV{*G z{bP42w%4l-lZAOuw$vaj5h7XIt-bXm&4CZ*8;noa9xdKk(zJ?Nd*a?0cuq8#b9(VR zK-L-e6k`tV%873l@PHnHmZwB<0UhOk2ELtPW29j>!nS%Z@laP#0U?tATcF3cr z$jaMsg5$T8M_WcC-|Bb@6p!Z_1k{E593DCQh8j$aSDxST=T%2ZWRuL@TrRRldW16X z>s)O|lu2e-2q=nvTjSZxa^WvuS12i{Es5N<*|Rr2alZJ`@P2ExEBZ2G_R(n`8P%Bg zDc-nN^|6RoLRG+Ni&671YQbieEsDG;+Gv@^9$xg$iM1WPqtRzOdNTK=8J`2E2NH*B zkkBsSjL`}o%(dq-C3LO%+4CDVNy#ef)sfcG^{&*5>u)EU$8^tOBuwbc@Yc8+Hqi^$ zmr?I5kNiB(eTZ%t}L2+wU@ZCuiZ!hrwE`E)-q7y!d0|rh5DklYX!xk z4XI?b{rB7NT>TnU-jEWIKq`(ef2#Od3K@#|khIQc`O#Q^+Xz&+4NQb$c#Gj)&cB(j)^FNJhmDEwyp;|y_d zq)c^CY7;xceY&m?Te7iizdM&t4z)BRt7QcxVb_`2jM9!d#?E0RRJK$RQzU*>xf8o} z1D7t4SR7pe{VtZCD($zBjGZwP5D!X z8?u>BmJf|rs;YxY6wS+BX}(a72!A4}H@NUg@&DMlpk~ZsQ`S8Z8UXE{8C zPm%LjD(Q0TQzX?k>k`l-ETl|e6ez7Y!`E;b9o$Q#y%EMz>rU% z<7Cr#^rxL8uBKg5@r!R9K_dw<6WT@#51p?en! z%%Gmu-M5JqHo)SN(&lOYlRaHEZUTHr#ihXzJY59Z@s@2}dR;c3BRKT&i zi;x}6jTK3W?~cUdSRbXk1n9`7YrRGJsQ*)uYF?pRIG64gmO6o)lDwKBbYWE_}DE+9@zQJj{|B?=0v3d|*g? zeCe@%DlM)x{-!4Q(oTV4^Eu*k%A|Uyzq-l^JF%Od#^oMm48)LIf=k_6VYuK^`dSEs z2ID1@uQTLUgJ_9|B@wqFO#=YgH+bcqK40_7-rIVSmgPQ%5W)&IO|X6c*nhk-$bzp| zyu-8g?G6sjL**ZOC(X15p(<RF5${JsWja{(7y;Tda!-7A#)hX+&eUm9keb>bXP zg?=9y4&pIoHGR15jDXEtOa!|||0=RI4H7S}@5l+oU3+;BOcu9~DUy=waB1wT*{4i0^9jyjH0X?~KV}w&M2j`O^vhxj5J;CytAAAB1vPH!z98%!Jbh`I!)sT>o%hNo zbhYU-HxsfzP%y%KhJ)NF{H0!+i}TCyGWFg!Q%;xFN3*72kh*@#Ju#eF!U8iPD$$5C z2cn_*#ytWc@Hq;#sRYlpe++hO$P4g7nt;7@_C650y%-eUq6F@ng4$6skf-zKCC&?x z?d<3sm15-!&j1VOK{i{&R3uA*KHyEmR*L1L=uXTw2GNfLPLd$CBB!;%qtFWN{F0NTkP!? z*;AjC(JCI!3a%nRUt3|z;?q z*&a2?^~@tPlPsxFov+fDYilyM#)hRsTzFST9&k6PlN8)Cuq}mcPOl%SQ|qi-*s)zr zN@Vs8xW>P_vP_C8%9yLEGdWE$BwVO=Ajub3ay?L%-N%q2BJFqhN6xE1F>7|P;m)w07pb$)_v3dZtZk}aajzXk3={RZsLSc z-_lDtdW#*`LE4|f`?TSoM*BOL!-rHJ6GO^SsPQy;fBgwv!j!=K_;btQY1Q>B{+?D- zf^yD4**ctd^J(c?5*J4Y^N9T93vN-IW)6J5r4IWbZ#usf-{b)07L`1f+kal9{WVAU z#C@Xo;zz(t9h*c8ZHigR^?8l-%QODG2!flK^f8KtiU2REo%iblsP{v@>JOd{4XT#R zcDEpZ73FtZ=q*D(D=Y6IA&RdWc7%Mh1+mj-hpIUY#YriW200su^!_x~%`BaM?S&cU ztPPi^1(XbQ%&?SRs!if_V%wbzdOs7p3K5zS%nVezC}ze09i5h^b%9?oZpy@CbU^Hy z1a25jha$O{7oWazIK05;?K~zrc+IqY9rB~VTHI0G9K#||`%e$tG(lZEdcA86`GH~I z@UWT~%E7%KEEG6-VeyA5+AbqHv+3x`Djo@B^#g2naAZeq?s)unm?`{C4}n5;NgVU- zV|Y6BeGNv5C!1C$eV1-Hrc8Vn^JH-ml*az3z(6LhNsS!)lT2r!WM7KDR1$*D7nQ>- z&b2BueO?yK0+=191N5%=v3?Vv1=tegT2?C=(p^|+<_KiQ0SC%QgwAaqpIvm$PIVe3 z)Q9W5(!A)L3Hhk@%EeG4*6JYF^^ie$tuc{Quvx=IQ~haJ`I3<{C?1R&CC>YzBzQoWX#{A=Slb9KVNFu93# z4ZVR%#`g3JKi5aX{uI!D_yK@#xIK zK_y;wniTkBm9WzsFtk|C!aVHRmxmyCuSe`mmf`h%0Ick;Oe=xk%#nnAxRGfe-F#b= z0`<|;9ls&k=}hz#Dd(h6drZa%I3|#_OcFdVeij=n^F3+i{hBc2zdd#w1oIbW10on_ zMqjhl;Ag$zSxlhtv__m$sZvNO=RY&jDsvS>{Tzz;Pac1_{=L#2>GbamPx~|kxj%T5 zu*Ov`c>VR($d)tfoKBotOiSxgCR=jY) zs5@~Xqc(UMSf_E##cB?Wa-3Tw9afW{AY_9p?!wDDesi`bWZRJIxZToBR390PoSVh5 zL9zHisKthfBlEq+w#{$LtH-PVO`WYWgC@~9$$9v}J*=El3`u<%_;%6zR{`a2g57qB z65WLQqh)pmdf!TkFounZw;0z4hTdRTu&UO)jP7a5a} zGVp`=K*Tz2nfv}(M#tgw)O(1;-#Px$LR3^G%MGV5vAzIG(WK{|KCmNurRR7ucWFj@ zervzP4oF;TfGPDd35mz$Jaj<1gN3@z1@HUsh9r-N8U>x(RzN=tvE?1&`<`r7)j zXO-fA@?1hbcQLW021Y@rEd5%-Ym$gpV2p*LZNI~`p@(Ps{bkKDiEoH`HzzWAy1S=( zgxWOs$7FB{PO0BuWL>kQY}21Guj{PxFEwJ%yr21)0cr87-f%KASU8t<1bp?KVyvi@ zE`xAvs6aG88F-#~N`1YHVW`nWS~Iu+2=8a5?!@?^zS9_DFD#s~!NX?M6r}v@{^`f$ zr4D?XP`NJUX)fE2Y6FYiikvY)t@)rL*6vTqdx>G%940^X#5j%Be{qBz^T+#r-tGY< zv4*>a>8^k^{>>x6@&H;}5#bD{zl&!3dkZ6Gon;1La$Qyv%}RkcOuUOzA^C78>WmqoS;0_d$c+67+Ge zQ`c+VRFbiWtLNF+45|G^c_Gm^;7PxmIHtv0R*~Sft)2j`Nvsn{un5Z$_R(MmSmmZ9-d1%_HeTmIkepx5qROe>)?$ClWGX$;BducYh)Ob; z-$g!($XEUYETsgLiBV?gyEtt;P(FMX+~MlVmNg=&oA=z3*QLY}kuS(D^wKDOjLf^7 z*Uc$oG4Sv>wEv?3$eG0vy@Eq2D*Zl0k``^OQ}1L)D*kjOgdFIRb@C$(y3XlNF&Y~( zJYDV9WkPlz*X8Gn$6A_Gse+q;UX1{F!bG!6Zw1n@&~ss7hER>LK77x>~lZ^fNXh5Z0iaq z$a4h7kJ;TAx~O%!SiQF(WR)g`?5j<*>`mu6>b!X2xH?P@8grFi+esU^N_KhHtSdoz zvf+I?hc%apy+IP_&XfM#XQ%8}1cQyNhrcU))g=Klb;9Uvx9#b6;ZoV)8}Z3D3;PiY zjMDN9pH1-eu3bR`FYEXQ=|mP*JKkOR*a>b&z;pVaBrRz0qdn^F2g<%G!6rTZmh@kC z)j7UU=2MbpjbxF-c)=EG!JFKlDH@ltC$E@=oA>!Mlxkl<-#pM_EI-zBJC^k>)m#v? zUX3{XDRgw9*#UgMwA%9t%oO1Xu}r>I1`3krfBHE`F0p0mD2@|jQka_t(HG=Vb^r3< z(#9bRh+8}U^Z`@>x(OBxL3Nj44B0w-*V5z82pBwO5n0P&JIk|XTGU+rWv1j(9%hMq zMpjEA>+rgH#ItvZCdrTq^{=*qjL)e4$;BW0TuAtAOrvyR>Nt0S)qFhCm z0c@GZT(;@O;oQ~|%Kzs4w=ewl@cV|S2CJr~#*Yk0kDJH_v!wW5GReSmNgLj5SM;CB zeyE#*&-s*tI6aOv2ZF~$XjV`07d_qOh!!FfGFSv1;F=Q{BcOj+U`;4geYWSMBbA|T zNPQex_LSpd5tjGBu^UC~rSBz_Rr7YTll0B)c^o)Qt6qa?fQVZ!@mRRkeR=}8+`NKO z;yo@wuoe6HLDQo5R}%0km%@w}Z-E^{Why1$v~GAMz>?SNq_~uUhguPbx^sWHnp&#FA2OY!L6!6*L}lZXJ(Y*KHj}z=iX6@iqICQBO=M0M1c9PE z-)=P)C5fu$$NvAM_$4A8zjZm;BeNBlGk{+dzDxNjRbDFNG|w8_Xt;_K%@uW)>gqJb zZtcM~K4UrEOeRi#jO+4kY!CCj8^@gC?pD1p=!5H1zK!7Jxt!{$FQn?kn#)*w+J=cCTCy6jH#W}i~SwrZh-*y`Y8 zPBnP&H5ILuYVCl@tSr8Jn6{St*uAAhg0Dekf9Ul8X#q4QAx~!&s_BRCJxZc4xe_(> z=e93XVmNCVw<8V~(Bt)#nt&DEjynwN1X(ie7IpT@0MsTXG!9j4sIgfeK;lVq`3$z)7( zwj#@CCu2x&Cbrp@ddncI>bG3iv2Wc=C8#_$QZ+}VPkMR@U-7C@y5!Ki77~iB!^f0M zEFM!|jKH)SINHi~f<8l%3;IGmH?efW2;tcB_oGxJ?N-1PnnDN^~>eBOw0S;^_c=mGQA z4{VEH8HN_lg(A%A(zJw3+l~3khK;m5OQhg*4N*{eBv8{rVbk%|A;EH(bpfO^Z$7SQ zH&fw=@0Sxx44p0vN@WVnvjSCVuLBU3q3P!AU2sbY1L50+UkUPcKqXrfE`v_eNP@1+ zVE_W+dnJcAr!b8xy!PrT^CHuJwRQE7vcUCs&k{RRRgVFN3?V@p?=^r{0YGAmC4V_7Q~ zTOI4(y&l^5aO{&Mp#t0-naz~?e)+Qe^`K-rk@O|MO_Aeo3+|~&RCK|Mr!_O%Yfma) zy6f@65Pkur1D~6PNS3fJBF)3=PlmJoDCI(7?d@EBUz2&%1Y&XRElGQzE?BEWnRz~$ zqZikX-%Z3F!D1Fpdb2vyW6EjYC4QHqTmewL%zzr9h@*x{m)Ul0|G8mn0(`*n>qvVt zsqc2X8nJGR=7{<_yO|#w=^X|1(gqF0sm{QG{P)z|9jlG{e14N~TSCjv;Q`O7d)2(K zEVA1}6P}czfzU@|KL{sA`~rxEBjw+ulUsncJ9HWmL|3kU=L188Oi*VF_CxPMZo)7% zOVPiejO^nbVohr31O+HvY4t#YD;lTUd$SCV$MTzSz3FYI4AZ;qh4HfG;12!YyLi7Xkrf!KEmleM z^@Sj#-%0NE*yaM4;6i-<5MdwoEdHozUe~P`jygzU0T*2MK-IzQA6o`&p&sY z4|x`O*BUj4=Vg7Q6LhNa%x8PwzTfzQ24U6PjAdN=XL=O~`lf-(rC$V3;bT-T8Ewe= ztTfp@9U=mRy9i;oho(tBGnRv0$=YWCCCy7P)5?f3j#%9t0c~x?4zr4I`Qh;& zJUDIx3^f%y6bamh=nn$LS@xUi@MUc#v4<^+5V=_mVF?K+uyo)Jcx@@URI zd7C=P;1>37Fx5#by9#N_9(tD*wrhsDGa()!HREFtz4O^>#5wQz%=XenPt{2N4PE7m zcJG;Y5T0(9%j{y^^|eB66&D%j{mXkD$4U~|TQC1EYCr^7FtV+5TU*g!aW2(gy-CON zwx_GxL}K|}fQT`TqJUfw2Wf0On+D&x4k_7jA@xz5kik464BrvY_Sqx0w$USdOxNhd z2bMxX!3OFtt^N_4E2kc=Pf$~zUW4`Z1EUujbSUirkcvkcnGPbjCJxXM(X0vd22rA}io6~$F8Vk5mgPX{4 zI;}ruKID175xa@>VpT7#2d44$1=%lk=M>#a001A0BFscj00zx;$Pj^df@;ahjrvr% zRNM7WCBmWlzE0}F3^Bu1^fJA;Y;S%gHYT?D5TjsEAmu!%Hk8Y0y_q#^HHN@Kv`jMC zy)S>o`^U+3^QrAb{KWM6(ZYubxus^{z3hDlIQi4+=j;*q@;rn<=%q-+S}0>P)$|!l z62y!6Avr3CTVwVSTS4 zFK7JyNk*LJ-br_&Pjb=xhzOPcV;==JsEkV&fR}kB$k*RvFxRyqp=ErNA6xqwKCnj)FK|-CHv4Pmnqsb za1cay=w~kK2;pCBlA>6aQs2i@43ML8=W~6&i^Z=}Cs8e6NuDU(fXZWVx*jRRS0@2V z-EO^u+Iz%z5;Fr1pM{COUf`5}7S=>IdAA)5PO!gIt^d{hizk53R(t}!qknZ7K0x4k zuRa~l%aVvU{aNa6XIO9&*%O|b&y&u(#o(`6X$)+S;R^%^rrgbkzPv=9F=kuRcr9p5 zx4N*eRdm$1Zv4x}xuS2?QC=Hsg|;$lLblD^RWq#5)4Zmabr&qN+aq^xJLsVMT=lD= zY&NJI&b4m(s1E)qjmn4T^D@H58n&IpE`#h%LNlH!~$JAgY)Ps$auus8noAJ6w# z8iIQZb&kzDy~uEmM~q*pvMW9Kk-0D{Cp4xGOJDfj?-xAorb4unFEg`|uH<1a%y0`t zLX@Wkg+j%n#L0hM+*QO)397}4FT^Cf%7;!_eTxM@k(m(@}s$O}0>ep{j2Sa7`p%f^KU{Z0H`taBS$;pZH%Hv)Q4 zNbGDjW#&Fv0ciDFbpX3;ZFcndm)+0gsIBBj+N(xMUB9Mw$$WewOWuv^I(_4UMBch; zMQDG^{CaICU}X24Q$UlN`|e*x^d84v%^!EB35PnvDMVk>O&oB_PnLr{ZrNA-`dL+=~bLoIxDecV$??oPOX;Qlhl$7J5D`G!qjhmDgp)mgmke-BNrzyxJf+A zqWG#{$GaHMZrK?#FCj6~nx|zFt%9b7JiwsI13?lI6VtkU&W*I=$r>23wdWo<0HO0+ z^q>|C9h~8`Kg+m|j&Ui0U7Mj}I4@DL!$D|;Nu_@C28VU)6e@$hSY+Z(>VMzOs;G6t zTyyviZan^<JpbW2wkn`RApvMmm&VrtCM?XJm@9_54F>LIVs)D&e@6LOhfWHV}cE zs!M+U<$QCotAYe-*Z1VnM3WgG-i307ST9pBF1WQ74n)Z~v3B);3vo=~P4{o_-Oq-Kj`pdCsnY){$B#-AgO;U3$$;LXp zrZo_vcJCa1T>Uq zx_1#}>gyB2rBN@){@fG#Y@0{)x0~TLC~Xwaovpk0JA2B%b80uA%u-RJ2>fR02H0cO zn)JARF=OHG+lN@5jiS4&J8<8Z4BWcQMRjEq3D&-y6c<8SVtRKE+#LOA$v*(LQ~r(_TYhhzIN+L?ro zwSp6?YWUJe0bijG&X%t@V$E_Laa=|6QoI*bkF z|M=mt2VQEsJM?}ysC~FDeF&Af&XH&vk*0}2`ELyY4}Qh@8$`kA#oISKgMlML)R__x z;Rj(4qs@9xYs~l5Se!+BE9*pVj(J=}cZ-0_yzuOxEh(X<#xYa!LVV$SB$emCKXL83 zw6xB*6TOE(&4Y16Y4M{2|GCH7;_Z6kTq_>`!`WH>H37B_8>B=^MLLxjBHfJzh{Qyc z?(XgwAX3uOIRymilj)>Jrkqv##C>@d2b4Wk`I)cuTF>hXM?2hAmH}KeacSB-v z)L9Lsc|OL@KV&mgHnVtO5hHoj;2e2e>NJI+j0p)Lw@bg9f(~Z*0!n97V24CCO0`l-- zhV0%#%lP`hsXe?uC6O<*8wuwA6$I*6<1?qU6-AiKKXN`Xz4|hD|2goUag3`-b(-Iy z%F$Pc^`UOl^A7l7#mu7WHSs6;c+A2DWXZ!bqW156WVYF&JMQ`YU7eU9I$6wXx z9eUVMdoA**eTXy*U`lx2X&fsSG+JDBwR#2rEI6QWX&}Fyu3#kZupb}yRT_)HUn7- z&e%>We0({*+{3fQho%jLLq!p?4+I&x0K0M43BPj*8>d>k-6(6nqDXDmO9&kSJ~=151(vu-fr33+FiRem%X597B47ot+WWvr zW>YY}D@EHV3d_u6-kxwnFdg_1{dZ9lJ6L6PBJG9j45KlMG`{&~48?N%!w#^EM2%Q( zk2rQ#tTKQDgxxz@xl?k1PPKzPOM(9Lwz@d_SauY-fEsCyrrq`vh%X-$cegKz3AK)q z?x!V_3j=}xn)UMSS(BUn@7fJht-TFe<~`A|HzftDp=w?Sr@DW7UCOm?BtLb8<{Pq)k!P++T#w* z@A^NUO0eqfC(HW1*I!fq(4W`Eqhxr1lyPojgAt0(<3zcU1R?bUxR(6X$&+x0_k#>W!b88L1rhBhDOHy{^ zob|U|a(2JJ&pPPixT@R9`z^IXk{AFY?Oh>Yw>1pmVwU3weS_$Cfl^;KVz|Q@DbkVN zIng5VC*@kVFCQSkAIH>WSr|UyPBK%qCUxUuWOW5#TN=a08_P#c)epmH(WHx zhyu5WJOjL!Z7Yjco_=YRzEnmJbBl4q!YW@Gx%Oe$kb;UyYcKZM>;G+dy>(@F-3x@O$+ixo6Ol2MM2i>jS@P$0~11A7VEFt_5-{sspa3 z)9E{Kb3KvDs$#CP|4O-VSAz%IR@-Qq_h5(0ed6BD2fQSfav-*V%rLvMmcC&fGU__Q z9X){wZI=g-1joqIGd@64sK#myKW*-t-3wligpbTDzoozaF3r#j#V!#`T&=R)JiXcN zxFNYaM%7qS-h$71tUc@!i#CtBL+D{JF!{LM$_{4iPTJ!Usa+nK+w)P_NRBi-uElzk zIRFD;A;f7#TJn?ZF=Ht_ce6ab@j+MS0o!j_x?dQd4_GY(VIqP$?~dzQ&~@c)SVQ}1 zdE-t=>9iaSPvL*Xk(GWr28MRH`ep+yr9~=$8vu(Vn)uNA{%ejhV$)2kkpQ)Q)>%_C z_D?x0<&5Fwhbw_Yt{UuozcxI31)FyNAnFoT*a7#}unzQ~!5c{(cgKJlQC3#s?XDQiZ zI4fDXtv)ocWl>Lix*1yJ=6o+lvbU%&ux0dOQ86Z=H4#Pm_B0`%jB7=0&`G~yMt?4} zHBRLZR`Y;D2diDz&K(J{GA~<$+W7Ao%2F|xbP_oRT~Jxz;p9r>{mgJKb|w_wQF1f8>%1tg@&3xM{0XOQTeX6Tihnqdwj9O4 zuQj!9ndiBJ@2Jvf%4zjk+cOhl>*1|F_I};)RC31%d1~DV#8qT)jxh1HqLQvEMuVJhZWv!BnN)*mP72hWZVJ= zwM$^V?m^e5De|Y2nr~W?|8q1AJjN96T!L97CgRHh!nxN-Ydjn|Ea-Ig?zM}Bm|BD9 zLkj=>_tknD32WTNsG|(!WEwe}Qm4A=rcs@($)~K+#luOuzJ-oiTo3MG--(Mm34`mjIbdzu2jdS)v~u7qAgR5e(-3EAK4 zJy@IUOI%z1YxyA-Ug#YtHb`goOz#Ta=|h^xIB`J8em#%tdlj3*JwHPW!m~+Yag10# zFYZ9pnqF<-FG4Z?uS2hG^w%td@|SrMI`9e{P0!5M;wn_$j!B+i&>ufl@AL%QX=bx8 z>AyqMRD_DX9F$1t+V@cfLUo4w`MRTu^t3l1(N2fehJp?o9tLs;*RNu{KNvDv*jA0D ztH(fif@u1j0o&ef+325ZDM1G+fB3V~Lu*#e-2?n6EfQ#2zY#Ym&i_QsL6dsxqRl1z z&)Pj0oekgju=4`H)67`PJzv`2yC=57s~SOR`>F|6c@0H(zBzZN<0en^{wLe`O=VF1 zmlKUI^FMm`UTyx5#KtsP9|5k~JHoS3%lP!WHJ#6HnYB;hrv~eB0)-cUADJ`M%cC#g zWaCQd(V!w>Bp%FNeOCXaJ4TPVri|31{Ohy9ydNJ%s2<6Ild}Q6rDUshXnBRgfyuL` z#iJRp9F_-iEG1qad!PW^qEu4v4-W;6v@X-(7_pq;trW`2Y+nEMqUUu)XFXd91l0{H}4+anW=FOm(JR0 zoc$)UroY{WvRwT*I>U-jvg+ggCi8JjjvTS;;D=$DJGPW}>pGLq41}2wN5>j<@N(ja z@UGrG3EZta;{{tCrQTay2#!-_ALcH6SBIzX&AK0G_ES^`4thV@!T-Z!PrU0T2-5NB znpwxb>VRxR|LWzlS6e-uO;m=*oKn!_H>nYV5n55faT-Zs-(xf-Z!EsAE7e737UR$_1jnft*Ov+e+l%a8t|}M z0Qz<9PptJpuLUXfC3oI8b|Zmmb~IK%<6*vn-7lptk_!pK+HzUBR(W3qR+V@w$3t+Fc_^XaVZIGB8JKv+qGi{ ziH~B}fg`pGu7Ac!5`ksYw=VWg8~aX&hn3S~P;5LtDc&n>C|8mW2f*5?3H@~Cl(FK> z$<^jIn@s719lA+9$tH7Qww zT0|Xz*pJ|J@-{4d!Dg^#us9~@=2|pA)H2O5{0;+1=IjG0bC;a4`EOQwVdDf8vK(cT zG|w{7;`?MvBkSi8&?^|~Ch@A!VWGGDT@lf4R@SW-?T)^ImFeL5mF}OPK>0{wCs304 z3@6Q>zqa`m4JeBJ6yLewXzkdPpy%#FYRwv{OtUVHe)~6=&jKtyrPk?9?S3(6$dp~v%rl!9_O^jlb2f)v zxMsNdJL_q1cM+v^tty7gFP3I|G*cJZz^vnXse!q6X*>+;OLcj~XQx2Rf59`48wZ2y z8Xj~1)v*K(#0|#$`bb2(O}C>cO*L3*Z*UMR^E_vthNy5(k8x09jCoSNH~oManEzC1 zMMXRAc1w31L2cO==G>EVNi9cq+p5m*lDQ!tv z6}O<{Jc&HDVjyJ$E~p3@4eW|6>~U3gRux_Yj68qqYK43(Rx3g1>BkjV!V?d=D7Xsa z^{$Q<-_q;}$Xuk{PGo#P(j)fXslqh;baY3|a!=%FxINujH%!;DRM;i436eOT%U^$-hqUvYc@86a0 z>*_wYN8V?Y7UTL?a6%vb74ciKr>7eTnbL(N#SZYx>u=@7Qm z1=#b4PAq+C+}B~0T^Z14XUxzBRevfR_X z{`BSlb&TTEMaUSw2ze!tM#-}p=@KKtGbUhr4(v$_){e(4+$%>j-%8(asX zMf0b;&0xk#demwnj;14a1maTn(|!4`=dW(^xM%~-2OD#s#a^B+AmY>fNN=!xeuG3)Tkzr!%l<@LX-~%)Xj>}NQD5rw z(zbC?LDD`!H{KWeA!9s)bmI+9^8&eI>0hOD_gP*LT_snp*cw;v;qyVlgkhuVj+ujMUuWQ7||!Ovs~U@XD9N_5}sAevvy7GR8>d1HRQDdG){;- zx8>(U^@dopNw)CK0sML@M2_qgJa9L>-~Ijb)dAqG{N>hHtG`%V!}Wmt4JzJSUR=lK zY=2mMr~P`*ndCgjdnszWp<&<)JW+|67zZnsKq&Of`lCM?fk)4`!11M(?euqzni1Kv zg?^ogd;gn83*nH}K~5caYEq2kv)82PWGe893RJ*WLL~QwO~B%^eerTZ@1nXkp23r4 zW(Fq8X-6IRibfs{F8Wgsz?3O-Cr(<>T=;5y6qkW~nveMa@cP#*0L1#OS&|!^`6}5y zyHy-8mc6k!1Bo&WuuFXG?CokF&a2rpJNCZh5rrqW(#2m5t?tb2qC^_Up4-u-`A`SA zfhEL#q&1)i6P5SW?9tV$-T`>9*!S08G4TkbL*0j`W=T6QK1Q)V-eZfL=}&t9_Zh2L zR2bnnZQaANw_P@q&mK+Mx3A3!yO)_W*;}D~4dK@dXV*xA%Y|By61Qnc`1>(Qw=l21=11GpG8z=4woNUQ)tBqMk`nTQY(Z>YG9#xF`@s>1-vm z=UZ*_&qr@ts8hdb(yh0kzU{&(U+^v)) z-P3IIXIZM(x~zF6sXvr+3%ECI%410DK0`38CX+*kW|Afg3b%~ObVVzo370p7t8n$% z35tI92bVn8i?=Vt8N71n9yYB&u;=E!S+V&$UATwQUJSL)~N`yhLcVs`=NN8yaONoRjzEgA%TO=-*hFkrU5I= zyL%!|05lnYlnB4%tDo&G%IFd8g`LyJY!Tlk zd0J6Q|6XRDn37D>=EzR!G2>Vg5tBA{R|Ws{KQcJco5;d^S|&be{dkcUbe@(A^6{yP zh={OcHuxbVe2HSYb-nDSX=ioBx^`|C+p##WSuEz9B4c))(vX6JVggPLy0cRu?tUJ! z*A%yh6liSmYZr}Wd@W;JN=z^Qd6rMPd+-JuVrvPNbk%QoEf!Hclys5}BdbpS9F)Fq zsvMn4du_&|a{L4{m~t=7vS4mI!wZsSUyifI(<2#9GdglDH?oNKd$&ZvsqClmBcF55 zuaQAfE3JDiZ&ewaM+xAr;j2rK__ulYXzA`#6;_tZ9Gv3Z8*F|l>~jRuF`&L%?_ zQHSp@X47|3q8HgV@`ghXk~U3XmQsulm|e4up7Am?Ju-H%-s7~*KJgN>tBus(I)HGx z?1Dx7hlKTiGp}1b1!Zq~bVWNlK$eioH+2X4&q>5lqzz{#I?0KvDBWvY#tx%#u$Ltx zk%fU)yC6ryv7_MX3yuVEmlwk4d5f@Z$mo-XO+o2Fyz~kmneO9Gax|`DdpQWNd)l5X z)&cu(`{eRJQ8-?GB4t=DL%}>74Tj`idGlr(p7>2b7-oK3^Dk(>#eD0!gYu&BT>@`UfL2y$$7QtRwP)n*vHY#M{IRgSxs??dTaH@v z?q2d}rtZW(wesMhlP{;TXIAV(%YyR;`<{!fEq2d_JErBwh*8!!pzKwgUDAp}){TzN zGL8+4YkT<-f723kC9er7anS~GHy@4}V+WEz`ke??iP7wfx8h%pq#WLwRJ5ZYl`h0W z`K=ElOO=Hso2=M)_kNSU@gK1lQT}_%TlwI`6=>_w$+ow4K8xQ{D~)dZ`M&w3p4(6B z?mzgn2(jQ(=CAXelJma_YU(PhxF|?;98{Wz2`Vjv>CRz(sc z?T-kHo^bZX9;KIGJE*c*22Vt{!pF=u10fBBn=}5^Bd|MJmiZ%oq;I^Xl}?>xk7<6^ugoqq3(K z!!!AbGPGB&8_$|Ck|Q{&*fV`2H#$dZ??4W zw)kCOl?>oL|Mo5akMnmVFYH0X;+;bc(O8)07#2Z(Gcq(JhrRQQqFo$c9o*STF70WC zq2hf;O8t$KeG^AopOxSmXn9)X zQ!y`G=eCxjb8a}G3tOo}e3YL2Y)cdBp;2Fp>hjOF$yXM&_wBLJr`X=b0A*G=0khv% znvZu^0-LwPq(a^N0?k&`USS+oNxaO*uQ0Z52CE-{VYCF8sZOXMWnQ%G2?OEv8yZqy zLgolycm9h|M`bbpw&xDBU*PIe_%xRFrke&Cf$h>5Z%Evk6z(EfFct%ATzePn5chP-r*1ZY zH$B+1g{`Ga`sUx=t)9RN%gJ_Kbo0a?9Ir72nsP+US*>}NW|1`4MJ`&o_V5-Z@YYU2s~1!`&QCxo#E z1_tV?;{Bm#Yv&%1RJLhv)#Cz{kpS*3s;fp4&uz%pW*y9&@ywc#>$+bECs({Y)4IAk z`)TjDb52LKPb4DcWNbZ-EzGS$0WZnj_~NS>z}(fK#XUKu!oyo1haRO`>{hUR%rVn^ zcuVA)>%gk?B8$fT7CNsCu!-asodSxv_EgqbES!ouEjh{VTJ`-T6&7{%f?{H{v$SOd z;e2u{pyDq3#I7cdvoo2+xpXp(eNoV-Z@kw=v?;Ffm$JJgb@b62BZDiUQSrbVL%D8a z$h3oMuX%x3Qh;vD;Z&y&HRt2`0degfS~6A0(^%;d^vr`oH3wRv@u{nw}A9Z5a9dF1M?nP_Ug|EucL3k;y8_J71SmRZM_Z2RBi`S>0 z-H;wWJCUKzU-~!yYnQmHA*Mt(kdoo_^F0@EJ0h#S|IUXva|fKeypw%hV%e;wSX%34 z?zP0PCzpSWFGVl01VTsf`H(e|2DD03uy|)ioX1vmsDyH@&m+L>* zyR_^QJ7!_oFhAUm?Fz|{_IC&vl9*r};$zuf(D;y2jtE_ueJ>!OS93f zrZw~v{a%{tvJ#hT^Tu6r0Z4dU>*jgtKH3Vyvc}}1WAwO@{~k_O!Q$H`I;mX)^V}%S z+YOJ!1o;+T!WA{35KVftNe-Sfor|@XFw-nu(Is%>#eKtKOG;~HXdG@WZ7-trle}3B}xG(h6Wqbn3 zW-bZGU;Mu#O8j*VWJ7;=AzNno@W@fvX9>6}MNrCR3F7rkMjhgWT$UK(c>57S13?a@ zR!0kkO^{Al;ezLN)Q?)Z!VlWraB3N5dS$6S#jUK*ae|Zg|C9&}4_E!ZmN$@bxWkb+BXbk}BzQN}6V{)g(z**;;O=rE; z_LCoIcCAA2Smn)5`_I8l&zQZ$wpMsA;UObI8hd%se9iZ5r&yfN;0`*i638$ks;2gF$-GMHeo3^Zc{%VPwaDnh zS7fxH&QcEJD?6!QEJs;YwF#BXLg1imd(m4r)+@9QuTT5BGb`bnsZ*J=#O`6)bIC>2 zvvH_xh-Rr3y0e*kuUu}81hy9L*<)6GN()hjrU$ZKy^t9dfXxioM`SFWw4aHWw$_DJ z=gej9_~idH7gEhWPVe_;yc~+vi0NWXV{M5gyWWc&i)mOFjk@V~9G(A4q;DVC^*f(& zLg^KUSihEv3{m(zuEK@F6~Zp-MkFSODNTpkR1~vBKVMsYF?)qDRGkR&6(n6(NHZo| zDqxg1mAzA5WAjR921Jz*bmllr4lQ_z)x0QRgI4+S1@C1s_~Q9xX~)Hj%lKOi z#pMOO!|86&&@Sj$JjndcKeGp6xv2`ozCYV`C6+JSmhC%ER5~oItmM(=@>W5IL_sFl zc?oT#z42vcAXcqa55^*f>+W0z0>ZWOSXy7Zed3;40XE`d&+PV;W|Ot?2*MXaI^qf( z4|nsz*pe(0*tju~R<#l~N%40@9DF5~F7rs}h1Vu0ijmmzKx1-(`q*lIX!1RG{WzdX zp)OPO`C++$(!0^VrDM?d2NXMWTNHAmVzU1gO(@c`m;* zq0P~K>#f#FyJdGTVfsgF=)xaM=8nCD$d2$ARsEM=!bQ0|zB3>B`41c%N}fb&T-!l5 zo>!W{2N)4~0*J%+Git7}KJ0&oUDQfArd1>bN`gx)diU05jIP?#@M(_C*2;N5S*|zv zacJH=;XHfvo4A#Je+VFnfo?qZ2q2v}@;`a(|1@!%GHjfN;R9I$Zyk*p)Zwh!_e$SXqt7Xx zbxr&Q(j1ep$P;rcJfv5>p1vMb*hnTN0nqR)k)q1!a)GU>8b2RyeK+cHkSf0id$-`Q z%{y>#RFtM8n@BYG<#FPEuj>TWlVqC-m_f+rTCS`$Do0Y}kcgau?@>9I7@akV>71%r z`k-*4*stRm*agXFd0Zpgy=vvbY6%n9l|mL3)5fCGTK8sQkLjB{IJgnqyxo6tm%pLA zC_sPjdds7CMd#Tq>|Ywm5o@_)y30FV+a*?cWZ!{>RP#9AY{%d9fi{#t8wzo^Qse(k z;c^OM`;ecEQgb$P-jD~J*~NR*r(1f@NCTK#t-Y!oH;f67)UB@5$4xt)Iv3*MFl@Q! zUkwzC_sx%g+*$@>-3%V_CC<#h>_2ffJ3)L|S&ayHXh{pa1aTshY;;D{O)7jyzW}-# zIgS((_(PH9!GVeV$m%w3RKf~cHS~tf@NKhk%ygv!kVBazz*N7dp4fm~cblaf&E=gQ ze*D2w&dj+FvO6C$s`d+@?^W`ix=eTPv<$T+@L#ywh`sFrY?n&!A8a`5mS~;Vi zbm^Ax#d31K^B#@Z*nPAV`t`k_g_N)Lo?_t7bQj*kqK?lQeY_3e_%ursUpv6Y4pdkl z3AW3x62~5usDuc&%!SqXYUqrJ`;CX)*|%#1X^ZgHk35v!AIObh?@u{@Y&RH*eVVpj-yGbwU(bTCGp@1u zT2|ogSy0FI)#z<&AXacyb!W{Q#f%yS{qOy$CMBJatU#?r%|Ak2pMFrY<~iPP8K0c9 z&pwQPy6jLJ+shw%;AvWgv(?doLfuY(urq$_in5;+-R(9?`1JWFrMi3nhHe6* zhqO8<5B8D?Z}H)8Yutc8f|6T%dMix(5=AEZpjL)^zJW?oH$^gB{G7H;j=Hd1_pt1T56zwulY>BWW6#S#(Y)-Fwx%m|FB`3*BQ z#81*<_fW6b)f#O!nmkbbC510P7WWHH=Yfm{2(6T=|qI z&}xjrf>tpxFYY7=;^tw-JC|gn zqgDKtQ>9eH&^1zsj1wPtasxGvAP*m${Uz>FzL7_;$1~m$fw-G+nUdb!mhL!~-osjd z3IeeJ+JMd4qZ6#fa#HSMEMCsP>2B)U`z$D^VOtNU1?zxt(^J#~_6d{S3}hN3vMI@l z+?siEw!hYPwA>f-+<}yi=UqFD^R{PN=H*{lZ5bYA%h^~rCZ&Zw*zo@1kz9-u5W02M zcWk)pH$my@`@`tx(0fXkC)q6~vV&1Ff17(v%yFO z+wp3ecU&=gKSj0+mWOqgdiR?4lI6?CiB9L_EslnXi4O$gEY-Lm`E)C>4(g_~z@tQU;>z+#;yLQv{%k@Z%ID<_k~p)cCg6sX^0}`4efXAP{@dK+{A48F7%x8mDJE1EQJVqJ`eD_WS z>69#goA^@~6g9K=9XR60hPk#`%UG&=?8zHxnFNJv!I885hnmr5Hu~Es%0_%N9V_!D zrh+lx2eq#12w1Z|Xb|uAehcK!O9;eXEj!36p#6zJ>`F43sKV37<%76k#jqw?SYnufK`*|UzxBwb7zhQV7@ z`B>*0B3SL_c2=Tw@Ze#C=8@8SGX~fiX0IHB-`^R=Xzw^vVA&)S`AANY3NyO5VbPE- z0vG?`1yYEC&qwt`>tPun+(OPt zdlcNJS_$Y}l4~{!@fp*93%@s`K!Yu|C(>7b<(He{758c;`IQCP^A+u9TGj;hO=%kT zKhu@)@_ElgNUVRM`)g#!MeFRFS3u0?f)!2+K>bElgGh&-C4F{Fz*I`Fcm9a{0$EqX z{Q>h8b=-zm&1ss3O?JwQpr>RCWkM0wVJ0Px99VwM%pB2pq zp=b1E`}@}`{CH84q%T_3E)D&h7-`J955KKf(MDgsrgaL{sFWyEtREzB6cyuNiW8WM zzS+#Z*0do3dpb_|K!uEqBM}fzm}#uC z@*(}*mHH(Fljvwn4Xny|)bS`Cn*h{rPkljQo+y)y=a*OW65VpfMV%V9m05+H%f9kg z%jk)!h%!iQ#vwsI*n7Sh>e*?SrNfXz@}w=oc^`n8H@Q&e``NKKL)kt|gqCPx?I5xW zK5%%p!ZYQrYcEJbqW5gr$9v|W{_~c*M5V^`CCMV7=YRkO#W@zG;DWaMFd8#K9;7yXb4w0FWpjFkZ#lmSqVW2K z#9s_GkAmYzs|4b<0ZV$<I#k{y2W_Ns!H$v(eld;&=89e!%c~9WBhtGtZTh(l? zEVoKc(BQS%Z_J!atp37C)OoW9Mx>Lg059CMO!!?9#!_}SjyFpcNZqk%-q98#PjR5~;Hf<%&o9%jQNClm9%QW)TqayeV1=Rst;XNS&6l{)8TdtC4n|E|%1G8Wu<% zrY6~@Tc^fPxG*yYN3aHpQxJ$3ndj_y*>h9Y8x}lsBct55QTma-mQvk5v%+8ma(?Yy z;QX2z`F+?-Dqxw!p+=$Bql?rP{b@}MP^Lc7;*|_&ht@qFc`@TBH+TTRljU2?+4^dJ zrY9*MThS-Ue7(2&vEzO+@v)$Q1P)WQLeC{mz}AAt5v*Eje(z0D{r zw&OrFa-( zh_m`%06B1T&*0630(Hf&lCOZ@FTJ>m?)yTFf%!aLmYm)`)6I)T5)jRCF<_Q0 z_b<{)cx(SrCf4}9CX}!UXp;)kGf4_`SPx)m3{Vf6JCt!qwof)PGunU<262ab{}{T4 zl6H&~u99|+jvMV;IwY?JqXq1qxf6!FT72vn_7`6*Xe8pV((1msvXW= zp`2Rj^iOb~u*F1jN@u87ZNSvRhCj@UqYX>?V6jR+@YGvue^?2a^`Wo~7n`+doQSpv zmSt4+5o{jBX>mf4xP~;wH4oI2E3qb3Qd=&mu8x{({Ch?Fgn8WH)PqjjQLvQW6p@tG z8)wC16`1`-Hs@Uz&w99bq6%x!zR zL4M)O&%FrbM(5o1c*CEQS|^a#kal?RKr88^FHco{yh!HmO;Dbnoc4%A%YBBuxgsvZ z@L?a?G)cYN@#jBGOr6XaL@--QV~`OR2DPedu|8pA>_J@SX-l0EVSIXj?{4z{%iQW- zQ93)TR66`6*0yzJ^qr(&aXhl11Wj`9oJNYPR0E< zUMpdIsug<@*V{iDWCn_rGRhsRR7po9%c)D(CK$S%q`Iv5DoN+mQi=y2ZqjpU<~W;2`ak6phyW;Wjjk%h;L+u`kO$8DS_RA4u zw$@o5f-`W{l@&VV?K5+Kc~vI%s$=QZQq{Wv+MwZ>4z+PXt61ynkgfFuQ1&oNXO&SJ zx-orGSjHFNd2;l@Frp^!)r;nf7@j1VId{;`OBtw*s_0Y70Df<4cbL6Ij0E>rC1-ID z*JpvrC?B3_^Cr%t3D;p&^MrAy#{rPIxmA?K<95yPiSJoYnsLZb1U{}(;|#M>i`csE zdghfJUyxG6w^p7(>OwkL17B{3J`66bS9UuT{FCseG>^fp1vr zBk9q7;EMpW3@eRz%M-uBLkEAaB(w+o^B*7HsoC_W6}_D4s|{QFCLSs@=RR!j>CAVZ z9!SVvIY(UHs5yj~*FJB51es0BAz!aCqRfq&Cpp*6BAFGlqLl09S#_1%&+HYv&O75X zgm)@9Kl)#H?u%Bg@urWsXI?^F%LA^i5E$`ZLPRLuH?7e83MMqKBoR`)Cc^nK#`%U3 zw{sW_{8iL-)bh8DZ^`xsV_aI@mZ8s+FSQSfwJWJXoc+czX^v;X7!n?AY_vq}y%{-> z(2kP>rWT3urHei2)CZkTYWpkbi86J*k7JQNpwML4pu;ncUPNkPyHt3by_0t_2`Me$?yCVEhaWaO3A_3uH9n2d^?Om zD}CYQ6BR&&gjH+iX;I;877c*V@wHlK?l#fTv0r!V>)B`E)unJJhCvc(xOJ&wrXj6T zt{EpkD|MI7WUannPpWh-WGT^QMxm9_oCQH-q;`DN;@>kb5rKG-G6%LmN-ZsCkB|Cl zcz^Dj378i3HemE0g@?(lW(}>HIhbll)plX`%fkhgW<-+J1pXa0+^R@*zsU7ZPdAS3 z!i9VYiBX!=e)vh{D356_{q(a&*dA3X6BXEtvbT2^A|ZJwaaLT7jEe27`(A#%naIE5 zRYdxmf;sCKn5X1&|G;s2>P8J+B)h+lF2W;J+ld};IR;*QG4gJa5FJpFf>w7|WgIw6 zJ=1w_vRg$#Q_(&BiDE`%E&5mVEJP`MO{LmLI34B#s#U&uLc8Vu8F@jz!aIk)1wL^Q zdJtIUXj1oh)K7{STGd|r=P)CjM^w8JsamI zvToUZfUxq~_?vbwjASu`K)?v;mgK4+aoKm-I(JS43j{nA5YB#^y+}Z_bL()q$mX5w z^H;b?4nI9r3f-GvEOA5o;awoLO}vR@jsay&XO=wF=+G(ps;ub3-7{mRfYPhmDk66g zHw^R=#j!5T1(FZ0 zVJ2Wp+)!%He>HH15u=WtuItXKCY)up@G&|6#Y~v)Je!mEAqdJGH*4V(e?b-ZD%>`r zD3m^0M_b1$R_~paE05ju1S+bU68!yy)`1q)xNE){JD@B`JinI3W*Sicmi*jbO(^`0 zp`yRC4me8ry$oH;A0lMch@;u#5o*7U*i$?jRR6>4y1smQ*2C1;(Q@^RTZkzz z80dxjDPcMKQ(#DRnP(=MNaVlQG-Ps$jVkv>Z(h2n<8D3ZU~eJL%Hn#{Ci*l$McC4%Wg2>%bVT7T z)qKAy?O7re?>dR9$>zJhW!$Ki%CgdxmXDK+G-8J>M9R2Pa-k-wS9#Os7`ud2cwITd zeHbG9zq>=J$oRNwW&&Bv)92$a_FW0k*-jC43#CWGC|2RtT2QT?{cYe}*3sZ4;y?ij zJvsD}Szb_LpMNWzonrJzcQ!y94&;xK_i}B4`asuoRK>*)61Oa0K7IH&oBd;H!{#}C zk$$`-ncI!bslNn%6aTsxST?R8e@A)SF8g} z4Q#&eJU~16fCTj<6Hl$5AK-W{XEOX@(SZrY!I*ZEZGWQYA>%2?FPT*g`TRN zJNJ*3KJe_;F%F>(*Sd|W+C2A{NmnED3^olt^1lZI3KR`omGNs4Af=;&-AaUbNFD9r zC(kZ5+2n-bbMWVeIMQ-uL$yEI;dT3w`jX^NQaB4E{~`u3v&0dMO(ff=s0R&KSw||@ z+!vJ;y^Op|(%ELhXVnyx#BiWpy39^#$-dMQvG&N#AM{r3aFzFRANvBKReT3tNvg-7yhR}ly3X8%$dX`CRy z)>WhK{To%JQ29xFUYpn|fS=~XD&04Yn!iB_w8QIpvjN`ryC-z{|1CAvvIre{y!zJ> zX=q1uMI=d%`AgdammmoOlSvd^!+F&gLIT;44x+sviCZ_%wbWnL$Fh_;z4Zfz%-fam zL~E`<8KQPYKiEx(oJ@jV{8q8&oSKoMF=qVXd_8$fRABc@pDZUYGH<%Wl&G^bTW6-X z@$oB3vb>L%-%Z&bHZui}oQI!XeyPcwPoXO{EnU16C!N;Pbo zr4$oNjM58r<`te&(-O2mbbE2gjeG7$3{s+Bj}6>6y%y)1c#N}i_sbBzFt$}CpHivi z(E=AyrV{t&c=YQR0F=PT{WeXt{24EKJDR5fci1~!T5N(}Z{g{){0bVyk+Q_Y%7WCW zM*KO?7x)hAo?eh{rn-K^I4g-$(l{0k*Ekhk-J=k9EInjwi-!0ullIfXJePcpjmMT9oZnwO_CE{P?XVlSC-Ag}iDB1v;0U@k z{g9GoJ)38*OYlvg*a_;UBFv6Nq)pQ70?1s6R*FC~Y&E-$IX}fl*lW6w#^@0iAk1oHGo#d|<-F$$_7{cB*taE4m^QbTqFBT1QC&Q3PKzp7g zlsmEv$A&y4=thjw?yW`)!cAo$Gul`Ikch2$3Nf&42cYSMhFvr(V<#>EQ(&X%E>N?SgefksWuklDPYgbg4w~ z7c7QK3pn@}qgALLjxcqVLop{lwQ$*282ox3rOVKL@mwbIrUb)s8?;Ip;BqBLQs;GV ze7|0SqUVHa4jufeZ8WBKf;m;}dLW(UHNLbfc`eg;Tw`11MR|q=$o*FMIK(QZRuQh% zl*fh0GcBTaZpnox#vF2vK4gn4p5~)}A+HF0NdS}Ntkgk1ND&8|7%Q&})+@V)yr-zQ zltGEn5>0N0#R%T#B=`~le3D~auC-&64!*;bG|*qxL89^IJV!ab_B5p+xwWYfkB=sE zJvc&vzjAhBdE2xN*HVg%&n7$EDOm_CHSSWc&G+=Z^t^Nb2ImXUYOqS&I`^+c9@xpd>D3K+IDH&}__eo9KuuB=IIx? zI#@|L_;*VE9*ev7Fq+bepnmL~Fr9ZM`i2G#VDWRo>&crb?@Ha`+&>)Sd~)U0n#xd= z*uE_PG&B}wyN(@I_@!^89C>~Je}C<}{2;<3XD%bH&epSglDPPM=P^uxcl9r}MwOOP z%7XKEeXPl^YThG@>fOMam4{Fmk&%pn z?H2i?Ak$#$&QknI&Xat0G~@#H5ZPktoD~;*J6lV%e1u*%8PskqO z#8pi(OQD5Mx0~yHvyjt;WrX+R@`)6IQ&rPTEi=)3O!8;~UxdmOEo={s?5{tzZ#%u` z9|{^%Y&`eeeTMY`{|phF)A`hLEbK=K_!)<|QjNJCRd!6Q@%m`JXxO~SFl~!_#L`fT z#9p_8BRt=+_jSdVFWdm|FPtpcjtnP2j;%Mm-veg+ zjMqQbH+{b>=K3fNuF%O@oxdUVQOV_1=WYHkZL6n5PHe5%LQ6Uu}U;a?j0D4DCNr@Hj$@ z`$~lxTxb6DFWq)}L{+9HYna#4B5aPyxMwd@6QyrMd^dAgE(V7i%@0l=O)F1C4Q}{X zJt_Z$gqhInyb)#qFsY{L11L~+2ai(P_%J)?6?71{t_p{mF=jRcebV%LqZRfhTB{ki zp8Zr4ijoZlUyx+4y+>Ojf4%PY&x`noft7RX2tZ}*x$`-B+!nio_XR5G1G8j#h=f0c^zw@%97lL5Gp5fa&V9-@ z&cvcG?`bm`*}!@NGJKA-V1n~L?Y{8ekuWKT z09Av%MK4SAl7o6U)PngoVs>2EX`6zE*L8M%gV(t$={mcJdh^Q-mYE%uWXbB0*8!0$XEQV#IYk#g@u?^`EMwdUE+X-O;il@bZzna0}DEt7?XwyNyB-$jY~% zy}4X*nV*B;-1|VH+pcuaCCMCqKfDTI&6(sfc(;4Wp-yj~WyCD$j1@R*N2xm|N|#*n z#$oP6WV)2yd;S4Hv;^*WE^|)>x4RQ<7>Zlc9(8t?JKO*$I=?~Jzcg*`;M?``PlVjZ zcIi<5{VjOpP6i0X0wO4VzBM!|%-!Z-&Hs8Bofi5_vt$_Se^>x&1p8MZ^?}3KVW4?l zo6~KiVN06lNhXFMK4mhw;xAPm5vtovJ7Dv}jQ&BB3#^dHlj$Bam_5nIFVsi79uoOY zHAtSLLM$7@DMKuNE|#R3P+E=^T^ZDf2>QjUdj=a)FyDvA#L!!x)Npq$9pkH1TsvX0 zxx+<7R)OJq){+{{+Ri9N&nF?%iw~0IH!j+eTlm(j-OFR8qbJ%=x08?9coGfX z(B{aYm27m*p^iN1d(kv~e0DCPN57V%V-Auz6xxIq4-tT*m2>D$JsoYy2~FPmyCr8g zeb!Sj9T{lodr!Uf>CuwbiXzx&T5X^7_@!JeD)4uAxRvh*aP>0(I$IOowo1umK%mGH z73M~W``MWmx==A-W9vy+vwoG@#Ri4e_oE zI(iK$%22fT`B~l9`F3LDcQp%LDd*uy$f74qaZ0}SuT;EVPpO@i@69ioyWkT0sWulh zfOSFF^bN*`6}1nCy@VRgAfmxZp4e<*UpJ`dbCez?K~KF^&7U52b&h8Km5S|XMm zml}eyPRSd)#l&DU3&93q~oG+BPzig)-5f3;dd4*1{yk-J~L7dV8eTIpBs2i>XuD!a0od%K4 z7vwbQ)l~wD#NI~6WAaUgMy<~lLWpD&(OZ+5F(yvc_Y1v>GS3rfRVq?V*A5aNQRTZcjO0~&Zd zLwPN8>aN3BaGU|$+jbn<5+^8(>A{0S%!vX{4;2~~(h$Z!X_sJcyhuAc57bK(ekG?h z8}zy2!M9=>T}DZ=j5#gaAnrmlNd<58ET+W!#I!$yR@OI7;k%9oAUFkSf@I3WN&+4! zIu#L2h_FR!$-OHlMHTU!9JIOBym;VBU}*Tb{+$;eKBVPjcPXhprJc=75;T(16_?I= zL-J9{TV!U}L^3;@JDm&xWZOqdE^G`nkKb0BHYrEn$bO%HK`v{Q?+FFXsRG*Vb>IXr zX`{i1ZRtOo*?i1QvU<-PQm0eL9K(IyPBsj;2i=NF-CUXo2G?_gck@I(rm9S%wxsAC zyi1)M#?C_|`|@?)L~i*u2$k@9M&Iw2s?D>(c|G_3ol>j3qLE7Hz#FW18ts)lj)=x+yhDha##j;{Oh?-1~b3H^*$`?obuLKYJMGbEEwT9Mn5XbASao)&+qOo zGQCfVcs!FivuR_dR&t4bB1PIR0Z#1l68o~-yN`?!jTg5}T8}`*m?Q&Tqw?RVmRB`q zKbVRg+=u)Z>SJV`%PqZ)9hm9c*aG2@s9IVi_oSAc`^?EX4UlIYj z4PU`Q=}r{X9c=LQ`Z}A3fi?7CcRwIA#NY zdyGK~JAam6YkV@k(oRE%*x;CK^#~Fm_JD}mMNaX+M~?9{Y~G0Do*LTLsxa@8gsAP) zPClXHDOe2hhrC>1BEO`W(lhRg@=5aOb4tCn{FYy;B0yEHU2dK92p-H4bda>+3T8>< zJouWl{#k6@)3-C{7qc&^n4P;X@jR}jg}7wm%1Z6&(_(Q%Jq9~&XlW^x#}~_2gnb4G zFyeLbuXjJY_;^)DdfdpsCj(Edb*P!3?ebJ1A2FTNssgf65f9srC+Q2o1xO~S00qqH z^wA3L%rw#6(3`x-%*HOe6kECIJAwnaAY*z|GmFzs_E%&`RHK}vWci5UohbeH+ez|T zlQ@y2N(aH#60f?cc`$i1UArrWH(Gk(&v5W<)nPsfv`Myzl*E(0u%yWQy4?ml9~gc6 z2D6%Qg<2hKz29HNIhDJ5RX`)Gc1!hHm&lxF>-DU%yOIlyPe2==2?|qgIwL7eFt7Xs zj)hWq!32C(_`{T0UpAAKG9z5sDUBr9%j)fNxWE~Mtt81Qp56^AZX+h^fA>ZMx z|A$iPw|a40h7Il3{31Tx!{$($>$KZz*t8{iH9leXP!)I5amfY=hjOMh>!tZ4{4H14 z3xy$-n7(0N?$#ziZo~G1NQ%=k|I;eI#ZI@_LJ7?(DT$p=aK}qUpyE(tY7AtPR6o#3 zcjzu!ayIz1OZS{_L?_Dl^(e`3vt42dmHA7qI-%L6`>|b>IVdgrGz4CEeYQVz&nn4} zVw{<-$?Fi>i&Cxmb(&(JoYQeIu^MM3cq@7rU@i*!^YdF<`W*&07x?02$wQW+_b=f(Cb&x1wns4?|zM)x8g zDU!}^(}utoa*4tk!~=*VjYd|APfYY=gcy!0K;xKsh&+a9FwTpBYI7wp$D|^c9VYHL zG2ykd`z_EYuX9=xuUrtb_Y>$r2{_9k$j6%a(fbIZvg@NiLqLeoSDz8}nvRYIVNSLs ze1YwPAp~#erg>i>7AdVo`1(A<)Z3G(y@u20?Mq7)X2@L2Cy10X#xJrV&Lq-2o<4u4 zYD~{nvQ!$3kLUhn6Q{EK7Mm10vEDGS>+gRKel0;2gt_R$K9T&WfSk`lWpKOdjiv~J zpaa~65?aQBbkjwn%YWQv`&u(rHi(n{1% zt1B;d5VPw;Bnxru$If3@B#akfT?=#P=+%dQ#z%^Nt^E$`DD6Vc+*hFb5RaCuYiY_& z#=Xybmsm$WA2!e2YRZ zvymxm_}Y ziuY)H3bs5+Oo=X@+!|uaqb>3HaXB;!yO$Z^F;c@vxo;+Z05M(oiL#WF4 z4Of?`krBqv#s5Q~0%HY3wmlD-7xJr{VC*jV)$jbyl|+gama;;@voH!?(CN9kcLM5` zbi1c@W4`Ns*H|MVQ}xO)H@~)kZq}#&T&Zy84WS`H3}hF%>Rkp=E>ZU2hfjx`{?OqK zm$u~zPnOcrp=h-Hk0#=OfHpg3sVbDrmabU~?e?d5D)b;*g(sW+swMr$LAFt0;o5T- zjlegv1s=3~DK3Q-8y=>Y^%q09P68+Os9v{!gZ>tHbE(R|5| zj)YA6KFrTwRa+>qNhorW4C8pc3XDT6O%UzlB^T|EwMlkH9YMH*JZ}F`w^cD@ANgeD ztaIBA!7$OM{J{zB%46M%Klu6Yh%U6=Cl4X|Tbg{4hl!-1px2QO9mj|TN z%EG5iQoMXrIXZx%)Z@QwZOJ8jrR)_uBN6Ekb+T=;t=vz)TQ-=h8 z55vp{J|Zmep=WsR-ju|SeMM<;{?|Z}Tu~4t9+SjlA>Ql6bl&f0!s-syAjMf41txewNI`a>j5V?52`e7o`_Y z$p)qntO&*UpYR(hqif3xrkUg&u&*IWUJ+#JL{V$Yb9tX=29$)YBrHDV7LY-07OD&f z?H45?zDw8N&RX~VT#5TiBj6_Y6H7app*(7MA}O+jR(fid`d7T~C4mWW_{r+`9MU&ZmQ*yB&+V0KDh+b8A(=0d|b`Yo=g7Z1W| zkjL#8Vg~aArj!=YB$#UDf;A+CK|*P{e_Pt`@-L;~WYbeystOK6N*cO7>%QF!6!oBI zQIxA2ufIb&)toVbSp$8!|3oLkJtDbc$+GcPJd`dJt9o(TnC)0jxIV07@$y_>3@AHi ziH*$va=^NOZB}DAeNmQNc2DCFJvMRs-eVn@5}qD;dqxCC3ErN5*n9miFO^wAchhII zF`}5kVLZ)!I?jw0lK8)UAzwU?u29P_BEJPS5Fml z(;L}1EX>!M-Z@AJYOW55 z#$hvKe}83UlJP5hds;7WnxJ!^g^n_qOyQu767vsev!uE1uY#EB#=iRnh&hb-V6+SN zp(Za_i%NbY;&WV`Y4(r%sJgapp^5-j>c9$o=X=dsdu?k!`wv5|-b8czs$lNxz2mA- zP4-6RZ3IyBQSVJ5)&RLcsNfKk&YDgeFs)O5aIOh^nm}eNxjN8k-sYfaQzKb!ZFwxt zqC8jZNAXvU8oBjOfch?nOWA+gfT5Jfp4*PPmroMh2s3z$B98`~WZsA9_z8aPWU>&P zYTYUU2P^8Yv!C|JN5dY%fUu5`ZvG(CV^Z^UJbv_H|jxW!qixLWBl$(gdOu3+tt9mR89-^;f46&LsIQK-g=K z?y(TOk7gIuq|`xMHh?br9`ayEQ6;rSog~XxC29Pmdn{;6)rP~<@J_yn(>_!DnpRnt zR*+yqdR4K^s7reh_LkZ?#H~p`%IO^PjcIl<^{e%W$}=+p_t$dD9FR}KkuZYWoSQBU zMI#lJoP4rn4TIFg>5#}RJani0W#4&Sp^O|LrPP#AWc;E%h>q2IMU*hr`=`bh3B>-0 za)Xf)3OF-cnV#H$FpI?Iun?b+NGT)H5X zLbh|7#asSxp~tI_;P1oa?`$EyCtYxxOa}oZZU?W~Mh+$n#= zzJ7EiN624W^)VSMYIl=6ppN7Arpue_mCj67vnG-Y#Q%kGKKZDox>QLs>G+f$>YDg^%~!5dR+PbuJ()ySVtPuHc{+xo#yd$PaeLO{hWWri!KlZsx+@_D-AuRDNR`roV1-~+G%Ik zfKbO_d8N@$%x_nP5+8xLF2go^BIloe7D!f>F^bi_EF{Glu-P}w8fYOt+{pht#c#6L zGe69GxIL6N>BCa`&AwQ~Cu4@=H*fp&bsY&M+-cgvyJ>o^-B+ae554dVaBOduED3t% zYS~TF=e$jMctFE!+W_CZD8-lL8y7CElA%YHwV_iNoy<@@+b;R`_%CR{&jD8(LJsh_ z{05wn9}?|Z0fhWpokLl@t^CPI1IhQgGw>65xDLjAHg=G7lIqovw(nh>424G63oJw2P<9Xl4Eb5wSK&PD+ z^{Qyhs~2lu#GPV1^Y z1zLdQ#PMG^l*4u+#n(ofW9r0!vR)Kl=i@lC;Zd}s>C|#fYWHr6 ze__2y1#SMEe&BwxsgQN!`1Q1T*=R~~P+{$yX^|&Q^#%@qlkZVjEr&3xj5)+KiXRN| zS!>1FWPrZD(j>P{U#&j>||-rH<09Mh_3GfDtIMAxL5 zeH?QZ)w=SL!d<;5BCV(K119Gm$ww5V%M=J9VttLCe&Vs!PJUlE`sUu+S$o?~JNaO* z3mD=Aa(iP#Yqd2y{TJD=Z=4+p7x#wp9piTv0MpCn2c`YSXEJ*fBkZ{V6ZaJPciWDs zr?1&Gd~Ib)*BvM+N|{wr4ijqHf4A99QddCh370U6Mp92Q3ZcE-d|uD#doj*`b_>&! zdOD57dxA%P@_I?CI?B~?(6ev0d-dON4ui{UT;j|AI(gFP)(+@OE6vNb9RSYi#a%}O zX`QDJvtw*PeyeDJGjO=`m$OX1a`Z}UQ@5AYFK;A}tvPhJ=gSOF&(G$8!7jcBu2_=b z6mRQty8S)!dahHF{#)%=XrxYIV%ZUIj|BgbGOYQAgKzyV@uk z*bYi|D^J~a15-8&(qZBcYOSLM!qLK0^`6U;StWwdto+jpP>+jf``*rT_GojF?T$0q zQ?_vv+C=kO4t9o6uSq=97lY|joppa>v`^ShI6qGyKC#0x-zP4GJD)8pB8T25^$5k7}690NV{Y_n(&@J)I%~V%5xnCq;ubHKpzi+vcwqNuhlU3V|wR64zG!5?oLG zzL=foIahdx@f5D6M4c4%t{bHdfD=V=X5rVbSWE_jwvD#U{QQ%dy+-l8Rl!tFk|A@s z%=NEBh-hC{T=8@9R3_po6W)oo3QcvLyN9TgB}Y0qG&<0WinL+4j9lwzw%&iyoFG?? zYxtZrtica8ORT0V0(zwT8$#B_i3f-DuELE#mwwGFG&|L|$9G=U0L+^NLvQ2b^#9o` zRIn^dg0q$#43vF2FL1Kk)C-scc0ta)Bavsj-N=s-3G2BPEmXPsK|JiH)@`lD+ zc^}uwyjYg#OsGhWl> zEXp7|c&`T)G#&sEg`cn9i{z1x2T)YeOitkRP)X+Mfk7Tk)2*CfMBg#4iO2RNN^AyrwW1ULSO z-PojgZ8iL}-VVN_+vDx4+K7&erKFD-N{Mr zl49f?z1%D?VLF%<_qYc^CZh4 zuX~kycXW5na21_m1V9rQ9h^relC)}!FAcyV@7nk*zOz~>^x!|7w z!zH<_HQz0}pw-c|6 z#TR&)r*!N%!)hQeQO*w!6P<=|G1MK{NWnM!*-r{Jkj2Vss!jiV_!fSm zsosnX%%tde$#dIlO{0R}yyqyv2HJ@H=7M3Li#KcZ`?Iuf%C%f#K@kqBZ#E>PXdP#C z6IJB{yV56pCK1S=Kgl<2BCJr!E8V>Kp#_gVms$b1-L{k>zS>T3?huAxt5RVqk#F3# zy=`7op$HKvK4>#WIwz|cgX=1Th2O-{E9+#$A6i_fJjN)+r1s(<1?&shQG+IwJu#HF z*HjVoS7ITpc}cZxCr=P6+L`yJIkA%61^R!8!+T+4xDn%jZwSZ2L$+!)_fa`wVm%0J zgN;|S;2d+Kh6v`lJ|2j7FI&Hyo+reI!2-0j(`S}E`uCL2@l^1eswb9L-(z(I_?L?K zjfAT7CNwTe^{TIRzH%#IzbS5y)*G^3ZbCE2h@wgd^}FyqwG;2iraP#(&j`%=z!GhF zv;jWoRVf-C|G6Bzi{Dg%^QJj@_v}K$gsn`n{%S_$Jf)waIRYH#oK5|~gs{%@bLjcb zL>cQjy+`hV>4WnU&R+QD6J+2Ir4OwjV_HLQO>xB||W9?9-!?GAsWWiZ;b1 z{K}Ll$KO_+TZfi$mNh(dqmrO5 zynZN59cyGZ-FEH@tQVQDSiCU0Fa5NGd|;sK1uAU!^{sQuDPb?#mP~mr(4o>M5|viR zY8%V;srpAhHtB&<1L+)zo_Eie-gp_wq+#K!t-&7{H8@kSsrl+FHbiF2&PIoA+e}N? z5*38T72o&9U5V1nFj3(mM^N1Qo*%uZ1D^a-@I|0`1E)|=SJ4ErskGyFRuzlStKUq8 zK3x3$mu!$-EyySA)Jz?m6L;qdi@W{&hTxCE+r)KU0I{!91txmqS57|=OEy8ZnYb%~ z@W`@!wZ$tPdfnG*tU5|XN8*8TBsJ6ynT9NE#SA)2#MyB^af_dmeK=4XB~E6<*IPD&eFCOvXe;r>-SoJ=l*0#eb#y>?Z3KG z12*3h)rQMoPzK_l=t39Jlz<{iC-; zggeQ+szU0PD;>rvF6c*`xGWn{+&P@TNuw%GSQw1&9P%~TJK#w!K`xoE+ftf`Z~b@o z>9&f6BUX5XD<4>RLqk@i_4RZ-i%p^lnrms-s6o||2$3$c0+_f~>b;&z?hD>&8(mY>YOsF2zW!s^JrrY`*m8EMBjHTuDn$}wQrqep}kXM`d zr5Ep#+u)r|$ZykRsuJWc24r`)+0JM4Do+1nhx-7F`ln6*s@h|!Ij|kYCECF%-Zj3= zTBak;r~smq$?>7__;y|+GL62it_R!Jr?KEor5w*?8bus_2t*L8x}xyb8dt@WN`U7! z8KLS;Zig8h5YesYmGdAwBcN+OEyrV*M!GL^_!*nOZc?oO{3HZ4;o@KW412`cbw|ON zV|k(iX8(4SGBc=lo_+B8uhWGu!=jLh7p$w@qUZBV zStXAIT(sX^GgT#ZYog-LCD@B_#P*=TB38$(PX@)>dOzEs;-4vZu6xl+@d+eg=>)#+ zpWZcAnD#tcTi`1+;@-6tz=C>6c5e1Nv!ZbkYi;%w0b3uXV<#{0Lk#Our5>yfXSi-` z_DV+{;Lsy#JjUl5`nJ;=j_#Rrys6gvMy-a9xfgNy(Dext&~ZG1zI3O)F^~u_=7nv5 zutORn3@^wYR6Eoi+1aEIwHgDEOKbOPO_+HZDFX^96oC@=!3|A}C@XX%mHfhFJQcS? zC2r;W-!GcupD(&PRk*P&e_4arhYe#Ur#9e`5I1-Mlzj`#7TGw*m?axfaw7C7RBz1R z%8I{Cqm92`am5!;)9{u0OkXsyel9V+c_@@px8;ot8{E?l^$v|o_t9s;oh1vEfu>n| zL^=;L;_2B@jH~i)s4( z%NuV3DJvIa#~%%?3h4QjT&ymQQr8#VB+_`ONu*f|b_`govTf(J^w*H{Ik3dGwFX2t z2U_M57%E&ys*d{_pvX4A;`ud1vBc{I?F3m!K!1lY3)bZIsTA;stik|=2ODJkyN9zY z(->Rv4WK!fD`uxO77)q`cZ+W2Y>bzaGnp+Tj9vr>N1%$Cd4FqIefXxlSV{hs%l4xG z6Ff5zhxb<7E;qjfLu8h-HHI1Vv%~T#-|sj!pv<%WbcOPl9je{pImln5>~oo}fz$a> zmpPA<-`zFpN(GpjOLeC;{E9^HExk}&6pHI6D!H*G!4xw#2Mp^o$vAt;*0q1IYiH{0 z@E==Q5>9L07Vgl^7}4POj(^72L%F-5&@sv&-;~rGI(WrzY!gvs6p}pY^)v1$<8N== zzXw3fe-D6rJdhq{mzV_ICfj&tB_}4fpHi{Q)f z#XSbC(}M&>S6@ZPeLbX+A-6f|-q~EfOyF{oPGn7UM?830R>7zNNHh7(2j00@DfX4y zHoA`GimdZz{L=EoE&VgYOKcYyEC{p7 zwi9(+Oh*&_0jauu`Tn7ndGdqBo7m^Y3p~N!AM)|c+`jn9cEx0oCIUvhs(z+RV)?PL zr92*l&e({Kb2(&_i^z)n6?VT9TmW#=PaCUpMtne;N~r2ZlVOGaL4?C%(s1D^U@=t) zrA)W0K1dzp{H+8~R+YY`c0H!izR(|xi3uV(*{t|Y)^Mf$cv_gIt|?`eRzm(tSmD9wzvQ-mxQso;=k#?a>fxh~^?+Kb6Q)>v5)1;0bf`F`4~u zC0d`Ip}1{RcFG?ESDyySmTwXB7I-K8Jpso~kM@e2JoQV9qMUI)^l!^{dh{(-g?#gv z9aH8%?DDUAY>0TU6f>Y`_Brbk!uQI)_<);B)V?Qdwl_}_^JAs zxsq0PJ+PQU?PcV|dq#;+^`lebqyEIw0rctvBfL{Nij#<5@d>J_KMg7LgBg}jU}RJi zfe4m`gekMgS!x&V$Z!*2wkc@;{Y+UTZL}+2z6Et4>Oi=WU^a+&fYrNtaNV!ZIZV3O zPXtF3)?XIR)}Ye7g>!-6eD-YcNs_+#Hb$B!^#e_3*KSa)jO}*^!SM5X9aUkK&hzb^ zK;4{>LN;ebF+*LpYo1|UQs<6oBv6VV^(JPyYnl+l*?SIKIxmCQ^6ZBWqbh++-C;wCSKazSPnptp&ktl~LjzRPb^)dJ|n4*#0(J$zUyG)Qyg6He?GBlS3?Ttn4!>3r|e z&R>k3ec#hkh)iC&7FON;K_KZJkq~jFY3s_pgB#z&)7z^n8{9V9_1+^KQ16>%se!gb zN)78g5A+Qf033uMk#}Ncpfp}fXD+x#`^3Xk=Jeou3DY-8v-@aIc$ueilkCO0VT->d zvmV?A9dz4rYT<3GnlUN2a&q^Ch_S4`Jk%%iSmUFiTTw=ohgrlMh-AM*mu*-BhF7el zeU-6(SnSUcwA;-kvh+sy>y&0zQH6PN+n=(cgB=N3q{aDP2M;$wpaJ#4>yr1kd_c&c zc_k>K|4>xFPcHJF0eu*}@;k6x$wN5_XpCDj4JCq#a6}^m!TbIM~Wn0HC2P2;=L&=CNf6+9ph7m3}5jcAXm2$l*6t zMX)fq@u&$U@H@?HeDCd(WSsQqiNjnZEbmfnoF(&l(>#dEfWc=DLg5cv%j}5%K+z~ zuv;u)zDg_jSefmRW=qB3DIljvCI%kl#`E&gOsPoX0q%LO&87MtP519+UEkJ$NHdNPq?vY)r$jCDW zBSmU^0*`X>{?t$c{%=q%>6tzg<;nm$X8Mwh3k~K7D(t>DdfydZPpjO+Vfww!X>Qj# zQn-PQRLkn+ISoa{lyNUeTZK_7rFD)Y&kASL?01AoEyys%ef^QhX(`{Xx$s+ON;}p( zd;~Ck&)o*@!Z?jMxi^+)bhwSHz79FiEh@qp1 z8+mvpAP?*l(AEPD3!6}X%TCHHaKqiFiULvEx<*LESfxD-5wQu~6Cb%rz6nVnDoXFL z6JOn3mXf{S{rlgYIGe_5jEvSUTh_Gp4;f0NoDs-4Yqzg$+%bH`{=qKxc3Or?jS4$D zVnqIe@bE!qT=OB7;dncxd1J1W#N~1+i9(Y&6k@N0?LX5h!&_~^6y=Vxlwb2xn6Oyw z70%RYz0w{cCJNYbs=hXS*?!yCwdjyYE}A!y)uBUMFhR3qhE`c)ZNT$JcpQmzJjE=Y z{4kJNb+Bb>{MM#CsMY-CnnO1^rlVfpI=LZSpye)TkPU0O9hxa=dkDd6y*+0xk2Zno zu}UA~1HXs%$axFwO<4x}+3pBzmv#{BBXh+^Epyb>KTcR|yuaWp@?o-tpFC_Vo@~j8 z#9VY(&NG~sRo9rUEF~_Wx{ zA&ACFVnD=MSL7bkGzSw!Y0O_Lq{xr2Sk< zcdk%WP5nH6m)(w|gQeV;{#5Y5l5P_iANVWGVlsVtMU{5`gJd$>230y047d9sy!Su^ zAwY}ysI%lVQ@9UK-wU^puS24Ym!{wFQov&eOb%m2#zyJ+d(GvLK&6SWk_1CVkrJ;e zHJ|9~H#|D#CA6r&(yr@z_AdXu%M1KFdb?_mTBk~fUMR1fJE=BhP>O6U>o}gzJ~AMY zrw4pzAKXvlJUG0wc!Oemtzayc=rZ3Kfo;9mz%D+X4|C(Afk}Ar?Y%$qo~zZK7Z{3? z!8sv6`pWK?qm*Y}+bTx2<0VxZarzlIGQj2}?U39;M9heGEJT`l9M9=tC}9q}6+YKP z;;FhO>>hzc$eb;KuVwS!wcmb|>_G9nCzqcN;jlH!50eg4HV4cz&j#fIWwaii8AH28 zbjeZ46Od-7beDtyxnq)u)`D{~cnRI_!S%xg6;`jK_8p^kqYYOpGku6OM3W@WVNRGw zc+I?wA&FbLPORbeHr-lJ+{(EODxcGBv+#+=n6?4Sw7uRBs#WU}<0fgFF!e;iTeT*M z)~K2=OUc`_WnFE{3#sVVi@h#SpI0egA&UCa-Fe;5ZTC8g^cYBIldXk)lfc+6#mC)Vl!}L1?@|JFA7`IxY^(< z;h5}6-$Yg^z9pETB91Fd!@&#x~p*M{D}s3)$@_shBdzwYnzI_ll@o?`bpHLj7q$ zj4zu4+la%xs?z_AKhT8Hl zIc3O%gh$A9mL-{@g9ikC->~0IigHV(2}nH^#vu=+Dt<%8XsD~ocHNlz;OLZM0Y36 z0boebcR1=5ih*{h6Oi0^(9B&~u%RM>?&izKmtR-AD3-j^+c(_AT}K#`xpL<5 zSJ(7kG&o)-2pTi0`S;hPt(L}li|8VMC$UfR&Gsr=@WkXx^#V7D>b>4YT#TI(J}1u> zHDt5uxKe4_j5%!IdmMWcd9rHL?+9%ZoOCf79}KGl6A|XKz+%TKT3BM!H1TM35>YZ! zHPQ>2Kf9}69kteUSNfii=7B^rj>!@?qGZ}?v>Uc$*e*%|4mJTd9U(J+2vsS{0Dp^6 z?l$Iain+2gexq(-5d@JI=@b-{?igAWL`vx%8WDzup;JI%Xz5hCySp2N z0fu3Kp&N#-Ar8;q=Umr&uJ_w~nh(Ey-#gY?_g;Fm&Gxosf#rw42C=NHSmwtd{T!$u zT9e8_z1t%lLxN*d$;erV?(|d$hAGxYFFe_P!5bE@bJ6z?tziREOtP+htcCcRh5c91% zsjPs9Ged^r?gVnEvN6zLW1S)01Y;dTS{dvHrT&HI7BBn&sjLyLEy;?zG+(eKp)?=u z7ZV&G{5rn8M3z)N^o%>tx_g>u26^V)`==j|FZBa5K*xH$St7CR)7E*#x5c{CpA;dW~MnEUoG zsuCQxnILlAcKqEo=&uZ`6u;}SE*I^!o&4C<&Db>C&`=wVM$m}p!og}gUMP}dM?Dlc zD0EW0db(N(iR|P{B(j*2{=Lvr=1i-jVS&{Yn?#zM2!!*heH!}#1DJ8F>QbCJRt`US zQqc9BH;x@Ul}uYxZR={z%g%o79fk&T_VKU0unlP)Kvfu!8X+K(CK>jpc>E=*8Fx-T zij%@3-lX<4$0K9X{rf%cCBL5PkgW^c9Q%F}!6wc+9K1J35)kfUUQOrK z>hl1%V2mx7_u&e^$=~i|F}&fc=-(;n=77{&Du^NI%y><^d%6-}Ua4#+r!eN=Dk@oy z;-4Jd+ecQfEI;>oXtrUM8%FX;k`Iq0_E-Itoa%t67mCH;6iNp=hHby|3^ke6OXfG= z^PL8}TbWf{W<&!Ik1xmC`2~*h#q5s!R_})=dl9Cd6D+|`=$yZ>tV3E^_*e2NB_Xo9 zs)zaY70p4ieM{+ACGez$2yM+g8-|HlT{P@F{9%8q4WT)_Vc1icWz`6TE7=W3C-t|u zl%ys$_Li6NcYvTWqL%kkUO<|raiZW|M{F_PH^W&O}N z{t(9Sj;!c?q2@2PumtRwYjV72rtdj4{s40{MnbPgO|zdXs^n_1_kL57s9}|0VHF*} zT&}P7T7Vf`?CqU+`Q8g(gm}0eBqlGUFW4M-S!OHDn;4`z`7Z}9yXscX6dVi? zgh*I2+xPeUxUP}n5jnGe?@)!`jBT%dHP;hj28~kzZ0At;k3Fe~Q}H|~q-k0h$YbzG z=%X-GS4vj74%PkVx6)SH5SJt3^i=X+?G{vPS~svcTGWD%d8-yIYedazZhJc!P znJC=#aLR2iAdBiLR!*3ziJ6}Q)Bl1UKIEAmu)k}U{?O#pd)JlMYVSorXbrITT8QPd zr76j4g7c|c+Xsvsf=mgOC4(+Te8;seYSWfJOPZ}74!BzxhAi|*K7HErMBm8T1=*+| z5^d`;&QER?*Wxy)oDx-EmPV@$-EJHom~`Xg%ft5~il;KzSM~?{QWllx8P(73tzjDE zk~$7!V5P@V*}Bczts5V*R@KsdK$)j=ZYQUeKw0IyECT5Liqm*?g_66O5Xx7Qp`#Le zixFn)%io)5#Z>=TNm5q%C~;uc_wt)qQ*>)=IIe8}C{68ydg=Jg9SK06hBM=%zWh!t z{w#+YC&>u9{bHb&9!iQYsaV22EmL80P5lZ%Vs}w7|Fyil4I^ZM;fs#cdN`ODKYaHG zi1ngrRmXyc721>%VSNwbl82~1gfT9IBOT9}HT|?@a^z8YiIhj<%IS+_uFm2V*8pB7 zpg|T=*{Ly05{g7XkdD4MFRnsUXgANJ1a2b(5@bd4iafsM9Vl=!-c=Jk7fX=gNPhc< zn46P1z?($u(K$oOs$Z&&zY1DuxPuUXp~lm{_p7uaNb7P3 zT@B#$M++Z6qvu|zaD-0?L6A+6+zi@Y+j7CrD}}lN=x&F$Q`HAcChk(bu9b;uG-TK} z7jwtjrDsdr|3T}PUpR{%+gV#AYJ+dT2pzbi#b&0tiP>YrKjBquJeyC@nrg$6%jf%3 zV`CvhMLAhl1KA3zY}Xa1bNFrHAKD8gzM^-ts@QR8WaYoEUD$HB4*<1kF{gAMDM=Kg z=7rdy+b_lg4a?#js4J+voqAmM`#Q0^w|5B%@|O2MC%lPY1pyAoR(Ztn$5>O~)G5Br zTRxQ)AJm5ojf)G0Ti;9I+w{Ijg9mI)Ree3VtCKVoz#N)q>j~;$;KihtU ze(4>PgVAF5+sRg3qiqe9l;}dS?iF;p-~8BF#y8#!7tnK}=dp)#Sxn$&?)p|9F?3_9 zUK98Uxe+j{OGQLIScZ38d>AwH^IRsY{JQbsuNWxt&!`XelX17eI2f~+wLg=hKr}49 zQA!QU3p{aE+q|E6DVn}}d1+g+E~U`9K2BHW4#(3D1kukTNfx_pbpLYuE>OYE^5pX- z9w+;rln>;5zNY&f&su^p_+2a)FA-kX9B!ES6}dXSJTuUBM0kz&h%Q0w3KLY2&iTlu zYj#+dwDGs;akA1GoBpvT%Bpj9$LhC;oV{!k-L-x^l=tX+vQNZs`sOqH|s;UlmT(6EGUtMv!?Otl*;%$|zALJ9>H&=Ax#iIG;uPC7^GMm}s$pndU zw`?a;oz&iyFZx**R3Gf7n3}o(%ldA;n9ETo>{?jahT=XHH~V4Ao_ywj46Y;hZd0Mm zz!le*u#$AhQIl<^o;as(M=*9Vw<@n#ka{Ba>_Z-?v2Mp%)vAw-Tsba~c+}wD^ds_U zROAVh)&$S@g5kavn}t8B_LZ61Rd7mqN(V zc15HpumwG|B1=hc;yP|e)Q(+T80E&-dB{OmEA@~XR6GM+xct*yCKb>%*n480gxBej zK}R1brEJH8+$v%I?TX;ey!)A_>-)v=8uhO(PM@;W@e7qfCcj1}5?~opB@hI<6D*-S z+UqawKcX;C_u@Yl&ObSszF}6uL8=`XnFn4?JYuY&I*DHsYqBLqVdI=%OLmmOn`G8F zTraG)cPlSh;D7?{5&|Bdt>#x{Y4nOv%!Q-Zh3HU#39@r2ej>Q=r6IqOx%Xo{A>vBh zDS1x z!O2!4+Y5=!xDO@tipgAgHyDdL)vfVa~t#5)dZ4Q2%p@B zS63O_=cM4UR61KzBka|{5C-vn(51`S4 z4<8V2N#JELwY=>!n%eLGtJ@`FN#8riytmj3rLwcKHFywx&ZgH9TzXN4oOlu%I|*k* z&U)poY!~y~zTy?nViGnU;;wqf7qqUDFGA>e_Ne_v_faU6i!0LYmSJkjS214Yf^9Ey zV3`M+J3Ec$v?G!lZM-S8Ie5E|Rs3;Hw#4$>B~q-dmcHXgub)HWMI7t@1UKsA=HuCi z`!1l$`PY!Dx;DtP_T|-B&*do;7=+P$Co713!F9Ol^lG?GY?3cKE5p22oj&WQbUS4u zIwO(j)bQ`v4a=_4g@ehhQ-VCs_JhLlu{!3tJ8l2I!s3uK+EDB>%u$A{FM>u*mktsC zL1?ZlG-#;u)#uaRv3&V(1D8*|4PCqwtuXiFpF;o=+bdeL9nPY01#J9 zKd0U|b}ENdbLTiG>4Q@IIB`|4NZQoWW1=@Rc61s8$-4u0J=XMQwu z1rq(*ooUu5i60$Y*w-H(X_dw%rE8ZEImb>mngrtY z=Jl?y5mIDh${#%5C(D0&>?lsh`*n4@Ib@U;VJJ>_{TeFAoEBT+HpITgSZ1|i9ZwgQ z&pmBM8RO@4bo$Cjti?*Fl{e37`!}VfQ+?XdvupIs)uv#SGDSr*oQ{SRS&Bwn6e_D; zz1DJbwEKI~81+E9xy=b=V^~_%osYlW7wqgDA2XgYZrJIXm8}?Rpn-Fk3!`xt8>6;lgBJu*qbH?oGv%zdL0t{zMRxW`aXh*|K;D4 z%DKZA&z2}!o(--G><8+8&B(R$O5PEY5^aL~EUSog9KQ)$9v$-w>X{YJ*ricvYW8I^ zo#p%{+B~ZYIcpOyXjvLJ;TxbgE*Ee$Bs#@N5b_gT!_=6@oPZgD7#-`~H5+<+vusGnJzjy6p_6w{l`s=#MLc8HDSfSi!!|z2BIK+Q>-4FOp(! zJn@4a3XrGFdqF!{>Rxs$*0n(1F#i||<_s1%z7f=2?}`o|Y=ML5XX$0ASbz~GeoI`2 znG$N0m7Et7y=d|DMuIL?DyV%5y7%2i7KCr5Jr07%cZ?L%21>ZO?yB;5z?53P-@Q5w z?gY+Q#(^FMIyB4taj03>ONJ#?-mrkOZecjX@9gvcZnbLkzy6%$O~fNJ@~eMu>5)Itis;wOzY*A2zm=2Am+ELw6eKvD zHAsU>MoRl=0MVoF2gJ|1S{Zh#@bpKj#1+lO1Si^ZUH^_DiPUeMN*3DnVJCkjnZ;l^ zQpU9T>9zB$Y9HKuwCBr3emyw5w-KIZOB(ljy-uaCKA2)lqaIPlSwPv=6<=57|6cjjht>NoU;TgBW6o<5LvLGE{`3&@DsV<|1a)8$@O< zlC)Cnc0sC!TlcB%O+Hen-$yQ^K+vT@4^+jHcXudy6#8n@Ip9Yxi}sBWTu(J>!uL0I zXWqMAo8!`w?r-ZpfCo1y`9sn7^K(yZhiqumc_gOMhR5ssJaG5ESA&sr;I`Szc}H>D z_20H9yM@5k=gncY*-7)zN+YWeC^{adwZ^QQgD(qgcZ0$$%>oiNU}{teck(?UcIY zOW-QX7Q|1Xy{*uI_C1;(7JL45CYf3|3F;EsCqboZbZ@{oFW~8Y!W4BhOo!f4+$~z! z`YNAq@NM~(z~zdFN(ML_##FR0=4i?H<3P_Takrr4lUnMRl*$L~-RMCokQqOFoH-`S zrP;~$%3rxxa=0P=$+#Egj17-$wVVIEGXWSot9PJT;hcqCBgC9vvf%{IEWRtrN4MsF zX~5`~XZQ*^`*$S1sAQI9woxp{rd0}~E!!TD56rB{@e;c1tsL>GA8(Z`&9!Bcn3i?L zcJ}fWoJ!pOj$^MNywdH8SZ=)e!9t;uKWL)v+Ol6!s2{3cWyP@=L)ZRnv_;v3Ex|}t z*2R;Hojd=A7{9vEw1KYAY$?H926*JMYJKdL?e4iVZQb#`Y!C-fk+$RLZ6&r;eN46R z?19!jDqp78PB*UI20*H4CFC#(SuM_K8pIl0adF#isoctP)$lRtBGvJQ@18!m>QZfB zM(#%1R*1L_?oqOmO=R*Nq?f@iX7g96uBT&EA~jv1E>m|8EgE2ZaN=K=P91-S!y78{ z^bKYsLG;2>J%_V#?`)yc$<3!Oreo3Mc;v$1?%;~!iOpzJzRcG@zx@`T*XqU`mR)-9 zb9L~twZzRW-bcA^`tkt5r#eCUXrfw^X#1gD%z(xv39nBaa}8B4WuZ8GxTrn7RIqp= zi6p12cp}Y2nKB*XaDcCws++OyG)OPs>(TYcch?^5-!{O_gyXHt8ag8t9dwcf zAlU^X_$oCUyB)wjmeM|@jhHMy!zz~*PFbwdN-c1U6&v@wWEOT408-xab%@GdSWc(- zaxERV)X^8RRqs29JWRM2VBm$@Jm;WoeZBkqfV0OtdfKS`iY!%dfbeQz*hsY3Fsji- zO*}Ok(-RSTZP0r%mp8eX&S0V69c63z0~Do_1Kv1VtgWn@tL9pxS}j7FlgU}`dD6;e z%)O^q1vg>XO(P?{i%i}B-e7dAa9;#nubPM(R`w!gh@!^xiBQ>s2^lQ_ET5+^i$<-aga}S7H4StnP*)#-h4{69X zgTe5bRZkHt$1SlypU%(D$9_m5+nMMM-(o^s5$-*4bFELjs%_U9ajFVyjdP|_O!Gz6 z6xrtzwZ(U&+xg_GV96Qd#*+YCIe9lP zO1CQ6hJ@XjtxDcK2uB;~d>LR6GgYc54+!-6=vae((IHueA;n_1F1*;zHvbFLMBKWb z?WQ1IY$RX9OK7Qv#c6|Jj4YdCS+*p7sfitW9H>lbK8nmwIXAj*jTCJ9De@t;d-f&b$G})|BZ?{BvD&u2`G_OG> zFEJ!>kHZ3RG(MUe$Y<#QTL-s{^COeJepv+nYPz&IB8&=Wx)Koe7N(8kYN3`xKVDAM zZgD~GKJ$z_b+2|t*bFnT9q{&R&!sPVQ6*Sc6*x#>z}~xa!EEFN-*jtwIjCziN#uoKW{S;sw8Vv$@tJd z23W{X^P5TNHAr|A_?->@Gx^Sjw(Eq{WLx;$pMXX~wOvQ~qUKieZ_oRy50^_~3PQ)N z>gU5hv6Nold_m3+Ug;?h$VnOu^Ht6-081nJ_)>D8qrmwnThe>jh%QlOrNuRCVQ7-? zm(}ehhKeghq+iOB%i2DZP|H3)jj9-2P-pYsqaCl4KExB*=E1eqw;#Cg(fKFE??uC?UB5s3hS? z@K46dm*116QCd2FGiJ5@WBzZcx)bjvHaa(k(1-n*UPSX@Q z_V|U<1vgBHw|?i~eZC02@+@yg)JE-99y$u$UTE&|l6aCN~jc7Kv=|r|oBOn|ZrQa(1TOgA!W(Z{ZQl)(B5(*a&P--Cqf1l zdvm(QOWGGfrM{=f61Ts&S>`3*Ybh-AjEFd0V8WV>dPWAc_D<+jUP~3p4omOqKrG3t z7^qdF*5+slH|4h;g^<}_ICb%CkGnTbJ1dGBLP*HV`vl+8g#;O#w=dGZ-kC&C7}p^> zjf{8*`v&O=iH?`gLOTRPV6sBzd7^5*uM*w3vJ|(=v_qvD!PMmHl2@dkR=LA$qDJpr z^Rqwf*nV1KBMLtz*%T&?+LmX>cEa;KB zkQ}x#Wq~t~R84%{gpDH}JmXf-rN$d3|8a5Im__PSn4+(zVjD`c83XVqW2hg-$mES; z^hG~f&fJejr_}k&fsES~n8MeVHC4X~%@w>qm~%Ed;&ijf!@t0s9^C23bF=tUw(JSN z3f|R%Y?LcFlO8WXjq!wRSj|RKB%kWl|I$Z{o#91F8Cwmy9=s>*?Gt$9+@S(R`McLh z6O^g)rVRdQ54N9iquQ>q__R3xsH3f+V1Aa3-io5VHaI+q$_m(^l z=tn9~?-55xqF2!yp!1#O(P{6%xr2|wDMon7_#U><_(MhKHw=Y64{7N1jfalLUq1({ zr`{asxc{=!jgbP48dLc^ctEg#a}&;g&FqOF;D-yz;Nc&0;fN`WcsH%V~z9$eydEw=W3^4RvV-h>S9^29{d<2$D+` z1F!c}vGjTNjjF3uN}!BBr{yQ6m}f_fj6Q~QzZsE(B8LnF*zOEJOQ3Yo`x9n_j4q$q zFMKk&jS}w8GF(I0MKyi-CNMzt2BGC=%>WwZwEY=W9A#a zZx8Ma(Ee;UBybj##hsvHbvV!{M5XT%9~~#TYBZI2#Mc901UTHj8nHFZ{F6hW3M%1d zK`fU}1tc7k*ZjO+_vUretNSRGl@#u(o$P+n*0|kZr(HH)pO^A2k7{MeK)0`V=)@hdhVL7Gl|Lub7E;KFxayW}{u2TOTleuM=icy0+X>3= zr7w=yTOvvh6;t;xIgz>s4O;39)F?@xwpY_VXW1^VLGu$n$kC{qI;Ffgxg^rRdqMV;JeY%qq1LYr)kXXk4z_>s zr7vQ}D`~RS*)6jZ9v3gAT?f!f5*}7JQDzFp5ZH1nTBMup*RZ+aS5K7w{F74d))2NgGOU$1mrDby;m&N8-~m1g4t$}rWqK~_E`*B%Xk zE4?>D3UD~JhsMU*0cZT^aWU}uI+rAlZ-xHliVIG?h}H+KT&`R4St`{a9!|I6*4bX@ zhV@AC%Jv}u$~H^6lz4cn)DQJ6E$ccbJ7vUo=DW1$mbh`l)2AQy#c!GZZMNi(a5ZS5 z%jUAn4WA5L)d*d8633;**~4(GWLt6RR;m7An#$p{ZxVAg7Ru^I7{y-ae0z@bVs9$I zgTpBNOxH7o_vF7A6aHh{#3zj^wofh8#skXuUE*v6tfz5qHLS@Sz?gU!CU&pROM>W1 zY?5!Re+3W{(SYfGAGIs<(wD?V;@m7OwVqqZE~$o_9w4)QO;v*2hoT+T=lbUk2Uk~Jp9oSAV%PfPk*rE z_ZtV|@q8#x*=^QPbYgn$blO2NlequSUhb!5RGVQoR@H}zT2Z@r`1E3iH8kzdVxAN4 zVz1o2YyazRg>*M#nB!j7rdkEMYa11=9JW4!3>BF6P>kodsq@M?y+_zNDmuO@=NqFa zQ-Vit`m(6e2~TBz=|PML`_B^nBs{#tOENrYJS3=4rpSEk?A|^9T|ZR#t&NL^ELjWn|b4e<~ioi$U|4GlXctD z@FLnZU!t*fS`EcpLxFuWZ!%OICD{3!WD0KEX5)ZB|l! z7;8l-;iW8%8m8U|>p4{$p5f1-DqOY@+zZ;}cRocY5k;u9ghPnLF03*;Xzw1ERbEWG zrdKY@h*!pSO4-VXo5_zubCA15B~KT^S+$YR%T`UhHehd-m6|T?Oetkr4r7gv%Zei! zO29xJe|pB9`0%{Jcjg^c+s{qYy78rJLpoJa(I&x=Mx_uq;P)oha{kJ8pRkhZ%9V8w zlrXN?PHpCDCV|03XDC-FRw_(CPXZr-)?}+|`@5ujTb@?|?5v_6=B&ISZhG9m&4nXE zZ~7daRExyija@oZ`%oV=`ZABgccxs$godeKODgREf15jb zQ_V4ir+F{?;lJivEZ=e>$?FfQuBXq3mhN%YDBZ^=d8DO`h0}|cUk?xlwBjwLryV<- z9pGbUtrPD)rt^w^IaAE%kTGn7e$LN~+Kau3V+3d7Gzjm#_#$+(D{aW8gC?bZczE~M zo>m!LWn8;2c9*S5QTI`$-(cI_M#RmUIX>e0Cl!rWGr9y`P{LLI^^aF&YMMT3-^=Tw zXJE05f^EwS+aRys>`vn+)GO6zkNG&-48!z_3h{R)?^cY~`QCWPfzocB5_7cd$HEun z>P_Q1m9vgxGbGJ>C#j|7TgMOX*)kkfGXv1B9MIk3J1k+7VH)qKv zh{tjv2iyS;+cGg4E+8*A#d4XUbUug764aZ5poTC#+aS+_|D=+$~f_Hae=vgYtRTg`tgcHlo2dz{}@M!5QQ*g{7t zrs?{A``DX9BlFrvuL^j82nAt^VJDdZJM4`l;*IAi_=yQDeYq+#; zpC!PWaoj1p8V@MVutyZ=Ni&PwWRKOBY>;_J$q22?k-34i))Y1iL9YPZQt#l5Cn?_y z3~}W?bq}z8^@h7QXs0BU2G+KJhSRaVJ^`n-U#g)}QlsD+brfXQWPTdHlftJa6~GYLCbuPELORpS*?fU%_Si9J5b?ux*~J52&A#iCbEZH&2zJttlr3 zf6+$ZG}CZnhD0WIO5cA0@<-cyNV-i=yw&=et`;h!9zb+SIP~mZqT z`J&62y4+Y0G+PLn`-M7&g=5mpnvdj0<(~Cc?E|%NO7Hoo{j)+c9qmdsZ(v8zKy>*} zgJI3`_S4G)9F(9gW4QY`NC4!7kYZ%Fx_(So6MC#Y^ipUpazT(cY2RGIkU&v(;ozSCd!!cB)(fJ-MH5#ez3_-?Y69>zX5H?1O3#ImL6QN8^muw zoqW+t1$36UDw?OTKl`-?TjI`r9vbAdFEiThMy3#=c|YvbRu%$`QfBCO@?*_r(He z)p`y#;qH0@T`uqyR!`EVuVz-^~36E$t(%yXq{E9b9(b!2HU(q;DV++1ixBYe- z*qs%2xfl8S(N$6+k7SRx`1@Nz%GF8+Df|A|3$i{63R}O8m6JyD{+`4>=&egUw~Av+ zi{s17FFBIJ#^^tMi8b{2hYf?fk(rT44uOOE=*|B}zs9AI?Llf@?Vc!%;F*y41965&ij|K~bvkdcng~ZQL-dVyLw=D;q=0{O@whlG>V(Ep9$DA== z4am(s%R$5i`!dEUG`h~n+lPHKA3!npC0(m)hpJ?iI!#AZ3U6wYjkj>SsD`^Ehnq@? z3SIWj5#Hgk`+w}3f7vL`O1fv(uVdO(EUQ)2*Ef)PbALy%Oc)r(HsQLS3NfecEBA={ z?X5l9){#T2UqK>z{|t!HO`EvBGB!zO{Q6#`M$@TLY80aNwtknY(XSv2Kk84 z-DmL#!cFa7=;wt1cfIXLdEq-&JcX2f1N4)uQ;TvLOWrl^fH+y(44Av#nI_h}{EIn4 zYn<+4+~J3(WL~{26r>}B-cIqpvYB(#w=w47!Td^Q`VD%+)O1Ug?Jr9H0t!Z+cKbKZ zNZRv4f+z_u)x4gDG(x%=ZWUafA(-!#JZPiGFRktByDyd2!utO^9GhwX$kUyinA3?W zF>jM;j&Yf$*%x)wSx9_hrRXTNYgpZu4a0dGtJ9j;6VJVcrQU%m7LdTRH85!OkzF}G zKQB4-W4pGS(DcJ%ok=G?Yh#qTZiOnJT|3v-_+vDjZ-d(WN`Kqm>~OQHdY$_2-Aj00 zLvB@zbnOZmLK@IQuY4~-kB+nb0-eENEO1t`cIHek9LXg$20!_#%5CA@qx88kg$3tdo z<kR+=c$`r#9Qiv`|o8d(4RBC3;f6fs#^tBxD{Jl(mVHJ%#mS_nNvHyk?EheGtXnw zS|*VvoaFkuyl#4tDF$6!LhQd`3trN)uT`P!t8(H4sfO`-geG! zA6oATmqHMy3fw)cJ!}j##1x~kP#bTs2kpUI{o+}Hwpb5|4t6`<4Y9r9Vtla{Xk5m% zOVZB1KZD%H9spjz_0g#AW#%a+M88)AG*ji>nxK>vq%h3%9OyTw9fN*d88c!moWv<& zJ>jrCivHbJP{eT6hq};54^#)oh z#XxG=0np_qhBCZ)ywLbRA8)_+QI|#Q2l4%T=|GG~21?b`4`r#nP*>4t|6!5?QaHUG zk(u89T9-(H%BuHgd3kKu!VLUrnSR@eDpj3^oW)iALTDUq`!O5%lECMKn;i$Y9JVT6 zWOGXr787uO)oYl6o)oA7jF5nV@#E6HHx&*L#+rva<~9fm_ZQ7n?cV=1i~q}pK5O(B zz`ML~iC}m#$L{w4efrMV_gsgZ5k?{jhr(kj4HbqaM87SNJ>Tn>t|U56ZJF(;n)*tS zx#CZB7>fB=_-nb0U#d(KJy1MPvcrB;mm(hTx{~2EsGjF$&)E2LB#6<%@~rhYYumV5 z>x|}eiQ`Ut9u)vVAH>kb6jH|rA?ezVx%<7#?s5-5qHOlJu7s+Orz{K>$Ly{@4N|Nu zmdhNpw51m6>e7x?rKnH1`LG^og|9LTG0!r?^XL`ZB+#mE>N?}SZ281>wShUsP5Tne z4cG%H>8FyE$+?=ZTV8P2>9H(*9!m!CRK5LDXAoMof%dH{XjoLNAFSJAe}>@P?tF+V z1aVk#FYz1m_+fGU*~=AqZx_KT2XSd8sL+c&@hR@mU6#l3XNgj++8hviB-^zpXUF&_F_qA7R*Ne2g9*rA_`xL$@Q02*p zY}i}1?)8apdfyLnBeTPCGZ4m88v#gmI)a1Db3#^B`O>UJKyI>WCXb8bW>MFXF(9X= z-K!rQhh7grn2|rv&o??%A9{;Zyd4ECX4|@hmqffNF5X0zckJ{sKb6QkF_Qt}BJI()EyqEuOy9X=9<*rnn!RK*{g*8E(xn|7s&>XZ+nW~>lxxc>$ zN)#b->sGccHbtS9fq6YtwUEbcgG;e>QS~rTMb$G^u0A+_HGjlLi84Ii9ImQf4sDDY zGFc0U;LJU5NKEmm&^P}b`K6*v9OsI^Ww05eL-y>Ga^}2Efr?eI$A@f;I@Cuc!^-m6 zHeF(L$bKp_sQu=;E9v0K+sZu4>Bmjg@F75UL%YQO`dOLPW~}*Wlg3mli{nDTGMOL5 z`O}jLyVD(6;VW{U2H#ahhv~g8EV_|bY1}p*1(M}Z6|9okJn>b!oS*@h<1vDrv$^k0 z^Md?MUy>ukOf>T(lah?te8D}c$|ZEw+9PxJVOYrK?PhyVg3G21_LGUly75+;+Q(cNq&M94grzEf+y zIT1@QKU$&ZhD$17cR6#gAY*LNgxoxCE1EySRl0E=lC zdUlkI&dXTc^DR!9I?1M7-EW+Hy5&*h%;aiHMhWj05MP$|`P3hahVn1Gq3agUF_HTn`)_?6a)PIDDcO{ zev&D$BE3K4$F|%REo5X2>!|s~W zf|+O-SWA>83&+huQR_t`-I8Lv-i0Y$xlTf`BSK zKJ|2F0BrgzOQ;J~Mt0_ivU>Zjxh;)@0jFR4IDNMrN$EKE_76Xa@AvEP0XKBLHh~vZ zN^1IUl+z8m_0=w9lK<{F{{OyGPy=MGWl0R1;T?c7uvZO@&Lu|Fb?KMlK4IQ|7E-EV zJ$LgDXdp_>q%3H56Z@pg_*TY;n;)aaV>Fo#-#~~)I7#aKg*KFq65oGUhCXK;>ogmq zbIuYc@J{OjA35;kgkQ+)g9^OWQa%_6P}NOs zQy4lt1yugB7c>kOu|!TE6Gp{`AlGuPo1_Y|%CnV=boC`NIvb6R&1hJEAJ8`}*Zt|% zyGNaTauX9Gt8pluZC1^GQn|XGK)SrznGt!8AxX3x+NSN$U}Zo2hLL1H^ce8>C!DzZ zgUbio7Zqv=>OTr2bQ2hs^*{&DMG>m2uq7zH+4g#!^`{4f!b?Qi^?NHT`9q1-!;e_E zj!o9N{s76Rq3b=$kXSvYR+2qUVTgzre$$@pR_OJbH(s%wY{T}!75q}fcF`ERK@4>n-^cWD8(&0MI z@6U;;BgWGqj-l_0(g{s_HG`}IOhGLL@oCnsf7KvwVdAeAT{c?MGB-?k_nzvhVVBphDW=#nvG(}mY`qP# z6$Az<8Q=1+$m$}QdFkt+APJMP^?cR|W#0wxX@5MA(O{m}nMsANp8p}7 z5a=ij&DHugWccH#I;dC-KmEBQ`EMq*T{ZjcqH zb1h?@8@rdO?#<56C5f}F5lvXE87zO%J&gMfvVy?@BXu_mYGX^utJeO922aBYpolv$ zT7LVn(ryk8D~ygnj7YL;;>@SMuwP5HP?H^_TlZq~}`b4JryhI`|OLw9oMkTZg@#)kbC#n$Mre?WD3Ggo!2Rw z0fKJ@fl6)4J;9IC&nx?OSY}o4YxA}V5vDVI#Q7-lLn-az(hJFPB-2uGhuy@FRgUJ&T93Tb ze%T|*^enLN@ic#=p)u+PQ$F=U>J-52bEoIlT=4Z)(CEJPXNeOR9k}7_x4Ps-6Zh|^ zCfgpu{WK+pW$b;EcOd^GwkwHL2j%y(@FXWei@slr;w#QD4)p7ww`bipM&6a9%(dIz z2TmOELzaH;3%$iL>Tey(>K=V&yHsW0?J<~3(tK2y#Y$rg{?npiHtxxWxYF1N4F_sg ze6>yZun~I`o<{NeB7^NnsOo+yvCmm?UyWe|kZ@5&kI;*n5M7+WaCiH4xv(TVEfk(h z*1gA?+6EOJVG+u92XvoQ)2cRm4J;5HWDGmtr5&Bp&nVNBU7yA78|##l*vnr*>`da8 zg|_rF_5cjK-YKTh!>>eY@5J-Q`c2tsj#~GN_2=nV8sXcbp7=N=IM4B|uCeMRF z%jKeaW00U5i+qFnBnkK9a0mCB+E7#jUYfgVNSk8i#OUW>oPKFsC(UYq4(EFZVxHn|@;wg7^?(Vw#fH#x!nv6uhmtyo?dM`N;{CNUuLe*yL+Hgnegp(C zQ3(#8eoy|(`?PNILx~b%i7uKI*TGGg#K>#?SzAw7*$=cv<=yQ?U!Z4a+G;?B<=bfGBLcAfn2~ z5eor3$BYCpyyDxm51R-UUyW7Y2rqO5)BO@zG{bev~IN5l?QLR!7a>+^`QJ}Jxo?a7S z^gOhk3ZBuL&8#DCy6f=F_To;dZ2=lMx_oi=vD{Zc|AxA65VE<+nPF78aS<~5u-Y|n zu!%u6|C(1$9!b9Aefe1x#2W!mKOf?`)M;>Y!AgY9Vji{8u7|oW_LmIV6i7SS5z~;-lDlC1K zGufD@B09*(#>vJUaQ`^X$WvqiC)n? zs+M*Xo=R2l=P_n!>*gP3xonP6&X^o@S1I$U+7)P!Xez3)*QxaWUfz1=1T@(;vY&-j z4h4d`8#;Ze-0Ms@&jt0R9>rjiREwR9Z`pf@_-e_cjeT7rba-0sFp0HC%<3CjmgGTN z47u*%RW}GJ3#%0nJ5;sGgMluS3uCZ;m7rXcsa?O8PLDYS*9B*oWaAmI_)}f{WmB?k zTcaFD?eU82t?8*LX$EoO#75QN4VLcOX2uIR6tp>gH5qzs8Ld*@Em)QJ(L^hBZ~q5M zCJv_#U9-;V_9UFHuT`ovaN9&lf<*PAVciF`IU`}BoS)VQrEA;OL;iM8StF?y)L1Yh zr?E`+SyBM%GCZWe=fYw6@|0wv_-^(jszgT|PHi8Bqw*te-h@QW7RL=7&O21kS>HRio#$pUY*uUU5bIc3KE-WBZc&f0%mHc&Pt3dYFVn zRAk9AtyFf(&XA%KDrLzscF8WgVeDkB5M>!f$vT$o%-HuOiNVC!cV@;iW}pA`{oVKd zzn{#bnR)Q}T(9>z*SXI7TutecalrzHYjTg9C*fDRe}+PCZ6dadvv+*Ns!s{arcpfc z*6j}2Z70^>`Sv@yBd#jW{7;IH{GZxt*MI*z-wc0sZ6uuQ?CohUg(|RkKO%`DnstBL zcAs=MQdv?+TDs%`G) zW!$(uKJGm8*UYw+Tiq5(JAKf6EgO=PBnv;}_1wzJOFNV9`J`n&d?!7N*8&%Bv*#F3 zQL)bZHO0cH?1udk{Z}iYlkvCeIp^B%A2RF47^hb2wzg%hEpP4yiCxa0s`uG7Be@@K zNeD2O&J;@5Nae%t%~)yVE&4gS`4ub+E_w5GT@`*!xhhy`-8+|_0-tPgp%c~ zQu+D%IF*1Je_XSj(Bi`yn(OGtK4+Fgyf!9YUogMBGV!l+muZ+NHfAhhK#0~^bB3K7 zNVVm!|K(7xM~$vRjlSWTaA#LrE0dGlud86KHDZ%^6V%4vWz0$b4-d%yI~EQe&kd*b zC-x7Pmmlu?e|_vIgf=WKN%1`PV^4Q0{M1_bNJ-?mX?2MnhG3EN@$N#JH1-V4sVS=u zlCy1MEtl?VuvpSToOgSv(mxgza4*L;w92YcOphOL=lDe<#6qv(mq2=;MtWE1M;FS; zV0l3wK}M4nJjwZWWW%*Wy&+9!kRRc^`6xH=bz5qtyV{(%IXg8Yk?)q3jID5t<*l(s zuU3tw%r^M#epv?;A33@2(gfVmw#?V_gOJwbu6w2)q1Ckbk6m51hC{V`^IrZ74gU8d zMJM7}q}@@ySFCS(=A z-Hr!)q%O?$J8yi+{@<oEJ+u@$TB3ED zRtsrMVaNF_RQK9eO7kzu8I?`bHor4N1d94>-%v2m6+5K;J?N$t&p}*2$d|%J{s@Fk zc0F$o$G(t>7oRcra|tJp}G7Q zH!U|utv$NyZ_|&z>pwZy0|P(higN3fI%cj_=%`zI7u-XBnqPwN{H&n+<#P1mGqv=| zS1QC_@XTQB!^Sg~lvy3bk5z){M~c+q82Qx-U9X{W&M45MCsJ0-UimQV1Bj}3rR?gb zc`y5P>OfHx_Rp3DR*?UD^8x z6Gh6}#Q9#295XV}`d({APvSa@C*QJm;^Lv}`w?gE2BzlcO985Xg}8Wf5KBUDi$$GX zp>9GwVp%@vYlF(=ubWiMfi@Z=K_a%V{ZRfbb2`?_o%N)2jMC&JoIbbNa zp^_U`3y%6eBS?34827RT%{fTpzln>|h80swlooNoc!>F)g^k*W9qQV*~)bFO7~0Y}>X@3%e*W@WO-o0z zOsCCwF?xQ8Ji5-l@isTL!CpP<;^@OMfX^jN!U@VPu-Q8nj8Xl}dis1}B-omEe}3@U zFBx8U%LQ4DthwObXG-P(lM7U?ul9zMh8W;qa$egu1> zhLuPkRhASFa0H*Pbwa(B*V?%z((0b6Zc&pr0xVnE8+g11PRx`K&w@scn8m8J%<#w! zQy50*n19z(B;o40=i>%EW%4~&1#*iyrxGo0Df1c!!o7J~LOKiflPbk)3X~P%k@5C~ z;10aBob^3pTEl68z*mjb7O$9H3T}d-o8R~#;m$Kk?O(NAt{fIn-g#RNnZyPF*Ey#X zEo90F$Rq^moL4r9#xo%fqfmqbovoMa9mfSv}hO~>Q{}F>21~FiH?$*OY{l&8g zrAbK?F_+Gn95%98Fox0`>kYD9B+N?Hr8+qHhzLVPrK+S{>4+3r!A% z@Br}+z^TobqI4{PrVBm}geZrTz397XzT6Tc&#Gre#ko4KM+J5?e|oY!utR<5!@Gde z(fHx{%l5AOyOUHStyetiiy!NS1^Cpt*Jk1vL22vlZ4DTSzqi5)iysmD(NF;P#uGR>TDA#VW1iMBT%;h!?$r{*5-lJvAc5gG>XGHfKg%19iq& z>$KWTg(hVbt7g8~o4-M@vXX73f53xdKWXU*9c|^9K-@v^zgw1T)ms)UzkTx?2H|Lm z1nkMw)p}%aIa;#DhH)(O3gJJOLm#9CUEn$kqpJW{EQ=*pe+{+QOo?6TD}tv>14Dz# zu4RAB0qfOfYdq?a8}(A5m*N86@9*%kCs`>c6?bVV4|6ZOzWZCx!B4e8T`v;!H1`cC zeWP+6wO~A>l~gSI9@_bp$TE8XFa||0vM?Idl*JudPLGUtKj3)Tes$eP!wP#h?#+I~ zQ1xU$Yp(I^nhreZUb6nx^&VKlT-;{!Dk}=5jNs452`_=%1qb=dTY&L)5xRYfl>u^< zL8vZ=TW)sc@xCZ!91p!JwfGlC?R74t-G63y{l1w0{=?ee~3wY8j?8OZ- zaSS4c#)+aM#~`$WpoyIM7@lx!G@$}<)UZ?r-zvlQ3VSUeXh?b@fYJfz9;5ypTf7P& zo|-4mA1@(kvmkQD=wVUH@Cx6D3gKLKVRwIQky$qO8SzGwR~lCS5-~x!J}jm~emek3WdsOdE+ypa@hk97v$7$ zk?+0odvm9N-@zGscJQ`v>D8p-zzLQm*CY!yy&jm`2TNO(!ttYk#t}agLS>u;*PKGW zO|?prmmt;mO0D3o<8zscB$Qu_-Oa4o2egOpyIfF@9nAc?aIyo%6Jn{bp1pPn9@LHZ zDJ!)Zi>Cf2jUEFF$M%joGSjQ>DPyhNdp zi;e#=sLw?$#bHciEMaSk&<+6E0m22PtVrPY0ujOhV!wVq{_?j&6X1~v0SBP_Ftvk- zk`Pt^p`9K3?;Dt)K6UJG1KC9wZ4!~lIPD;suPX?V077IX1vQUXqAUU_@i;^Dp&?9fMP*7HI)Z_(^tEPh{CHaU;oE%l!+wdZ=@|PhYw{J= z54MPmsNaU=#0;QxK*I)O(NoHh2TP4!U-LcikI3Lo9YCCXL*1sHR+@fvpgzU78y;<%Y3ok|z58Z~iH%SjXum{c-n%ar_>prKX*MxV^oLjkXJ1N17SWi;CqPv}>imB?KOq1L7-u^H@p(B$$WFr(_;_c)2?u?ulE_4(3 z_vrE$u0{M^;{ALQsI+V%+EE+iIoYI;5$p`c{dY5Achiaq^~DSnb^$>86_1@63+D&X zj~H)^aVUYs5yZ)jcnBe$nF&ouK__@odcAfI0|NsIl^Bu?Q+u)2(M?LHEak4t0XyUD z>ju$=Aga_}WLDTr)?ze(a*1i77(yz>k+xyzEi9d0o`zT)l=2tEce)1iLOkPd=*{^ z4B;M}5$E}fx<~q3Aj)DHL!oMf9_dgvEcFAPookbt{IoCq&X}F;Hq!zp$m2e8Vti?D zUP>JJ;X*owbaqpUjpZQcS_6-yqQ|?VP<_JH=dkI$`La8nX71|49HuPJZ_x%7JPUu$ z9I9Rqi#0mEgJ+E?yx{efeJBgso-{uo1zmC3ytsjxbK?#*)S)$^;uw=&WB+pW@0Ny& zMOU8XHx}VYvK_Gc{LKan&7LF0VWh(Xl;oh@zu+jfnk7CnlaN`4SXX3q;%i57PO>O}(q zcb`LdjS&^#@}_F8Y4k*2a2*sxCR;g< zhjjRDdW*>COM^XB=K0}U)_=YQ#dRr}Ld%Klc7lR77sGiwUs`|LO0x~YOl^Q`y9Cct z1-37&^STa-J)>))rTrM2nYh=lO1V5ajWm*LwUIo3D-~w+ADE7b=fSl9e)-4I2@CAN z1O_tFm1zV3eYvrvrK=1E5AhG9?;@zml>RizssCDrOf#E~(D?%~@PRT!F?=0E$qU;2 zmL=v_?$wIxB^@Fg!nYf~2Vg?cWb9}loEJeEV$eOZ7hPHl8_9Dr>?V2q7XvKecj&Wj zutjOF;GsrOzjwai%2__1Z&Gob zJ~pB!_g@ggL`%s}0yBC1Wfjz`uN%K9LZ7?~)xQFhmNOcBjkQYG;Q3ItGUGfoZ&Q3r zW7|3c*a7$!|1mI34o&{#KBuNW2-IuVJx=U=)ZCsGDUD?PJzj05n$|v~YPM)n`nrBj zpH!+#I}Q;(>|-t_!_DT_U9|zEgd}Vo#CO;*0Rv&@`VF`qcJdYaOWIl5Ep<`Q3dZ!LQsFTYkp8d;)zS}b*l{m{Chu^S z8g}P*eYT%9Do+9LC8I~cOKXch17f3au{DaY7PEWPxzAl6ZTgyqVL zE(VM-o}Zh%RV+~Z|L@V}J={gpcI}@2C@uU{Fti%QfTco$8GQ@HN~AMthXp_<^x<%6 z5D_%q109E(^$FI+P&?%FDb^!b#d3f*d$^Vw$TBKkMd3 zv!aB&yq)O&VqLHHr|6l}aV$}J8E2M|kcu};I;1m%tA6*r8|W}4z{WbSXJM?YUr9_m zC<-hj6+~oE0$#VXIVEaUnJl8)vupOXYx-&e8EH`j_6?U!osRJPArovr_zNZ53@@|f zX~@1E-gJ@Av!&4L9-GV0NQbND$$X6rvMtFPZICjA;b+6Il$P&RT8l`<^}ud9UChtZ zvJELY_{wSa2VljpZEpPlm&pn@#z(@DeFJaXFmW6oMbkKfo!O^w*X0Dqyg}?W79nTD z&xK9j%Dx$+isqbe_Wk6Qst`W%EF;p}{3PrfBQ)mizWa&28`f_`S8PO$N+(}I$=<>K zt_pTq9}j%aY3UnB_`&^V*eHgB%q0R>-0BmQu7bbAEoBl~QeP;%ev<(VNwaoQ39e>CXxo>yI7M?)8MM;BCqpT_yc9e?p~g9$ypr4>ku@SelVk)BZRHuQSO zM@p4I#fVD@Ui3V}L*w8&iJ!c!p8G8omE3)u4)JC)?k%bzm*O|C zNoM2s(PyB2DXRr^1*$<7PA3K#t}Boy1K>*M>+j1~2gj4Oz}d z@q}&Y5~LBU4GX(o5OuBNrm@Ao@SQ$vby^q~aQ`YWDiD5hGVkRb@Es9&k|3@j_A|Jy#IftRXiYWte%a%x zDz%%6VYMaKf3U#qRH7f?$PkA`Y6MY<0DIa-O?Kj z2KQJTK5bjs7T|i+V5bw(B_)i&!Pf029e*RDOUWE#@ntW6q> zf{J;)W6}nXnA&y|B_?F6MBZuCQ*Y-DUNG_8t}Gj@tP9@C(2LZLLw@858o+UOBh&B- zoo?cx=ax1f=Gvs#xnbm9RRt#nsinL>z1dYbri~iYixEWQ}sVtikTrxg`POvACmp=SYTRUKno)J7=GMVw)d}QXukj? zUBV!Y@`%#TLt&!L0Ld;4qOBEi+`6tAe|*4TK>;I(qY5w4+3;1f@as$q2T;0(Ocv+f z-Wrho_+RJtkLqwR5yB9dV^OWqwq^)13qt(vuXQtIIYoJjvg+F*OZ_ctnAu__(--i^ zP!G2tWciM}A@7|(rRhJ|e@2vOS8`%& z73ya6qdVD@o&@f9D}4%*%-j3i5h7L&qyOm=7v^310O}9k6vZAy;(53 z@_{ov{Sl$hE2l2N>~zR?NpTLrH3m?8qH&T(wlHGrY#Y}Q&2A??Ix)-H5$vV#BHuJtwq{VF=g%*ILxsb?!AfOh>h>vQah4%@$t5v) zxhhC>^9oz7N^?NK)$*hrqakMQE@aQd>Ok*AS=a@5W>Qc}Q0{xX#&;E~V?m#<)e43) z{FQT&*K#K1oi$U#+}*sv0!}E)^Lz~spudYPJ=Ag*#uYe2h2W9z-mQO0O_+-JpzX>p z;M8R?h^i8KIRO{&Y|0KMgFErH{G!E0pkiDT_1R+{@7bQw5P1!)tEuUnKnKN#|2WE_ z$aK9nps z)vqrlZ6MU6oGIe%4Qz0-ERy+_ogz?MLg=FgJ57#Mvr|xJdF&$<%Ve{foxyV6F|_G? zSz_&S!EHlvraZA9ZdmsZ#Hlf*chKrUW+0nFc6+{K|IQCF6*z$FxeL?fqX~~ngUda6!B0hFdOy08f5LkHEO1Q zi>2>4yK=O$g)!j^P4(V+71O}iAmp4!9fijv}{{dW2(VG&|`^_UH zsPA7N#netl(`kS9481~l;fum>W+sMg*#&8Q4FZvVXE8B>@J^t5H}ZGoHrEkA@QF>A z@HLnJAdd;V$O9pOsf!au;}MOUg= zdP+GC-F~(}I(qoCvo3;S&l6VbI5k}7a9N4IO@G-}vSN|i)FlMqnT+&1L=5RpyRpPb zmo|FfF%~-bYr7h|Y1{VIIr=EIIO!7d+K!8NSmDlMB(3n-!}^Zz$sQNplrUnRt|(pK zx)a+x=*-jK5TnEuh!z}VBeVK2LHyKp)q~b`0%w+20jtZ!##<4`jnXj()VCU2>W}B< ziqNMpmoy*rrL+9-K8Ym%&~aPL}T@ou;!vFAr$8g?acoKi*jeU}s}Wz8?b4OX&~g@SeW;84FDabZ)acJ^Uf86+eBgsh4A! z)$`JVT<8m8bXY(XE*6xd*nc@FtD?pzc3sbc3SHJj{$9#Xlg=xb#93-mc%IYDLI?tX-K)IVw$y9~4mXLr%F*9u z56?ddAoVvCDD;_=2Y3DEnr=k*?xI9=~hrLu$Fc4S*m<=MqE4Lb{tIwJc4+GE2S|B`(DJ}~Y)}i_(2X%60!;dXEXzH{(aNO8r;eNtrj$Ouf*4^O|h}%=lSbz zyhjz=t)CzYIf<(r+_rTUZeotQEz${Sp~kLA46p4RgcQ^NSbgLq*g|XKQ#APD17w8`Ik}=JEaNjPSVKy~_8qnja}o-?Aa?3S?TjJ1+-| zIYu{ptqlSc(;tX0@s=)$^127kw{P367_ys@f_9PjVqpjYXX>G-;~gdp)dm|1{HrH73L?Nc3yrKh+SjWK7{`C2f@vNHBT`7;_wsA%5v| zVMGgp2=$8#VZ3-2KX>9SW{9*8Kx0#seNw?2BtD~;{yI`0HuUT@dpR>|Z`$>?oXAFl zZ5}TxX_2uK3QiZ;wh#P5iDZI!bxNPvzZ1cJ-r9ahq3=!8ukU&Rh6}Ke7aG11^o?#6 z8#~Epl5-zX4(o#YjT-OHU221_NNP86f*acF@T@Xv(rMSx__@@lBxbD(`9bjm#@6s# zPSHlRbAwKT#gd54U|S6BMJZr*Phu+1{cy1J@jMc>?_V)7eW|Q?vtG%Uv7=;c*C8|x ze?LXZ&+x0LytU{@T+N==^uc+drkU%9TK>E;7QKAi_jsy(-~wBrq*#9NZ&n)*q}a9Y4@&;i{;){eEGQ?$ey50~n|W)|_ZyF| z?t*Z%k7X|_$y&?~JBN%U-1>IN(yq?&v+d5qU#h3~6-A9hyduLch&k_jEbeNL41uX20CW_e?!F=5YMo zZr0*x_o*7~9kXjr>upG*h7H{~!c4W#P1{!Sn&tzwdv%uFciAy4a9<#^S^i)I;UiD9 z|3FzvZTyfyq3N~er%m^=<~UowHU}b}*ZU}2ekq@CWdm*A6IqgsgW(6%X~fH}-`lui zuiWvhK+KI->|gI0XrLYG;rw51H5AI&+HHZBe-;V}*Lz6td5gD_+_ZYnF`|VlJlBNo zaTk|9FV{*Cdr8yFm>ZL{dALBi8RMly*}^WcM2f(y@XVXl4@s|*CPe2{@;y~nTQ~Aw zX^c=~a|@Sv1rNZF&kCXPafdp$)Xnv}YY#HdYIVaahflQ__e%h}!;dv(ZQGJJm-r7p zRd&f;k&$dJE}x_aG-IjKS!eMV4%mitfrb+N1X1wIwvNzOUCpbam6vPIRhrC5X&MM> z{nu}U)d0)Ejv-^A^R;WWNWuBU@E#c9!nO$rNSy%Y%}&0=Edy!GOcChAoN$xZ#}GP( z-t+IZga1v!3}oA4(!eWM|7knEsA#QCwOetEOj_x#PsWt+X!i#MAqGE@N}YRci)PLH zIjIee2J`Boj&q8WK=RY`Hic3B$cw;vX#inz1=ySNN9)Y!F`95u+PSUOfGTkf17*z8D5zC|1w$CMjefn=s>Pqli@d0zJ5SF9Tj0&gl=2qmsE$Ix zdH-DfO@8H~jP+_yaTAeB!l<0bU~-lEb~=>LS(rn{;On+rxuBt3D{*Z#UnvPh>EjD~ zJ!DrWrOj#T6sY)|mv=PM2ESPox?fcIh0;C@R zAu{2b=R$1x%6a{+zfW;*d^D9A)4;-5yvzND<@nS0<~#n8B{TKf5NX{Ga_4ch|B~e| z$d`zG_RZ)^@L!IoW)=Qtxj$QGY$GICeu%1t|8kD^3&mf|b@8199z5TG&kw}kcb@>n zbZET#Wz!#5Z<1tlP%^8r@gf1$(D8Z(9{Efl*r_0%mQ22VIWXm+X@tl5Jjcb;zuJnT zDYyu95huw^-ASPbHNRvge29_yaO}SUkKkUO2wp_uomH(_=I$N}r7_db4pRF2`&6K7 zgXY40Nl*`P!!K4Z^$>*|6Xl04AM*8`6<-g%ANc`V-yN?R=>CI$bbE1|x;-%stT9dr z$JZGCd=HaOPv4>z{aq@Q6$la$`}><1S6})t{F?e}Ol6k+{HCH>%vQE!-}n{46`Cft`Eq8hLjn?u@7yCx&Cq0d!Av(iN? ze|~hx{_rwEWD~!0Ay83JD`qm;Gt#bCW^?z7+2!;Yv)mfM8f*FCLzqHZpPNr;x9r$& zF4Nx;{U)Ui6I0_FhUST(acPQSP+4glFneOPu%u=URUT+#p+nA7Lp@0FK)&1EYxsCua#?LAw$f42WkyCnL2(iNX1oZ2wAg8d^hbe_O9mm!?d!(qrLFvH3f9KFc5nS_5k+2N&&Yw{b4UD9QX-1h5W#0 z3bj7eFZf&1{rKEBLY>NcBZajWF5Glpoztp80gz#yQR%a%_TVgvtP*tOCVx_1B?6F zfwR#N4f9Ux@zJOtl#zKCMQLYKy%KO-Im&N~9V}mdB8?}ejBmdm*OdpKS_W6$#m6ZM z+IY;kh~sxGSzyOum_oNIOIpGGpn<-oPP7hKwmXf}h?x5m_)h5*nx6aG*z^b)q$2+P zN<0{5`_+#yLzt6*edC!1OWC!d0^<%o?cQ;^wA!?LUg#cMI$)r@_0hllHX{-}{l7|M z@L!r9Wsgxw%uGN^7cd!dm_<8JJ79F&LA!NGEMuI#JZT2%8KdotErBRWkVqg&pMK+C zKV{tpgVDBNy%?e$o%c4VRpxQQ`|>gq_JwQ4 zHglaFA!>^ONO5G+dN5NZ%gMv&2pVMr{8Mv|pXmvPeS4B`^F)ZB4p|8oYd95Vb}wqz z;AfytIPl#RBo1@EfT!ko$MA_4`)2P{xUADm+(RZ!F;54MeWcryn>;V}e%7 zaM4<=gA@nq{|2)Wprs_z`{v2pgS_gK(R~MVeAmvND@qENZSOQ_7cRf2{fOyYT9xYT zvG%o-D-VP(g(;q|88N-0b27oPwZo&uIIpy3PVo)!7`k2Rl~p#VIk%@}z3SUQ-ZlIX z_m;*c5%SgYXrkCkz{&Z2XhtT=L1ss3EPWV4I*&esE#8se!B zjf2Fk8S3JrXRc7T`vgz&|gV8dLb zYN|pxD3vXL^Cd#-%tcuNup&=TQ|O~w*BaXqxZg?+F=g~s==d@F$jwWt&t;0Gmvj@y zaE$nX3|q_VKZJ?#GG&pEgWuk4sU&z9L{Ykfoehp7P8ADwPuyQ#zm%^OZ67oARAYop zlU#DW5y#PRB)YUo<40a`7S%KLC~E-qy4QK^La)%hIC|bTWd+gNFB_^Ft_o zjCdgWp)vgr0)Pk5aR9;)W0L<3O<@>I*eMKkI~ZK7toiWIrqUJejq4FSS>GGbcvYws zucevZlT-n^HDJ%Lot4yEFQBn~gY%;GLh%0e_rmZ_iF&`6ipZN{1GlS8=U!_=H-cIU zs0$J5lXr;yaTn`mVmxekRXrptgt1pY&rTkBv?U)le@n7~?Y=r&o)C79JimxE0$Xl} zU1IFc%_$$UO_{0&u2NQ1(d@5*dLLw;y@m&c3mw$Da_dis1z7(PLa-mrX|iyd0K~J| zW%|=tQulPEFdjkQqy)2k?;ORLIziw5(ZADsy}t(_OLRPH*@B(R(9sgs)3QFBq4-HG zRIj70rKEZ+ai5TBlvx7zEbG%s&*`Y}>2s*;*`;BPC8%*xG8fg=+VO8EhbM}0TL zkAh@>U-@W~?;||$SNq+9+g3CxAisO}PrWFTb=dcl$5)b_B`|T(G3RPX-Q0J>9HlUw zSr%JF!lRpnG6YGI(gUKfG6onlRysojNQBUjA$@ep7=3}k^pA1>{6mCvAd#0c1EmUu zuLp*&m!O;HJP9obvN{EYpbFE7P`c26KmGU7`H$@_8Z#;ew+^AL6QY5H=&C)%30Y6l zeZGKcVdD;s3&vX8KO}VMax=XO*J@1Gq0ggd^nsV0(?+a5z04mkSS~hE71Wx1@yH(e zMxF2Mfr-yte*VQIsI%s-|2WS{(4*m!Gp|5(U7DQuuIBfe4F@*}5^Jy7+n3ftq&wJ`!YkmK(X=N0J&sMNl`X^?YQ!~8o{9Oi*`Uu<&n`Z&hGqf+np&*S^0y!?jIWrnx@i4e+}i=a8KUB0 zk{qSf+_)0+n<~92F)bYf^8u=KNt2z-RofObiRi>w-#^Zh9x9!fQ?=}%6V`U>Hh&M{ zouG?9dfx&AdCc2)GYP~RwDr$*Hc-c9SX|bL#VdUi@=q#8i#jY%|gZjET`z zoAP*LYIXwV`QEtGn*^=FNO^$TmK+u?n#G}^xXvIc!dQ9`Q82WbgaaNp3hthJklvAV`*ZD`^sA=xQ?Z2m?rRDbm#sf?#UYEgTm_2iu zc^<{lWT>>=32yDB9CmnPr^MhB7PQ8#Q1ZlDtMgo7+ch8jli-=-50vo7l9TCc&)5&u zsX>BcXW<@Dx$lC#5A@X92k)={-HxJjyB3^IamL@zzThsIv#BeUic1onx8Eztvwb1& zy0kNKtYGR9+&96~gHq4OGal06ydXbb3e@f`DPym+%Pza1atK|5>Nne=KT&qxE=E6; z7tTy4cld;V^$Pr?fa5RR5HO|vnvN6_S_ttEzR*I=uYJj*;(wD~U&)(XjB*WNgq+9p zeV!Z-xyq%FkXJPCq-HZn6ArOVr$K12b>*M`UcurXpX) zR$Dz*o8p>I)I!~Y6_QlXah+}F_~EEps(z>b+W=8_TP+nArvl+gbsT$#{sil4D(X|^ zrketG5(~ei%n@uZ6a+MN>gzy0)-&*u?5LJBp?$o+6LYp=-#A{ROiNX#e8DW>1-jw;jR0h!-pXBfsx z#Y$byzLw%tv8sZWe#?!vO$>{-JF1OY7dHc7swB;`s9f?n#NS-Ve@~CbguiGhRgC*- zbfz44=!Y#^%pFqC7uzmv7^$ze$DWGgMTZD=y)+&6weASTuotVa*~#@bbS(S|aIm;w5td3yNk``7(|Fm)R%1lKJjR zi4h**ya0|GoA)I)PLG~mT33sIXY2peSu1tO;M=BXs?%ZhHkM^xo4;Rnz*`&**3a7( zWzS-xaUeH+eAP1}J<~(s=J~DW_+9vwW#YXPI@k_^Z#<5#+m@1H+)>dBFMEd|HlA>}d+9y+b zR?gW_wLQP9;ooA5`5?fzB!7dK58RV7GL0)IhvS9vju6sBXRz~&0iF5ZGj?S6J*KGM;4#=t4 zI}G`#R-Ch-#d&$L!C|g9$Mv)X&Ybr+jC( zUlMI(_##-|G3BSDhy@?(D){=-qQdDJA@XGNbO-tUQGv(Nq3tIFzgF_uH(%%yC=*lvoID#)@et)j_&_n_w;O$+2T`ng{7tuS=RlB>z9677s2?a z6^&A!OtB$a6Qu2O(IVrKuy4#*TkT=3fqd*wfM{Qj*3s+vXK!b};J|PBas@TN^(S6` z(y+bPt-6?B>7joA%CZK5yWnBxHt$xz037s0#9652QWI9xVR9#3GQK8myTE-`rnAXD z%l)fIxj6c6-rm@wJZ8oPaKCF(R^RXQI$yQ^CNqP}6gQo8_%P2;y-GtAB2^er z-sz(7pzVo7XKAxe@I5o1PacI_gO_jG%YO|FJBqbosq9wpICP9I!=KPz4*!Sc3E zl`ml7CHj}hQLH{KgcWhwlsNwt-^w2z^HjoMkL9dTL$ImXX5}wQxz>M&I64B)H2vKW zU?}p}ret~Q`d&hgLex>=(92(d*4@PL~WfA83n3z0wrb(Le$>bcnW?)?>$*qhx1%^cvHOuy(QmQ!Mo< z<3efPQR&7>z<9=&qKVD>XH4%m?11FQo`l|?9(F8^#=>rlZM+X{e<8w1QeWl#dk1*j!V7Bt*-oAmwhyjF#v2gD zqS)oi@dnQ;g6j;v@Tz|HH7}Oe!~quTNFFhb+*Rb;HfC7J?UTz&o!*IW%(Y%hBA$hR z3}@X#I|%>B?~H!3w<~#&UM;m#pNRqzWUv3Jl+JkK>gj!Z0@mDURlRGF zhuX+^CDZhArao*iDs;t3z^6=W!7Pd{iKiSqdco(~PDy=#SbXX?^**REm)mMW?Z=o` zM23Sp-cYXK_NQw{r%}y!&;kn>*|S3ZsoYH;P1@0lKhB~|AFI8){vP4K~)?Gl2L z7Vkrwp1I%`IAr?=f7S}6x@=26e@|XIXJh6OeIMP=9p)j}#ddTzG_%7?pZdn6e1RyawW*?ZQG1V4qjphSYZN7I?Gby_-kVr0wUyelReSFp zd#@4%LF~O^hKRm?&-1*0Lh}9G=bUStb5)MIG8F@Z0(R-VT*~MVxM4nYk4F=6JotZd z0Rvd&iAz(XlcnFSt?Cx2M}fZqXUxQ~^j^{2(eC!5)RHKrB^&m|{M54K#CCj}> z9b1e{Z46FtHKqVYsfxdFLWChSForhvwkvose-oS9ZS-I{P_S zMN|X{r>aI|c_;?;(%rKoV@BhN-GJ{B1|hjeJ`z2Zpw1K20Ay#|eF^1W&)#N-V$oU+ ze2-VT@GgA*uc&W*j0YP%U}aUR6HcYBZRZGj9iBAa`500NkB;l-B_>8YAOmIlPiuNF zB(+_4U0(l5r+&RU)re_G?0H#k?Xd2iFjBeb^zd;Yg`@wzB)b`jN7AdZ(T(H+yH748 z&gD9BLS&#@ug5OmE<4xeh2>>u=SvY>Xj_{1>^l{POeFyU|N?<&~_YZ^q9}W;>~{q1)~-&6t|^(8x;8%UVAWFs!@eo?}>W z*Q!uqrn_oyb#6-Ur<7fU#j*fH7QD{x@@zH3<7^+kEi^1Tl?_MKVVNQCRPnXH}n_|RTqO9@`GuhOARdS5e zCIn=rBXXmOS$KZdV#Lq%giT77Tx%WTmEW88s&nCeU>7tId~htk%)WQ!@)|LC+-4^3 zD<+;Yk3gi``y{%QmAVdr>AqONS1U1~^Ds}ovWiN8rdxx&bgG+-b zo+o(W?|5VBhwEGL%-di6>||J7FcTPTK;u-JGkTr!oK~^KDN|c7ap$go8Vy|=g0{AT z>`r~Wu)lLnBB&x}1N5AzVe%=3CON;@C#5cVqZtZb|7B5L)XTc=KfCEVIeaW3+(u(nRK z3VtPo1ysCrQEC3@TWV-qw5}M={bB6Ve;ylZD!AphSX1tN(iczjyHo(rSsjGpdYVj< zvL+U;v#-^YW4f@Ka{9V<(qjq4>#yLnD~xfI9T{lCLml)^XeWpTEcQn|P>RgI27(51 z$*!l~EV^k=+K=BFpUIZD)x}#oalTk8h}-ENqgm7fTF}6S@kHrJU_YXc+PKFf zwoGV%x(MU8ZrjPtyAxm_^X;Ls5wei31 z=EwOjUVJs3_xdon>ha-6T(qMtpmYl&u26gK-DAsW3HKkPz&<3`r>)YiP0CwZc&?^$ z`Eo(M@nK>eBX9u@Rz>acjvF zjXrrDYjA`GebPx`-HGdU907hko#{GDMSiIX)OshC+z}*QHEh1GWic3L@)MpSrjT_q zi&@kCOx+p2pMT4iTk1o%k41O&eKG~O5gm{>vK4Yhv(!OWCrk^Rq-h*QOs?r6D&}AA zB@RN=;}md8g6{7j)ExSLs?^Y!rXfB9gUb(pA9~-cyG4eNPoc?+rk=Od#Dp^B;kvF8 z5XH2d8`FfbzPb9-Fbk26pM%BywpXGyUu?oQu6wFSu-cU*0-yGqrMY}|7|*mwoAeR5 z;h4`b=?`lj&@U3({ptpzlA+NRJao`zd?8C7_YZoE{__ud%#XxEMC>beOTnJa2vkGe zmTY%cS2$*bq!r@tmr2E-ubD=Jr<;_2t%AtL0G_&3Nj_M2%0WzcXZgXo`xq@UM0eV7 z+TcaY22Ceg7cKA`St(lnxSIC8db;4;0MXr92P0O~dg2tiY0Ror{#e=pUCG!bc?JY= z?~_88NTirif%Dg8wC0g(;slJaNYVoZ1Q2>VSagZ`Z?V8=>K|^|DmAH2F0oc}B(qYN zzOT~WNLnCCjq5*tTW4vw8)32?U20BfIOP4H8b|J$h~d~Xl~zmfPf`=r zgW{j=7$wVVDLR+p8us#qX1qR##-d(GYhE+hx;cg)e6LgpAZ@vQ8{M(CUPw0hZ1N`0 zGjykn8fS$w2OJ7zNih>-)%*>ND>}Kh_)BI4mdF7;uIrc(8#vv}5E118y*47L=8vhn-+!h>JRPjN8VPWfzEq+#^ZM2AYs%}lg$&U}UHsijaW5#kk!S(D zzj9UL{aEg{Y+QI+SXVQ$gw(L{bO8lrnx+wd4m0qEBcgeCRm-@s;rM%Jt;~78T=5zMmFRR~SN6qnZn23U3 z0b0kks+qEUYriPC$1ZIO6~;!mR^plV;FqNwg1SBx1HTcfr zjp^UY+x5I;!U7DLeeQuFj=QTT7B$vhjA|0th&^{6vqW_3>InPEXQF<-1U+%$<*{Y!<5{BhSxxvM-{>~!Y88mRi{ zFV9S9`vLk+c&I8kx3~Suad23StL-GtB_W9E@lE}2rtR>uT%6OoJemEjx1ge?g9RKL z0fwQT2|xCYqo)s7)Fh@R_a}GDF36fUm`n>ikJU`6R&ak^%6at~n#bjSqG*#@-CB7h z`KQ2(G$>)uhC`}Jb&Il8iz7x1C^3)y&fF>Zy87@0bAefGnrq>4Q;EjKvD{>!(S~gs zj{9$1UT3}THpqb&8=4hZAzaHZ&QA%X%kOu)wyAfT#~LDu;-7Wf)pgG4WU2WI*Z8p% zc6J2EnwW2Z8DzhK=KDXfBK6<#u>IAho3{eldz0U{6bakU(c&kL2-S|U{DeE@W$-q1 zU)0dfrU+oUCedxjVX?*L11!{iI4$|vY}WjBAD_OF(k@gM&Zzxm6L;iz1!!{b;z55%$ykT}%F zy6pjEjEcQ8^%X;_N|Ttq(_L?f$`dBU3!rk?+<=*xOX6RhTw`Yrz&o5M``R#!`O5wwM2`bXYLnX zr%x%rX>NC^fV%95kyw#t+J;J9cORD^;;gdtj`bXnGW*l_vYXLWS)EVq171Q2WW?$| zj@@kf#*Cvv)q_=roW1E4g?!Q*qZ`XA^BaR`!gCh>C_nO*)2&%TJ{t|~C5bG;n~d0d zz~kd*_)E3pkAp@L9+YZ49Ktkvc|wi^-xUwi`RsN^FNg%Qri4;dp5CsxEgI206?PSV zl)lAt1UMnr`5&5S8|XBw^!?F)`Gbn zwaeu8&o*-(L=4ao%dVAC#GF>AuSV^p=SIUHD zt#EqXZE@giBcnyGH}#X6#0tbakOP*`;j-(g`GW&aUkW!Df9Fx*o&pX zCI(g-+GSn*S6gd3lpm5eUHuSObQ?#uBrIF5Su`wS`;d>Y5h8Fi_ov4H3iYPCnJ6O^ zC_iH!u2j_UM!>oXX1=mptGB^9sx0Hb>FmCc+|A#gv94t$-;#5*7WjJMf&BlFl1*hJ z+0%6~ z3r`k$Pg3cA;;!O!mmgHj6CaOWFQOf2Ek81WS8+%}rx0A>!Vryoh#~1JB_|`1#vZMh zCWS%n(dBSvM#C>7zZW8j47lCmM6T&;-j=k&WlGP*b)h@nqGH(VSY!&&pYP?{h|Q z=d85l*GD#R8fHoL#q=|pnL&u8RuzfFc7MPw?08hXi|H}i;20M5C;+dxrMH^Z;zrdJ z^xWs~Lh7iyU#sQLTo4< z27??Eo$Ts~7n#{v#jA-)YYGI~Ud4uq`^qG=IM5Ey4|vRP-T!f53BYzd*eqMrFF7R* zq<9JlC_|{3+Xv{?G)5&6KhpRTVrh9|IZh=e>(D9r$yuGG6Wu2ZQ;=ceWPl7&k$3=q zBH5B(NuPSm2x{^R&Y6<$-^NynBQ!>Pg3}m2=O5V&i_HhRfIN2X6?1OfAl5NE-+4=d zuzSixbq`lE-9!{nFf(JfC5}@=>8`k$87pWmU0HqJQwo1Yv;sQZ; zLJCm!^p--?OKj^94?D`QNXX{ai}JN|)W{ody2)DcwsH?@1hg6D=6ST(_fpC3=)Ev<3fR zuT2vE>x=j=fs`cg#wGU$*K=fK4+>Qp1g4Zx^H&FYVNeGw`j8g-e7v&&m%T>;g8a1A zN_b7o)N`B$@(dm*_Etg=k;GwLcTGSIs?o>`vvaY}Q6hO#;_*}@^|L{d#bfVZiQl4h zGZiF!B_F7Sxgl6)Sx6?o3}*L=KA5~+rmUJm46Q}+i=N?y`(I97zJ*E!Woja-Z=V)-Uw>^9 zW(a5Uix%$Q#~-MxZG@}UFg&R=_jynrGDW4;{V^OMh4CDFJ|?Bq*vmiW!O!mC#l12W zg9nyO^}^;79Mv^h1jke=2MSvm2$ezaMzEA;FIH_C!x z%mL5DXlR`gP8+xO1Wr4z2^k~K=p8Vzkw@a`RmwL&@uv>I#Uia-z1rI~@{P!q4rx~E zoWQrA3t}F6e=u_Xy}p3M;!h4w%ZfYyVVzxyrf<88QDh%=D9-?txIOx&@8o>l5Pa5NjDueJ+HQjLv7j}*lNbnc&ZJo?OENaMt|K<1?Air3Uy z`26k)n(WCzK-ra38#<`5h9Bp-*Q#wadOIcV+p@BJ0`>pl@6T1JDC2mM{(#_F!s$9P zNd_Wy*_&zC0(RqVJgYw^nbMw8$63}vGR)>5JRi6Tq-Z6Ec@|EeGV`+xr3DkXV2;}%YVC)@BG947uN3-ARUFBbY30XZu17OogIyXAmx zh|eWo%$7>1(ChVJ{Md)u6A}$>le-g zVz<<^BKiUHAB)fwUQ4!6V(Ei?_B4pSa(laUASf(A^GS_kv1AI}%RP|7py;1?v4V657f9o-Pe~JXw#vv^M99MoZ7e&SRT4%YeHHc|uJ z>4Wa-2hS}K7taZ!C;A}dS)fH9zwqHF`MIn)8p!9jkEorVna%E!ca{qZQ>m^;V6_)I zn@CD_E>lmk{Uz84qM6**+YQjxA*z-*A2+ z4NI`P+G#$OoCxC|Tg!t8P8F@g?((xZW<#0b0Zi`>q#2j07MO5JvG20v)WQO}V-7<_ z8NJ$>N`&*Pp3YCM-W2CZ^m5RwSk(tRMm6j_r{9$rfrM1|pT%BBLM;zGuokc^OQF%x zsD$ehp0h@%FB8j{n>imHZ?wd*+079KH|1d|M(zo&!Ld*ykT>3i$;#$O<>Fub{fTW> zlh0Ue;9ZZeF+07wMR<*w*Zl*sZ|};GHpPr9vRJ-n6=1Z{53zAF`vO1x>pk@q0Y&O) z+}abJi>W=%%#`wRmAx;SJ->;xTeo@DNsrl7n`P7PnJsh2OsIaBO_vyH=-wF9dDqz?Y;i7@_` z;}QWfVEC6=9<)yQJwx*ILBteUb4H$cBzP8Fa@#5k;|stfZihNle3IVhXfbf)Qss)v zlG|YU{@x(emj$!uKijx!8%4%Pee1nV2M*<3#sQhqOJVHIcI}>Vem!)Q&#LG$i<)rj9 zJy>E~uxzfn-cZ*_a0oGJlqGK7xOt<0f?4P0l~dSS^=K~fe1DRV327v@t2ht5>~Q32 zYWb_kx)T`d@T-^d@U`3ZU3V)2Q->&*qpfszHl_OX+g~7J+*DFe>i2LXHp8RrMh2W# zTAH^+bGtO(K=?j&BxFI4v!H*!i6uXSIF5tUjwl7unj5w|P5aC%mA^ZirN{yC9=hg^ zj&0wiC=;5A)pbPc6qq8{-i&cq-N*QXaoNL+ZB2ZAzrzi?J>V5%%4(TfYiveUrlJPt z>vvqdlVJ}}_~PSOCDH_~{^wpmgB1vSM(Mej!c78`>e^>(zAY91w@m@RbDzUW8hakG2-K};AM79t)feWIIse>hlLUn(_ilU>{#v7&|5iAxllpx?BRQ; zjAbVEVeYCbmt()?(Q8`tt@WKXJ&%PtfQ0JdA-BZj{eQp%LIG1 z&Ox?k!AUl@LTlp9`n5kf@#Q>EWvrwDEFHTm3Df=#_4A`2Z$7R|o%uSwT?v}QX5}Wr;Fl?XWdFs{Xjf%$)8&L60b*NtRgguIz zrp%n{c!wJwR`{U+-7CQ58AjC#6_j1ZxUaC=pFxUOl{$wgrh7DoU-WiEjxfc{qe9gV zcka2@(geWFhtwh7^eo@?-;potKfp}?#N@Y~KT&;0dtHwAy0h}>->XgE0%!F6Z*e~$ z%4?{Ft}sjvHFG2Kr^-xo%xV@Fy~<4MEbmEBEH5u}UWp~J+eZ@SUoK7IEsF($rw1=w zd!?l~N2qqU5*%yu9UVVH$@^NP*mmWsTm3SI@l$H6jcFghWo64o4d_~OMl+_Ic9<}U z&|Ke0&TjnKm1uzDv&KYM?s`_LU3BE0KG+K0CUYs}Zyg`yd9Gek@3x#*s)&PeV@ANI zkEL6)Nx)_?d34=LH^qkmjC@GL81ikgM#-k^n+5!uJ+JkMe00?*s732U@Hu_Az|daYySnrK?Ux#aKCLESWaumydt^V|<6YR@MP)mF`gAwq zlM!?>9~%YPUTSbVi!ppl24E6p2`|WrE~3+TokMK#x&5saaHFX|Wqpt4AvjiOprLZ4 zV7Y4bs>s5RVv_C7?X?lLJ*I}>eM&BIigr}I@9HA4+o&^JZ;NbPkKVD*CDp*5$z((S zfiEyKq{@pSe+_ZrYQ0J@_4b80?86*>QBva ziBX`uXsb{a_4?&K?=0X46F~<79wAlcMgNdh@o9IumfA)$YfTH-sTAR7J56Zgd0ELj zme#oF-Ag|&847Z+*%Zo*XGiGKT@I>8GjS2K_RU=j>{#nZ(`bIRq6awipzJa9JFyaM zQ=Cx7$W7`j{<`a$!wbTGQwr?89_tJTi%vzTw6Df|hLx!o$3KIoleL$wtR^2kmF+$- zkUByi@#a*Dk0xKS{RrFa5i1@4QJIS0&XFT}@AVX*mW4tfL`)Hs2-1P{cmWNmAte~} z2QKwJ;^N!iS&8rNUUd6D5>0Dpfv9X&srX1m4b-f_?Y6(l+@`dPtfj~68vaTn4ys>5 zL4iV7FG1=|3uAhxh5YP1p(Z(uS)JEn7cDG0xM_rUSE`fIV{hrz@ftv{ZYep}*w8}@FLf1EUH z(pWsf+^*h^S5`SoX7@`*o3?rViPBc64K|rNz_Sf~BF2@X1iMw*JmtoYQ`b*f^L-r- znweOi>)?7+N-!Vdm_W~a4VpJ=)Mbrf{5rU9t1qln>m!lDCmvHoRjnW9SkVW$qvRYK zKmhjXxURgUr1QT2mA+6f^i)M`X}@Q!w!aP)W$-!gXkrD;ALj=?eV+0b!98D5G(W;U z&|Deatl`Q#pT4f^NOl;G%rf=2!l-x^WnMj+Gjo7vCLgs>d_%+lQ^QsGvC-rU6u0>3h(kZ{16dN`=<)7{!>PUJ z>q4z_xNLRwUq(DARiKN}tAz1*pqN~H3urG#&T5jg)xR&dSti$`0n1|Q8UIg*v>&p> zZ;oYgAm#2tjTGQ2?0KGAd@J*Xw-+=a^hPmjc~lBI?G9T%$&)teZdS)QISDSjKT9fT z2l;>9^%Oi0*QGF78Z9u1M~K}J8zu>8%8u(PoQbBb+vK(V_+pRZl_bo%eGzGWfl1O< z^8Vz*uh1t-lS7q%ib7pHFmdM};&$6I#Jyo#{&L5h(Dl9F#H-g4u7ouO8~PFq$#G#P zTSTeqmEwV(QZM!H5`1Xo!XyQ-!WM<4hGD&U@-cCv~ zqbw}U^<>UQg*!w+m)x50VOB}50B`z#3vJ;)h1Mpo7)zjbJQNLndCY8dQha`mKfTJt z8aBi%bcC%nn6*tIeY*4bN*`qChx^kL?7Hv34A_!9sOx%2^Q(G%&FcNpdm7Jl;l(gc zDMSaN5#k{1bPFBT*;U59>R(r^nY}Pm4l>&VRLj&d8#|q%qE|&yx?cR!snMeWw9RM+ z5jF7yFd#Tr4!dSwBdugN1BW71f~Pt#zD#8d2^p4H2&iuv{|;Rd(+iJ06bd9|R+cFp zCerLnNisULP!Zkuz7Uf#6nFi#Q9AJkOM0)lGKxzKEG|{r`LZDo7-3r*EBLuk5C4Ko zCP~3>(?2^m*1^W@Vk6^r%W0*Wr@hgU-F?TB)v%&T)daJL#!Ed*pVv#S^&{c9l=ISp zY1hU@5;hY#0OA`ED5c(9Af^g(lp1HwFuSdO$m<%d8iX`vdrL|GQXwp!cPu0I%FNo= zNr*euqHt!rAv$B8Hw~Fl<{)sm1uMVQB0`DgX%`z+RMtA~K~I*bdQF9|8mfJwT(Tyj z&Vt*SI!)1!_$15O%5j?Fix=SPjjFk1ga0tkm;cd~n-VZ#|I++!R7JaIqq6`+bcVSr zs7~6KK48ml4>!owgDff;yAdo5*eb&`epar8UfX>T+f1Rv=Xn#;7lc^)nc-G@B_3m8 z0ju>}UPgFVbzYrh?VS>T;G2?@AJ-QNJ+Q8fKlt^iC%H1jAFaqyTL)gmhG`Yz#S%0L zBxPA}bc@P*uHaUGS^>fGIFA+$pG*5vZM+6W9~38PeEsIbt&r8}&2ggTMeji2t3zdO zv6ys>$7@o9t`uqIqv0`gGrCBWl7vTT1-*Ae)LdFSuH0FzM}#%;wN1WKX}v?SpZC!t z>JH>D5BVF$)I`uMW;3R?oAx%&(Z4lIfZt0VcJt2%JGtBI%8EKlcxpe=O>W92FJ3Ma z3>sKWR;s$ZOgkcprAHnM)<$|391|%oy%gs|Hv1T$OZE-*(TZR8o_4auXdIf50!;dS zW$&rhb)fl;6PCJ;omhLGWoMNpm&1Zyu}nId#}@KwUm2dl77;Z6?*))_F~R$blPXf3 zJ$!UuT0!qmgd~kUE!&FvD#H&G1qEyG)Uly>gpwg3-ZigTr(kDCc=@ufo@t31O?H|4Joh!1zKOJX6>Ci`96Quc%z+7EAHoBCyijAGg z8-5O~U->5ocz~=gN@2Y`jdgAEkoC52+*h}mHxrQGB5ILh}UB#RhD?F^ab?kdWTST!400Z)3P&;F;B zFJAoof7{Tbjado4y;pkHw`HUIG8Laljscj?J)YJ1U0_B}k>cFPw^t}OS5w(6RDe$7 zLVX@#mAAZ<2KpWDnsV!CJ)0lK&1I0HwFJV5?_kTp#a;wCi(8HF2)MGKIC(#5O#6{j zYt1~-q&p*N+gl$>yGwEI{pC8i%&%YO#DYIeV#Bj0s~+lqP6L$QVe&=!^znD}{Oy?D z**`H}=;XRdA}5y19Jc{cp8-iPe-4Tg#UZ^l^aTN_JmAuW`-2ho19i65;_6m>$}vxs z%qoa-=pH#ln>XgrX5NqFy{sR-YRvFkQ?F&Cov39^U5v2!7drP=2$6@p9z?yVo~tB8 z9{K%P$dS<7FWEU~A!Z+(nhSO-k7@gW=WZ*>vawC;Mjj^*6$txbse1dUnw9jNR~ZEW5V_u#NF3X3K)2J_Y)za z0T!DIOPdp2L0pU$3!FdUqqSZb6ix2-ypx>ZI2)cczr}AXLXOqYj=}{#K8cuEx!L#0 z{9bkc3aRdL`>Zgx?^JCUwfYZv4u16Cpsl)xSN{stB;kl3@hCIEKC|@4Z^$Z`bH|u; zzB6$@DVk$2RPO%$mjm)WnbT|M?1i|u^u@Vb__er)GoPB{Az@(pcGeog0lW(j^!cOLuD3h`}0XS{*I+r^#7-2%DM=;kiV)@s7b*6&$f2%7x zg(>QsWZd`02W9fK-?x}06n&BibS=Z`p=;+4zaBpUznJArox1KIM&B@iv7)c#a!2ft zUs?fO@;-)@P`nPHRP(+O}Gcr|$*s^cgw) zDWRl|uX46e9$$u3Kvtg5jbC{(6Jkk;5_0;jw(I6C`m_c`pChlIh2y5hEe2WmsBVl( zcU9k-UiJHI82T&;M!!ju4iM%o%-74?km$Woo~qMhBs7m8DNXCPZv&#_RKraSE2)mE zZr0_Ld1PIb4vMptakw;sDF5BGDVzG&E461QaI}IGaXwGV9jX{`PFT}KJ=AHi3PJ1FP!c5x^t8QAnIC9raC(3vs#gVS91Wp+-qbMhx4G< zDaX%jY}Ch=+3#+1+rob0dVje-g76mVj2_XXa$6{9}2k zHHyqlwNJMFXi|EtTEZ0%M<|5SzQ*ZGru7HZpP&aq;MkCzi$6>TE>T@2iYEDZx-vFq$*qj97R&x0+Z_=@&s<6>-M$Gmn9mUl|w~ z*sJLHtIs#xLAZ8YfM_bUkMi7y)<^wety)(=Dz*qah^3Jt-%}`%mJDoG)W|}tCH-N; zKR)c03{rl~+EFGy;wLgzkUrtOdZM#uRgmE>!|aN3ufl-{;#><#i80{|n{QTnlLa*j z>96MtRklc7OWXVy{!eTKt2Tb* z?UNVx!wpiaB#&w|GXUTTTutC&^r_UX+b_ zj~TW%DfoBD@Bbu8$j17-BXfmW1FMO@lqw{)-yc2S($$g+sF)E6I8sV`#o)HZvoLeM z@>JUD82nP9bqcL;{c=%PrrNj=9x>#7QLzEupU^LCE zQQ8mIMPk`x>G_{`>;(4g?(TA+5?r~q}j?C)i10b*I88lTp0D?z$1 zdf1G~0nm-$2Zk_k$n5)OI9CXI?Aos*@bq_o)0aKNpSYjqi3O;SQIEpBy`e=Gr5A9T z)VDj;s!-GBv5TYvz${Qv3C2YHUNG+DifBw3?HXm$&-QAS5UPFnj|m?VU-a+51)0UH zHr{!N7&lfqT$N-v9)1Yx2pu~#WFCFDKK178-Z~;FA9tvrl)n2K+qCoCv#3d_=Y)*; z&MPEca+!UIBVdsw;kjMv!mU1xwBm}wD|cO9RgTQ_G*)^;+Q8|P(nQ$S?*myH_7|aV zUtF&84AXh(GisAm0tVVzsJ`5VxcapvCAmtWY2moxOc!A0DoB$8tmYJrQN&2#70`*f zAo%qbG4`ZlwmMBeX!my4c0&sZHqmX-fnA4*I$ko6{Occ zZd7d;RBjR|`f5x8X|AvEm*j>1x|-1KQu(peQ)~wyTTkzlSnc!%6IsFO=rZj zH!DRM_u@JqmNoEr9Kk~PpE^axCpr`Vt!+1zD@PZ0m-QaYIs5cj^(h}29u$i=1mQzW z)|cY9(c#IqZosU4Q7 z4U%ut$;PO8WTl-1qS~*L!cBla4vm$>V+;JW!()2F zr7AQK!{5MQ)^hNb|08-n2=rMBXe(w&Bk~Ps%d%jbmDi40Ek1AIKt1d=Va7oq@EAHk?ZD-rt7lTYDF%`hMFvZ3fijcx?n> z_LLcA;)Me`jV$PVyA%R1xyWO}kz3ANjFN?V4;KM1o^}lJFf{k_zFMhk7S+OSZ6Eoc zD(`r^^q-UTmj*J?7msqtJ1{M%Y@^6EK`7Y%EKb54$&i}b>Qnh1O3y^tuzpx8;Q6# zC&OU|(n7nzzBHjrN?il$HUzJ@6O{N`L!C8p$N{f z^t)$RJw!e=0dXc_Kq`O*Js^{dbkd3|$JznKCe5F_u~XFt(UcMcMOkz^(gLu0ef(@` zAzleXo=$mXaR-f!c4JSfDk?`<+hR97xmCIerAP!ahbcyzikX&t5<0h9jbvQPz~bEw zi=2ErQIl@Asqmks^!#g{U$mzr9lXm`7lwXk5reFdvDL4qBN=e6!{&5i*0j7xp(GHJ zp40z*sz9v&lJkaz#^CE>BNj+b z2y!tDsd-N+g(~?W2k6h107>@YTpNkuKftdLbYfh5prDU8LzqHgHrDb)!Y_^9u#2Nx zd@Di|?eNB>7ThSWxn)1_#R+JyN!1DDKU+aghmnj+Ml1#Oqu)MU(%C<3^6Zr!4aTtN z&K%YjO|&7v>HN;SIQ+1uUr-)80f)=hM6W8N#eO_x?-3g**odmkp zT9)y<<2V+aBHI@rFw=%3{v*2#asHGFx7C6kjza|-b=;mu zcU~~gIRb>ox3#CEp=N)c&x`I=`#;NK8Wo6n*cyZOL81^009j=d{K1fo;Q#?TY6m4` zvQTiD4-u29pxZZ-RP^MXVB|cNH=(_zNG?HEbKl3$X_8SaalVUY!ok?Toq+^8z8qgQ z3&jgsNy7yneE3YeUG{eMR_%N<@%z7j+zqf@6#Tn@Ym)n)o|TH*Wh#j(%f3p_kt9WX z?~2(Re6Du*`T{8o=Mo6vkBbY&xtrkQ*?HCQdz z1nuPM9;ITCe3|uPpSpw!2A;_Y93>vOoJ+61XxoEKNPtL}r^)xar@eX>AR!t4Z^$(_ zEZc3#vtT;Xn&I6%XD3k`>uFtuNFgXBL_mGOHJjqEWGz(QZspQ;{bezEBeurfYbJ7J zLio7Oy=xPOZDSJ@F!znu7 zE8-g*mznp+I8*KLt-9-IK<^~o2;aU>)e~cD#qk*t0j(ZBglZSD69w3OnPmW&RQnFx zmwnoFpA7Af;Y#W;MM3 zoM4yeW0;GlbV_`-!S`{G)mIIpLdID7&EuH=-^_mgJ82~0o#`Gry2u2%jmvxlft-^G9?zlE!Yg~gtF?H_qWevdWD3@LxX5?r?gsA2r;xl8N&D+6wgoadc&f=vgp&YQTHX#Xc zsCjEGN0MY$VRTm8P5H**C5at^&N!V(gUn%;zL!qh$IN5S4$E;{_i;r3>K~J)zud^g#BS6#X#uHc z9UFTFYa4s|0fD(2-h+@y^nh-`leXABP*uz*L5HMLU3oqZxfb(;0t_#^jg0ZWXF23Er~S0j z{I8dm#lnd@~j81GrT*!S_f;36N=TR7!TBzIGtBS$_$R5)kfLqe0h zC60Y?0o9Zd*K$;R%^W*)dV08xe9idD%B|H>e-!JTvB|klsVO+;5}hW(w>bHh^J?|k zNjZ^1deJL{!YG%sSBXh4+(-kVH-7s*_7JWPuIwsDFK?dnd#Zc&u|IHw^j`1XQ5HPu z`B$r3x_9*>B}Wd191?X5LB^sF)*?cgCsJI6aHOkLAn0!*6Z_2t!lSqD;c{E1PlmwK z#-8ZqTGB(SS*GfTa1Z{L(MU>STJ@Kl^8WQgB5R27{t3M_AD=mvxYV`8jwsLUIkl6s zA1h z-^~j6$5n~e`ftxpNWPPOxmoxrd&gV-i~7tfWu@Upf?=`asnkZN?#_d9Si@9Ph=59K zc6SijP`t#!0?gu$#Vqx7E)OkUtlw2-b%gPuhN>0=w1}zqdzov9Yd_cK_M^=LLXpg& zDCUNH%cZOA#|F&AVCQfb>hj@mm8CIj7wb7Dt;r+|pm6z^Rt69=K9iKc6y zQaF}$&^2YsT4s)KmKWk!UblT=>|Sf?cY5Pw+A7HQp2rIh((BWz9mJdiURYiaH0}|I zT;ig9-{!Np_PYD@Vby0~OhyoN4aZW0R}XY`a*M`?P5TXSybvbN_sK}w)8Gu%UgCbR zG03QC!s+HE#-eh)!mI?sjA@z9Yo|GJ$mlt#aUPkBH3_*Xs@>~aq5T8Lb)%Lpd`~81 zBLb~y+8eKY#-I}cUIy`o_2%Ey2YkNuf6lBK{&)H|{*Rn)y~WWBYRi8t8`@IB?`Lsbf#ycI!%GqG}kAeyx|HW{&dzxkK#q3AT z#5Ymp-`-2^bY}v$9rX^(?_r#nvEJqU5N zkq3Gu#3>Y+-K#oNzv*6bq#K)EltL7YvN;Z)E|DZ|_@7*U)2X@576jhPeh*1>%6PW1 zX%IY~Ig}-xBjtd0l$ubX*MzK^RQAgSSO&=;#2{yN zc}8W?rB61$O;wg`Fl6$`yr-(W(cA!$y&Dd0K|Jx%yVs`1F%59dt_ZWgo4OQ6!+$y# z!l(Sl-O}S|PHV6Gj{a>X=okMrljS(mfb?H^e>d$}WyzO$BLYJ&aZ)|Xj+;2!bUXBu zF{U~SKFT}0os!${EXtsDvX5>qU^HnvfFH{80pR*CKHmeQBsgCd=6cVO^cD+aOrw&R zyZy&KOM^r{z%lRX3K&+%MzcDGeia#K8s%C)_f?lb>coL%I^A73p82SXsxQv&QrEu1 za9R9>UEFmDG68y2Z0WX8>{jWcG#9rg11EPnr90*LEyVm9z{j2E`5)68C z8@^}y)cz#(jLU_M{^HnOc}_p3KLU^n7T0T_dY67#?Dv2t0XC}E%(f-3Vy;b_Hb`0X zcO3UM>zGHSU#*SQHT45k&{o8{c*+J+CP955PdnTXB#3W*0UKr$$h_P%ZfU(TQ|&Ex zqG#>Z4mG9SGqGy%$jeNNRDm&{{gf*nk9#%9HVq7e`o>}O|3YXL@5<-)9UsGGvxB~SHy&L<>1M!87y7|9<=DSl)|7{j|#AT`{ur`$nPZN zMy`|Oq$?g2L0hVgPe;z^h#q3@hZ;%%F9|z8iO%&=;m7|vC}h6-Pmf%b{`tYp$Wk-Q zC!Xarni9gZnokr`VHsm@R=RDeE*?2ubhkH1TU=ZC=W3zs7mH+#LC~j zF~KOuKqgN?%Z4%k;}OMDe!MCg(wdPi8g|4{;hWp~eFSC3_kPZJpN4wmxurc}kNsMF z4YKYZy{`(@|9#6*tmk`a8{8ihJ+k-_B1+`|vZvk%Tbe^(*LF+al(ZW8uD74fX_;=K4nL-F_{<;BWIh(Wj!r?Cr1zYGm6rZbub|-@ElCQmMsyEihIo zd$lTw?aq1n@!$T;+@7S|^ib)P=hw53`K*wcj-CCiG1Fb?H8Ui^UhY6VJ>#=XDPiA) zTFiO#>`Fo*52_*P)g3_}a=evvqMZ3wECHL$NlRL74gVoO!=`XvlcePc^F}ovbA9|P zkJXQ4bWdn zTOkAV7+0fD*?@^WnZ+Z)Pr&V$U1&h-6L&_Ixzc`xzFH-0jJEM?VIh<42w;@-TdK}? z@y@vq{`&R305p&eSBvdjm!Q*&qgrYdKla##vR?DIZ+v3WcfdIYG%vnAR65{nen&PP z$UCd5HqlPv?t%kh7o$?0e{5!W7Rx#I$q=>wf%X?!)0iDN?fQ@FpCa|Uu-cH2SKaeW z*t!qZ$3^5*xcZp*DF_`4*k1QCAn3}7hU&&|if7!mqX?qI&AT(+%jdBr&!#4Q~bF!#uU=o`N z+*5A0WV^P^qsdUi5x#$H`}nmk`CqeCGdlGt=k{mKcMntmrA zdX2o2aZ}w#=^rvy*WTWa;$^>7K5p(@-LXA{HezQBk-Zq!G{s>nX`3dld9# z?RjaHKNTN|DT7+*EqhyOXWnes!J8g9b%@G!skz>{3mjLAWI#n9rxjV05YHznEH%3# zkRJ@F3Y>(t$X8lG8uGUviTwjFF^Hgd3`7zn=R;0{kw)Y+hf35W^lw+G(EQ}xu`ImwE!APCutHswrg^L3e%rpUvS?Muycf+cZ^JAjrKm-UkD zoBb_C0K7hwrC$yFrBSNv+ijjM7w<)&ZOb>TEqH16%``TA)4hofX5303awOV|(iiJE z)>M?}*aMrAcUV$@qAa9kGAU0f6AWViL+R*#vI)9$32lPEB+ zd8U%bhFO9|rud2NzLP1{ho)~mhN&af2y;dfao!}b?}(~*zJw`Z5sXuJSB7%@Z1rX1 z#D(U}ws4D-&@;;kD~?1lGP2K+>lBM3RE9mtf2q~1Jb1oCnMtIds(tbkkA%)&pc&e^ zewcgoz@<|s2t8~5c2Yau-_TA!50&)`*gt@}T-r>x^Wr^+7^b&~qWZpxwoEPa+Jm`+ zZh3ep<<5Og*>p&2lCIm|c&Kz=yU|6qn}=-U&rK=+J4_drRQ)&Uu%1@!`~^H6Mb_4_ zxJZHH&KxQwCpZ=T3=Asvq6+Bt6uYn`OMICY?dzD0A4y$pNcGZ#1`n~FaNN7-503gK z+DaKdBC-)nlEf#S{I!VpNmb=l7fSZRTW5!X8?PM0t`>eQ&9a`!@auW2WocJB)i==> zZKd#5tk*1`^REL&U!C#KaA1;sgN-L-gG$&|o?0v*QflA-{_OMJ>KNYO*r@NUdfWx6 z$N57S^5ut&l{B(Hbdbca+V#TUyJP5hS>)?ZidxG~lASs7iJh(=&rgBH)Do*I^9zfk zbJew*C##eUwa-m8;x|}bhA-*NeoY0$K>O|>;a;;Wy><+0io}OwBEt6;tix=$e3UTL z6r^3Q(yZR>^(*02%J=4a1n0ekjVE1qC!JYghwHxIGCMBkgo2khB94VAEFF~s$+zpI zOUFX3ZDIX_itv0x4!9%*Qf3Ywt7yBZvL;=p~i(V}!x^K>U4_G+G&>{1u7 zP0|7rkZc+$xR>d*Rtm75B)ApoxVKQTyc8)>>_cYAd&ZrxQHv$AYU)(=i6%P z-PQWh^BZIbllA%A>umxre;O{xgKF#lnOnGi5T343Y7%PoUK{p0jN(b${RZa3iWjW? zl=nilP@cG!QK}WbSrplSypWG8)*#pHhxg*7@5PTx;Ev{=Dl1NX&C9xD)q25mF z3}>syHYs|m{HK;Xopp2&0nX{X8AdT~&xh7c?jJ!+MWm2t9b;mbf9%q5O|n(0dJRou zx!;#2xzoJ+9~;VwoyA}9kPCV4+SDkLZ;ThSasgdgFxreW3O>R6dLZ5ydzLw-Wn0<4 zMdU_JcDCTMy`YM)i+{6Ns&OG1>t=JQ3@+X|2%N_pb^baO(hEU+yMB$_>ACH2oti2V zEyOH#S;9Lf%8A1w9xa{75AYK6TvPsq2T+x)sY z3*)XvEz37hJb!b?tw#po?r{3L9CVrjnr1a;{INn66sr?`v-(o!5EYPI&&G807sM|b z@_`XO+B$yW+Bnml7VerFcKjb=ef}R}ZT7*kf4p{oY-2pS5fA-rs!Kg#tK>J#Sq&C~ z-AaItCLC66BEZZn=~K>SR;2WT2{WQ=VSL=M>35(iM+GyhE8D)$uVCco;dQJz^ zD88Y_?n}J)`rr-~o(!6;MrAPdiVewM&kVH!gk4|VT6W^#rf#D6Vrt)Z9h&b+wBmZ* zBg{E}rMfiltUBZoy9}OS60dh7#ivd#NXqj4XteL5bwMD*Lr*>uX|-Y_vcy%hY$`k) zY}CFt$ojXw>dQL;5}3UOJWY9SV7i}|wy%pV!ld+(eH>%iI>w@MZXv~yyg}e-y0KmE-z7~VZ3|S#H&ff4m4&&w$#@gg#S^~*?jtU zqdg{X0N3>C1e;pc>D-2gs#_6Ebn5SL%)<5FEkgOVsz|#4Ds_UtJ(W z#qi~KlC5>i(Xw&(yiZMK!i$_lYbQV$4Y=_uLBDPF*-e06aKjuG(>4B#uB4RP%~nUh z4^gY8arF#}NuJ8LGnaKGZp~2ec_Pa;$LiH3`>BG}4|llD1kL36X&J8|L2M+L{X6VQ zi&`dSvup=QHT|x1l%Dc*<&!ShspQ;r5Uc=xE%dd2+;ucMmODo~(veg8L(rnLOySiM zQ}8}Pv+Lf@%8Cu%vEY%j#QuAi2>CfyQON;@qMY{qn^e=br$xW$8JWZ)QJ_cOzel-`i#!&ovdLEqWyT8qgH)|ISx<+lp}rtX%QXXFYt?w z*13e4p>NRV1xG7Q-Tk|WaYVlWmiuYkD*Iix^VEE43QBy9O_=gPBi_@ik*x~9Obu#R zZzkO@_j-&pTMK#26HZ7Y7~Xmzf4Pc%BsEP+gD0Nnx}58C#8pOgUG4PncRUy?>0UY5 zAotnbZ;)tT{E&t}j@+IxkM#D%uRyLPt^!Pr<4GLrqT`B%+Tw2O**Ep>3(7qT(lJ?KDH0< zd)g@L>x4f0T!zcRJ2iR?oMvPbo$_j+QC?m4N-38Jhf*VBA(9yi6l#dwV|T!jQ2S{# zRAlIN!>AayV_ke()n`cES!SOuQkJ_Ur_RBn$?4^r6@Mhxmv+T185G3`LE~h?Rp988 z)Fa5um32vF_#)P6(`xwU0>e<^>?TKP`hHy$&)9#Ix7WYPjCV2-t5H)i==wAaeoCy3 z<-Liy1cHO6z;ogcDcNK(&U}p9>-_d_2NR08YM1U^;U$+^)o^^$;F=>Gjy1@0T_nqI9L#2Sl-*=@Qu4ny8n|8F;6MosG3AW+va2 zvYEjx-t`^p5GbES#ji_w>x95LXP|>-UjR(Q#2%GART4^jPKvjB;IcQB}!T*!5hySP|FI@o07dw{WV{<%%d{ zA1m$4$VY78U+0}r;#%fbzdueAsCx1x5y1JFPhM*E{y)>4S=7t_YKR7JizWHT3_GhE zB9xQp$SQj4>>aey5~mEoKc=>1XI zmeQR^Ec4ZV3{6867iD2{DIZT}7*v0%ms$88x*ecPKkQ(>F=;_uj(=_cF2z$uRcqGl!JHoRX z*YvT2ifIs9piU&Pm3S(3fnbN`^17=g@yg**6QffK(}NAhSUYh?^u$wH;rN24-nR*) zj_GPCJ?KLI8ED}(6~^)1PkY*t^y%mrOJ-MyWVBIfQSC&%e3NKP)zv||4^rQaDc35jM*!+ZCO2H-~TcT~Udm527eiy|j-f^hn z^+fHVWAJk{ya%4sb;X%+FmRu3n&XHn!%a+w$f1{#d`7_y%fY`fwF9OUBvVwnCw&K( zg**%`d7+F!W?FcQ9i>_|$?oL8UnlZ&R?>+ML^+A}Uq0i!U{zO^W{SbT*AD(~3kv>k zH83q)4>92O!;QoNiGv;v;~Bji5P!DmaqWb4die=gpY&@{uMPX}O_45pXh4w5gNAD6 zB`Q2WmI1&z>+f0#wz?=lyxV*}#`dNE50BR6>NTH+S3d~vSq`zAbOULX_@8Idb>6#p zf@fxx@#s#AIwp(qrAD<-qI<39*KfBqN$xw6FMbxJZ^ZzjU)7_?O$RHP|g>HCiLidv4$$nwxr3`%*~|$e~iLRWf(9 z!)%e+bWW*PGen)amE+;ny=aN_`zkzPBDXg{rzZ6i%)2_fbg{NbQ0K@K25pY?J5ua| zn_o*EqwtLs%kQ(gzbL+*W8D`iR43O)Gc^fpNw|xDUrA_KWM+L#NMji$o#-;7qG8mm zmWN$2dbqQ~a64|J9OfiGaVXT!cJ?-s(BYIsN911|1Q-8Li&4O~sI$K*+YGLl>mOO8 zvwuvnMciocAq_wJaaszV_tPy!rRUQk&7>8e!Y;E>|3C2=`>5h*v0II!7&l)z+GW@% z*}-C<4sTzdNC~r-d(ObU!f%*O74Zf9qnPyTaTSj)nT4e;E^WunmDU@xv$k;hy+V(G z;#oF5q`S)L=eZr6x@+RqR2ThkJ@;PqXO-u^JebPXJBJV4J1;Ny`f6%j?;snmT^8at zYEzY~1&`ZN*FXJ}zT|XTCmG5zx_jidti4wJ#9i+c`R<07I_YZu5hc&%mq~F(dismO z5rvl2tF9Q6Y{rOclMj)Z=df2@#I>Vc-f8ds_Au<~Rf8k%}JtLrU#c>R>^qx1w zWJxXzN4nM)mzaD#dr{7$^JX4>xuH4#bQ&yyxRlwL+B8b z2jXGgC%Pwxs9ZUw#-Ou{wxj%8j{j6&d0+n%=Q-^B)aDR{`Vs-Q&DgNkzY~gKhi14J zaTP=}e|OsTNdz*D_)%2ViZsk>DK$8TRd+DnIS7}mLVDgVEkd9lahS@;gU@>%%d8D~ zzhGm?x?6c|Lcyka#JmF2`0ebTH4(8xgv|!^+r^ye!_JTdi*Y-&G1u@lx+KR4Eke?C zkak{{kvx*er3@8lGPOFO{h=zpoFTqpsUA6{s^d0aOus1C$_|xcA~i_jWA*+hXRLTz z+l)VT190HEJs@gOao?8M37yHb4Jw)2N240GLZ7(q!G^N*mQua@;oZRwls6TPErgI? zv>Ypn4N*Bf?}#1SpLaeV0DuhGdt`)5|H5B=hk9e~yNB@Xi1u95M2ijGF8KGo9|Kif z$-<7U>>9ky;p-bp^bqerlilFV9Bh8x#4!XxX9I&7;JBxN(XthphbK~33#oa&*P-fS zo5v7(#M0SIR?hkRS#jx#hXwc_@k%rEf9n>r@%BkOOKGlQarR?vx|N=4%^$L)b1BzO zQvjRZqa^T02r|#@MNIoIq9o|7{gO#=+uii9yUga=sGqMI`>!+SH;2>3Ey$;_Zywv* z6FAF+I|Rnb5Z#*2e8duS?Tu)^r8s%<_C-63>e}?X7c3Mqe6ezzfBA4;$h?ex+I?DdEleCV8S~#l3}ldra50*j5G?OZ?|7vRCt}?cAX|QqE=|w=%Ia4 zu!B^CRU>A3ihN)NZr_LTK?}4ZQ6P;kzWQ$lE{%+2xmo0uI7IVyt>S_0yWs@jm}%ba zKO>3=)HRUZ1U|`Af=n>(vtKjw$hZtW8CC{J{@h@WZcHcQ37&;!Nqj*@BI-?qa%MHEQY4Y?P)KJHGGFt{D35sN>$} zXT@hxM1h=(jbg!{y^a%-h39bk_tBXH~|~%$3q3k!5=gjgmN{ zlLq{5S&`}wq-nM66lZ9^&bIo30g>MhAol@+J76c7$Ma6p)apLl!zX_`H4=Bwj;XV| zpmE#2jbZ#%RA)vtSKa~lBf}SeKPBSKTB4WglVh0;>3#hT2!{{5GRbBXd)6Bd6vC$g zB^H0+20ELGH{01xQGt$D!_?_yrDvH@VtFAkal@26$i*50Xv%GwyK>+DiZDH2p~3*5 ze#2?qcWaMd3-}JYcr%h#S{<^vca#=wwSSc6ftjtBfi|nx4sVb>vG@qT72xl|rRM=E z5xw}D#-|+c$kkf7F$(Jm6N!&!yRhkxwebv0WRBCVDSJf8Y5RVDsc@6_j3^3ylfS&5 z?pgbbpzSm5tH4$6@4G{tpiRQe4`K=V{D8#Eo0s-ajacH)B9yVxRu}Bp9$ZXyOvZE* zmDpz!IG~1$hFdY>7DqFF&Y9ICE7{CLK`C7-q5emL!-@?Gu+zUX^s~DPsgS%G3ym|S zo*g*@X8pTHnc)muT`>pLfWXxM-n(hYtNU z##*p<;ma8$P$kioqzZvXFhNSLNcy#vJftIZU zrrU|1(e4zNqkr<2XojA(jYy1FJO&FFK-da6=r0hldzP;tapJPb;nD+SLI?>K#YZmm z#q6MtN9!-noX_lP{cwkEs6IK3{IVJ+#leiCuTWOmZ0i>trnhs_IK~@J?S?OJAP?M_se3AB~2jH$K(s{b+|DTp1sR z=z&dktotOM{79PLJ@^FC>p6Z{suZ|xB=Ylwrbpk11$vL z2Bb#sr-%N1`)EeRmn?Ex&o5(l4oknnWA$O5PXFL?E5jQf%sBADzOB__ST6p)O#unV7A#HXI{ z3F89As?&yv>GM2UdAol~2Z|Qppvz?(SE6v#mLAgP1YL z-0bi^%_1SsM+`(F9^uS;_$Ze?32$^ zuxqUt6?JZsngW|gXA2A3T)(=#q^x{v)(PreZVZ`$7kVYp_2gysS%&nalmx9x>10_s zQ!^nRqt=9jU_(WSGbZ2hvYbn3Wu90Vi<>)L5ajWJaK&g>Y$(l>xeb+|1Y9W+oX+mQ zSAGr5n#9En7*2Ijm0=2BCFdr!(LdA*HU_Q@_|TSGF}ck5xA`RRh41jzmCiXQT#mQm zqn8yyG{;n=JH6jz^{a-3XEhS@1FK7oV^|89KT^z^Rf>EPT))YtDqdXjvj~)@2Ewo1b;M$QR4IczUh;23fc z%|UgEkabOiv864{WLxba3Zm%WK*w=c39sP1hIzII$|&CK%E;8W zgr00Tl)1esdLLX|+bVz zx`NN!87Pe)PwD3QtI5XsDQ_!)>&{U9f)LKj@pH{4# zxJrM7Uu~35fA!~#K-?gg<*#s|REjG*(ZaVgz!v4aKoDF$csOJmtD(BRu-GR9X}mc@ zpi8f+lao!~{kF}))W67BXWHb>0Q16{v|*&@8Nt1qp$MUn&+T(C8eqq^EB1^?#Lkk2 zw6X1K{v2u*w61h3_|o5CTa=5nsaU0Y*X4I3Onj;`JIdXZke6j6>J0`DoM{IjpfJ!>>kmUaJ=|NT>SXQr!SJ< zl&ZP|8MMuV9L0E{L3?o%)=xynyCSjPcyee4gRXdq$|C$%3Ln9fd7MmXu2yI+N;O(s zcT4GQjp#jdhUUss3diiv>MuB9^&YyHw9YkkGKRW@o>H?RpBNk5#z5Xh!qol377Jt- zwKUU9g(B`W+lsd0NKttEXMgeHfxo2$=OQF6*}zR)vsu-{eyQ_BK$G6P_U&G$4ES+e zjV>CVZc=i4{#zQj?^yoFmRyjwcz^NfB|M!#cdye;RMFoc?E9@Cwz;^3=X^icRdsu! zeFd5}os`VJvL1vz`!qCv@p|SfXhy9;Ab+88nnyw9j=za`&!pn3{er*p3TZn8rF1c8K!GgjneDfN~nA^ zb6Rf1s=D-?4~YZvS#)EYvfsz3(RZjMBHiqji{`Zh`y-VdV zB8`+`3LnnP4i-vvPz=&X7VcG7txB2gpQSS9-mq~JjBoartuOl@(5K~)@et~Ztj02L z30W(+?;Zi2 zIlkNUz|(u6=+q6VZ^;y_t3AQ}#2wb6g#?r!t?@h#sT4u$qGgS8^lCexdr&>I0vtGx zy>@kP+L&uOPo=mAwom>6wwiQk;A=8SS@(O=ns%Wj%;Ka|-kW&9Ytl1n=skatE9?kQ z*-gWh_DuVIDj-{r=8T9!o#dMjoC$p&SS1$-iN0C4nlSZfKLudSDBc|g?-W8T;*Hmv zfKZldJY6ZPXr;IIa0uSxE`mwBPUD6E-~OSSy7El>BW@=UT23}YhqN&1jqS*(;A?V` z9JgtO8>w~m!5ZrzH>FKL*IuuDu1(pk2x%Tgb(l>)D8Lj0-EYzyKepT%=i|i9N@R527B*{u*#NJ8GcY= zVX}$Rb+9XM1Oh*Mev(KpXbCJO+YgBo7d9NT=GIO9V{dF7T%CwZN=w^N{H4)8pte(E zym5}FtkLlg&o$z5#F@-CjpA)@;Qy+xT;&LjDKLv{**%nNYyL>q$;1i=x#MT&o>bvh zI6wpgWO^@JGpcny7Ttwsg?f{c)G72BEfqtY%Me!;tz_->M_#&H^Cn(#94sa<9Q!|| ztSxbk3Qk*4Y4;u<_aric>4mbEQWfxXAyj-7i(Zkc4(+$n@=OuwsHI%tz?2Yq6E<1z z(btD4=>}E~o^-|pj9Y5Oon*2YC9tceh(1r3w{-X2xUE8zp;f}Gjqj+ZhsB>U zeDf{P8?{&A^&JYKAsZ%D{P_%Mm?j|yZX9slCAT^1+n}vqTvjkfp8g1 z0SKRabaNlhljVinLr^2KWGv>j(MyFJZUoHXsF47izG`&UT>a=r(%N5ysB=VAgHt?Pzz>x6@-{SF`W-dEDf}V}U}F`_9k3++;=a zCGCH36$;3@Rl)K}e?K&!m_yVb-sJAP7O6>HQqE4d$bD3Sc#D%)Z{JMk(xh&DC)}oDIhT`elZJFl=#_MW|22-~d9w%cNuUyeX_3e<7 zMaUE)w)02BTgD}BgOgA6DRy!5LDh2WUpr+4+gi*ErPz53&?cR;&levmrNX94>0iNE@*m>5VDkf--J8y7TwRVm1Q0WL zu2b=bJnsinm}e{%J!&fZ3W{O|9R(KprKm`8${JA23Zw3uI9sgw#<-jPQiq>okc)>f z-Ob-jbFVK6&Ki8U0U2TkF1L(ZIBPDTXb!6L^YxeTWN9k&oH|mbHk&d@kbZAOv$N4y>ELDG%zWIhLZ}9mO6LQ&#wR)*WD&~H z!37dCd^?3+;30>7OU)By^kPIz{q)%eTYrfG5svbcdQGBi#UtCrrrpv>7v!M=4Zv{} zUDe;O6mPk){^5thT zQrpBCNIs})-gB_jw8PCVIsOx4w?r!YgH-#jGxzz#VlY5`MR^*c{pkoyx?fRKD@Cyx zY|re=`S?P@#4Z)gRC=S}B~G&E6rn=jtzOilm}IDF?$T}_f5VZ}vg6_!RwmOabItYq zYBcAX{X5sl&eT>d&`tQ(UGQ59ckr!XeWP`wC_oq(Hf^T+zF4NzV@0teCW9;2X72bf?6#8QbJpu&LJdjkzkAeOgf##hn!m zp{c&{89RK^RC^0wFETjU((LcodPeUd*#+VqBJ6H%PM`~+%Zv`_7L{TlExA4XVb4`9FfmHu zVzhYif^e;{JYpYck%V!QgE*Zcv+hdYAcS3R4R&6+MmZ|g4_arTra^+S8jA6O4jI+W zZb}54HZ-d7;?~nLLyzAQ)!+OJz@v_S4xXpMeZQUTBg?Cvupi`zRiCn zwX`dCi-R0Bu#B8ulW#HjWp;~UZi`g1pc)j-4g+B@XUQ_hX5M_sQH5{oFdqu0*Q9qe zk?_EJmTC!-cfOKWLTv=hjkE45GW7Je(VOnYH0bP_0bIPZdrG=9C14@4OtF>lhO5r# zG62COYT2(bD)BmX_>EGHSGR&4(jI54o1hWPNL?3YV_#F5!~USDq`KM6)S>K|LXDoC zlNTuwH9<*WdB|qamL+K!P;k#t?&khSSoj;H2s8W7&b$`@r<_Aa0AUXHj%C>rS-#F_ z_-FD$orjHEHPhyjG@O@FdgGvcGf=R0Cvo>e^uDXae72e&X}o#1>ZwniQp@R>U%mI$w|m-!Eb^%$L^u2stltd;)TjS=1?`%Nu!vb1>=Z*g?9yxrMBnXX zAvG=L1pBS}eWVLdN88!HaUcDR*Zd=Ypy>C@wb9!i*vm+NUqbwL*x{%FzgXq=W( zPP;;2l{T^68Ro*n>vM!nd|!Ij-`JJavDc4|!+4}|23w`mY7VC}qj5GJ9>$xwwV$NN z8(|i6rBx1S3}9D!$lh$ObDHxHd`weC+&q&%-Z5?8YuydrA1`>Etn&YNKN@GQ|5N zu(pqICC?0exYnr9Al5xtFN$v6nF7cXchKlb5Y^efz589gJ#f zeMq6N#DlX#*y#FVDd_U?U02?Cf$TCp{1}{Fz}>iLv1pStf{^_ zI5%>G^YEv>MTCl`vijFq`*NvGMfb3p=5pWygBr$;6~tYUzkq>488cL%5Lg<%x9{vG-~{mm0j`>x-4)8{X*{V17P;|aTy>Nf({ul zPMU$|Thu#~!WVAy+HTRVrv7KIdG`t|{4HiElgQYSF!z4u)|cRJ18xrw2c*|evdz7{ zG;nFk#T_wobALlaEO>$NAE*Ef`X^v>_XZC;!;?r6RB$q=O>qx)ZCSaLN;aHPXnZqI zCCwpO4JmWg1Sj9!LTu8CURIKVToC9}UzyEY(NS!aD+$xj;zYIZ`mc#5r%D|a;-&tI zgmYl?5`2pO-J0FF_l?q6)e3RjQ zBw`FtP!%wFVS`9;?MN%BKChbD75;fKTf=vl#1& zr?r;(H==zXbp0&;SmJG^gWtCMa(-P;t%#*zkIqY57lEIe4k0cIa<=?*k!pDMFzP@| z5%PDp_nF+QbR$qyS$zSKO2q(Us>5nDpTvOz7~A39a}+AnA-Lh2L$JvS{VY#yLXXDm zd+j@w)jz|fJX%vP*_l6TSr})Ywgc|Ov+j(4eJtNG#0+nJ)vI53Wf%kPmv^jw7b`fm zS{i?HOSRMGLEJGJ%Un}>0LHP$7e}t7pg697lWY0v`(`I?C-w{GqVIRawd`P9{}xFCRs(bKPgtxKo+#@CrYq<^|)LC}Lxdi@jWbQ7f5O%CE(p&^UB;^*q#cSMMcLvp9^D29e5 z+bxEEXKA z$Ck6D=J7@i_B106Qt!V`3bm*|F)D!;sfARRV91oWP)(L-!Nngu7y3fdudi8XCcItECpe12%YY9de1t?x%0QI~h^8f-}MBR;n)<_k_n`{8$xr)I28pSY@x+>@qiL zytKUM<3K!0czV|({|idkH~FSRuQ6{ydNVB=mlSqIs`vFDz~uG64y{c&^{Y)NJH_tL zg`@;mDQEu5JMjwxx8cak{;0E*8;;GtsC!<)B@j1LF$~o%ghz@+LbJ0&BTbsRKq&?F zX7iu;4#oBV5*DW>FO(Atl$u#r1Ut9_e|5_{RemV*;PLpZM@y>X>b`%gB)en$?#}o- zToVbkxfWMP$R_t6zNMC5QS?<2!{TKhQY1y2atJT}AT$UzoJt5SIhXbRAG>DrzA&p_ zo)OZ}$)B!Sq_#W}>Kcc;`Ne%}G~;~n=gAofSBtc+y>s>7b-h{0j)QBsz4KFhT7tQW zW8PzYU2@$`MiX?5T;lKt=l!xEI&t>t)XyG;J@=Df@BKXOA~=+^CH0m-GHv_*w|B2%s>?fvQ>7KJo&fd@U z_W~LhHurh8N2KIi3h-b8pcY+2yJFfPd)RqAs4YVErJdPTr_^J+8+q;jT*1#CTx8e@eanE6r9`gSe3hh zn?`IrPg=RU6mN2%-Zny9JZ(`Tth$`WDdKO&o3N6&uZ|v5_^TbU2ABpGi;}Ag87?KO zOum{P1ON6z)q=#!HZZq9O|oW_xnTQL`Jg=Xs!DXZSKm%P=|pLqJ5D^b$zu9YXId;p}jK?{nVwobTuPb;g(B!0e19 zdu6U!u6eCF*TTCBYCN$fbY4V|n{H?WGgEu6QG*FWMb&6DxgKEZxL50PbKRdn`dFQ$ zrYhwSi;Hq%C(dvTT#)j7&m!q#<5`+L>(PXNoB2UcpdJ&XQy$$?uU5S|{yYpWMkG zLU^T8ly%@3AEF~G%G#ewKG6U0z16rxCpX@$6=Lxa{iw=9$iD+v@!jEp8vcP;uV_-c zi>+v$w}_(z>wbw-D!uB~zxysE=ul*wy;R*`0)3HC#>XFSzbiU?RQxV!>`6+bZZ%SX za9{$h%k=8vqhZ4LAK$Dnf<99iO(Pb<^eCiVQZ=4TplKnx$4aWW^@JcHjwP)-lzEwR2(khD*TFU|r(%y|Y)q9$C?-ilu3fX=oH}1HH_$195c;*93yZRAv zmo9aj5)4!rt-LMJkLhAYI?QzkVYTG6=w2i=crmrVV@V5V=e~hHZW74sqqOnJ- zU4{Xq!4Sk>z`M#PQLQG=N}Oe8AfWq?d85Egz%HpHxZNz_ceG~tV{7?|?-#nOI_h{} zT!Zo3mQ@wx+;j1MwRMtc7y4Nf1P`4RhyijH*3lBJxppD!VlN)GevMw8JX9f$&&$6##3 z@wI-;d!3?QNB2B|Y+ltjERu!C-=^}LFhF_9R|+b;Z%A4n+1{hqqQtyrbeeJ|C9*U< zC?C`Gc4^3!Us}J-2kM@j3m7z;3Ums3HpRg2yrb}|-sPR~sQRguf1qFWWCmOcJo{rC z^$KxI2^JaJqrOL+dXZw5$LnP0AfTngIwq|8x85uXDkF2PsG*-gfnw?WjbV4eoMVk~ zBEuTMlytGf{q|H}*WpNNZK=c95Z8)ReW&-6jAxXeZ2wm+fH%<-09+f7^<%n)XG!k( zxh>^X4F4pleT4WN$!Ars*uJm-nsnT*)&yDtX!+tGVE(WdJ$uHiNg)`Ju1^%z>SK@GKWZq}=si3r|NfB`qP=w9NHIrr^KTiB=R{&PMGF}m}+r3 zb7)0CgobZZ^*e{Wuxcc*tqs~-Kab_Xkn0JHOW5I6(iV!xz<=WcZ98bpf4G<)+h_zR zh!t1Un48UzmX$)L4-*(xAWnCix6=dAJ7bXtO!OOpt{YW!@P1`*+&R*x-tPX$Ind3c z8I|JvQ&Cx5p{q1`Q6IIq5OcxfJ6_fDx8A(N2KZAxCq@$?YCA zMePk$pFDQh%Q+582N=NCbsocz_qy|^H!zBqG=r^0d{i3RA^M+n&(vR}k2#5riJN9m zxf0guKz$V9>5e_p1NJNWY+QxnSP%*((tI=tUg-Z`m^A9_Od#whoIJSws^1V%6|0hI z@ujK|cTwcgyZxf7^%J@^yJ>7-vNEhtJZs~XsJ%cxlw$-~IsIA)x>DS=_YK8Az(tzm z*TUsyyZ;f6JUa6sCvcH;_b9{n+J3bW1el$v_oChoo(R8~QaeuF&!(BH!N7~r|! zoJwlS;_TzV`4>hn-#Ca=8^>6rQli|$*>{)BWZaBznYA`~cr~?FM=DXeO6{pe<9Kw0 zPPvnQ$-l`wt$QB0>dSMyO21@?Y3{2!r8{nTjx|$Rho*Ml!hAE;DlI;I97bNRoDrjZ z{Bi~*hgI@P{fF*}Q>*AdBDKVQ?GX7vg1SBWCfJ~9-V3S2m>Gd_%l$RQU#`JfOdOuU zPo2cMrgOzYDWe#AtDn9eXw=Bct$HR#iIhRjXpFl1W3NNSS6^FU*Iw2Lu3SJYXeqG1 z@lxHUP0~KIJ8qd#U5>9euZ_Z)I7^1Vc#L|KSGD$LoAdOD++;UgnVs~rAR^&#c^XC zbdW~{+0AOSMMeAZcCVU9MtWa=T9+b-zX%rpC~oQ%O1nCwTvpc$_Po9>Klw>Ox8`YQ9OsS-r~=3ak$QzpqXXOlmvi$U*qCz31f~y%i1jN;;R`(!Syt^&;R+({!ik;Q-}|dG9Xe1^gBrhB?U)N+^kVq+frd%Pp-;jWZgFt zaY{LGlt38tjHoQbTnY1+Ig4~Iuc+q>B*88xC67I`daE!JySJvC}xOidl; zLF!h85#M&RbPXmZm*q4M^17COc@7NKE4)vwvP!QWH zmsdF7;eY_WD__Lq*rC#KifU%#Do?k^1a*yEfK5Jv%6VvVndQ^zF2z@+o{a3MRTbws z77rB({|L5 zGR!tHBn%iUQ+mbuBV2l)-oLM6v8G@62AK<+lHoNK_JVo{B6y)!(ZNQ!^eOQ?2kWS< zh5J0k6Y_tA7r_jl_P-I|G5QLSxWR4#q58^R#NnIm-%Ncs2d{k+cGk~$StRdSye;rR zKm4|RUBEpcb(q>CxkCnX?ei_)PM<`+LcdFmm#gX!Ikk*6k^ba}yc0acYuqAg?%#T%CRX+qIZcd1L$VqJubX$Ar{90*=oS<(bcs6bN~ zuP2s@u(dp7f|nvOK}ETs?49;J-mtf@r%;tW zYL;hjm4}6(R#F+p-|r&%QSUp_m6HfDJtP0>%rXSY+I2zXS6-zd-_(&I zFxjb_2W4qve7WgyAp^n355JKfu#vL3t%?srpF~rUQMHs`d2nLVG>ty~DNfm*|y1Z$373b>#I7eL~}DUd|*e ztbfKOJ(T}N4ZW9OknoyMs@!XVedC$peldDoZPVltPxT33|FD54B-##=n>l%L*f3oh*x4-$`a#(@0S)#WcRZLGZ=^wo* zvXR|i@#n5i8-5Mvs`l4>Nb#$PuUA}*nM9V@X+hAy=b=4tw}A-T^ZGx}&P?;QKpL92 zvVy_f*XxrNCEtcIIrlX<64kmb`<&PP^|xvW_!A1UA=opX-XaZ$r_IKstZFO6({2pw z6rZl$1gC5GE!A(<%liM3jOVX=n&@q5Gxl(|K*`9?5r z-=F?`(e9t?rAuyIq*JeH)z-l|WAX99YAucSLxn=E(Tzlvk^3oCN4GfwbMrW=vtOET zl$ata7%bjyCl(N_pX3DiSlUVc%~6qfhxKj< z(YUQ`qto$sVP=lzC(6VSSP=thugwYbBR6YszddSX}3sq zDhGk}O4TfN5diuYxl7akVB*LbBpvB)vQ1?`**QS-|8ed68Cs=j?uk0AAMN0@GdmzU zkUnIzUeaV>$nQ3pM`03yRj*Ka)Zw8ioXtoQ8E_;@ru@{uBZUwYL|3^%1PT9>QH8Ha{txCoEn;R+IGg3 z47X)IC#I=|AfBjsCDUYx|J0*3t*SX2p?#ZIJZDO`(?{t?^Ma+Qt#r=pmg!;53lhrH z`@QGSTQ(pPzh;6Kevwu;JW2`;s#(0|Sk5ibKePR|jTkjvAhXmwe0pxG9yfLfu6mf-=uyVKiBg{|IcS1*|Dd2X0azR&uErw#Gt4PQ-J$E8MbYOWsL51 zLUU!*qsZeg3Uq*N?d_cs+xocP9)K0U+4{{R*J>hbLsbI8nbN(l%V&%CesWma=WuYV zvO3)5uYSh!E_WmAssusnD%NaB5`VW3aZy%DGpSdUPv2uTgEMqnrLZI0`0lJ=M?|`H z23~6Bek)m5HyL;XOLJou-+wdV9OfgSUqkJ_1C;IQ*M5$H1l5e>N^M+oW+z{UhuQAr zrFdbYRUxPK3ARS^+NqQ(qU(oT(Wn6=f|T8yGsv-BXlvn{kyeQ5w6ohdj#0TDiCs@f zg&y9u_({5;+XUlwCPPgt6m+9n z!<$|a&ve&6TqT?xouC`7P|s8f9LcZ`82MyZ+d*(Z`$eBJP>d5=J?F?=42Ah;g=l)b zP^e^|cn3R(;o8+z{Pt-4{hQ6hl*|x9Gz76{Vb@&}4j-X4t=lwXm=-SO=NTwbvRorV z+PJ@Ax-)jkd_yVa1Tm)sJNa|*YDFXMo1TC4^c>^`Q=MUGI6opEEHX64G#FG9X^)&j zFK$By9dZ2CFoMG$IwHL!)AGc1S=a2*G>LqHj-rBRLnGNpkEEnN(WRax(}oAB<4@+QWg+Ic4^RimOWQ=u2}* z(i#`N4f?{vYqNLF!E_1JzY0GlLe}RS9vs-Tjsc7QhlmRldzGj?t^kv1 z*4$*sPfRy5^x|kpPHOalq3Xx@9R0)_`;h_ZL=?WI2{SRZgEFw2JxhBxO=oBszXT8h zAz-wf_?JCMBi)U>#G+JvVxt)6V^lOVe4xJDT2Rn0eUhM&*SGbDNe5N=W4AIFjffYQ zs`n)z>7ejPp=Vo(+@2I>WPND${*(H9wgHb*{$qOPv*7|iYn*%Ll50R0Ohn`s#vK4d z#$;($1ck#EO1Ix&Ge9Qi2Atvk)^x>2nNfeX>}%IUwQo%*6y~u>*rWe+t?B{1*}(CK z(I=&;xlRAe&Vce&wjEW1v@`h*w)T(3bJ#=2LM0xvEh0hfys!#VXC#n|oCb%#A zbP)4_XLUKvm&v|jSn>g9Lk@eBhCf@t?KtpKKsq7h#$VBTwyl1kTh*A+wTq?E)%hOYM4;yBEmHuAyjfjiDex2M~#WqGg#Ab8w|zj*(VQ{)e4sx8P)E~kUGp) zle{S!^=4{N=PczsJU+m>iyun6m`5a*Z~`&+<-d#g_C)1vw?9?sqZGvkUd$KzjI`I0 zeu*_x^c~4GqHHFg|5J-fWp?3uAwBa`a=>lJ$!>mG73mNaV$Wy@Q-)9XVSIvo=;33g!> z8lr|hHsTsvaC%BEBTmm*P4JXPkc`7d@i0G7?Rx*ETL)&tX|QnA*HMOU({TXxdr5-P z{d#f7=+W}=J&s=+Lf5P?GxYoQ|e{Rt<)e}#trTRQTh?he^k28%vwf4 zwxYyM(o~2*rSf|4RNM4Vo{4z1Y!k7Asa#x?W06v8^|x535&|ZFS5IdGpn#g)_Rgb< zd0~XMgmjQf&cxd7cC32sqc^{fFaQo2&ux`A;U~9Jk4ZQQrYuk|P_iolEB_;t@|&pv zl=hds=Bv|Rh2D0i4y{96soa>ce2K``IgNVWVsuYjnE2NW2p@y(@YnTB?`O0|@!;8R z)NC~_aRel;Q5Bia!1Q$0yZN>dyr$axozjumnK8K-sXVm*A*}AK_0wTdJ3!Vwd~gkHSQPb~B5Vk_KTMiQ!!2x#GU$Pc-bTO+F7h8A0{ctm7PS zTMG$(KAF(^%>mzEg?sfjPgA9O>=yKKu8R^qlc4NJfdT0)+O^>W>>q*o26;#Gyp#*= zzJN9572iTCMZ?O&prVBt(xKPz*V_jX9w&qyi0KHoqaKHZ;7hV!7-K2c6~*-kyMkW{ zl`8xb@y6x64k7lOHeK-8gn{*3_X2{ToNo5HDlF&H`^jo`GpY^WoTu0!qN*B*Lpm#w zGWhxHV6_|*0pXXVcS7AdvgMP`4OXjv#r*X=y+5n@XO#U$LSoaiDYE(BNe65#?hi`7 zbn<62Hwd`%B3q2eYq?EMGrj4&ZoRk{im``NNf*zS~D@$+*k|Y-FVme!beT6Pm4G@++Rt<*DRF+>cFKA{i=PTRXQ=T z7WwQwv;(=X2#0LNK2j7ZL4xmsR-uIM+K<)TS%1bB*$M8+lM;aTeV^nFnjES&#mb7- zKP{m{B1mM3s`py1Tc+blC6{EL1sv*&aBON9@WQc(Q4oA^YxtGSc^ zfHBDu`%m@qg!@e%OOCO6)6dmE{9L~%x-J1U3Q86&wIPj=l>+P2W%nT-CC`U67#nY+heCkF~%(?SjfFOT@Rl$S)*+lC+q> zwEH1*daJ=?uv*!46* z%ScxL$z1TUR~COE0jpjcN95$8 zHTpQ5AjE|=1!h7L8?nZ7v>*{>4wE7K9nbcua{diFux$js*^c$9z|%dtR(MgNF&3PI zF_GG;nRfU695p|dS>C~~|Iy1j0;gQrzm#Xv_j8Z2r_~9tA)iyUDf$Ni|GMP& z^7>=0hpwC{%i9ENuYPHf7yh7Oa}Y2(H;U>_Ve2JPjY$(knz>rS+9#}Fpkab%Ob?JE zB4oJ{Wo?5(pSp3#&{KM&#+zyqs#CO2JFa6@a@L-1W(`*?4zlGl*uKTC^(6u#!f2%t z_8LY45*xg2cPf|(B>xQj7E+Z66@-J3NSu^j$MBKgb^G#(hf^NakkZH)WQplm)NE)y zUGG5OR_5H`IgrJ&>i>(=@T;;6AXFEN*u_BKkxJN18Vm8PpPb3tyqQZA>|@;A$0(?~ z+IB`7wNH0j`LQxQX5=Y3d=N+EjfHPEW3%*()$BI+=wT<pfg^I?(gi+G8!WFZ+$ckHD%r;XzO2bI46qsfecxD#kwS5@n`O$BOK6u$(pkGVMX zzis>oTaSAR4oP%pWG{t?rQK=Y4iRx38QT)iO8fRP`&OJF&`dUj&yq+LyUz%DmA%W% zw4$K&BvZkM&vPCFo3Ne(+pEUbeLNXKBqH?OsdbwO-sSlf$7<$fOe(yWh-2HFH*Y z8uJWo5=$oMaITU}^TYj-dQd``GFl@>dV#{7sGPiL82yC-;53-MWtnFt(3m!zasOyP;6 zwg1&-x@)3LTM2nt&=!qy*6b!P0Y{D~o`*VOY09WBz3A^2!I2C%iDtf2zg-J4bfaOl zerapGA~*Fc@#z^aXPx0Mieh6WzpP?n4+kR+1<|(>t+GQRySli7N?&CINA^;t$aiP;pg zVQ2*=E%jcR85`Pe>%MG zAGzHKto~%n>75UsPR7U--*TY=00ME&`5#;V58(p$7>Xdq7}1~ErI<75QgNh7iH5aP z$o`pc*QyKs>b)KjZyV3U?J(p)3iV@gI%9cTJWlx6dw&*0&?Z+?1wc-+LL9L+Pr9N! zw59rMq5|BudUtJSYdxEKnijU#?c_kK^q|8RW0D)6Bi2@9-M$A@xj(1;*(ESB?&gD% z6YE;he5K?czec_E{(M;z=f?mU*C=fW7Zy z|L5=v<|JxmLjzKz6(-KBeKRq0tBXFkrLOl`N06u#ajdDpOR&GhH8tXKyI;nnljXg| zL3_$f(GGihsdfcgOpM#XPH&!h9F3Fq>7(aAP~fd~qn$_L*s9Mu}WsL?yR_bbu zUD@;Wff{1GtfBS$@z}DV6JwBx=W~Kp%~%S}p9VI)BB_!{?jKPDCFC2^B0IjlH=|XFgWnS%ysy6?UK!*F*4-(;>P% z(E-%NQIzX&(=nB(qP3W4@sDpat5mx|Ky=RfIu~3=E4w8p>bhWfNemH1jBxJhU%AzC)Y!kVpW3k2Omysc_<4o3BiLz z|B?>sO)SqoyLffG!R~7c`-=Lg0ZsMD8UHI&Ascrvd{l??dX75m?&6?r2 zNqP9t=eM2#n24`cm)0zH#MNZK=gT#Us1S9Pw~tqY_?Jx&$uDm_{Yl*&ns%odDK?_d z7xB-QLrJjvRA*@sQoH2Eu{KFJO6o98`4Q$Ygd_20sxh_O&&=Aw)T-8@11`s5mOss} z;EVikk>@-MmGhXKVHb)7C#6qu$J`#C=Ngt$PYC|Tg}LF}VPrbW0JI8y;9KoqHJsn{ z$n)|2$Yu9KWpD$>uK`-r!(3xpl&waGaCqdQVTO7V>)2C#y=-Wj#MOeVTA%}^^lC1x z#n^kE|kXpYe#{l7|> zYIceVrffN{y@4<3E4o#4tJOSO)v&Yyx=3?)q4gTJ0KfHB_lC&}a~rqpg_uqa#fD9( z1rL`>s=R}|T>>+p4LxFeN;drHjv-TWLf`-Vuy~A(IcsbZQrEnZF{LlXJ!Q zRF9w0Z5{}S9o&P_nawD4uhjv~?{?0450Y|`qy^xJG&1LFvqUew;TY%dV?0j?Y_(pT z>cQmq{({l+ue){b=IR(Js{65OE<9aQyvU*7r{!$FxUB)HRHncgY)UYN4So?u%5##5 zaenXP5FU)*v^I&5pO|-+&<4#mMTVd%TL=U-6_xF`i7e_V4|pB%$v0p z?KtuEC}W>V&k0XMZV1OIAD3Ja`wz)^)wS9_VMYf+sNq%%EMxE)Kq}lm>Eq1abB=8# zsqsv$X%pVn&3(iVcI7!wJ52i=rIh_F%wuA#tH?1QU&^=W`0FYcjutZbPK3^4*hIgp za18P|n)5BRvX`Q%)Djh-OTW&OT0TO!ja89cmD9c|~d7ioXX_{TL6Lih ziO4_`9)iXcqMj%yq%?lmB-e=Ng@epg2s8V&-;oEU#wAGji|y6n4$j06Kf?;7MS`3j z!~-Rweio@41MztLS@~xjSK-D6&~wELM&+tjSNPzO1$#_N!Y{k+-MaaJOU9 z(x{?Tasmeh^^Pvh3WpkdT!Yn}v>P@UuCSSiLhILR_VX0LWyg69!jP&c0>DLZ^`61u z&wTA^N6*eWIWW~vu1VbZNhBgJF{x;xx*rkAl=0T#T1e=dW}5^0{pYuz;&*Eh{kLO% zf$T{TReiYYg{r0-W+Tik{oJ42Co!=0r_5d9p`htq0p$5?ZS5W^?9t-)*;{4|`eWhn zm>r(%R<%7<6j|xr(Pgq8(Q@j`>+=fnP1VMRe6QE?!#w@zLfPs-if7AoIXg z4zi_S?%S;1l#ecO*u_MJ$ zxoaaXJo5$)hURa2Ok|r4^KwN{p*|pM<&!kWBa=pJ|1#6M);uBSH=%w^ii)4&udX4U z93i6xx|he%76%^sEXYB&^~huKqt<7yJQuZfgz4FhJ#g;#!~OYzYE>cDL`uRqq)fUo;v(6is&%Njy@x**$W=N}9eU!-93|MY znkv;4lB;MiseoU?i^)nqGqyfAVj-4IeY)EUm?oIvCTi=EnBwzJ1)PQR-1?B(A`xiOF8;T2GvAzn-VYcN%ku z&}V9rA_XgI^17Q}6q9S8H;ng`R{bqN*4^h0wsO#>Dy{jv4y|WJVNrR!3x}~`Q%e-6uaf1X)4Y2 z8UjyqPeOc)6YF9L-m4{k>vX!iz1k*zq4f^?8pwYy(jSZidxp6=4ghb_{)VWKUei?! zTC%-q$%cjmY3x9}FN!&byLj2o{qDkH#3YDe8MsvpO|E-%8i?atN1AUldp9n?~kF ztEPm={xA3WfZ8AOy3~>6>rWg>t!u=YH;K^%KcYZ#zWp!T4xO@PR;*RYHt_~1yG5cF z_>H1nNZo5aKaa|v!Pmvd$FS#NFel88SI7GE72#81ZvW+PMtSAxep7d6$3zG?YKXZL(W`tTuHC~~Dc?+{%Eo7(Q-aoQ zu04Md+w+%;2S5-2xZ11~Irdgpk9>cfw=-&8Sr$S(6 z8zJ-w*xTR=+`(A(5$4z%TCWCE1VVU5`o?CaF=QiGv>4+eTTGCEZuyqW9w9nZna`Wv z!U6A!_eiKtGSP{s zj|7R4Csg0(`lJ%*pk(P_##U$TUBK3A|L{hC0D+ z)RK09x;9eD#5W<+h&+Q6^;Xu(R{3%0aL$JmMS&2M?F~XGD&CjH z#}~*xzfO@OHz~%B8H#7}V$Ce9Z&yZTI;6~RHUm2?E$A^@tpMvv;!*4gH5A8Fo-6?P zH>Qo*p!eroWTc^)Z1z7Ns41hzz@%zM)dDk*<=)gbt)FLg|es3xf zPKHhnrD`2i)RwkoP9+n0!rc;O(82j_rj$pwT|*f33fI%Tdq)t{LSz1I5<@Gp(FX$x zwTt2i?|lw=qJHl_H!6SL#V_25K~Nx(F~UWlWX8A2)}8R>pxxLz&pyVEmG{}!-0`_h zMd)IG1&#Mv>!WGI^d%xjU&fA?W5Dj=dq(~Xe<+O`{xth_{L#^rs!G>oB}k2>+=6bo zeW7#^@iwyF081%a`&z!MiVn2`15JB<)}{x*j(B3Lnk=GOGX4&NBkwl!3&BQ z@d#NNpWh44yTQ&G9jEGvLC?g*TK8d>7lbo3VqnLa=17^-See$QfGHrpXCy!Ld_^#%0o1o#1y1F&ZL0br1;nzv-5zV&7~1>zYSJV5zhf4)}WORE3t z>fhI0Ujx|Xf4(FebsY$2|NVnNJ*F0(I{RD&J7(I)ztlvKOa@nlHvNB`3(N?;>#YV6tqe)p?D+`+CaH07r2 zm;arXd!#=4f9UG}QQ!Z!;k#@OhypM`Nqz^7z@krnn4Pgp?sc-&008+G*TT%|dGPTI$w(I*shugNG+eW;n}>-c^4b~xW@r=bO8h{)g~7Ma@0&GQDm&lG_4FXCx3L2xC-b|{|@EM z4&{oU5|DBoIRl>AvjuS~dPxF1`OR56VZUQCb7*oB0o@gtpZ48u&yJS<47=!p{VPG1 z%LV8c*jYa8SE656BIB6{IV(ZGC5?#SZo5ljgHR1pUKc;5%4kcBW`$ zA4;E3^v^dS&Kq{iqWy35Lvj1NC7w+fyw(`B0y@33IfL8uIxIAcgq_#H+ES+vIIa{H zdpr{jU?>pWXS8r<`x1+Qr)y51PaiX%M3J**;5FW>Lt;9J<-Clgtzic1=+`FdM`*ee zOgD==-|oQw_{RA=@D{{H;w3F~s~;-{YU#iD+dq47aM0qZPG&GaVGV1i#?4Y+12ykU zAog24<;ardqFVw6BTPdXL>+I`#Ky)FPII${ZcqbJcSAY3?IIrT$8LJst?#iSno2o+ zHdb>DB#qmRhNtKx-*i3pnh)o^(haYTvW}h4`iVtjB_;!4hxgPPnwpqZ zINo_Mn;yp`HeNwN5D3uFi|7Vdr_iqu$(}SFL*IMojxq_oNGScY7SwGz|<;;>)1zk2lMCqovQd0*3 z0$Xz_VtO`|c+Gs}sVu)ZbdM8y4TP5g$h>d@?@&o;Z5xYQikN~1XT;CMzY$R{z z7&kow_{lkzF}LGsUxDT=Of%KYS@Fzg{ib!@4M`QUx=K8+#vErcpW16RNba@e1~cmE zmp(5t=(vKmD{XSrQlWT*#mjj5gmG0^mEWRvjq(X1h|EZs#2UvRLmLO6m3psjqlw;$=0lm#^u6UFO(Lh7{z5Mo<4) z1Ne&^zga?-mhDU2_LVN-jq_@hR5Y#Bmpjx8K*X9kZ<>h^IQuRje!vIl+$=C$Ler!2 z#5pk_wK6^VMW+Wl9V<5SIv7;i1(YY^B;M@wj^AD^?DsMB@_3;mV51{xkt5Vt{Ay?= zCTNuv;O!B}^$$=nEGvN8U7PV!jQ2(aAg?KmX&AC`S(vn$4QR81`)`7GQOM@I53kX* z#%fB3YeLV4Pg+Q&1Mx!e0+f4~Z)T70WNRC@B{##vD!^Q*@U=X!CVc_}1)+NC*P13jfNNZIANwFv{ zkWYl*a~@DNTYbXaBP`&j&3eF!U+`(cdl~8Dy8by9TpRS0b%r+yJm9c!cdVxQDw0nG z#nFnSQUWM}z^@nSN7=l6-V9$qL0leRMnyv}7D$`rWM9tV(Z|j$ncZ7Jt|mUc8|CTz z8mQsz#)r`Q$__Yg9nO5>2;9l@N@gn8Zj6^;gp~|l9|VyyKN)5P_F4jV*1qzWO~CYA zJ;D3S%Xza4il|18MKUie#>^~F_k5OA#tU!uAhdx74zK;7K+op=bgL<_Y^TdN?O(9V zeJC?%r%N+n5AVQP8``*Ul1~se-8^21mWiTkT2*KRL${9us6jh>iHM6vrwBlk>S87v zy>B`BqR~4i3(*VsU>SYU8SOkG%&H`-LJmFZ#~I+Y+-f%RE5$EhYPRQxVK^bstQp`w zq!_WfV=dAECa&>E*NmQpG5f4uIK|v_wekbvDJ!VqH!0BYb$6UE;j7fiFM$i$Nx&OU;{0qMUi2y4AOhh9>HYF}~T_4W@w?w@d8F2ZI7VW&4@%|aQuYaFM30j~W9 z2y&eR*i_GZrz$e*c46oQ;?IzXtvP5&e$_ZBM^!V8n=K6BLdlrqyqer>=tug zUS2H(a~B9r|1>Jf?_?Y|l0FOuBTEMH!(qP~jzGX}#O@gq!OU_t5Vqq#bL@XYdO6E7 zD{%1v5eQ5V9TY%kp;sWTLk8ypYLUU_UAkAhXaZyXdMJ6mQQ@^BF%vFx5+c(=2i>Jx zAPtx${i^*7z_V6n9gtSCx@VFH19DgB6L8{AE%+&({~+MUil@auXb2X-89318nhcf` zkM2Q%NCfUsI7tKl{Sphw))}pyejT2(hj6GA{uj@xA`VoqD2Q=;5wE>2&RsykX=U~W zWkLXb$5Df3)3^ON^Bw|TNd>U5MXHmG?NesFhXv;7gc6Si$>H9BkNgNkU3h(uC!T{~ z6kxfSCB@LEMN1vs!$Tf7fS&SMWlaMfE5$UjdgTDL1%l`-b{i@)eTh5nH$4XeATa>X zW&#qo@FYW>xZkQA%dar$gRHsJ^KAr+6ZHIYX1b~4waKLmBNW)`k?iKPm&*fMcApa7 ziQEym@l8#ue5_Y@dDTux5J?;_&)3kYjWX=BGh7ogsjF6ryx~T>{6yF~E64IKU3=q) zPl)mGc25rq*5K(9V_qL&i$HKu%~`AFnEW|PVe!4axMWOiSeHzP>UN^AVFfw z+cKL!U+(kp^6FSvWO;0iXX)f=BSZk&;r(cFB2ElSTm^C* zU02ugYWs=r{^v*e1qCV)2;@2$+1DvY{q5}QHqprb;q)V&%w`!Y;5ex8hJXbtgLo6HeVktEiG|#a(28s-s7ap&^5wc z>}x_WW1CMcLoe;@?O)s2*rfgwA0J;o_mP2LM-l(^C3jvlYv7;MqMoH|R6K`>ZG9N4 zIzDdMK0lpaIs*_m@KFC(nBq3GEkQm2*I|hDn`!pvdHgu;5itpg-QHrCL!WiU#NX=n zw}S<`g$IkVn(JdmP7a=raRP#Z!+x<_!8<$7ES7}IfF9WF&UAlQh~V17fAtPe^>ZTN ze@XlEqfJ1iVjfLwdZa&d`PFg%lrwKQzoq4Qg_*v7UTNtQ7Aqpp4`E@LgSFw9oVGCP z3gU{*py`uvI;Omi(lnjQFZfkG^PCFo=SzAZv4h>D#r%z<;oSc{{q^XXAfiOJNQn80W#`K`Yzr}Gg49yS~4p3}Bb>C*l_ zg)SMUH5T_!O};h2TOs{Y$E$xBoL)OSmwwOA7WO-FZaP~pJUc|1O{HLdd9sU%O)U9X zTK*`ns2DBO7jTPoTj_Ifp#o$R6GPjZ^pBj}#~a@O(*i#K_T4+k`DP8TsHi@Gwwu;5 z7>UZOx!t+jccr9~8`}LK21&2dY6mojG7mpLU{5NA|L7I!UgFN-fJw%sq!jG!?dh#- z&L9wUry`wx}N4T}p33uAk&z@9ijqwzMskr*GJ?=;igJ1^O^MJ;pj z%5C|tOQFqC3n8`5Xn`*9iQ+%TCnfG%lLj48OtFvnOdH=A7#Q@v)h~LJ6@H7e-k6t{ zcX+()-4xF!!^e01ft3RO4-*N_Bv)qaM6vg;6W}+MlM4wrTjPwp_m6CzCM==XYWNck z+Xx^*CMloSGk*J#1~%hW;KZS!p-KowFOptZrM_>BIZ zy1BW8Gluz3qeSV$-d3Ft}g@89yHV`Fx}Ia^jQtXqSLQ5DwFVB|c@1$p^ZfCaJhlLI#k4Nd!hDgFph(A;5qP#t;G`z3+Wt=Inp4n{zlX2i`mH=J)&E z@Aq@>3+E>yshtH8fnd(rZEbF7_>KO1*REY0D86hkn8(aC9a&D;6*X1WieU#NcN(~S zC6tE${MR%l9RBbNizg+W`TV(Cf{L=Tj~3mf;t(MY*r>0FM8ZGz#$wTT0sfc0==weWU_L1Vb{Q|It>ktbGEiAVwtI_UTONlopN-}U2)jR zPz|)6QM8l`=UwX%~-7BBS=1tO-Tq9z@Mhl>ttxYJXcjeVauV6WAky zu3P>jluIU)2iOY>3-njlsvLTqtgLz_!_4YWWJatOLonUNiB~RPzOF4PlH9+w2%~X3 z0d&MAw!I(j4dS8>@_O@P%E@d-wPVNp8!5xE{xVf$5IVlY{`3zx2K7%2?VP<|^Lqr9 zF;@mz&(NwvDWK7oF(OhHZfmnK0>=ljR|8G)ux zVq=qt#N(Xxz+f1HNzjJU+1vhjp)(j=|4&i6_-X9oQ)z>el#~=}c6oWZH5U77z$jw9 z782jlC9K+qvo3by!EWJBXjY*xt6+!=@KbYW?f01ro}NV!8w)nDMyrGO#WZGTWo`M2 z-BA<%Z0>+I9GyP(w;c&hYetO6{)|qfXLZTGhm$-ol zL{sg4dGp!>5u!?V-R{yLsaiG70lMj{t6UN*Zt3}#FP_6NHSSx`K=D@JoNG7IV&$4V z^|4<6wm=csxpN*W?Ux(Q5i3o+3gE%pHOq48?N!CC6^?R91VMsEzamGQH*3?>OW;tq z=_nKmEzy;6qcJ*_*V57=>MAHC#8?#Ar=Ruc(W5|iIP`Ve7HyovdwghxZ7HgaSoXw3 zaT((z=p-W$URCX+D4do7i91uj6&QNa&W>nb0phi>wxqQtB&z5+mx?$+LsAsq)cukq zR9((cRkO3Rl{X4l666Ao{UzAJ&Rf;JFsl6ZC zJv;jA0{|XxRUcT5B}GL)qXw{K(af2oUwle?ZjpzTE*h+VZ3HXxTaykB4tCcA!BtRD z7_1A|d&ma}8+|@IG*~gyc~hJA^L}hadAy*U9)23lN<3;t06|=82Y6~zwX(9}jWk|W z6pckPYjclGScl6{OVSC(A`Cj$!jsa#;u_+o)1YglH}U!NaRUR#w;>A_kX)@{vL*?4 zLwN_$!@ZqSuJkznU}<|Y_KJlC!H2>*is&Y+K`AER8V?j&z-Xf}WM3o{uw6P-ZD7PazTp9i5v_rA0-Tt*u{71yYgn z3o(qwImG%SwRWv+J9jeOh0{M%jYHQdnF;B5d3jCtk(^`bp_PZ&39#Yd30YZVP_aAO zl7qGWxviqnMqBGuE7n&X9MW3J56yyIhlPcOFPNEGfyA}qsKe!XuxAOK4tUZQrtS-U z^g&v1K+H7j8E@Z9gs%v4rs#W{VPy_)EWk^9DqMd*6Ry zp~&j}3ncwMg1cJT+n>O+Fqzip&P6{}zvXOho**bFh{DXV+wlsK;p?-%xrc%~mWjsE zDyC^P{p3%5Kr2b<>1A9}eO=Qsl%3S@&6L7^UZ7d3+F7u~UT9|}B_`(P z_uqg28b31<8`8yBX8p%X|3W6v;dOzpA%NS;$^A<}At#O>zd*3Gw9JG2Jx>sqkf;ut zby4?OU!E;vj&X2$k|K#&_HMov!7{nt_o z#g0_BTGIZFKOI8bIViDqF=C218@*Abfil;5_)KZAb_O(YclSCWGFjQJmAzPUWUFInqTWo0Feco6yAwX)59|Kz`+oHa4=22-Q($Sg}|XVSNCcZ8*MErD8q zPp-m^Aek+#tnxcMEqJV&c1dpQT#ki>#R1^h!9hEC{@zYA^y);_&_hFpg$^or1Dq;w z*6qCjJwV9Bwf(ZpGY!kYeZ3%k2uxocTU*zlKjM4%~zbWC!kt1l&jvp6z zEE~<2W+n-eaQ|nmtXl>l^BqDew9%e4B-jS2?b^wq(%$FISy;s4MiDe{O1boV_MBLi zI#1liGiRbM)wBrh-D?RM<<3m=a-z=CB>=ic7bP7mG!_gy=wn)y68CIKpD_8m%=Td zyI_b!^_S~6$Wrcda==fV)|O`a?(Y&p-}&Qw)BE@538zn=J|H7QQgx+!j?jWvVU;hm z8*Lps)?8DcxCFjTo%dj-6-P!!iZI4L;5;8{XyC&Etmeb0sG>`mh9RF* zJzm4pgC7nYIHs*_OK1ydqa8kZ@^Vj4&tQdXj8pK$5Al*Z7XJSJAj{92T&^rl4<}`0 zl;cN&P44ODqB z0%$1C^6dDNgoH)g1kY&KeS z1mx0&u5I=E>K(IBrWa~hqGOF+nO%LvTflJkgICBoe;au(`Up9$+X4TAQoB_RxK-OF zJ%66JGRNjNKa-_wEV9DW`5M(Av~%xbE^;>i6)7_&{Qv7MY{&3FXkz?zqb-3P+{kAV Sf%O&n4d$%*nex-u@BardrCas@ literal 0 HcmV?d00001 diff --git a/docs/articles/plotting_files/htmltools-fill-0.5.8.1/fill.css b/docs/articles/cohort_dynamics_and_diffusion_files/htmltools-fill-0.5.9/fill.css similarity index 100% rename from docs/articles/plotting_files/htmltools-fill-0.5.8.1/fill.css rename to docs/articles/cohort_dynamics_and_diffusion_files/htmltools-fill-0.5.9/fill.css diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/htmlwidgets-1.6.4/htmlwidgets.js b/docs/articles/cohort_dynamics_and_diffusion_files/htmlwidgets-1.6.4/htmlwidgets.js new file mode 100644 index 000000000..1067d029f --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/htmlwidgets-1.6.4/htmlwidgets.js @@ -0,0 +1,901 @@ +(function() { + // If window.HTMLWidgets is already defined, then use it; otherwise create a + // new object. This allows preceding code to set options that affect the + // initialization process (though none currently exist). + window.HTMLWidgets = window.HTMLWidgets || {}; + + // See if we're running in a viewer pane. If not, we're in a web browser. + var viewerMode = window.HTMLWidgets.viewerMode = + /\bviewer_pane=1\b/.test(window.location); + + // See if we're running in Shiny mode. If not, it's a static document. + // Note that static widgets can appear in both Shiny and static modes, but + // obviously, Shiny widgets can only appear in Shiny apps/documents. + var shinyMode = window.HTMLWidgets.shinyMode = + typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings; + + // We can't count on jQuery being available, so we implement our own + // version if necessary. + function querySelectorAll(scope, selector) { + if (typeof(jQuery) !== "undefined" && scope instanceof jQuery) { + return scope.find(selector); + } + if (scope.querySelectorAll) { + return scope.querySelectorAll(selector); + } + } + + function asArray(value) { + if (value === null) + return []; + if ($.isArray(value)) + return value; + return [value]; + } + + // Implement jQuery's extend + function extend(target /*, ... */) { + if (arguments.length == 1) { + return target; + } + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + target[prop] = source[prop]; + } + } + } + return target; + } + + // IE8 doesn't support Array.forEach. + function forEach(values, callback, thisArg) { + if (values.forEach) { + values.forEach(callback, thisArg); + } else { + for (var i = 0; i < values.length; i++) { + callback.call(thisArg, values[i], i, values); + } + } + } + + // Replaces the specified method with the return value of funcSource. + // + // Note that funcSource should not BE the new method, it should be a function + // that RETURNS the new method. funcSource receives a single argument that is + // the overridden method, it can be called from the new method. The overridden + // method can be called like a regular function, it has the target permanently + // bound to it so "this" will work correctly. + function overrideMethod(target, methodName, funcSource) { + var superFunc = target[methodName] || function() {}; + var superFuncBound = function() { + return superFunc.apply(target, arguments); + }; + target[methodName] = funcSource(superFuncBound); + } + + // Add a method to delegator that, when invoked, calls + // delegatee.methodName. If there is no such method on + // the delegatee, but there was one on delegator before + // delegateMethod was called, then the original version + // is invoked instead. + // For example: + // + // var a = { + // method1: function() { console.log('a1'); } + // method2: function() { console.log('a2'); } + // }; + // var b = { + // method1: function() { console.log('b1'); } + // }; + // delegateMethod(a, b, "method1"); + // delegateMethod(a, b, "method2"); + // a.method1(); + // a.method2(); + // + // The output would be "b1", "a2". + function delegateMethod(delegator, delegatee, methodName) { + var inherited = delegator[methodName]; + delegator[methodName] = function() { + var target = delegatee; + var method = delegatee[methodName]; + + // The method doesn't exist on the delegatee. Instead, + // call the method on the delegator, if it exists. + if (!method) { + target = delegator; + method = inherited; + } + + if (method) { + return method.apply(target, arguments); + } + }; + } + + // Implement a vague facsimilie of jQuery's data method + function elementData(el, name, value) { + if (arguments.length == 2) { + return el["htmlwidget_data_" + name]; + } else if (arguments.length == 3) { + el["htmlwidget_data_" + name] = value; + return el; + } else { + throw new Error("Wrong number of arguments for elementData: " + + arguments.length); + } + } + + // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex + function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + + function hasClass(el, className) { + var re = new RegExp("\\b" + escapeRegExp(className) + "\\b"); + return re.test(el.className); + } + + // elements - array (or array-like object) of HTML elements + // className - class name to test for + // include - if true, only return elements with given className; + // if false, only return elements *without* given className + function filterByClass(elements, className, include) { + var results = []; + for (var i = 0; i < elements.length; i++) { + if (hasClass(elements[i], className) == include) + results.push(elements[i]); + } + return results; + } + + function on(obj, eventName, func) { + if (obj.addEventListener) { + obj.addEventListener(eventName, func, false); + } else if (obj.attachEvent) { + obj.attachEvent(eventName, func); + } + } + + function off(obj, eventName, func) { + if (obj.removeEventListener) + obj.removeEventListener(eventName, func, false); + else if (obj.detachEvent) { + obj.detachEvent(eventName, func); + } + } + + // Translate array of values to top/right/bottom/left, as usual with + // the "padding" CSS property + // https://developer.mozilla.org/en-US/docs/Web/CSS/padding + function unpackPadding(value) { + if (typeof(value) === "number") + value = [value]; + if (value.length === 1) { + return {top: value[0], right: value[0], bottom: value[0], left: value[0]}; + } + if (value.length === 2) { + return {top: value[0], right: value[1], bottom: value[0], left: value[1]}; + } + if (value.length === 3) { + return {top: value[0], right: value[1], bottom: value[2], left: value[1]}; + } + if (value.length === 4) { + return {top: value[0], right: value[1], bottom: value[2], left: value[3]}; + } + } + + // Convert an unpacked padding object to a CSS value + function paddingToCss(paddingObj) { + return paddingObj.top + "px " + paddingObj.right + "px " + paddingObj.bottom + "px " + paddingObj.left + "px"; + } + + // Makes a number suitable for CSS + function px(x) { + if (typeof(x) === "number") + return x + "px"; + else + return x; + } + + // Retrieves runtime widget sizing information for an element. + // The return value is either null, or an object with fill, padding, + // defaultWidth, defaultHeight fields. + function sizingPolicy(el) { + var sizingEl = document.querySelector("script[data-for='" + el.id + "'][type='application/htmlwidget-sizing']"); + if (!sizingEl) + return null; + var sp = JSON.parse(sizingEl.textContent || sizingEl.text || "{}"); + if (viewerMode) { + return sp.viewer; + } else { + return sp.browser; + } + } + + // @param tasks Array of strings (or falsy value, in which case no-op). + // Each element must be a valid JavaScript expression that yields a + // function. Or, can be an array of objects with "code" and "data" + // properties; in this case, the "code" property should be a string + // of JS that's an expr that yields a function, and "data" should be + // an object that will be added as an additional argument when that + // function is called. + // @param target The object that will be "this" for each function + // execution. + // @param args Array of arguments to be passed to the functions. (The + // same arguments will be passed to all functions.) + function evalAndRun(tasks, target, args) { + if (tasks) { + forEach(tasks, function(task) { + var theseArgs = args; + if (typeof(task) === "object") { + theseArgs = theseArgs.concat([task.data]); + task = task.code; + } + var taskFunc = tryEval(task); + if (typeof(taskFunc) !== "function") { + throw new Error("Task must be a function! Source:\n" + task); + } + taskFunc.apply(target, theseArgs); + }); + } + } + + // Attempt eval() both with and without enclosing in parentheses. + // Note that enclosing coerces a function declaration into + // an expression that eval() can parse + // (otherwise, a SyntaxError is thrown) + function tryEval(code) { + var result = null; + try { + result = eval("(" + code + ")"); + } catch(error) { + if (!(error instanceof SyntaxError)) { + throw error; + } + try { + result = eval(code); + } catch(e) { + if (e instanceof SyntaxError) { + throw error; + } else { + throw e; + } + } + } + return result; + } + + function initSizing(el) { + var sizing = sizingPolicy(el); + if (!sizing) + return; + + var cel = document.getElementById("htmlwidget_container"); + if (!cel) + return; + + if (typeof(sizing.padding) !== "undefined") { + document.body.style.margin = "0"; + document.body.style.padding = paddingToCss(unpackPadding(sizing.padding)); + } + + if (sizing.fill) { + document.body.style.overflow = "hidden"; + document.body.style.width = "100%"; + document.body.style.height = "100%"; + document.documentElement.style.width = "100%"; + document.documentElement.style.height = "100%"; + cel.style.position = "absolute"; + var pad = unpackPadding(sizing.padding); + cel.style.top = pad.top + "px"; + cel.style.right = pad.right + "px"; + cel.style.bottom = pad.bottom + "px"; + cel.style.left = pad.left + "px"; + el.style.width = "100%"; + el.style.height = "100%"; + + return { + getWidth: function() { return cel.getBoundingClientRect().width; }, + getHeight: function() { return cel.getBoundingClientRect().height; } + }; + + } else { + el.style.width = px(sizing.width); + el.style.height = px(sizing.height); + + return { + getWidth: function() { return cel.getBoundingClientRect().width; }, + getHeight: function() { return cel.getBoundingClientRect().height; } + }; + } + } + + // Default implementations for methods + var defaults = { + find: function(scope) { + return querySelectorAll(scope, "." + this.name); + }, + renderError: function(el, err) { + var $el = $(el); + + this.clearError(el); + + // Add all these error classes, as Shiny does + var errClass = "shiny-output-error"; + if (err.type !== null) { + // use the classes of the error condition as CSS class names + errClass = errClass + " " + $.map(asArray(err.type), function(type) { + return errClass + "-" + type; + }).join(" "); + } + errClass = errClass + " htmlwidgets-error"; + + // Is el inline or block? If inline or inline-block, just display:none it + // and add an inline error. + var display = $el.css("display"); + $el.data("restore-display-mode", display); + + if (display === "inline" || display === "inline-block") { + $el.hide(); + if (err.message !== "") { + var errorSpan = $("").addClass(errClass); + errorSpan.text(err.message); + $el.after(errorSpan); + } + } else if (display === "block") { + // If block, add an error just after the el, set visibility:none on the + // el, and position the error to be on top of the el. + // Mark it with a unique ID and CSS class so we can remove it later. + $el.css("visibility", "hidden"); + if (err.message !== "") { + var errorDiv = $("

    ## An object of class "MizerParams" 
    +## mizer version: 2.5.4.9125
    +## Created: 2026-05-07 18:47:21
    +## Modified: 2026-05-07 18:47:21
     ## Consumer size spectrum:
     ##  minimum size:   0.001
     ##  maximum size:   1e+06
    @@ -238,12 +250,12 @@ 

    Running the community modelthe section on exploring the simulation results.

    To quickly look at the results of the projection you can call the -plot() method. This plots the feeding level, predation +plot() method. This plots the feeding level, predation mortality, fishing mortality and abundance by size in the last time step of the simulation, and the total biomass through time. Each of the plots can be shown individually if desired.

    -plot(sim)
    +plot(sim)

    The plot shows the results of the community model projection. The top panel shows the total biomass of the community through time. The other panels show the feeding level, predation mortality, fishing mortality and abundance by size in the last time step of the simulation.

    In the above plot there are several things going on that are worth talking about. Looking at the total biomass of the community against @@ -303,7 +315,7 @@

    Running the community model
    -plot(x = w(params), y = pred_mort_final, log = "xy", type = "l", 
    +plot(x = w(params), y = pred_mort_final, log = "xy", type = "l", 
          xlab = "Size [g]", ylab = "Predation mortality [1/year]")

    The plot shows the predation mortality at size in the final time step of the community model projection. The x-axis is on a log scale. The predation mortality declines to almost zero for the largest sizes.

    Note how we used w(sim) to get the vector of sizes to @@ -353,12 +365,12 @@

    Example of a trophic cascade with the co
     sim1 <- project(params_knife, effort = 1, t_max = 50)

    You can compare the difference between these scenarios by using the -plot() method as before. Of particular interest is the +plot() method as before. Of particular interest is the fishing mortality at size. The knife-edge selectivity at 1000 g can be clearly seen and an effort of 1 has resulted in a fishing mortality of 1 for the fully selected sizes.

    -plot(sim1, power = 2)
    +plot(sim1, power = 2)

    A summary plot of the simulation with fishing.

    To explore the presence of a trophic cascade, we are interested in looking at the relative change in abundance when the community is fished @@ -382,7 +394,7 @@

    Example of a trophic cascade with the co relative_abundance <- finalN(sim1) / finalN(sim0)

    This can then be plotted using basic R plotting commands.

    -plot(x = w(params), y = relative_abundance, log = "x", type = "n",
    +plot(x = w(params), y = relative_abundance, log = "x", type = "n",
         xlab = "Size (g)", ylab = "Relative abundance")
     lines(x = w(params), y = relative_abundance)
     lines(x = c(min(w(params)), max(w(params))), y = c(1, 1), lty = 2)
    diff --git a/docs/articles/community_model_files/figure-html/print_plot_comm_fmort-1.png b/docs/articles/community_model_files/figure-html/print_plot_comm_fmort-1.png index d44621950868df05b8e3acfcdc537e89861a878f..2c1b3996ad8d2672cca32d9712fc3e5994463753 100644 GIT binary patch delta 101720 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 diff --git a/docs/articles/community_model_files/figure-html/print_plot_comm_sim-1.png b/docs/articles/community_model_files/figure-html/print_plot_comm_sim-1.png index c28705b848d5055b4020baf935a583ed6666a26b..1c1a5f7c4935504c52e9845b275eff07cddb0f40 100644 GIT binary patch delta 97824 zcma&OcQ}{-`#yf#LiWmt%#xi%R%B#Ego=<=LS%2ZNLC2hp-6TjGb>pc8D*87RkByM z?{(|-J$~QMZyd+ZAMf|;kmvKh@5keMT-SM?*LmGlIYh}}#P1%3qO&U^BfEzmP2Owq zc$ukY3zR+{{9zEP7S%84dF=0;lJ5+8nT%+nWS!hDs&w%MCb?2pJ(Cd{YnobB57occ_) zR-sH_RPEklcJ~%9FRxR&#=Mh+pdfkj1^XwFkrW@?mW+Rv>26$c8O5EJa?|6Z>n|`2 zdis>i-P2PcQ>WfajDwq-fcb)5?RZ%nAuqFg0#AH}gssf1qGy#t|oEVz=_0A*iLXtnFLj+s`eE z>-bBrRbyTb{Am)53r5x|B1!4_KYj`%B`vtX6pkF6oXr)}aO+Rr6gYNx=i063v)(Be z>{FY>|1OR+R5(luyDg%(ORRd*KYKPx2VK|E5%$?}{^fkpd!>m%dN%J=PN(6^z1g?# z-@k7%e@haGTWZ~>aODcIqodYFMi=s#0@90YNe07H} zC~}(BB=+|k9=^@R&22i{nR2tlimJ?RB(y1v;c`xg7U@dDpuPgCfGci0=qF;{{L*gZ zL*@^7w#~L5|NGh8#(anZ>e*e36!F;w1db!!#g^*5Z;h%37c?S=7{itG4N7yncT#1% z(oGwlAbv^bZ8&&%2qh&YA38enl@$CYVz#%pw`s_-ev?0Iqpg9`s_z8q<~vEq$gsxn zTvaeOK8ex`8I#?(F+g3Om8+V&M*r^1hTHOZy@cZwac7ED3%*cPcoBu3$MQ|pJTV`> zlQj2REkv!vn8a)cDNmg`)&1Lfu+oWlb7?Gcw8jf>T%;(ox>_1rKC2%kX9&qzZqDty zYs}|m`?@H}@}%>+lgfHtQT*xn@F9Zi{V_RI$V2rDQY&lNiIrrdzkP7Aaq=G!lbvb^ zqR`Gz4p$gTie`PY5Tcd`ckdD6Kz`5C(zNaQnJen*4e3f@YWsN?^<;EX%KaX^tvh-0 zB(mB<&Evqu%R5v}uBD|l>T&(pf481hg5CP=Twfl8>*8?8^(@UqnrdmDGN;ukR24pO zxp2UIb*eS6Ke^due{Zd8;@7WWSYuYo43Qx|bbVOByq>y86q2nVV#MV- zKX~fLwbO4%buBC`qW(a%lOk3FZ&OZhXm6N?t(Bhcf6?GsbMo7ps}1PFQ29#V4HLR; zm84t-2>6fU17mnZfyar+kcF+?U2}-) zrrIZDCvcIQwce80+PaN;5FwEvHUDnu@iF6cwZ?DXXk1$u^71nF zoAmVbXNid+=WY5g<@LpV=!oJ}`PmkG_GXb8f$PGLz&HUz4q4fg4h{|vA3pquuK)h_ zV2~rX&DNooK2v)3;mwLfV6xS1Xmj*fw0bVP!h+1eT8GXYC+2#t9mc z6zGS|d`WI-ZzsKf|GtFRCO@R5@x{dmkF^>3SJ!T`GT*ZPUd+wH%DTWxs3$ys8B4Tf z*GFaPVDBIU6OMVW9UmS+M|w)`Uw3zRXNR1it*!08{)=kLQ4;D1o|~In7@S_dlP770 z&e+#|NIyxFxa^#3z;&f|oEE#96H`b&rg;6z154OY1cLHZ+r zV+&!$dHQs=u8Ea8vy|R(OUcnP36n6Lekb?6t(7Yp8s2v+H8nK{-H1^q z(B`;!_ujq9@%jJ>-#v-9CUp_(>&_Aq5-)GPzx!*nM#|V@nvTa!>5YEgtARgowNsw{ z1I}6GE#n2l`RKyss0}r*2eU=R$8E6OT^5y)5DW)k9I8l#(=2)M`}dFzh)qmPO6*3M zaBy%Qy1EKFnw+HhU0_moQtoi?oPPezM;Be@Xbrl|&6xYw^Ugvrsrp~w;=*r_6F56i zE8cd2h6;XSPta5=!jEoGNb0zZ&yLtd=U)hlEU&E8C)?K^qoAPBNE9VNgk9!zD=I5b ziHJ}^fmMcp^7r?DXVFUS?%|Qxa`F@h{1lg0R7gN^nN35D*L`z;x0W`CGcz!`MFzu9 zc8Q|aas=}Q@;vdu>nAP>lYe_!`;)s zUn#dlutue%JSYlhCx#lQWNn=*0GG;r2)AG4xnWIqQkt>UX5fi(#-sA`3w!(fD=RH* zljz~D$txQkB;UA(NmW&Ku)=|Jair>A(C7A9$URRC3Ix~Z#_H;y>^UR{tS|Fsocqv@jGu5paVN|M8P2W>B62 z`%i>7E3_wFu#b5Cnyaz7Io)Bhxr{g@I9p+RW57h@;rK^|nDyZrF9x@z(WZ%pprSkV zxMDW_WFjIW^g~Zi$}q|8uhRfxj`&e(qkf`H4<#eK92G-7Jv|+wAH+_qf7Kfc1I5@b z$ecyieSE(*Jo$~Q8NX#|2|4UeO<8zvPsbyE0FtR;gLEFNDq5TquMB`>)A(XIwtf27 zV3B#zP@9G5Q7U<7-a>Bp__CtzD=ff&4V4S6d&+!p{_P(?M8P2`c>)RtdPPm`Q;~U# zuz53CMMcG(x!#<>P5XhjtUA}PLnz=RYTON?znKML4dqd|4)#^?Y!!e_ddswnE@~yk zA;GDxGaV;15`=L8NvJ@wP}_$;a_D<&#LVWqbqX1O-z9t5z`!76s4GDP4;hE0Jx0Sb zC@ssuVMyZ>jh3p%3%-KHf~?+S^!-y%{!%CB<^N99I4UYCVLpN;wND|_WO)5u+}i&; z) z>Z^QqU6GH=6AkJ$k(ya}&*aW9Q)%nPB_`hYU7DKGeJk2uXkwo#F@HZxD^1Wfx+u#8 zAcztghyMP`?Y&%21a;_9KmZ=3+R#Y314ahH+ox|-Pn!xezH|AbzrHla_V(>tKsX6fUhDIkX|e*hZYwGx%M0aWxSzFtG&ePw_UGS9koG9vR;lcgJ7hU` zx8oyZPKUz-pN>=+X2UYu`swy~^*z%_G&nf_9OPvu--#G4*)t^v0Mch(G?kC}l4chF zx*wANn}U~z$LxEt<*#p9ksch=Q1VXN*X?hf3!*r;u@*0AWNloA9{K{I{nXle46tOC z>w@Q9GDY3};L!#R4Gnw*z|C_{wr`Im3<~tIQou(G$YyQVXLmC;j||P|A+9ktnYS=| zCP1P%>?q;pz3@Q6_;wMe z84WTMHqMsRmF`af z8DxN{!-@w)G`5ygGcy&4~Sri^fQa1ix4{vrowMa90MZ0(GWhDnVivDWH6I7AZ8zbKJA8*_b1 zvf8E(&!lwCR)ev?dQ8)QPPf%DItsy`@L1Jhk z$8u1m_jWPzac^g!?tmLgL7e9yWW4%n`&$qYL)9kE&LvGBu%bQC)YL>*c?cQ*%Mce2 zPh5_jJmupv*WVB$kB!k9Pr9lvWeTks|MLh`QPjY4C( zr^*@KK&x^5x^u2)ar~vqkh2wI3JY(w5+k{qBu0f0qf0e^jiZKW=V$RK``;QFhW1la z9rOR?whSC-7x9Bsoxn@Y7XgO?4xU}=RiDq#PGO)(ccR4hJGDv#i%29znZu+q7O6tj z%eZCsV|Fp7L?>lDAJ+#E!M1m%U^K-rKTXn!2e||6-Th#DHjICA?C{_MEeQdN-04b{ zNpB&ZiZnciuwHb&1Vk-txVfdJMOu=ODoUn$>t`53(#3|+6y%b(xA!X_jRCE1F*b^d z7E%z5qH+bBP~6PnV-?Q7sgXONWhpIkDx(#zO}#8cPaNzop?Cd|JeNs%6d#dys_so zC?=&h(*U%cYEj#QfoQ@p5z%l!9WvVT@E5gXB3-Ag{u7+ zOuVV;>+5G$+CdL|^6s6m;bR3wT~m;fCV&SkczRyMWGZ?A1LU)oGe#~jwC3ts*0-^@ z+(0o{hswcb0=?Ckj`zlSE^QE9tmeEThIJ1DHEq%;Ai+kGOC0YQLz zmt3U6>aZz*am3H%Pk$osC;nd$)-!+KBzlE;B_>4Eo2jX)iqxU~taiXk(+9K^bqyd( zw*2bJ!0JU5Ge553lZ z^#t;q5QjthA}Z<;Ff}?5FB&@%&pC{L#M#>z2)d;nk09)bs-nEE32+9168rnveRHA@ zV0V+h#s%)~?oNJ=;)KGZ3}R_?Obo_CfL8YA-JpQtU6!93oc;CwP?-Q!>~Pq8v!SvF zD3(Vd=Y+8m<#Q=#Q0?#j4eGH{tn=Mpo=LW+uQaOvKHBv{@_KHfM_7`}paDS)7k9Xc ze$s}bVp$pJDje~LJAVq7|Nd{5jO(v1 zFALY9ds`x@UW=7x<)uxEP)f{z!8gOD954+RmGx$X6KK_+f5LNPE)aP9pp-NR2cJI_ z+{u>6wKI`OTc6xB;*DotboW+9=mPV?0m98kFiqjnN?Lf^aP!#nF zQczUPyz>Cvf}=b07fP#L(a=b(Pt|-q$Orzvx&}1?Dgu*|2cA>}uuPkW7|OOCNoW2L z$l#(2c>{mGnE%C&CkSq*9lT&&)+*{i6MyHfcva2L&JOA;6>_I3l#bhOcgVg@l?tWC z7@rbLg2p}>%1j9YC zXK(xjSsVj`kj35sJ{PkaW=u^@70*cv&dvw1;+-eDVO_mFll*JA@*F_8o4<~U%Tqo} zN($}m)s<3GRaERUyNXua>q?#ZTjRO$>G!v+D3BIQO2l5sc+uNeuMob`N{avp+B&49 z*!TF(<<{2LPtXOxmy?sj@oQ@D>eAW*sq`^?!0-v2pjX%_>E3vk9j}&2?Yr|kivw-n znh0X+7?LRfK_`=s%@14EFrVXu0m2@uQ#uRD(a}0HWm<`%N(lQpRGY?y#nGCx@EjF` zANKe59&c^Auhjv8(X+h;uujb04HCC#i-w{uOGeLWZ@7Yzah9m4D9M9A3kw1WC7`bb zS`jMkjkT#(nzd4o2K34CuHn(7gJoED^_Aa@w67tERU-hUq{cWBT6+=~FB;4{ZLeBlqUcDKTgy`2 zp`5{n9@qmzR62}Aw+ungA`>fSs<_7$K`|W0sPRx9l78V}(qR_Jm zLyNDvEm2d2+~3_?K>R?kiT7kn(Ii5eI^Swym((?m=5{}K?%c{+m)v9%gNY)<0u>9( z(}V;@NS63SL|6!b7!e#As$gr&FS|94hk$5DG(I~U^x_3ejsiCahg55Odjq5swPBt! zXO00C6hZEce|!XBMdvZ9tY{IJkU)%BGDY4l9Kb_L3<|EAVJR?uuKkVqG7}jg)(3zh z)BqB%K!53jA^KOZUI7`_Dq+91a%m z-IoXSroa>P{iUU%?#R~G);L@r1o4Qb>-gN^^c%NmO#dLj}hctNC3i&WM)rbjp(kyeR6Q3oDR$5 z^0zA<;)H~RKtt*gES0h6Z*DTyi?pDU2|By6P(|qiZhQ6_eWnG4KtdH16a-`-4`nVm>ZtI> zqFoqNbX_p`Jng6f#T~BM+%8l{24D$F-epRBOx?nY-;t6IrR`?1MMw%KcA@lKWq>0f z2#I*CS~$=39wQ0-G`9-6-OBfSX|Lo12)6*4D+ND;Ga3B(BHS#rR6l|CubaCN1Q;LU zQ2Y4-DuUI2ZFzle_d=tpCp=e^9)4xQo+396>ujAkcXu3aQ0c9GUoIVlN06+~&J~su z*k|+@;4^*J=c{XKu)xC>?7Vd^dhZEkfYP_uVB0R??)-d@V%3c4t4GRrr}ygeGob8 zCm=bPh6n-?GxVVz^;pqzUpu;D=$+PRZcsCe-58HPj3~aa5CAnCQ{;a(g+blCZww(2 z5h=Sv42rf2=qgRwp`bs(>ey*$6}dn(V`meBizEK0_y$X{Qj&v z+!s1nIy~qyOG!&(!%8m>9^uEPCZ!I58}P%mvMy|i2%9w$Lt@B)g8Hnz!1GE3_D|Uw z(3GKn4#nF9-KSfd`O=Vh?jC>tag;@Z5=7HaAn@a6>fFzx#Qr!~F*Y?d0wNrfegW9L zzd1WI^8_lvovF`J*a=PH;KCMpuJO&WQGX0a00YNP0|*7@g>K~a5tEZQL#3Jc^M^E1 zgGcG8A)~0TuBuuOJ({A26AHj|Zsnhosi8+18HoWUN&yswAH5U{cv^W%5JdtpVW&M_ zsNB7Jp>j6$vYA=>^Z!~H9FWDJI4WVaa=5~@$PS8a0!WgeEaQS>BMankcwoM0>3YLw z#)U1wG_bxecCat`;wE6vmo2J(<;o>RMf^`_Lj%@8G=BT-HzhT-Kjwo_jp1>9dK9&} zBvm}_q-s~MHbt;X2|G?*IRePgj!B~7)f^vj8*9o`kLQou-Pz%gmSzFS`|i30_87W! zx(WYU8QOXdvz@HAW3{Y@paW3R(3l%9PEO)Mp@!7CR=hZZR&jE0;KI4wB#y=Ij88I= zo%r`A`BDEXySTlh>JWWLn9+w0C*I^f`X=(6mL^%fJyyuN916bxt3duIZOZ$Ztd*+ z1h`g4l88N3?r9$PqX=#L*wxi#MrMRyj18D&4_f2p29RGg_V3n;c|}##Wx@D{JHo*y z_>PV^o|+dCY!j?#B0ME7GW>tbXS|C-{RS@}yIWhq1}Cv^ ziAo?OWAuZDQwAjKnW_BqAPe$f9Q_n)a4>fMNQ$k436G$K&|T?t-lzZW^bb6y)z{a@ zEJPD)E*DjTj|P|{(c$jcAus}bAt51reEgSy5}{0q3kiveQlGu?mcOhTYOh&uwzg$N z0DNMw+P5tAs#o!}@Yk@CDBU$|TWi*If3BcAoYxLErsVUH482>Jf zsQ}XIPFEs@eVhQF!t(0sC&(bLzWuf}7zK2XVFBz}Fp{Y|gQ+KA7BLvn$2KUpITwEk zx=%fz$Us|-MbZ%;1aN84H1gHHLRqXD-aShEA-{j~_Co^;{XbHl>r;)}7{A4AQg=HT z$yg-1y<1ixCp`i^ro?7|916dAW>Qf-!#B5d@km)%)n?kc86=8RɊ}z^^I%>c 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 delta 85213 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

    gQ9K^${Q^bIX}%?qp$BZ^Fb6`CdsZQiV; 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 diff --git a/docs/articles/developer_FAQ.html b/docs/articles/developer_FAQ.html index 65a036c0b..16cb56d6f 100644 --- a/docs/articles/developer_FAQ.html +++ b/docs/articles/developer_FAQ.html @@ -17,7 +17,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - + @@ -31,7 +31,7 @@ mizer - 2.5.4 + 2.5.4.9125 + +

    + + + +
    + + + + +
    +
    + + + +
    +

    Overview +

    +

    This vignette explains how to turn a mizer extension into a proper R +package. It is aimed at users who are already comfortable writing custom +rate functions or adding components with setComponent(), +and who now want to share their extension with others or use it across +multiple projects.

    +

    There are two kinds of extension package:

    +
      +
    • A metadata-only extension registers itself in +params@extensions for record-keeping, but does not change +how any mizer generic function behaves. mizerStarvation +is an example: it adds starvation mortality via the +other_mort pipeline, but it does not need to override any +user-facing mizer functions.

    • +
    • A dispatching extension additionally defines a +new object type so that mizer’s generic functions (such as +getBiomass() or plotBiomass()) can be made to +behave differently for models built with that extension. mizerShelf is an +example: it adds detritus and carrion components and overrides +getBiomass() to include their biomasses in the +result.

    • +
    +

    This vignette covers both kinds, working through concrete examples +from each package.

    +
    +
    +

    Why a package? +

    +

    A plain R script works fine for a single project. An R package +becomes worthwhile when you want:

    +
      +
    • +Reuse across projects: install once, +library() everywhere.
    • +
    • +Version tracking: params@extensions +records the version of each extension package used to build a model. If +a collaborator opens your saved MizerParams object in a +different session, mizer can warn them if the required package is +missing or outdated.
    • +
    • +Composability: when two extension packages are +loaded at the same time, mizer can arrange their contributions to +generic functions in the right order automatically (see Daisy-chaining with +NextMethod() below).
    • +
    • +Testing and documentation: a package gives you a +natural home for testthat tests and roxygen2 +documentation.
    • +
    +
    +
    +

    Metadata-only extensions: mizerStarvation +

    +

    mizerStarvation +adds starvation mortality — an extra per-capita mortality term that +kicks in when a fish’s energy balance is negative. It does this via the +other_mort slot: a named list of function names that +getMort() calls and sums at every time step. No mizer +generic function needs to be overridden.

    +
    +

    Registering in .onLoad +

    +

    Every extension package, even a metadata-only one, should announce +itself to mizer when it is loaded. Place a .onLoad function +in a file such as R/zzz.R:

    +
    +.onLoad <- function(libname, pkgname) {
    +  mizer::registerExtension(pkgname, requirement = "owner/myExtensionPackage")
    +}
    +

    registerExtension() adds the package name to the +session’s extension chain. The requirement string is a +pak installation spec that mizer uses if it needs to +install the package automatically. For packages on CRAN you can use a +minimum version string such as "1.2.0" instead; for +GitHub-only packages use the "owner/repo" form +(e.g. "sizespectrum/mizerStarvation"). The call is safe to +repeat: if the package is already registered (for example because the +user called devtools::load_all() twice), it returns +silently.

    +
    +
    +

    Recording the extension in params@extensions +

    +

    When your package creates or modifies a MizerParams +object it should copy the session’s registered extension chain into the +@extensions slot:

    +
    +setStarvation <- function(params, starv_coef = 10) {
    +    # ... set up the rate function, species parameters, etc. ...
    +    params@extensions <- mizer::getRegisteredExtensions()
    +    params
    +}
    +

    getRegisteredExtensions() returns the full chain that +.onLoad hooks have built up. Storing this in the object +serves two purposes:

    +
      +
    1. +Reproducibility record. When the object is saved +with saveParams() and later loaded with +readParams(), mizer reads @extensions and +warns if any required package is not installed or is too old.
    2. +
    3. +Class coercion. For dispatching extensions (see +below), readParams() uses @extensions to +restore the correct S4 class automatically.
    4. +
    +
    +
    +
    +

    Dispatching extensions: mizerShelf +

    +

    mizerShelf +adds two dynamical components — detritus and carrion — to a mizer model. +Beyond just computing them, it also needs to change what certain +user-facing functions return: for example, getBiomass() +should include the detritus and carrion biomasses alongside the species +biomasses.

    +

    This section explains how to achieve that without breaking the +standard mizer behaviour, and without preventing other extension +packages from also modifying the same function.

    +
    +

    The problem with simply overwriting a function +

    +

    Suppose you define a new getBiomass() function in your +package that adds your extra biomasses to the result. That works as long +as your package is the only one that modifies getBiomass(). +But what if a second extension package also wants to add its own extra +components?

    +

    If both packages replace getBiomass(), whichever one was +loaded last wins, and the other’s contribution is silently lost. There +is no way for the two packages to compose their changes.

    +
    +
    +

    How R dispatches to the right function +

    +

    R has a built-in mechanism for exactly this situation. Every object +has a class attribute — a character string (or a vector +of strings) that labels what kind of thing it is. When you call a +function like getBiomass(params), R looks at the class of +params and searches for a version of +getBiomass whose name ends in . followed by +that class label, such as getBiomass.mizerShelf. If it +finds one, it calls it. If not, it tries the next class in the vector, +and so on until it reaches the base class and calls the default +version.

    +

    This mechanism is called S3 dispatch, but you do not +need to know that term to use it. What matters practically is:

    +
      +
    • Give your params objects a distinctive class label +(e.g. "mizerShelf").
    • +
    • Define functions named +<genericname>.<classname> +(e.g. getBiomass.mizerShelf).
    • +
    • Inside those functions, call NextMethod() to pass +control to the next class in the chain before or after your own +modifications.
    • +
    +
    +
    +

    Daisy-chaining with NextMethod() +

    +

    NextMethod() is what makes multiple extension packages +compose gracefully. Suppose the class of params is +c("mizerFoo", "mizerShelf", "MizerParams"), meaning +params is simultaneously of type mizerFoo, +type mizerShelf, and the base type +MizerParams. Then calling getBiomass(params) +proceeds like this:

    +
      +
    1. R finds getBiomass.mizerFoo and calls it.
    2. +
    3. +getBiomass.mizerFoo calls +NextMethod().
    4. +
    5. R finds getBiomass.mizerShelf and calls it.
    6. +
    7. +getBiomass.mizerShelf calls +NextMethod().
    8. +
    9. R finds the standard mizer getBiomass.MizerParams and +calls it.
    10. +
    11. The standard result is returned to step 4, shelf biomasses are +added, the result is returned to step 2, and mizerFoo’s +biomasses are added on top.
    12. +
    +

    Each extension in the chain sees and extends the result of all the +extensions below it. The chain grows automatically as packages are +loaded, so the user does not need to coordinate anything manually.

    +

    For this to work, every method must call +NextMethod() so it does not accidentally +short-circuit the chain below it. The only exception is the base mizer +method at the bottom of the chain.

    +
    +
    +

    Defining marker classes +

    +

    To give your params objects a distinctive class label, you need to +define an S4 marker class — a formal class that extends +MizerParams but adds no new data. All extension-specific +data lives in other_params(params) or in component +parameters; the class is just a label.

    +

    Place these calls in a file such as +R/myextension-class.R:

    +
    +#' @export
    +setClass("mizerShelf", contains = "MizerParams")
    +
    +#' @export
    +setClass("mizerShelfSim", contains = "MizerSim")
    +

    The params class name must match the name you pass to +registerExtension(). The sim class name must be the params +class name with "Sim" appended. MizerSim +objects are coerced to the sim class automatically by +project() once you record the extension chain in +params@extensions (see below).

    +

    If your extension is designed to stack on top of another (say +mizerBase), inherit from that package’s class instead:

    +
    +setClass("mizerOuter", contains = "mizerBase")
    +setClass("mizerOuterSim", contains = "mizerBaseSim")
    +
    +
    +

    Registering in .onLoad +

    +

    The .onLoad hook for a dispatching extension is the same +as for a metadata-only one:

    +
    +.onLoad <- function(libname, pkgname) {
    +  mizer::registerExtension(pkgname, requirement = "owner/myExtensionPackage")
    +}
    +

    When registerExtension() is called, mizer prepends the +extension to the session’s chain, giving it the highest dispatch +priority. Because R always loads dependency packages before the package +that depends on them, the dependent package ends up outermost. For +example, if mizerOuter depends on +mizerShelf:

    +
      +
    1. R loads mizerShelf, its .onLoad fires → +chain: c(mizerShelf = "1.0.0") +
    2. +
    3. R loads mizerOuter, its .onLoad fires → +chain: c(mizerOuter = "0.3.0", mizerShelf = "1.0.0") +
    4. +
    +

    The class hierarchy +c("mizerOuter", "mizerShelf", "MizerParams") mirrors this +chain, so dispatch proceeds in the right order automatically.

    +
    +
    +

    Writing methods that call NextMethod() +

    +

    Here is getBiomass.mizerShelf from mizerShelf. It calls +NextMethod() first to get the standard mizer result, then +appends the detritus and carrion biomasses:

    +
    +#' @method getBiomass mizerShelf
    +#' @export
    +getBiomass.mizerShelf <- function(object, ...) {
    +    params <- object
    +    b <- NextMethod()                       # standard species biomasses
    +
    +    d_biomass <- sum(params@initial_n_pp *
    +                     params@dw_full * params@w_full)
    +    b <- c(b, Detritus = d_biomass)
    +
    +    other <- params@initial_n_other
    +    scalar_other <- Filter(function(x) is.numeric(x) && length(x) == 1, other)
    +    if (length(scalar_other) > 0) b <- c(b, unlist(scalar_other))
    +    b
    +}
    +

    Because plotBiomass() calls getBiomass() +internally, this single override makes biomass plots include detritus +and carrion without any further changes.

    +

    Always register S3 methods in your package’s NAMESPACE +file. The roxygen2 @method tag does this for you +automatically:

    +
    +#' @method getBiomass mizerShelf
    +#' @export
    +getBiomass.mizerShelf <- function(object, ...) { ... }
    +
    +
    +

    Creating objects: the two commands +

    +

    A constructor function that returns a mizerShelf object +must end with these two lines:

    +
    +params@extensions <- mizer::getRegisteredExtensions()
    +params <- mizer::coerceToExtensionClass(params)
    +

    Here is how newDetritusCarrionParams() uses them in +mizerShelf:

    +
    +newDetritusCarrionParams <- function(species_params, ...) {
    +    params <- newMultispeciesParams(species_params, ...,
    +                                    resource_dynamics = "detritus_dynamics")
    +    # ... set up rate functions, components, colours ...
    +
    +    params@extensions <- mizer::getRegisteredExtensions()
    +    params <- mizer::coerceToExtensionClass(params)
    +}
    +
    +

    What params@extensions <- getRegisteredExtensions() +does +

    +

    getRegisteredExtensions() returns the current session’s +extension chain — everything that has been registered via +.onLoad hooks since R started. Storing this in the params +object is like stamping the object with a bill of materials: it records +exactly which extension packages were active when the object was +created.

    +

    mizer uses this record in two ways:

    +
      +
    • When the object is loaded from disk with readParams(), +mizer checks that all the recorded extensions are installed in the +current session and warns the user if any are missing or outdated.
    • +
    • +readParams() also calls +coerceToExtensionClass() automatically, using +@extensions to decide which S4 class to restore the object +to.
    • +
    +

    Note that @extensions records the full +chain that was active at creation time, not just the outermost +extension. If mizerShelf was the only registered extension, +@extensions will be c(mizerShelf = "1.0.0"). +If a further outer extension was also loaded, both appear in the chain. +An object is always coerced to the class of the outermost extension in +its own chain, so an object created with only mizerShelf +registered will remain a mizerShelf object even if +mizerOuter is also loaded in the current session.

    +
    +
    +

    What coerceToExtensionClass(params) does +

    +

    At this point params is still a plain +MizerParams object as far as R is concerned. If you called +getBiomass(params) now, R would call the standard mizer +getBiomass.MizerParams rather than +getBiomass.mizerShelf.

    +

    coerceToExtensionClass() reads +params@extensions, finds the outermost extension that +provides a dispatch class, and promotes the object to that S4 class. +After the call, params is of class +c("mizerShelf", "MizerParams"), and R will dispatch to +getBiomass.mizerShelf automatically.

    +

    This step cannot be replaced with a simple +class(params) <- "mizerShelf": because +MizerParams is a formal S4 class, R enforces the class +hierarchy strictly and the direct assignment would fail. +coerceToExtensionClass() uses the appropriate S4 machinery +internally.

    +
    +
    +
    +

    What about MizerSim objects? +

    +

    You do not need to call coerceToExtensionClass() +yourself for MizerSim objects. When project() +creates its output it calls MizerSim(), which in turn calls +coerceToExtensionClass() on the new sim object. Because the +params slot inside the sim already has +@extensions set, mizer knows to promote the sim to +mizerShelfSim automatically.

    +

    This means that after:

    +
    +sim <- project(NWMed_params, t_max = 3)
    +

    sim is already of class mizerShelfSim, and +any method you have defined for that class — such as +getBiomass.mizerShelfSim — will be dispatched +automatically.

    +
    +
    +
    +

    Checklist for package authors +

    +

    When building a dispatching extension package, verify the +following:

    +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    +

    For metadata-only packages, only the second and third items apply +(and coerceToExtensionClass() is not needed — just record +params@extensions <- getRegisteredExtensions()).

    +
    +
    +

    See also +

    + +
    +
    +
    + + + + +
    + + + + + + + diff --git a/docs/articles/extensions.html b/docs/articles/extensions.html new file mode 100644 index 000000000..064d01a12 --- /dev/null +++ b/docs/articles/extensions.html @@ -0,0 +1,725 @@ + + + + + + + +Extending mizer • mizer + + + + + + + + + + + + + Skip to contents + + +
    + + + + +
    +
    + + + +
    +

    Overview +

    +

    This vignette is for users who want to change how mizer works without +editing the package source code. There are five main extension +routes:

    +
      +
    1. Use setExtEncounter() or setExtMort() when +you want to add simple external food or mortality sources that do not +need their own dynamics.
    2. +
    3. Use setRateFunction() when you want to replace one of +the standard rate calculations such as encounter, growth, mortality, or +recruitment.
    4. +
    5. Use setComponent() when you want to add a new ecosystem +component such as detritus, carrion, or an extra resource pool.
    6. +
    7. Use S3 subclassing of MizerParams and +MizerSim when you want to extend generic mizer methods such +as plotting or summaries for a custom model type.
    8. +
    9. Use customFunction() only as a last resort when neither +of the first four mechanisms is sufficient.
    10. +
    +

    The safest workflow is to start with the smallest change that can +express your idea. In particular, if you only need to change one rate, +prefer setRateFunction() over replacing +mizerRates() or patching internal mizer functions.

    +
    +
    +

    Choosing an extension mechanism +

    +

    The following table is a quick guide.

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GoalUseNotes
    Add a non-dynamical external food or mortality +source +setExtEncounter() or +setExtMort() +Simplest route when the extra process does not need its +own state variable.
    Change one built-in rate calculationsetRateFunction()Best option for time-dependent or alternative rate +formulations.
    Add a new state variable or ecosystem poolsetComponent()Lets you add component dynamics and optional encounter +or mortality contributions.
    Extend plots or summaries for a custom model typeS3 subclass + new methodsAdvanced route for custom behaviour layered on top of +mizer generics.
    Store parameters needed by your custom code +other_params() or +component_params +Use other_params() for model-wide +parameters and component_params for one component.
    Replace arbitrary internal mizer codecustomFunction()Experimental and fragile. Use only if the standard +mechanisms cannot express your change.
    +
    +

    +setExtEncounter() and setExtMort() +

    +

    These are the lightest-weight extension mechanisms. They are useful +when you want to represent ecosystem processes that affect fish but do +not need a separate state variable or their own dynamics.

    +

    Typical uses are:

    +
      +
    • extra food sources that are not modelled explicitly, via +setExtEncounter(),
    • +
    • mortality from predators that are outside the model, via +setExtMort().
    • +
    +

    Both quantities are species x size arrays:

    +
      +
    • +ext_encounter has units of mass per year and is added +directly to getEncounter(),
    • +
    • +ext_mort has units of 1/year and +contributes directly to mortality.
    • +
    +

    If you only need a fixed background contribution, this is usually a +better choice than setComponent(). See Worked +example: non-dynamical external encounter and mortality.

    +
    +
    +

    +setRateFunction() +

    +

    Use setRateFunction() when your model still fits mizer’s +standard flow of rate calculations, but one step should be done +differently. Examples include:

    +
      +
    • making encounter or mortality explicitly time-dependent,
    • +
    • using an alternative growth or reproduction formulation,
    • +
    • swapping in a different recruitment density-dependence,
    • +
    • replacing the whole mizerRates() pipeline with a custom +version.
    • +
    +

    Your function is registered by name:

    +
    +params <- setRateFunction(params, "Mort", "myMort")
    +

    The function must be available by name in the global environment or +in an installed package. mizer stores the function name, not the +function object. See Worked example: a +custom encounter function.

    +
    +
    +

    +setComponent() +

    +

    Use setComponent() when your model needs an additional +dynamical quantity that is not already represented in +MizerParams, for example detritus, carrion, an oxygen pool, +or a second resource spectrum.

    +

    A component can contribute to the model in up to three ways:

    +
      +
    • +dynamics_fun updates the component itself during +projection,
    • +
    • +encounter_fun adds to getEncounter(),
    • +
    • +mort_fun adds to getMort().
    • +
    +

    The component state can be any R object. For example it can be a +scalar, a vector on the resource size grid, or a list with several +fields. See Worked example: +adding a detritus-like component.

    +
    +
    +

    S4 subclassing with S3 methods for MizerParams and +MizerSim +

    +

    This is the most flexible extension route that still works with +mizer’s public generic functions. Although MizerParams and +MizerSim are S4 classes, mizer registers many user-facing +methods as S3 methods. That means extension package authors can define a +formal S4 subclass of these objects and then provide S3 methods for that +subclass such as:

    +
      +
    • +plotBiomass.MyMizerSim(),
    • +
    • +summary.MyMizerParams(),
    • +
    • +getBiomass.MyMizerSim().
    • +
    +

    This is especially useful if you have added extra components or +metadata and want mizer’s summaries or plots to include them. Because +multiple extension packages may all want to modify the same function, +each method should call NextMethod() so that the +contributions compose correctly.

    +

    See vignette("extension-packages", package = "mizer") +for a step-by-step guide.

    +
    +
    +

    +customFunction() +

    +

    Use customFunction() only if you have confirmed that +your goal cannot be expressed with setRateFunction(), +setComponent(), resource_dynamics()<-, or +setReproduction(). It replaces an internal mizer function +in the package namespace and can easily break the package if your +replacement is not fully compatible.

    +
    +
    +
    +

    Worked example: non-dynamical external encounter and mortality +

    +

    If the extra ecological process does not need its own state variable, +you can often model it with external encounter or external +mortality.

    +

    For example, suppose each species has a fixed extra food source that +scales allometrically with body size:

    +
    +params_ext <- NS_params
    +extra_food <- outer(rep(0.1, nrow(species_params(params_ext))),
    +                    w(params_ext)^(3/4))
    +ext_encounter(params_ext) <- ext_encounter(params_ext) + extra_food
    +

    This adds extra_food directly to the total encounter +rate:

    +
    +enc_base <- getEncounter(NS_params)
    +enc_ext <- getEncounter(params_ext)
    +range(enc_ext - enc_base, na.rm = TRUE)
    +#> [1] 5.623413e-04 2.820537e+02
    +

    Similarly, you can add a fixed external mortality term:

    +
    +params_mort <- NS_params
    +extra_mort <- outer(rep(0.05, nrow(species_params(params_mort))),
    +                    w(params_mort)^(-1/4))
    +ext_mort(params_mort) <- ext_mort(params_mort) + extra_mort
    +

    This route is appropriate when:

    +
      +
    • the extra process is not depleted or replenished dynamically,
    • +
    • fish are affected by it but do not feed back on it,
    • +
    • you want a transparent species x size term rather than a new +component.
    • +
    +
    +
    +

    Worked example: a custom encounter function +

    +

    The next step up in complexity is to modify one rate while delegating +most of the work back to the built-in mizer function. The example below +adds a sinusoidal seasonal multiplier to the standard encounter +rate.

    +
    +params <- NS_params
    +other_params(params) <- list(
    +    season_amplitude = 0.2,
    +    season_period = 1
    +)
    +
    +seasonalEncounter <- function(params, n, n_pp, n_other, t, ...) {
    +    p <- other_params(params)
    +    multiplier <- 1 + p$season_amplitude * sin(2 * pi * t / p$season_period)
    +    multiplier * mizerEncounter(params, n = n, n_pp = n_pp, n_other = n_other,
    +                                t = t, ...)
    +}
    +

    Register the function and inspect the result:

    +
    +params2 <- setRateFunction(params, "Encounter", "seasonalEncounter")
    +
    +enc0 <- getEncounter(params2, t = 0)
    +enc_quarter <- getEncounter(params2, t = 0.25)
    +range(enc_quarter / enc0, na.rm = TRUE)
    +#> [1] 1.2 1.2
    +
    +sim <- project(params2, t_max = 2, t_save = 0.1)
    +plotBiomass(sim)
    +

    +

    This pattern is often the easiest way to extend mizer safely:

    +
      +
    • fetch custom parameters from other_params(params),
    • +
    • compute a modifier,
    • +
    • call the standard mizer rate function,
    • +
    • return a plain numeric matrix of the same shape.
    • +
    +

    See How custom rate +functions are called for more info.

    +
    +

    Testing a custom rate function +

    +

    When you develop an extension package, add tests that compare your +custom rate function to the built-in behaviour in a simple case. For the +seasonal example a good first test would check:

    +
      +
    • at t = 0, the result equals +mizerEncounter(),
    • +
    • at t = 0.25, the result is scaled by +1 + season_amplitude,
    • +
    • the returned object has the same dimensions and dimnames as +initialN(params).
    • +
    +
    +
    +
    +

    Worked example: adding a detritus-like component +

    +

    Now suppose you want to add a component that is consumed by fish and +slowly relaxes back to a carrying capacity. We will store the component +on the full resource size grid so that it can be used like an extra prey +spectrum.

    +
    +detritusEncounter <- function(params, n, n_pp, n_other, component, ...) {
    +    params2 <- params
    +    params2@other_encounter[[component]] <- NULL
    +    mizerEncounter(params2, n = n, n_pp = n_other[[component]],
    +                   n_other = n_other, ...)
    +}
    +
    +detritusDynamics <- function(params, n_other, rates, dt, component, ...) {
    +    detritus <- n_other[[component]]
    +    p <- params@other_params[[component]]
    +    interaction <- params@species_params$interaction_resource
    +    mort <- as.vector(interaction %*% rates$pred_rate)
    +    target <- p$rate * p$capacity / (p$rate + mort)
    +    target - (target - detritus) * exp(-(p$rate + mort) * dt)
    +}
    +
    +detritus_params <- list(
    +    capacity = initialNResource(params),
    +    rate = params@rr_pp
    +)
    +
    +params3 <- setComponent(
    +    params,
    +    component = "Detritus",
    +    initial_value = initialNResource(params) / 2,
    +    dynamics_fun = "detritusDynamics",
    +    encounter_fun = "detritusEncounter",
    +    component_params = detritus_params,
    +    colour = "orange"
    +)
    +

    Once the component has been added:

    +
      +
    • its initial state is available via +initialNOther(params3)$detritus,
    • +
    • its settings can be inspected with +getComponent(params3, "detritus"),
    • +
    • its contribution is included automatically in +getEncounter() and getDiet().
    • +
    +

    For example:

    +
    +plotDiet(params3, species = "Cod")
    +

    +

    If you also want the component to contribute to mortality, add a +mort_fun when calling setComponent().

    +
    +
    +

    S4 subclassing with S3 method dispatch +

    +

    When an extension needs to change how generic mizer functions behave +— for example making getBiomass() include extra components, +or making plotBiomass() show additional panels — the right +approach is to define a marker S4 subclass and register S3 methods for +that class. This makes multiple extension packages composable: each +package adds its own step and passes control to the next via +NextMethod().

    +

    For a step-by-step guide to writing this kind of extension package, +including worked examples from mizerStarvation +and mizerShelf, +see vignette("extension-packages", package = "mizer").

    +
    +
    +

    How custom rate functions are called +

    +

    Each overridable rate has its own expected function signature and +return shape. The most important point is that custom rate functions +should return plain numeric objects, not ArraySpeciesBySize +or ArraySpeciesByTime objects. The get*() +wrappers add those classes afterwards where appropriate.

    +

    The table below summarises the required inputs and outputs.

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RateSignatureReturn value
    Encounterfunction(params, n, n_pp, n_other, t, …)numeric matrix, species x size
    FeedingLevelfunction(params, n, n_pp, n_other, t, encounter, +…)numeric matrix, species x size
    EReproAndGrowthfunction(params, n, n_pp, n_other, t, encounter, +feeding_level, …)numeric matrix, species x size
    EReprofunction(params, n, n_pp, n_other, t, e, …)numeric matrix, species x size
    EGrowthfunction(params, n, n_pp, n_other, t, e, e_repro, +…)numeric matrix, species x size
    PredRatefunction(params, n, n_pp, n_other, t, feeding_level, +…)numeric matrix, species x full size grid
    PredMortfunction(params, n, n_pp, n_other, t, pred_rate, +…)numeric matrix, species x size
    FMortfunction(params, n, n_pp, n_other, t, effort, e_growth, +pred_mort, …)numeric matrix, species x size
    Mortfunction(params, n, n_pp, n_other, t, f_mort, +pred_mort, …)numeric matrix, species x size
    RDIfunction(params, n, n_pp, n_other, t, e_growth, mort, +e_repro, …)numeric vector, one value per species
    RDDfunction(rdi, species_params, params, t, …)numeric vector, one value per species
    ResourceMortfunction(params, n, n_pp, n_other, t, pred_rate, +…)numeric vector, one value per full size bin
    Ratesfunction(params, n, n_pp, n_other, t, effort, +rates_fns, …)named list with all standard rate components
    +
    +

    Common arguments +

    +

    Most custom rate functions use the same core arguments:

    +
      +
    • +params: the MizerParams object,
    • +
    • +n: species abundance by species and size,
    • +
    • +n_pp: the resource abundance on the full size +grid,
    • +
    • +n_other: a named list of additional component +states,
    • +
    • +t: the current simulation time.
    • +
    +

    Some rates also receive prerequisite rates that were already +calculated earlier in the pipeline, for example encounter, +feeding_level, or pred_mort.

    +
    +
    +

    Dimensions and dimnames +

    +

    Most size-resolved rates should return a matrix with the same +dimensions as initialN(params), so a species x size matrix +with the same dimnames. The two important exceptions are:

    +
      +
    • +PredRate, which uses the full prey size grid and +therefore returns species x w_full,
    • +
    • +ResourceMort, which returns one value per +w_full bin rather than one value per species.
    • +
    +

    At registration time setRateFunction() calls your +function with test inputs and checks that the returned object has the +expected dimensions. This catches many mistakes immediately.

    +

    Before moving to dynamical components, it is worth seeing the even +simpler case of a non-dynamical extension.

    +
    +
    +
    +

    Practical advice for extension authors +

    +
    +

    Start from a built-in function +

    +

    If possible, copy the relevant built-in mizer function, make one +change, and register the modified version. This makes it much easier to +stay compatible with the rest of the rate pipeline.

    +
    +
    +

    Keep model-wide and component-specific parameters separate +

    +

    Use:

    +
      +
    • +other_params(params) for parameters used by custom rate +functions across the whole model,
    • +
    • +component_params in setComponent() for +parameters belonging to one component only.
    • +
    +

    This keeps the structure of params@other_params readable +and makes debugging much easier.

    +
    +
    +

    Return plain numeric objects +

    +

    If you replace a built-in rate function, return a plain matrix, +vector, or list with the expected dimensions. Do not return +ArraySpeciesBySize objects from custom rate functions that +are called through setRateFunction().

    +
    +
    +

    Preserve dimnames where possible +

    +

    Many bugs in extension code come from returning the right numeric +values with the wrong shape. A good habit is to build outputs from +existing mizer arrays so that dimensions and dimnames are inherited +automatically.

    +
    +
    +

    Test registration and use +

    +

    Test both of these:

    +
      +
    1. that setRateFunction() or setComponent() +succeeds,
    2. +
    3. that the downstream function you care about, such as +getEncounter(), getDiet(), or +project(), uses your extension as intended.
    4. +
    +
    +
    +
    +

    When to move beyond a local script +

    +

    If your extension becomes useful across several projects, consider +turning it into a small package. That gives you:

    +
      +
    • a stable namespace so mizer can find your functions by name,
    • +
    • a natural place for unit tests and documentation,
    • +
    • versioning that can be recorded in +params@extensions.
    • +
    +

    For larger changes you may also want to discuss your design on the mizer issue +tracker before committing to an interface.

    +
    +
    +

    See also +

    + +
    +
    +
    + + + + +
    + + + + + + + diff --git a/docs/articles/extensions_files/figure-html/detritus-diet-1.png b/docs/articles/extensions_files/figure-html/detritus-diet-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ba3ba7ba752e98d66a2d1c3bf8c6e12d69d4fe07 GIT binary patch literal 107309 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 z zx%294^iRL=qW=2a;l7?*6}vqz#E$yYMdB3L77jcY4!*bWC&Iaj49d+fE9(Z!$}loT zK{UcJsT8Fv#KLWie@=AiXxfPgH6Kc2+jG&B0jZVSDxdUnJAMD0 z=JJA-i9C|P)4Fx;H3c=h4>`R8&v|#|=KVD~0Yh>d&fdQiF@8ewn4^}{U4!)Y@ zKBumzHVCD=Fmjq|DEA>}-8RI|0Axxv;#ZE?1I$DH(%BVFQvpt@zk#qNQWRXkgmKkm z7mm^;{J<5kP)S!elIM#k8QE3E_sENaM=Av3CNO5_rlgd&iufOq)jeAmtG$amdd z`B#2vDHf`x7F!)_dHUn_5lh1Tga)BEB!3S^qD;{*s|DQ4)9jbJ&*#C#Ur1X<#|MhGnQBLOg#Q5~%W0f1U z26FHw>jQ=5>-@Ext24u)Y;O^%4=-2-06zgRTKCqVwsBTe%KtJjkxdR4eg#+2jT=i zC)?ROf9D7lUXlVEYrMQKS_$K)5VsaX&Pd0tmkMkiStWs5*U1k=DCWu%q=XPB?k7~3 zD#m72+CHtX*6UU4FEmO2{b0xdZxG>w-()Jq*8La3RsF&b2;69BXa>K24U}UIL<~de z=;$^+>M}3b*9|`uG{Op!Byd+PP}4pmR7-*cYtZ7`x#fkyRp)Z8>!@$Dc)wdqXd%CX z2dIhzlrJdvcS|dOJFN-4_CpbXxB|7p;XbBl_}mA~9RK=sU^5AQ-EVCPEu~j`&@-=p zfhI&c9-3_B`#-6hkPnEOheqyuvkiz3EhLjDf0!$60wckZExErsL_!!=0TI3=70jFd z{i9aFOXMzKGl_{xx@8Lg5`aEB6yjC7bi4$9vvqnmr~S_Vp!~rx-C~9ow)($*vY);6 zXe)YYxbw?fsP|}dDh%Ec4Ml!aFR99QZMfjCwLRRSf1b|#_xbD2!f1?TuaKG5Sg5+a zPn;t*m-tf&P>xszEdPCGyCwaO;%jj_RJmz4p^G-Sc|(%sgldDCGikN4wg8Pc?3({Ezz+_l$H0-M@RO9d<+Q+$JDHP!t&!oBbaj z=YQDdk_`4-yH7Ox_%?3Npy2$8G;@I4tOxdMpF^sySccdkMG*pxq8iGF|La2huWbik z-rVQ^b>IEx8X|W!A`~tnRfQHlD2Dqkx?Pd)&^Awh8`>Bh9X+t>3@*Te%P&>IFSo{) z@IQA=`2)xOwu`8_<1T@{(GqZ(27dz-%6htv1ct=QJbFZw`{;Fyy%geif3ZU({3Tkoto&7f93;HKj%wJ4*owSr=i`Q!L7D7h0kWYV) zxSDb2cJh1J$pX-_s#P-DWP>;}z*Hbe613u7Jw)lJ-It=vr#8zctcBKvMMMS%2K+NJ zGMZ-FgEnRBpONqUC&~==2(IPlpirEerP9Lbp$27Nv>EWRDqtZ(#J~)ag!NN8KeJ!f zd`OL&hnAhOVjJ)z_iJA+(kP*>*4(*ss$81=(t`1yeUlw$%1ez{!~?Xq1R&)X-E&yC z&@EMFr$oQz+Ll;j}#?7{k&DdZu7kR;u*{Q8FJ z{6B$UFhKQFW~o85uw6Row1LmTh=sNFdxo3 z)k)d(!aRS!j`f4=h6ZXwnCm>k?ZpUj5EOO-F`|2N8*4pV*d=eT0UhM+dtPu*vLy_^=>|=&YIabL2s)Y#ftG}-6DVXhtN=* z8pUl1ng#_oDP%~HoNaA=9ZJqH&eA&cND8hl7*-YorW-De4^#QkP{=&J%c8#e`gHWZ z$Hs_46V5g)C}SfLG!mQ#kZX*bXqRZ87Wq+yLLF;5S#5a?86VUF_V9^2SDn#&Hibl$ zeuct{sd+lK2+a3;2>9V#pu81?u?I*2bzS!ze($RrH03wIHYG{eg+oV2X8lOT;xMmorS^73AKmq@IOJEi!(DbkRTx`g_@=&1`38kdwP1_pQir$%yH}6(J72~ zyFWwwHGFJc-Ai?My1)^#5WoU<-J6hqQa57@X*cRxuT$QJ(~0BY`S#+u@A~CpgERRE z9o6wK2B*|)8A^b*3sKO-sBv6?bgbDRR_l81ck8KIyY4sg@jIOiXT-?8O5uBI|A{?s zeysJ34`zP}yPU&v!a$tKcL3)qFuuiz{r=OBhb}IB$cA-T>MB^D^Zxk|0To;u>DrCB zug<9+@=-@a^Q6$G*!LvU9Uv*QVTh8^qnW#>Pio&57UHdsm3714iobb>YD+fHh-f|k zvwgh!$nP2QR)LJD=W~frl_^VYm6n!Pdh|Wb$QA#4@B_4J4BgOL5W)}{<3a2=(prlM zu95012pm;@Z0LI%?4wylxa3Kbg)0T<9wNKJ!6 zYKV-gR+TPEZNnZoQeKg5p|^o;!7ZCf-r!DSF#lor&2?M4^>k+2v18^>&6BZG{bSHq z#6*x?{T|$in*aH${PD*ZaTf2s^FC6W1LzOc28yqYpRsB?A6?E{X*DY zhZ}JD+<(5e6BX zLXURo@0_ zkYwbRYJ8;i&C+akp`y)VaQmo(?QdS8T+x@pcM-J%(~K4X2b2PHTnJ|lT~y|6CKdTp z`o6!G-TxenRd^m)rNKoSZ*bv6&9B2uxyseNYAzCl?c1Mj@ylcP=ox9%cY z2qaHG=4k{1Axnl6XmV=mXW(>73iZZREm4-zH7;CNQ5uqyWb*^a&Kdd_&tMk+C zCti^=J@!e+sg~cItxY2fh~= zDCD$7?z>&fFE;;{*|Lz8gPc6mUi-=HD6R#2L9FTA!os!8Np(EPc(10}qidAvMZ9|T zD(%uAm$j4Y_EqdopZ1DA%fL(; zx~p1$lYkuUp?zWAhh>~DJkJ#Kh8CKB_IK_r_YO`^N41_El%f2EoW6gv9)tKfIjJKG zA=dr(ZZ}e{pxOYg5Ll^@ja;af0be@8FzjhI>S)5ohi|hz+JMjdVY2)w!5shy2LN%4 zdVhRQ{%c71Nc`8ENp-zl2n6Vqb-H{cBnKoz%pC#lY|r}$OcFe<6car09OPJ6jgZO_ zu&I~NlMZgk!Es?YjtI^qGjdCILSNXJ?Yz%r>=sQhVyd4{zaHHAl!{Mt2CUG-!{xjX z<1RSYVu1Zd^(JzKL5^-5M)#_ACh)?=a`#;m1X9*&^%a9@vE_@(XGC zo6!rgSw5OZa;HhxvDEm4mBmIw3bDdOZJY~x3u)51wfQ7u{w62cBzp|!yHN35=F~6( zSX`^l-nddEoqEXmT^pNMzT`Oz`#_zAB-Bj@Py$<6 zTC#hJROkMxt?eWf!AG)uu%V*3^Mdu@1CPs^TAJrtfjdM7`^}oMMNpN6d@zx`POf_N z2fk>Ti&J>`eMQnMa4Q^*re5G$^Pt(fCef^f_h5J?Fi8@hct(5Pu=gx+j8!R{jvQX7 z$+oq=ym6C8lZ5%%Sg0bf*|B`t9VWHUD&H(p0UY@!2FZ)UTvuwm+N#qZXUaQ_=es#CkT+HHE zv3Z+KnmDI70pW0zOO|Kx#TEr(y>#3_F&Ebrf}9_R*O{}W5?JNKW#j!>&tb^XsiQb{ zmAFJi_{xC&xN%s!NyR*3v4*ObwPPB}dxVV=Jv&}P`6EU*EMLVxe1tuRgb-wN146B| z|07k@<95qV2$vC5@$M^GVF&@J`Nuozg9%bMN6v^AJGiYMy`svzkPqi!?zfsNMoTmwIf1@d--PnzuC!mTkY8pE9 zG-SrK|N3^SCf22)Rcyjj02RE&8BmOnkP}ntJQ^D8TCK|d&OLS}@R?bj)MVkY;a0?4O zAB~M8^hHT;jY|#g99*)qGNbK*i-8nIr*u-Y+2aawsz_qTkDI}p1dqYmQ8p|xc)SG<3Lp;^$;Go`ZJwI(t67%ApoSfVN zJ=7u+n;<4ej~RHCSbQifftQsDU zb$RpQw}bM&Esv=g(z}nIx(|<5t7C1v2-14c?vXl$nKyxw)&xirMwa2PUB!xbERUSB)U&sM~g zH&&*Cch^I2WF`1xhYGQ@8Wn57wqop=@kXX!;~xjL>AV)df{>gVDxLT2 zd1=|N6e!tYy>_pS6gf=U)GmOVT|06Sf*5{h=6{)hSPfmni_jC$j?gDih12qweQraT zqTZX0_=dkeX+Aso{ee+#*;8VNQT)%oY7>mXAFp#@ff|pRnwtCR==C%>VF3_(Yn$7Ahq>p8}gqKh!^X78V2wvli z!OO8HqA!A5#nAn9HKM0p{eFR4VXyM@2mQ_X4=7lRv!2*Z2SC~{b8&$W2Z2R`M`JgB zYOm;8%V#x!NgU&&@<E0EHD7aU!R&JzDHNK<0 zzeoH{McE2v{RNZ~Gf&60uV8nYrB)0-#2Rqhx`c<2oez+tdulUu@LFqELt`V;v*iN; zmcOK?=_uNMdZe-?Qbzqv1p&EtZ=O{VFqh*foKmo}EeheObSsm3O>}Xg-4>&rs^(#N{V@)zc&}Lj169(z zl%70a+gMML?zKE$TO<_R-^_G8)gee!gA;W^m+py@;^z4j6%4L@JVRALFrS4q-_82bNgTKuEYd ztoe($XiJWmILv{!p$%twj%)rWIg@{YUO8wgn*&T<6;~w6}Kl zE}|u5Fyc6FzqO)Ci7Dc&d&m)Y?~$(H&`*I{Y#=wh@sNve9Ru<_4n+9(&<*q23FUZBX!5 zIIpT8^!v)@COD}N?AKqBzbl+RyB(49HU9Wbykf_V+UdX#krdlU7S$?&%tFO| z1h!RPlZVwIaZ#}?Q?lvmqY4(OG~=G@bZd@o1a|CspR#>D=n^H`(*80h9WDAL7IRBn z;}~^LcEmF`nq}B80LIXevi#%3*~Y2eMzqFtm=^lxCYt@9b_pr-^b^F_WGjY+bKI*I zxMgItZnvKL%8L8bf|8U@ED{p}9##cSoiUYmng)C@zV0p?JGLHTz-8FOF{T?=b!ExY zBlAn?wLpCmzGL;=fd23X@c}AHyGO-unoCt9cy+|rB_T;bxh|Kux!=gA+kO=^*D01S z_W5o9DK#xOr3cB2aEmuLz|Ikgjdc!7j;~Jt`0D+|tO0FrzVwjhUA9jSE>@5g-86_@ z-V8~J>_Uo^N4Vy38rFy>NzCoB_qf=wwZ*87^BFTjZ2#W0^Xmi`JWM#v5Z=M*N571^ z`iNu=`xKOQ7vx{qFDGc;B@Sj9k)Y`pmu8VCy|RD!ewY;Z?47-$R?&VNL3LQ*{RXm zOM2VIm4#@ohTDb$Ry(j7Wv($hmiHDsKLIk?d=902pdg7#Uo6nN;_VPr?PF#D%0)vvd1qY};7RNG;Q%N%O zJI>`n2?h0&ad+;!CKusmLUjVdnjdzX?wYwj%4iPAM4zZ0#f9fjBT^tF6>l=&GV4!^ z2o1#orf43(A~Y0&8EERes7L5}7y*nf4wPrz;xo=rb?)Cr7_;r54?y*lWyLAxIjon| zE<%MK3f&<{G6rYP?`1B(cEhth3Z!Q=iP!Q4n+=f167v)v?GKrRiA{8*s|6w~uEkhf z3$U;wt(e7RURw$lCHOG1$=oi8PDdhCw;3MwNm2$=(jN}qM1N7canY31!V zbPqApQF)K(xoz?n;~p!1nK#n3MWt00bLvzR;+Zs*;ge`Am(>dOSrvq(6lb*7EJ3+& zT~b<_SM)E8C%kqI!OFK=&&2^Nnm_P#IQ#Wu37PtcOrUx>W8VBdq6@6upOr!Oy0+BS zb?Iz=HD#U>uJ7-CBZl?V1r5 zRzZ7YcBQPgmZGmO#7_T$KV)Jg*3tYgbq7&GJ*rkW88{%B6@8&1H6hn(X?U&Zdar&) zvk$Y5L32k5VLbJy=Q^$Z*yMbXTU)wEF=j(Q2j@Q4tNWA$l@hc>AC8`0Q9UDHKk!^} z#y;`|s@6iVBPx^yZ%zod2HdM(y*pbd;X};977_m#F*N6mS3j0WHobncW9)BCtGF`? z77e{QJT9U7(f`tKg%f+Burk4>*#=0&2ZyIF`IS!>kE%mRR#przN;r)v>Qc6suH@Ix zr;0rOGkGige)xZ zY*?K)qwtJ)tVS zOBvbw9nV5Z$Nv~(yZVhQ+c#&D%@-)&yd!j5^;bo0|Ac@cCzn8q?4vutK?6B`2Q(n1 zc2kp)8SkF!ExqFl&UmNrXzFv*?Hl+0Y%Gvs{<8Hi#G)vqPRqA-HqX7O##g5_Gk@15 zr>K~#m=?dqFfy;u{z5h_03n-R=oS-$=|6`~Jcx8$omqx+^tWB)UkuDJA4Q#8JUnB3 zV^&0RK-NS#^i4I-G{xJZNA&wI=hb?>U#2usuFK?dWOVm=&#@~0RxqGY5wPl*L2&8S zuWv1^tU7>giL2Uz2!(~xgJSx^(Vq^A7Jtwxk?Ypl_TjqE0iTHA4IWc=vrSZhD`+r? z(8ef}>}XWJ?)SoCDC?6b$Qo={f3i+7EqvR!M0A^m<%>x3sMKC0C5fdhF=kz%wY~ZT z_iAux;1obU7E>ef6zH|)x$ULl-!}n6Anc#?46AOQvH6G_ak`^xy!L^ zBhOv^+HG!mHZojqoO*G2+6;Z_o=~;=_vQoIm(T8T1nU&xuW zZ|4B>ybmUy!DQ9q`{m9qE(?Gghk$bQk>ANs6Hy_U(4wIL6{1HXx5p``X8y~Q=4TMf z6NO@@CMWFyk~i92{2&O3Z_V$^yvnMoL9ni!+75Qzy)kuj2qcM(Zts5jDaWH5T`v5v zT&T}}Y<#}N%?uq!#QQ+ez48ZENx+nUOk;uK<9i~>Ss^M=|j zc$wp_#WvzaX`q?r9dooW-1UJ4Is5q5fXAO(Mf4vUZobChyo!bOcbsfQKQfwJG{WS!eocM*ki=GhWYAusQMZT@cI`1iz$70Ip>vJ?}N6)W;s zBY#$9D^5t%=7}v)jBiLEF;=Us5>~)g8{(&qMRgu$7z0VdO-YOwLg;Nyo$wdt5K?-O zHv~!yMv!5EQn0zX`LfeghF#j_76%OlAwECuI_c{nP}MkZ;eM*|I|{zd=f4~<@2S(t za`NN`$%7}8B;(ufKHZUqyS4SGhG0vlQM9C@UEM}z=w+u-Wls&-FJCckC?e7?kzBk= z68qRUyP)Nl90>TuL!{L*x>)4jci_Hfmfv^nzKxL_Q;PQSq-s2R@98xs63Md)sG4x? znnjZepco4qtDKwlXJ?O53SanU54zu)(%W-o%YBQ33p-0i_Q$*GYxSzvF5MNSm%W}Q z-MxiE4w4p;YmeaWwQzia&#W{N&!D_@!`8Q-t$5}HEW@1XNP`vxpY}V&$%Jw_~Lnn18ttz@Qy-Cqm zbl9L8vJJub5B{MM2D}RUnk>R{Y45*=PPbRB#ZpOhkMxR%^Kn1U z;Wy3XPo_>O#+B4r0(jgh``jr612it&DF@t1@aJy@?Qaqjso=i}v||r^rr@`Amo;Cu zg9_0b`=Ys@O>bcLDO~v)F7rYTpR}o~YP7rZ-73Q*hh(W|v4zzzJ}*BlRy_Ue=R3JR z3ne9GVeYxLb&XwEkuzFr-%06iUw38cqEnA{kX@$0cqQ#Y{Pj>Dt-7$?Ztjs=@4$Ub z0vV3vd;h`=vD^C7Tml)}p!97}m@f)$`(&CL+0IC!Twwv46{kMFzl;=;|A5)oJ$b7m zVDqNEfA(2CecB1*(?u+{r#{AC#d!XJk9+>cqr|fvUT5A@lE?!e?XB|$&i&h;y=)Hs zw2bmF=B~Cpn0=$nA+Xzl(THv><`!VUSTv#Vr$kw;woZA zEmrRJ(0*jxF;MqP&l7#~>^+thOvpBOh9?}p$^YV8iQlcBJ{92Hx0zx;!m^!Om1Qn` zI6(#n;0WzqO(z_NmPEso_SLFSuj9x>^F{OseY$x+Hv7-;@tK{BmHl6mH2{HjKKRLION9&;%XYFdP_r$My-sAs z4LHO>w%AF%A)&9tk$K0Qf9?~LyEDpwT#vWhYTXZ-Fq7VN7uqQinU0?9oXHoN4!ZTw z;Fy{=W%h%lv|0o(N@zxBzkeYuT;&#n%*bq40CEHu!&w~H`tZMj9G2nmXYP>YG{{_# zZUE2+1)IhQnYEs(sjC|wZcO~8JkI|dEg^Ot1?wF0(9Sv)wzg)ab^R4utSTrcVZ%C% z+gt^fl0&*6eSKg1maF4go9M*fT$=jsm-(*=&oVmzQuxe|@mYh#+Louu<*<0R=H2Ic z51;mus!yNVg2D+?821m((!CvhwL9$@Z;qYLP$^;iKb@kwbJ~w;NU2#jB8z3M_>rTy z@#~tOHD$A8SPFvllw!8g57TeG;(9qMGG9o4!k7)5QsFhUZ7CwLV3|nrf>;^l_n?D) zwyP!tBSZ`ra$>~;r#8F5Gt+@67*Ogce8Mv=m$j9oPL#n>>beue)+rYN(EHq?5wZ znC?8Dv)lZn%e4YMW6L7sP08iLUbDJC{A&$bh5}6EiIv}e6`h}{d~&h0_002N7ZKG^ z@t8&R$VG~{ZDFD?(b1ZI@AYEX{;(HxL^l9R9n6m}f?BE#kb`It_c4=3v~9XBfvLxb zV(qH=19EzW5QIO}BT(bWZqT8Be>Gh(Cok`Ze+;`kDZoyvZ^9qL=8LyFPJNYl<%5Dn z8g%wdaZFtuA=Wl{)f3!nHJ;}7*}4B#lo8LHBEl<^uVY1}>#6T-y>PxS?dHU#BeA_&bad)*$A>nSmG5a7>;0YDumw9J(;u(e zYh6x?Jr?ZxmjIA;aZM_gS-mJLt;QSp#(^U8FH#TL>n(>xY4{rV{si91(KRAiu{1@8$s_X%W0_0ae;@4ZQ#LHu%2mBR3+)kc%tRI+}Ay5{r#wsm*j7_%l zb>#!}mwsG7C|nBP`LCSec!g?5^#*ua;qy=RAt+DxwLV4 zqbM!vI8?4aM#&JcO>dMGi{@lRvV^=QJE-xJ>gg^G(pI}yTt~rj(vt#aJFo>=;ChQ8B{`tN8c27Yma3mCEm;6@=o3D&kD;= z2+Km;0*IBBL0840DT|=EB}5PZEu6ai`TK3tj%po+B#qSCn^cc-Ox;kMjX^uLA%jDs zsmYR2Q5#O5CSgJk$@GOE&}DzqBT+p*@5pS76>N)_|9JlO^s^v z$UqSe{LK){PwWJQ$b=t`*Z+hz0zEe1>4GsF_N%{#whBqwvr)!`)D&G1O;WoZUFyT+ zym=AL=#c^Q*9>?m@L>xbDbh4uA1wj?>D6c$5@?Vg4mn~>K~ZveM5W$#pXkvNOdk4K zt5jy>r%MT#kJ)As_0sSL(873q7_-n*Vl)>2V(U?b1av_ZRZa6|TK3CTu@Ic)w($S-RqtjDV@$q*1ICq@_#L3Uv= zDXFVp2$KAn_m9GqgE~h$770*MP6Q45a9Ee~6k@g1KVkMH*@#*w&#}6fKO*gXZBW#~ z2Y9z~5T?ViT>b9d;)@42g);xhnn)}B>q{~--=K=}Jnj;lr&+pIH~V+3#Ml>wuP9}D zw4K6iB!-XQdME48IM>!o^hA)PH-x^p{%xdr$IF z`UNz1{_~_|nM*Pt1qMyIioo*oZvVu;Pl8|a13^WC4W?ulb04OHWcwMY6F!3yB9ix>;6?ON}`X2B;CX*p4(k$x&+I<&*f_c!Mgi>fhT;bHR?qR{6=+}S07|IBYJ@}d*SB~$oMa<(<#jl8+8UwV z8|gvlf|KayXfx>A+~I)Q1uP=7pa2(G^6qNOp=TqP{`2b3#zsd&L7&pT>TCj9DoP1o z@BS10M%S#Wsw(M{9255YZH-TQ$rV5loP7-)1qNy$u?@l{LzXG@m|`HBhr3zCt{dY4 zaE=m!2=xO<|Foh&uB#jo{v!Nk(p`>(&~Z+tWJTt<`^>{M!L0JhHmq{b8RhrPLq*FJ zmY4U)Z$C*+(tiC%&*xNbO%(Inb+Ri@T0j4!7?<^Uch(yv%!2QU5haX)FU+Fg$r9zs zf-mfmtbA31e{K2TUOF(&gy_K}rviU(bhgwO%m&0l9V1>_6d>^d^TLZa^Y(H*+Gt|C z9VRXFBrnM*r1BFy5<9qr+%U#4{iW!6F4GRPjLoEHC;E@ewS05t(Bv!Y_x|LC#|30Lzz zDLr6yzhSmsFe8p2G_+J0wWEK|5cATS69CB=(tirA6r^wx(?fUSExTFKY3HGbomMQD z;VU+J|8fM&MWelMAGK<2=@i&h+cz;K+n`%L)@6Nk0TkukV9gi~vfhQKhNmf`4^9v5uMtRTm35>V9R~rilE&?R97kfdY#@7TfUTYvS|!Z_9xj7Dd3~Z!aDoc1MzV zLj=E)3e@oO(p{-F$_%1!nRXcgy@VvBzz2&XKtofip%i4Xe|4Lp`vX!Kp^XzDZ9UsQ zKO-_vbHF+SFOFODSF)e6-e)!`pj=$VTr3bY`ItmIn!6PKb}{^|Niu^_TXbG!V(--3 z37S`jELU>lNOQvJ-``U3BrCqhX`Re)1@j%{^>Qj352gxT`%ZQtzEirtVc^+v^roH3 z)6=lGw)bMrPdd~socSzVn?O(l+NXJh*aAt4J#0kKdTzV5A`utFQgxf}rtHB;P_ish z#20!akZJTFIK7I{4bv`T`ck&NV3J8!Y|u=NG^8R@#(XhY_+^zT1^+TC@#-P-mV=OeP!;06O+M^m^^1%lZHlrL79-DX%h zKmcOI^F6GMJg9!o^ns#<^)S_g8E5J{AQnXZdL^8Zs!sU7dT5G#aT!*fuHuqDFGwZI zEaPuM^;CseO>y=nu*h*g-VzUroFB%FgE12D294w0Wi z_8P8V{d0cv>{rm`CnP%@KTJAn9G31ON|x{sCMbW{^W*~4_87Se$tw1zNUIRUCIq)b z!r=W|(69`brVV;~h;cxrj`sY4Fm$AVppum|BFzV&ZY988lX=Wd4%S9IzIebrS?HEH zyY=s8Z@S^_2Qn+|;3IJng{}5Lb9I%5Fbt8?(=AqZPPlWF9%ep#Ll&NE63)qFQ_1yG z{atjfiQMB3z38%#1hMo?)u-JY7|~QN_mT*{r*(g7lD7*STMkgR3ue6!bAO2$?-1XX zAa-mSh6W!xOq@VPv3g?v&*H)^3?79WIlZ*9D^s!qlFy(26rE7b?|ykCb$Fs6Qd#>j zVpV}X>XM2Hhbl7*`EV9gR&g{Rc<6&pMsb=dYVZVqau89d)1kHh8A4X80J7$H`zR zD_v3wpC^@hcu7Ek_u2jIt}B{i-`Q>%jJ-cSSaYdwT@nJgEi5?Sp<7xeg5*-dLri6? zU=lM*qeGw7w`;%t>^iHv@rX%%QTXyzYrQ=;#)vu5kM>g%u<30C!wwYD)9 zwzK%}-#Zp#%1>?H?cC-xd&>5djs+#gn^nL>uo4>3qr^v>jUJApiAItU#p~So>x_(Q zG9^ACJ93KbAz8|Z*X(p+`P7E}MEa<7o?>d}nq}F^WRdtGVINfu(c(Zy{A*#BcOQ<3 znW+iQ`cgumN}KlDZbnkba)_GOfgS`RAL(AsQD2a1NeY(pty?Sc14m1<=X z#n^(#?j442dBYI_9WPsTEZ;W~qvoyFbKhe9##d-|=&S&=LI3MJ+nHybVMHt}EG?@1 zMTLdXZJ4Vdzi%IYO9?JF=M=HUaOL_;&RN1_n2tN>-I!**YB$ zCa{dD&L0?CQjl%%5Obbb+HWJndp4n&6uxMD*r8?v!Z&a$RJq~qrpx+W1hE}~JXJ6?<|ae-KecIQH; zK5R`w6pUNG;c%fTmEQ)^5Rc`AI;hu0W=hxBoaD8&wWq&CG`!mJcY{n8k(QqQ{vojh z!o!$#aR8-Xqfj8nFwPE>lE(O)rc}tHc7;ZpkA~3TkMhE1+Emm5@myt(!@=8Q@xdVRDc} zt=-P+8p`%!b&lA00KXs2WDuPNQHg0!mIGcE6G8Qf?%-PNc`-wky0oV>aWVShz>~bI zYmHJ)`zt6c5`xlk^L1w}Y#)(q!r%9{{4k4M?~Bh6opXy{6HUXE!hS#|wp&2VJp5Yx zPq_Huf`-g0NqlNb@5HM>3!`+=HED&<>D=R;;Ve%hDvKVE0QZ& zy;k+M>LhES4f->W(mhK7p()vM6+B8Av8J9*d7$nnIBh>MV{fU*na0;D!e_2#u})a> zqq4Cs{?VU)+bWi!ga8H2-()%R>MFdEZ4mbyXRTckt@zQAE_Sdw zYJL0CzzKoh@X5#V*-(|pm!vjXL3uS|b+4zko>5_X>8 z>e05((M%Zd8dY3Ud4fn#xcvmrw&j-@w37I>$x!GALv}D9BeK;78Gl@SJVqzC5;Rmm z6Co++W?3P8;N3a+h9L4}Vzks)Ym;k(qqEOO-`VqN7VH1c*f{Pko(*?7qI~_M(fcK3 ztetN;Zdei8N@z?berVvReVx^X3Y9S1jAu6b8j{vZSe;XmIL=}BmuHmNf^pQl8?rmb z?MI4fEC~;0^uEVvjXiO5GEY@`Ma;Y}u&||OJnt+Vmz+%HlubM{Aa%JTt8o5~ZoYaj zUPRx0ld6) z3a9?s&V>=lnV#9hGo>l?pP6Oq%1^OsNY+!bZU#*pPuS?JDA0LHzt+b7s&A=r`lbih z_H$4dI{Mn{iPy6mJa$1ZZ?Cy#X_VX6HjEU}44)N;Z>chPG}cdF^6>h$RJ2<#g$mX& z4fY~94Q#Q0?I~4ruw|x-xZOmJ_%0Mz^*{5FsLI;{#WTg&Qqt6PlLrsREE?lui4CNT)k9S5 zh*m-89GV>4ppG-Hs&KR^$KQ`?j4=*nheQc-wULezU-esQ#n_d+sb=as zjVy&{EQY<)hdWPGUD*6@{66_UoQ7M*$Zu{t>M|qzB=$x8FM(yEldMjEo|%ZrP@U>i zkr*7aKJmk|ohLIye%y~l7BH+Pza={vPuUYoPp9vqJB0PPtLb#hvbdWY#vM=<}&K+kx4|=#M1+@FJ8p z(g%U!;N(dpb7h^jaRK4ch5{-7HHA*a?RHGZdmt|iQUP{yW0%goM3H|>g& zR8}VW)Z1%Zd!$Mvj6Ohgxyc`Ib{3jakg@?$O7Ppw(mFN6%P+vR@ph2g%`$W{W;69u zQR!JI)@|4d@?neG65XCQphRQgcwWpJPF)?ZRu`8zuA2ackp31Qg zlI(||&+}K`!)z}UuDfxGIE;%ZfoQ8CE2mFM($x+ZM{rYd-ALmxm)(KRs`z3Jzqfy{ zj;zye&~IX6#cImS4X$`PES*{hPcD>8x(E?hM5$LA6ZVlP%P{P^W!2ADiyW@1YOJ+v@&89t;ysO#Y6A@<&J7KIV&;1(cthen+jZ;oti z7Yy~OfIvc|b{IMcg0P9Qq3@4-J*IWtfJ{Fz{4Vr}@$h&wztH&>FLQC z#UV+d9WYZRyD-T+E`40dW<4tWZotR-yNmHfzX|K|cJfKv{ltShlBudLRE?tMHajV4 zsPUadVP~nZn*=NOh&`j86q+|%`8^KiFl0$AIB=#^iEZ%Xu2%5T^w~BQH(NPtA2^Kl zR?w%$H*L&hqu?Xbl4khLcf{9`RZ^uIzOJ|s)By>L#s#jU^w5mVtRfy|bek2N3#}z* z8bvN~E?v)D7*!tHrbN-EV9@7bXY?qIQ&C}gWtS3l^Q_#yeY+TM_VJV(diK$3{0IBu zd9n54s-11Wa~inWNf5@Mmoo^2K;GbHFX(;DU0GFy7}YD1y@v4hm)C*5uaMurz4h#+ zsa9EX)IF|XG#uS6e-IKhA( zy@NzpF2^IpAsQq&d)HQ68Lo{<}J>UiHsZ>bG!5jfQuT(euY+`#yZ zmn9`xNrI>P%ZXBturGi&OhmLkzcYkaR%fN*qHWk|_*AE%r7OjB3~wD>TJXzI3V6Mr zMLdc+cemMXTKKDvA^UnNQ`CB6Uu@4&_iGKOqlK%xK6q692;W|Fy!ZY|ZKv1<`a)J0 zchsAwB|@|?1{=B*x%_@z1UNJdY*e!WIZIAXPJ$%V7y8kcK5>>s6~2jnOo@fG$^Hhv zZiF)-3hNAj!hRlxvv+38L<&Dam%ZrT=Ylkv7wgsk1#Ey-SAs}~OuT{Dcn|Px*C7FJ zn|~t8SweMD>8&O8*P)?`l0{D5cYI95;o^VTzw7!%`BxU{2PcUT-JAOE$b^g3dop+ssa5_l6qH~_ArRYIX8NW-b&YA z+RiIcY_alt^{7Lr=RmH|*Wzc|@6J~I=wrL_^y;=>3V-&=gRVT7B9T+d^%lP-QfZ{a zhNL8-xYu{2D_?98|J7q*oZJcCHzHpbTs-C--gIu-%RYL(VJ}=OI1nmsCUUa-ak0PaVfhnkyknkv_svVW2M>bgwjVVN;h(0Wo7+oCDg{@dnsUD)#}*V3d$}oo7P^ zt#?^c{rtP5wzVuGA~Y~i$Uz;GRN1O(*8FQ)k9=fVnbjSl%o_utUr~py;5;Y5&coW^HttPe(V0vtl0rW>;6a3_R)oO zi|cu=zIBJrq~c}8ysDvsJ+Zi`ylV&_L7<*8P)zk@=}87MSr{6SV;fptl7{lC&FNaU zJr|A|xXnX3Nv#4^)O4j*qnLJawPBsw zUeYKUy7!@W6r(=YE1rP@%-L#71GGI~E1xfeZRDTKELnBz+OB*;+lV@!{72kZ-%87t z=R8`XeJw)RDtdZ|8S^YWp9t+QRDe2$AwU#}O z=FGk6RAVQQLx_#j5AtV=6`G6}6WS8J3k%d>K=*X4seIt{eo!JPJU`5nZl@F^pNI(1 z7Yf&VH~au<$Xeexxc6@=Vt2@zx=E3%Nzrcl=++xF!vUh!t;m&!bH)cH+vO+2ryXKz zC9X1sGI3lh4CSs;wlIBWmy`mwn9}4U=mQ!eIUV!-;%U4BvU5o7|i>u6CE% z0y77F!Tz8e@0l@n*K*9mot232|Bk^qi17FC{O;em>OZy`QLm_>K~78PT68u0JFwP3mo8muTXiPfC;sQ7g@>yI-XNigQ&~*4YiWncTu58WJd~gU-r|PC!XSBR zJsBy3TIH72@HLo7fps(SB24{Y2ixA4;l}@PSg>+9eM;vc7=A!niU?@`g{S_8uvtGD1m`i0r+$kP$MnWv{Zy%KRN?U0t8=?|XkAkNf`fzCBczuDrd^ z^L)LI*Ks_L=ks~|mlvV-CG_B`*=SUr=6v^X5<)$aoC5DJk$lbY!6$M=vkbO+zq3+6 zYy%}xNUdDxf9hxTdT@yGU+)bP0z6-vUR7P)C;q30lc<2CAz{`sU3uV8-)x@7~`h0#qKw?aYUJ zaCl>(eyjgs@#M|}01SpQ^pA)Ubot$~u;1a>uF@{f{mOT)4I9yzFiFvuijZq3YF{6yZy~>yJKVBrg1%2rOkef7}b7vg7X{OXPDng@3*d6h6wXBn&X)2qk+^Do%S;9p$A z0$$VK4-78G|KhqtLLlnR#J>gi@upJ7`Sz9Uv2kIzrZ5Vuf1gorL3C8W9=Ot}v4oc#5@!<%d>!7 zvN+1%RdOhYrU*tEHtSB#eQr3g=Me!fRXjLQPA{@+uEL23SH8 ziEf}!#*=lv`|T=z==noWNiN>fKDO=JS*zVML^S{lIT)D^)Yjg9!_Q9~31|0*3m6w> z71#?se_A5+rB~v2N6$*+= z0(AvJnuv;1B5d`~nj5=Fw^~hI{UNeKp=8V>Po)$0p+FkmYjubANN&p+XB#D}@b`(; z_Vp7^)9c>5*^%SYkj!%58#Wih9C~N1o217Dj1l{8CL*jLSZ|4=FR;+jR>rF@ARZMU ze|*%~D24R5!I3QjR}Lc(g*Z@vH1xCyF|GqyBPAk*MtaRdM*g(OBR_$Dtyz0Ci`tkG z*o1xo9RsT2=-1Ce^Y(K-pp`%t4AMX}S^Sd7#>u%h@Cwies8;Y11{W;Z3ZO}>g+CeSKSlf8-EWTYE1g(cB4}-|x>xE~?2g(V{?eft55&MOuph7DbTF#%*hEEKx&~PYTGa<@ zNKUDndsUg@x$=(UKSZ?g5QDRte;K>X*ZwaVW2@pe^j-?$N8UI7_W3bpNldNfNVx#8V1he<-odC{O> zey6a%Oh7P;+zQ8W*CAI=tpg}mBEdgn3ap!&9^sJY%+verGa^!2egET~ij|^{loLP1 z`uF#VaDgj=qs0eAss-Q$aC9(K-vTRPAp6=?!x{>((yRcE!2@V*>Ma9&WBl>qnSIFQ zybg`}^5G`xsjH)-D!!*YHJ$L=YG<7Vq7gMbJ`(Z`zelLBe+-@uw2(3CpwTA0a zXFb4JF$mFBcZ}s%EoGt6D9wzlx(%;3oeT-hJ4$`*Pqn6k`@|+D=35XVc`SMMWBm|W zGcmX8<~rXF*a5wjf1MKjV6vV2*+)9`Pt$OP81J@nKDtabp#6UDV0+`=?}|8UWH??x zeGy*1f=FhN_4hFd`a-hLY`RbNexj==SyRdi-^IJ;1_v~R`p@BPJB(6Ie z1LVPoW*nFso$tkyK60;+UMsF&18b3B(Bam6U0uM_c6D{_-#Y!3bQ)G=sG}1`ZC`;F zDY|tQP~Qqas;hqksM>v?UZU z0Z%oes;Vj@p!_mev3PoVX5{8RHletdq~dON0Ns5w6f9!r&ZP+uD$wyK*vZkYQ0$^P zXlRh4cBHAUnaad1E4>jc99w-Qv7hX9&{^0@_Z03>b;p>Vt}d1%Zb`z7X$j0Y1N0R>FIh&H~y&<;i~KpjntjwZ{IE+)nl2hBkf+1CtUD*6YoxI4ZuYO zgg#Wp6$^;%$NVo-Qc@}gJKEdBDr>5FD5$8ZH$fU^+!{ffk&{zmc)8kZV)L0bNSuBf z#IY=_LK%oC{9w_JteW8mo6v8(PR}^rZVkm1{x&REq3Ojd8|`IjgZQ9va^`r5(B4qECXj;$Dg9jDM?(X{kEmFvV<4Q_W&yL z>b|n_OG>XXk-Sc$a}4rHDa7g%)n8|5gg&w67s98sT(oZQFvug%zS$#9G!4la0N9)2 zTE4zwC(*>hufKdT5$X)dieaqP`DKcsn|Iyz4 zUID>Cv08|wL?D{^$xQvupq{8^_}?@udN7paB0@(3nT2=l z@dP5EM4^xn{Y7vV-`vtt_oJOrw>ZyJ$$IFVa1M>s`FiJqa-}&-Gdri@w=WCw%1_o+JgGVA}m-Fi* zMn*Gpa#k{q?GL3rJ%v!sos*wGe?I6xnDd@Iq(e=CItA|dWe$#>Z{NNxukNM80zq#8 zLNgu$l>&#Z35Ho-6g}E#f?;hZ0Z8^88joeK#z@h+_C_ZEZP^id^4~~vL0aB6h^lU_HX8K!Ply<3&X8+db&kFiJ zo1c6^aBKaQ+xNi5=hu83Sf_dR+rhTeF1xRjR5qDJu_48$;|CNtN2oDOfTz3f25_0TAiK12>6NXkG z^<~VyngB5tP!bq_^pvyeEC7;oF2}3Dw6{K(|FE^%}fU~tFU^-?H zvqna2%H)%}18#pvHn(RNm$Nx)J0!*pDD;_Ex{NIBP{(S5I zi{EBJzk&vQ#3x(Wf&3CZYuM03+7pn%a&1!-m_na=fF^~%%l1$9A58^!C1si;Lk}&- z>L-Ss_`5Emk%gyKoTJA!p0=|6u8#&|l6N|nxgCg>)QE=29_U~&B)Ww@RBZF%ii$%c zGe>z+M*T7j^(oa~u#hA(mt44qvi^d0y#9~jrvesoGox?b#+K2!syar4d#B5B5PO7* zvgIIW>}EnYu5oV9AinYOM>;W|yQO8dxgW_-7*y4;)zmIHdncA9EIjJ$4rsd@nBV!+ zjgt7H1gYcZ)rdb&Mx9>b7+mSe(P(Fk#pdd4LW^`mkNFx-sNnag!)(SS-Rc@!cShUK zyf>`&q+^HB=SzvdUpmY0IX+D+*o`-L4@DC9-oE1}x^f-MAMZuAt?6_frj$S?78$$S z>8PQjbJ)vhTn6SLk{Z0wZF}uT3EieIYYAPYA$&toeb@!&I+yKpP(d- zh1^dWo1YkmO=x-enp01Tbd8NlZ6c#q`rbtSP!4su5VeNcXAqUVF6S)yp_)N7PkE^J zv1fo1gSJlOF2(>cUzem3o{SxjxhoI+-t+C6M|XB6ZAvCBTW-<$PdVo}+a8HN5S{CM z5b&#(&70wGA!2R?j!qZ%x}X!+GEwq1Y2$1}6{qxa!dSGma>FX>zO292R_Jo0We|_RT?0bQp26W^ zYg%v*I@`~mecC#D{#_MLhPBp9`?eojuZ zA1pOVqJts9|7T}Wxgq%2&FFI}byxduCAZ)@=JMl`??|dfdJg&FIP-jqn*ABLd8T3C zr|p4fLk3O5?31h%z9#KdA+)Z+?2spv6>h~fMindYzuMG~%e zYf4{pI`|W=vL|7DvMkSz`*3m)|Jlu-tsoa`S5rE;uAm-ktD588zz|m?b&NDd%fbys zwt!cvC`C3@%Y_C@!!ODzVSf2cGeXSU>jU%XMLYrR4{|Q2W$owMKg2&%x8UB-E3GA< z6IkGyP)`)NF^v`4M9{FbI;}M7NK8>P6Nu8~$ z|3K_K*$#!zs;rvRQ=iEBN!ulE|Gb66D`{8>SM@`mKRZ-rIwKxOoW{Wzvr7Irl#Q+m z&CH)~dmP(jML45wT^!SQ=my0+ABHg5SR2i71p6H$Qdvn6OU(PEvKhr?Kq6?-fumC=cL=ovm>11rsW;Pxd?}f(e*JJ7a9tp zIJWm$G0XC?=P%N{^bdT*p+$p_9DU#H1w`q(d;Pi69%a}*KHB9jC_iWFz*4}veO$d% zr)jkNXef7-^;vhwSzm#CGyS?HJ(13l`}}ir8D)3?JSr(E1&OAJUuSNvvzh8RUa}qY z3$?S5y#4S}73u_HM%{!qZ)Yumh!NMT-j}b#9$ey0cHs~%K(of#t8sG2O_EKix)4BM+s*j@m?vn)8K`E2d`u5qYOK>7v6^Rta!R3+gL|K$Q?a=W*py(`JmpiWCYd#~1>p%o)O zkPlyDnR(P?}V|N{U2+1#r4p zZ$;9LAD)JiH3HD?#hQ^#m+Z~dI998sN% zVrx4y>n09~8V7fG^x4N1rm{kFcjw{!4-zY~A|zHzEnON}KruzPxL}?gAHV5OsQrI{fJRiQFc2RW zKb>4}MGR=c%=#h^4=EBpz!46i4aLUBPJt`%6RKrEoi>3TZ{qy=bGBUDNKN2No!wvKz z>Sj>7z5`s>vaK2e#20=mj*z)lGj-hnK5s&!!wd{AfR8b_h1kFWak&Y~Iole*P#)MV zBb{zou@8W4GXn@*G2tDm;6Q*XG8ztF>e+up{CuDX&t8hzPMSQbxeHWFn`l{B{R(}&j!>X!;DS~_Fy<+t{+xcA# zWPN=ll3v`vX!+)DV`Wvq;T|nTqA-al@&h`J9*cmtSAcN> zE?xURbsy;nS>&{|Ub>EYUSAWrx%QRy=|!Up4o8c4@+2F(t~13zEI)@Rs=yncmaknG z8e)i_6oTjiS4z-vO7hNS%qH%4)>J@jIy%`m%n$m=0RIW|c>0$$?~ZYBakYY7m}BR) zR-|bOKJ^Cn)kQ_;Zr;2pxLWdc12%_S)iJp0H-c0=66v!6^ysNStE8DT#iC%jdXn*3 z_YNJ&pcbFh9e%U{B^zv?f{K;o^SIBil1mL#2qm)i6I)vo+hg}!KWoOKz@Kb$$@81l z)aS4LMFE6`hpH8y-JLUWrDt%Y@Nw>sV;8#8mz+BAO_fN$b$XVyW}uoQF6pf0!nDMN z(QEqA0{cT`ps3%Kxy>b!2xe)n}n8tQb3e4~aZ6p(X~s{iAP& zSYwdMl*jEHp)9KDO=k^5!@Zk2iuwj*-m@wNh(37ZwN4eExSh;JqNZ{Tp}HAv1k!nf zZkri&(Ry5IFUm$VgS?%Dd~Nq7@cRr6=^&pqp}18Zcol`fBAKK4V+hjN-@V_qX*zPd%yS+@;KZ3gCoP8J6`FG|%A2%alTyTF z>poy4!!n|@xk=W;s6eQTO;zYxUp4Vn>TwId@v3rYsYp}3#N+tsGQwi1n2HB$SWF5J zV7x#P=LNt}Q=W1*LWk24aJ)T^Z+2k&4;sCPh+kh(QJ?Td5M!~g+1&?YAQZ^wpS{of zJwqdl=@&$THJ9qV?6T(;78VaA{IZ}FljquK!NMdOyirmflKr)_2yMCQfU~Mn=@zHN zXE$Oq1CurJ7Txlvt>@4T&Xhi{wX=OKvf4}-X4P+veak#Eakf!$$5&q*vIHk567J-H z7(-$Li%P>b`nQ96VnSQ5&J(B|MqT-u~ z=MyU*>2Ad~Zl5Gg#DG-LbWD!PUBkb3XkVdKer>NbN@#+_>yhsJ~|2n>jfzMvQN?W2XU zy&$uY=8VU?5|3w~z_&TtTFo%{0!1H}aT2zf;c# ziz(uL1n){XXl8=Z4eqoWjX2*CvnrHiXXwHa@@AS_2_@PMx62~v9rPtOdYQSgXWV`G zST81`E;Fm$m=sbnlQ)7BxPG6uuSF^Q-M^$je)~h$$7t&yu_uAfCFjp>dVxdW1|rLa zwjxaZVggMPjAFF4o1EQzmz#Sv&ki8?+a0|U4(66w8;5m=Yfa#zKhn`lMC6ms1Otih z*j>J5{^_i(^o_O9D-06SnhWQ8H!fj9nrAG9Hpe%Kk@|>D2y^oRPC*{#%-8YF@<&47 zP@A8zrpU?nKjWNfcxXy~;OD?$e$pG+PpWn<(;jz6;_Bn!k_-D;H5yMJ*BL)O^Mw5} zt+pV6({zbr{bbe$RlN{jV!b_SpGx|S<>^O+!I%n!jap8`9`ZZBC8KnYM@1-DBQPRp zGY^PJNeD<0fh}qZP)}r()p^&1*mJbBo8^&jz$h7ocv~aqWtD+Ds5nt~^supN#?6YP z+Z`x0UwqbAVXNpWlhQ3-;$L#Qlx-K5LG&o#4L`2aDBDy^alkvm`&=Q~<)mdQZWu}a zc>6O6n6fL`2tJXsPl4)pQ{mD|UboihUnVDE!Inm^CJb)+M&La#>A_U+34KS?Pjris^k`}y&HGI~E?v6+!X@2i(XkJ+EhZ9efxZLd zl}v0OP|(p(pFVv`w7-1$a*#>$X`fBn<`&gg)s$?o?I`h1)aI(R=2%GgZwvC!wT*Of2Asrgp ztI1~}P+F+dkd_YOTXu~N+96I*2qf^nGxnGkdq&*jD>Xbu*{};jTb8D%3Zkk5}`pf{qvWX#Ca<9 zqN1WH$Bdv6=m?8tdC}l90ekx12t6wIW>88*Uvm}?fFV=LD0QDE^Z1vO0v zOwx4MLfnxmmCyWu^5~0Yk%?6;xD#ak-_Y!q{VK|7102SOq7rt|bA2;#$Jp%9Z4gEsXaS~I5FfZc=qqW#wRi8*y%91rBKv!p+{x;;5sMOePF|2a9WJ16ArwCqj9V&?re)d}KnWFJ!?KH7$N{9IAdZ0$cE>AjLfx zQJ|%EkG6)))*W3_Y11w{g|O^`1cu=eKC1s?^yB1{+H@tfzL9!x&F~5)ufb#xinJ+& zI|aXf-?2}cAIE5=rDAC?rB-R0(!hhkoQN(Zg8PXPiu+*3*h zK=_O#>mOh*NLtZ~DYF~K=>0m>WdiF%cM-lm8UoBQqUPpny4_UbBXTDvFH{bXYZ+m#5LzNghd@y?^05r&@z0BGzX%8 z-i$@FggVXy*%VXtZ?0+or5^dj}!j zspd`CUpKzs9G{%ez?E>G%uG&3`^ez!^#K>FhFwx&YOJXsH~jnLSc2cSo08@t*Y6NN zmAbi-DAvq9Me6~L<+gx0FPQ6zCimrn7(A$_aIZ|@xdqEKc&7#sZtes+?##B-HY6Kr z-HN|8|L8F0OFX8KuZx1em1RSMq&j*Cl@z1B%&Y2U)k#8`S5CFbCw-)WLdjug40c~- zU;oq6Rh0~})1&MYSd(sD%8jDl%c9#6dodmSMuJ>hJ7-i_k=^uk;zmn=`xMLaG82a3 z5=N1&~ z^>Llv>hOq8tz4S(WZ5UR7mLn`SP66dm*@9Myha7-m~cEowaiIHv_GzKDbpS7L%aWr zkiR%`{X^f|M8dJPkbUzD&8*dpk!qqG-}+3xFt_3S%86Cb?4p%yC&?vu(~|6G-Zw7p z$h#!Tb10qUgder6v|>iw+q38@{ni=X@e585+Pfl>nOOta{sp82lz8- z-TgZ=YEkJ*IJCU4F@-M0t?S9i$p0D1N+4nAULnhf`W`H7A>QA5fqG9WcA%wRj9s&# zycpf|Q>%^6jSskUm&h^#JY5L6h3^`C`MD+Sa{c>R$rW)jTxX)kmz|0FSxySS5w^{! zaX7|{-zvovGPyD}w!`!-;@037UmbFFTvu5>H( zQ(h)N-lvO!*6%elMC{1shD9ZdS#}FU*>-S}4K+TH-8flM+z~Hzt+$ykaAR#==-X$t z7lq9V-ye03(7sRq01WG&qZ{VrY(46#jn5!*0*E1PNP&5GiRFlNai>8ZziXOX*e%Iv1( z{3Hb8k$77xKceob+#Sk(%^*&wx#w4hJyX53Uv426N{bypi_LJd{alxy0~?Y(+bvmu zvFLo5nW!+?sW)EpXb_UIv$z<9#EvJml!KrYsWN_x>5u``px6E3b_{?XB(7K>91RC* z^O^pkI}z%|$UpG#WmHqt*0%`hUflrrSU zuDBl|tgSPSS!lx5d~4^iorRdKtP3Q1;a$WI_qB$^IE{Ci+k{9>UfI!#=AC$4g15~$ zk3Nx=#gUqpcJoZ~CO19?V%-gM_zIjCkxbEaqQ(;-_6JfyUqSP6L0tin+)AAVQJwwJ zWTi7JYU&{#XXvjt2%#Ps(h3$BjWCTiuHXUCG}OA=^@$uO6x)7U245&U3=G<7fYv1L z4lTBgiO8_AL2&-zaiF2CO^B5Zwp99@+h|Myj!U!YYbX^$eeN;wbBf?RrY(C^t?@$k%`LZOnmQZ=;$%v z0oert{n2N`?KU0q2hw$K_-qsKN|w3``rXfH6u9$4gd<(zEe=U5O==4$V9l$ilGbqKk zqCyL+vn}BmC>S070+Dp|s>Uv0UJ6HD3YVPo1de2EY}RK1vfU?7yxygV`}~rmRUH|Y zFymo%%s>f24p>nE@G%kRmBu38X}bp$M)f0Z z-#_*P`Wj-_6hcIQi-A}Y`dUEs6+|w^l6>XA(dbLROgDu*0CM3J?A{g-H%&Vc9A&a# z6J?H<{e)keO z-mQ1 zI)->^hIpH!w_L@V2p}T&%-NALs=Pg$S{x$Od)hrw+bWrF(|U^W(B;rS}G>8A-> z3jP~KG8xQdvhR!`{B}PW+jkBxD#=;lk)c~RF8}h_em-|#I5`*d;qKw8$fOU~JFX&* zDT0uuBHi54;(L*FFbvRs6!CT2H3BclhXc{||2 zX${cyYi<*%8ao(BH(KrPaO8G>brR&ynXvon!~_J&Re0QpwDhRObZ#3OcC*Tds>if!(6S)`F7{8CA^>3 zzHtN4o8;DO9PH7`>uFuw=DcN}Gj`#VqbU2vE!UuDfvce#~RD$!|Ntt zg&O=}wE1q;VpmDS2{Q{+sSH^RMC7B*OG-MlPcs`G{Bt(O^vFH$Wk36HEbHh0kw4z> zRL<-8{dZQ0E0*!~+;Mv#^a8^(2S&9vpUT;f6y1#GwHqy=TL+$LcR%nx z0bAf_IaA|MyQAgf`%Q*gz`nmFoO-rAQF-y&nHpN!ULG-4!f#%t6v6mS-(6Qt@`tiP zQ?WNXY1y&jF4tx0+#-SP(rWuU5uDoK)(ZEs3fv_6?38vr(#5j7LztaR%RJxcxdFkG zJKp3Yn)J1Fr&)2+5>=#)@#h)`n|m}3;x>DB-mSK;7W(nGza4Y+R811qbK$3qz-hJJ zomsctE!5?iGIC2$s#?M8<&wvhB|9n5P3F@}F>(peaT{Gn^XFr#)sW-$nzu)E+I~T_S<6W%&xXZ~{0Z|;mCW+Vs&X(> zwu_um6V~3Gi}1kka9d8qeYNSRd)o~1y#lYOsl7!$>dDy<$*=kfRtxuW@VnXA*r*HA zi2Goh!vr4kQ~F1R8oQz4i6EhzNm}Z(`gQ3?QEx97dzJms!D?UiSgL#3&3u7!+Rbsw z@Lb$u--PWwJF#_RetB|x>vytLQ_r!^-^?fC5O=IC*?3fcLq}DWIO#=Vm>FwKJ9GJ1 z;@Wl8_Eaja$I~ZIm~Re^hl741I@LC>@)p>Pj5WIbAl2(0TKt)rntJ#wL0eMH<$I6x zgo>YE9TpMYH(PIMY5FgZMpc-emYb!VNY(|KIX@`-Sylt&Vl`i zlaq_VC9U+wOW^}dnpGC~j_!}^ZuTzY1Qw{R#H#Phj|4>yDN>81c}Y<~rb^#Kw{VJUDSC&HaI?rmd=*Z1MMJ?y)VcG;&kBQ5 z3xmvkY}H-#!c{)Fj#+rQ>+$X%XM9lU5T?;$yQ1lBk+rLEa3|WuG1hiC#~^S$FunmB z-6ZlE8eMy0QXeq|DxyW6e4`HRsiISX?|-@O>iK7R+J#cULst>bw(uv$^Dy$5KBE+W zJx%Wr*!^tmzd-(v{QO?5^X(NWaxLTrr^{GlsRZ!D_r6*USGRI$gd1f!2-~x~5|-+_ zx6_+HTo&YBG?t1+M_Jh5Zrq4J^*N8bqQ~!>4JL}c1APKmC^D6ml`w&OX?OD&aaHsJ z#et@-ZdP%(xX6T-zJ3mjV3C1I;;#`)H)L<$7Cy`|p~%Y2RFjtvgT3J8y8^pj4C*U( ze`WpzC7_Leg>TN*%+|7A>d)LP1E)=EAhuBP+1&AA$41^isz~|9TizeMlrhR0GopqX zvT~!;Q8q`t7PK}#*IB;tuj0tnEzI5>IwAb=RX1Kdca`p>Met{8AYCZ|yM~qGin3 z@T@gNLXz!ZPA{-M(m=5Yf8z_zAU4+4z0j~Eq}-rW0VByih~p(-fu5^hsSY{#08kK+ zDITy@Z9#Zoor#BBM1afn`&!m=^4pioR;Lno-J9eakEQo-Lv40|2p0!1(Eb<&gp1b{*)( zfJ!Wz7bJZ`G!Z2OSjan-thX$ePr4kpS-G_~?V#wa$GbiLl^lI&-$DUDz}83Iw)I+^ zDcv2P&OI~~HVL%gZlQ;D4xON_{eJAJ;V9)|Pa8 zyA#IJWn{=j_m7NZwzRbH-hFhZaO6J6l`FB`iyaj_H{QFmu=MJvPCIJ*oicurjCgjA zTI38m+GD9?m$)FZO%Ksc`76&7i)8Pwkl|wuOia98b7GJWX5?E{IqPG_6L8!V;%y2P7c2pab-W!TD7+qTP9~Jf6yoBwE%QAL%`vbe?aiAv+x@{Y3T$NR@Lhy^$-Yh8aL?LV zy^8{b#?SozM))n_?~9;N=4|MO|NON)ep3&yV|Kv6*$A5D&&TcWYHGefj!V1Ay4oSX zt5>fcz-X{cNC4ZX9YI>i*$3~LrHPxcQn9^vHztKuO0UrLaou(rSNrT{20Slhh^V3O z&VV$hCdsk@7%hW&P5Zpl4=Ad7khLabyM`5X12n~oFpUVt`G~EYwBp(Rb0bl5Tjlk~ zN|13DGFvx3!l{DdbqCmL-$7P606fdAt^@(w{tPvFU!Xtm*?$uRNs{$cLtqt*iPhB5 zcn@y!R?y=FCCAccVMJLHGaQ;fKt|jP!?EYxs$EAc;@HV>tw9Ci1v7kk;oZTcI(It)Mzt6OXtj*Exq3gm+9;$jWxTofTwT;SB+iJDA;e*}^~H4(R!9&m)_Gi?sN z_^XWW0%pyh+u7zd=6_gplr16ePAPwDTtGU4#Nr3%ds!GFh&)(Ur6h3!2#A}j;F~)D zM%Fv;>5t_uYvsr-@qjQ1uH^?*Fg>8YWrVX(9v2h+wcvvk;E4s%(Jxya%J;#yl)A0z zjsqm4TVNb`<@{6TOn8%sont9zaKmYY)bY+=kz3l^$@e!v;t=>urNGE&)(Nh2VHss* z{D#shOwU6h{(OM(B}QOSJp|i(c)5=CVY}cr_8mucD=RBGcN|~KQeC)REb`!Oi;ERx zop(0Vw0vydQSkcK;yE!GKfCF!FCroW$-}FKCs7;_mx1E5^~>jp4AT!zY<6{ZbtZY- zkfyD}W9vMu%s>0`%ge-@qI4=p^y)3jBNzGI;B{>r98}zeaMP(kYMD%_`#ddO<(4( z7Eoh8_xzLT^VZqt-HS0M6bDF0`l?Qm3>c)9`)$9cr`_CJ^Dx2svvE;T7H>fWJL^=h zm8}U;bjzz2?$xH_Hst%U%w35h<*g(6a2C86xxco%&;lDP750%*G%w7zqC3>h)#{4p zkwp&B9T1CI!#w)vRQNe}qqkw-o<>dErwscco)IOm2w;cg8$GH%_fN<`MY$sD7sAW# zXdTF-2y2>ZKZUeTV4hPwhh9t1q$9IqSXTPs}hioCc_3(N^7nOkh8|dpD z$8N`@Lg^tN4dTLQhDlA}^35U-V;MrRYXDk_V+P?92xp>XZh|y$=qW9c;#m<*ytO(#IUX;g zwUdzN;N*OnD*ZN&-HnhUvXyl5Jf2%ZLW1|IdjS-}K*C%G&R{Q4(ehv-ixsG0L-6BN zVlV2M|2YRx4f2SDG>RF~Oah)74UuGaI?sdxqSf*sYZ*;5=#6`pk3r6Ns;DC&FAN?I z%s1nVzIQ=9K5@I3T2hZqKMDg7E zS}Ixf$Pcmw;z>F^-D${P#!0YCw6gj9n94yneFLO#nTT-D1_rXp_Mdt%P5pC@5W9o0 zT_GA-%&DsoTn|3qt?M&O>U}S33yo|qP^On!^`@kjL9FR|D<+Z#o2#ZqA4J=|kV&}$ zM~(Gy4b&i@=+|H%?#V5mpfY-TH#(SzJ`V=bF2T+oG;kjuxJt9@RU3lur*tU>@vRl2 zA@p6=o9v6A74aJ1lVSMx&FprBKUUg@o<4)QwHJBKiFI18|(Wh7F+yAi|-cIpP8>~F*5h|-jY2iUqg94o*9QW_T-a0ABSjXl<_6(sry@gts^EzAS`mP7 zrFr-6GAKkfyuGVI`IrN^yA?c8FOa~xf;+&6k|Z(%;c4J8^ua9ZT%aWwAtKRI7^tW8 ziu(pQ2-ZLs-gAC#&SiPgMYz=Z>m@N5d_V=$RsiqLYo+s61jBtKqF5Aa6CV0jf%iMF z`4t%asd9#zZ(ce`6S@~vKQ9*YJfVx zPX8LecJ83_zWBz;qXC<)w#9(AI#3m#qK=by5$H_KYy z7B%E~u+lt9`0n&`%_N&3=aHX()$Q***#jKqV^`&uzJFKcrciXgDMwyC&Kc75{JBKj z_xO?fT54*~nIR9$EG)c+KoQ_R34s!UBAzu|`I|f(aeiTf0$oER24YoJ$Bie@rP|Mt z{BtFxB_$cPwPNG*3^(;T?;eG}Qv991qiu85ke~f$jr?z)YHJrH`4+_^b3cFe87OG| zyEKYaAvA#n5HCyyc=7V(XQ<1*_aq-I-L21pxqKbVJ8z?eAvqry8S#{&TQ)aWa{p&@ zqtur{z&r?+pKS6-#7UKpnRBZy1^SQ}D9DkmOOE?^=8(bp-vy~Nwfzq{5Wv(s4yU^g);Z@g{|)!%VURn2hn)D%jT?cW@%R8Rt^FZv#;!L) zJOl&N9>xU!B=-!r!E;9?y2N91hOTM6DNKe*_kT>)H7SF8ZR=mYJdaS1A-R4(=O_sC znlJnS6@9b`#pm{Rp{2#3CbNHYnKLzp`M_Xe1xOCD?&v-q8y$54-)pPY(NYL~RbXiX z+q(psPh#Mx{94HQ1H>H8Vj<5jR)EC;WSI_3b^;nfRU~NxbP1^^AqTn(ozzUPC*RTj z?(L!phm*s4+G>S6A1mxI|<^xRbc(&0_^DT5WPe5_o&Ze@7b+(js#JYrr;kJ>i2K<$&Ub- z1_w0J56BFV11ydHXbKytRGIC@t2Ec^4)cQXDWl2O6r#sg2N9ERT1_!Qr<{-foZ#kx z2u>8;I{U+U5=r~iT?i(dqxf5FN^OAg7@dm1g>}dONfrGdQ(P@e#ZZ5`&iQAtN1Xwi z3Kn@d>wVV{y0d&AIOq2+i-UVg95bL5jCHGUw!UOebRE~{?h zHDRq-8tpcar zfj&_L&3~R2L2+F=wWTlDxCPB!@V<>=&ebhdcrKT!a{D6Lg$uW%AAX#W-T=2$`S#nA z%@4;12L}xgS10RFLzg8d3uQ3=UJ9JQd>|JywS|YR2alQgN6A;^ zrw-IYPN}KV-Bc&Afkx7Gdj$SIJIV9h@rqTD4lv7ueZV;5y#cxv7^fD)ECzKHB;Dhq zkln+HdPN@TUHBZHxuDM=zgZSE(BDtvq{SUU`}caHSWe(c86c?;NE&kCm=*KeDhUEF z6FAFS9pd8RY~ksQRywEK*B|euMhQS+39Ut_+NwZ#GHbi3&sS^f|7*a6N{^?`p7eTB zm!*b@Nivx7MXqmMW zTG%y9Dmh9kS2qnZWay*YLNjPHY5rBBi2D+Z7`V$#(Z4a>yZ?mbl8R>rN zrdV9e77Nw7ol{+g@JsxkKb7In|Mp94^ZL%7DTn38%v>Y>UnJ%K#pGkq<$|Lqbayoo zm;)+HF%TcyGz6d_u)_)9o|?b~_`%7=NqqME?wG?6%ta~zSE~8N#l0#AS=kWep(D!x z`o)?zZ$3sGNqk`%*2^wSkwDFVw)1zcA{#6RXXj$X$72awVm}b^S0td|mIT7~TOaWx zNO~o{L!;&cEa<9^STX|e*Ph0L?DsMaA-&TiQb@olcKhX(-jm})S9qkC&xKh*S#kj5 z)Zar0A-%)*CvXIuFasbr2!IeYt*c=4Ixk=2&8v zNLKO(bU6%xg{)fUR02fkaZ5h`-phU-z&wtDL-rnOkqvtWS|tdB0tA97WdZV&U~MuW zMg+kn-id0aT^}lbnMH?ib+Hk%`t~Hb9J2wwU4R(6KnX0X$oO}h*x9*;LMM!Q|&#wRqdOfTM%AmSylO5>Kj_ z;`km2!QH#K-v97Xf@;@HfWd?pzWJELj_ z3q4>K)~c@Omd*>T_s2l#zI zNWLnHa)z+1#{^_;3poOEL!J^2jUii<%^Gu7 z3IjA^d(5I(*Qy*EY*{TgaI=u$O(W!`ZhR(J8gd3YLug3_lEQ`6Qa5}G>*}g^yU|js zMHayE=>4kq9uRyeeir4}SX+x@z@(7yr4UG++QIm?2h|WOGS7t`2Q*|aGYIUqkG=kO zP<-gaKIfrajFbMbS+Dj_; zG}uHyE}s||H_oGA`@E*tB@YA~;7GL(*d@aNV07d>7LR?mf9mI;R?B<6h+8W9R^M4~+$)#;=XuMO04BHtB_Ec^sWx^c|UTM3%_&o@@COq4!D*TVop9^!ve}me=pc*%J&eU z^)d8fVDi@mu4RQe3xg$U2k;cJ>YproD*~8<;@}?lfiB!>YZ@&($SBa#DcPI|Q!TVi z0_#1ehrT0#*u%4}8?jg+o9DWD^C=un0D^tGx^%R<&?OI$Z=tOgU*r_H3s}|sbrMOE zQ}>l%tDkO5s1h1%*ZOgI5EQ|;p%>J2=N>3I#4%t&_~k#>5e!qZ;p24?0NS>Ik^+Ik zhuAgPb>dAz8X^8D>&gY1l)p+Lqs&Bj?jjNNhj3c*k9Z2DHP`@(Zh{t~VvPyV8!&6V zR5p|jZ_xrzF)^&0_S5zG0T`THzjgxx1E=9JN^U+>g;|1dYk0dVSd+>26o<^l zlXEhc2B7n@JB;VmUoHUrRZ1$;)5WI$*@HYdMj(TTh6Xpw`CW_KfY9U%9Ve(xzEF$~ zBIw6)HMlMgA;OSrnE7sx|FcECA42^%S^lAc7(66hj-r8iS zkhljs_zdE&fXSDFtZXzwN1>KE5F~`f-ZexZJTS{rK>sfB?z4KciBBV232fyU{oP8z zdu6Di0oM*r{rR#s8!a1hlln%H9n6M_IDFULvXcU;BxD>H8z~5TA z?&v?ayZAzK7aCl)b9Sk}__2!|NvB~h1<@g(4Z@$C!IzU%0-$L@SS=*`6J`;r3x+3= z%cfy}{xkRo-}c_#WROS8!aRdwJk-7ohnAL}?*f@L9l6D!tSl6gQ)r7B3q(v=SdX!& zr54hzOU)4Dy*rx%A}3D5-_k9>cN0%6F*yRgrsjx$uSds&jcT9N43VqwJm zQ&%Ms$khCw;V-dM7on%we}P}dmp6fngf^+z*x0+Wmey~;&i@6cXkd3Y6VZt)BzSQ} zl(8OFW1dYePyPpR-G5Cfets(>%`>Z)tN6Uf*|oT`tg0|9wWs3Y{nO{Zgv5Ku8)5py z1J_m)icn?htXrA)+&snn_%`*v7__qitU}$)=PRkstq&4z^DXyty#NsI|9z+3v zX$W;OP6U+pd>#L=3wb{j5$j`NeU>hIn~P#J!Co?;^TIMbbn9E`?XWRKKO3t|0xGKg z+MK6(dTMINWncbiXzwiz@AGtr;LfC*eE>{@QHj8sAjSV*^y33P@^b9x>YAMhGY_J> zrkX8^c4%;rC7@WLt~bg_&d*nd?WRhva}!nZ#?~PFl6co>?W=;)>Vrj zv#--y%dLNcR7&E6wj{Jwf#YB>A~mCOq8&i1(dO+z09%l?@;>?bAMCc20E#!d?l6wCs1Xbk(y;ivz6svch zAOX@w41#F@_xjScTl)Jg8|4er5VyaWt%~`tvTQ^66<6eyouPbn3)bovgpmPc(+>WB zF-dX>P_aNa3Kb?)8vt&oRpkYP>S@bLX|o9n9$22COQC0_KU>p5!b>kEwB6HW2?=XL z@#lw?v>Bl>@K=R+S+*Q3LHX9Rj?db_3XIA@21D zS8^kCib1v@2MkM1yJ`A^(*%0JwNLV)$uk8TX(zy}+2HOe0Cqr7ei59QG{{k1gp_%{g#~azpzb_>$k_DEO(Os$90ka zN2KUb8lxI^YWHtxBqHF(#jgqng%RaE*7wjd_J0|>0k(?E<)8lt!w|Kh^M9(NF7hl) zOky@C%TIp$FW38bI8VL3GtC;+1i2{UH2^yHwqgXu-GEje)Fxhd4nj6h=nZ7u;O+%f z()hj@8vdlpn1}NG{$X9h_dhQIYl7)U)yh)xF59H$iqt0Pr*j`7S}W z1LcPwl@({JjJY73zvOqqJX`NfRu3hi?G3BByXB`=q>mPVpo7yWq3DfZmTKzP9urLT z>z;=W1XCfvr~%v5bVFb=H`F#X1d>qIFZJpZLM#X*1*l`d7y3bT58O)`sN4Ws33elK zqL26BXc?ttgG>jgmXNMM*$oIxA1<*5OX$C_jH`!KA*5kqgY1y-{`bFI)c^lgudne% zKmfDmI4!ab#OSAMDVg+<)r}dUs-Yx!R>^Scow*zh*^9>+KW(zbS7M;@gKYQoYeN0HTA~x-cwKzXkR%_>0Cu}%&npNQPo6Fjp zu9};!gMzDBDyGkQ2gI~3c3MM-2y7e+3R#y;URF(q9E64($KagPjr5UmCl4#qug#^j z>^av>-GBbX7F?jvKwJziRTM!7?u`QPgElFNx)UpdB&n_$B9Ej7$hZ&w#b2Y2ys{cd4 zqBwqSDxPzxO(p3i!Y#qRLVt$C)Q0k+=%#luj+oO*@$UI4%0v!b>I&F151YK+jV&P zlx79t)aTBfH^ zmuRtLw1H9HoOx$ZIE_(VBVkca$U_DN5_}njp5fSGo9=Qs&WZLmz3XJM=%EYq{T?F2 zS-JGA;En2#X2;fAQs1-1L%%A~2Hd@O@|y&H^X&(~8sxU%N8U9 z+evwjG$=7YBUXBs?+%qf<9Wf1wC7!7ORlA{xnqkr49VQq?2NO!)MBi{x~z?xvU*}} zIM=!VFxY2sTFg2~+pBO7vAOt5F|Y;?GhLAlNw{3UC$lRiWa`n+vhS3*^WSzFth*Y%N zo3hes?lTXP$e5f+iB9C89t^T)mLIfIQIwCula3P?82{q$lpb z7qQvr(X~`FK#^xFM}~*aTuy{PHkGhFsdV;hqZUP(CQYIo+^S_Tg+Y$8!VIg@%SUf( z1p+mK&n;f$ww|tjv9@_vOPE=?{yhGb3$cgjUt2aB5*Oy6hd#fh(Hlavqu7O&w=!Mf z2&@x^yNgEdB+agx{3%F?%EdU2xd2$y3-Pi1R5va7n<*}B8RthY9_3qyts^)t ztS|sl`4tVhrcaZVM085lIOnF7vP^Z(21|&3dKPA@BClL8L{!Y ztFe)cHh&Vls@}8dq!UE}It{#1O-FHDRv^^;z!AdN$Hma3@9UPUaocqCp<0jx4gq^u zee#uL`FoGz{-FRs4qB-1ECy$Zf<~T1ht;i|A}6J#CBmGDq|}&edO35;*bc!V&64F2 zwE-ha8ICK4o#t1MQY)*{r@W;la?$A;>~U)LWb+qMac)kioDj|<;wB-8D_Zd~AiKY_ zT_SgDtG!FxW{qEhhxUY^EmvmW^vIhi92cke`(`+F*H4SUYB<+VBVV_t4?Ajd0cYay z-s2rR3AHTOR7rH7dB%MVFdY-yHR3sJ3dH;Mn5_bn>g5JaCsNxq%b%YV#_N8u%o%MI za9`egrcj(H}a(80B$h`uq=S%1(wsA8a4ZP)6lQ&YZa-TvSK95-e#mDKq{JZx9~5rB7z2 z`0{OBWNfy^{?k1#rb9T4z>E1ne`lomm2mDgy9-5BCRjX!qQkutyWe7Q^7Ncv$huHm zzclT{=dQ;UqA4Ty*|E8v)TouBx-Zy)8y%c!YPIJG!`f7+lEdIHrthz! zpQQr7Gx)0jzr;{&t`H7#rf2qDaqwpkB{nP{7K&v2>s*?4Ee`sesu?Ksa@52I<(}uv z;i?QyeQI*@N_TI-yty_v9OR4sZq(vVpG6cjw9V&!M7I(u+QN9$azC_X_=CFT|V)vu8TT>Z|&$IGbP(Ts{uI~ zy7xVp`R9jXmCdBm-0*o6Dvp2ZO}$1!V3?kFKLXoFjsJArfxJvpPAeS4ozQ!$FDJ+D zeXgSUbZ1b+qzBtFd-hWKSHc8&Cn>W8_ur&EufF?bI7kk@$>1Vyzb~YcEuB;9xEL4p z-47CGEHRMR?zl^sB|P}-dZ~cY>?PhiyAlE0a-u+6@j#uNnuTS?qlF>6x0px>VDBM` z;2r3u^w7*big6w8&b76FaS`i(PPI>U<=_2%^gG6O<5r?&20CgjdWaMP2_M~S!3jEZ z7-uDLSMHfNqpYin2+#@ z(T3?a%IwYR`yoUAPDsK|xfQG@^*C5u)n<7B`0D-XU-16ZQ%~ld1*wpPk*wX`$bBp|k>f$_R0xrtwGBa>_0pW1euP_RAzRCw_s zKJ)wI-+sQOzd$n>QLoM#{QP+|3p6%U~AJS{W<~gLq35sr%p1w0Gds6T7 zyI4KqkEW-FZ6RhYY1}cL?M@HRiI~nxE9bs`G>x!5?$;tk*pc3Rtbl3%nr0rC`#@4{ z^daU2zUvw=2^7u~%D@S|VXBXFx$o^|?U!NX^3E2@6k*S1hZ5|ZP0R4jQqLRndtsRZ ztVl^}u$DF&)ZM+B zyImgHAYU@(F6l`XXwvT*UOIBaIi=R^Zm`o8n&jlxZ&xLc<1i+DIc=*11qmqkA*4jX z%q&e1lJK#;kI=0o^oD^C>VX9;caFGK0eC$*C8Z50@tlrZD;q*C=EaL{fSm{q01~*> z)8rKNb<%atps7LWRf%xp&S73`OS)^?tPj7zcWZ;p83l_GiW=Mj08 z0HPfjxq<`^>f@xOLBI7cY@Gx7MQi6(bDh`4lK4xUFFTr*yG&F2?3^u=-dH-D2>L-7 zTE?U?!Q@-Yi)Hpth@29B8b;JUG0AI7%uolR=XlRt@|E0_Xxs8L>!;p|pm-^bYRGD| zdBCd0#Txct*fXUK!{M;9*AN$#we0cfJ~>qDM)&qx;Ljt0It^lm0yr*vw6li?kyRR! zTyZ+>*rL`vod{>YLk;R_$gMSn-Z^KlLZ9Li5Kn+cOB~OJ9#PBfpyPTr6n;Ux1Za4| zuL9jrf4vOT>uLl?(_c2)HiwcmGq`0PJ9*pWiAz|-mg`v7D}g}f)qop1L=V7w_?TMQ zuTyqK-+S#gi_)qNtDDQcF80P>#O{t<#(I7^Z|pFg@Lc+ytc%(NitLU>u-*|@xu%GJ zHMO<8l{x&@gsT}AMgw977V@3W1z9U>qb*r6gbua)pEq6$ZoV$17JBpqb{rLs43^*C zjayW*PVe00KSk4yCnPqHh#OwRaUo`e@dBJp9cnjFHHYNtL2;=v-PsmEDpzV*(w_ol z8GycaXs?$J<)wt1JXmALFzyGW6A^q?M!vTv{$J&C1BQaRIkxG5+NPgn!3g{q z0{N+VP6G>L)oT()a!sZT{z)t@SjTu169!W=sX;Mf{UgH8!`5~yZ$}JfPE|BL>@_2E zgIP47zvGmg5bG8$9JlZZ2u8@b!&jKM%{-JmANtP?iJLW)xESg~Q zmNJOgoBW~Fq#>b$30 zc4kH{KkbiI5|SDdj)Wrhi>$Czf8V~$=^(Q%{SvSg;VdDh9q(gh5Sl4K_9nw)HLLf) z%fo0U1^v}VNVP2$4#`*um`7is5ONWx8@m$wg#br*Mo*($4b*c`H%pUt1Xu-?jiD=A z_1NMR_=Y_KOE|D!xgY>qXH?bzM)>ETt-nkGYb`k$%yB}WG?rDM8jQu_+dA{l68uq( z6_Eh#{^I%QpnP$wwZs?xy_fFa%_%KeY|e|<&Rg4Ddzx&S%f?&D5r>?5wO$IO<@L)34_EZ=+XS5QHnf}%WaUYm%;`!6~`;H-1?+U_r- z%L!@FFX(4A?JH2|vvxiku}Pt}rEN37+HuTCPF31uZ9zy-WhnKUHAl;j3uPkAQY}n@ z5js>aai(y;vJMN7qgou$8!VwI&@|9BeD|OA=9xzT{V`#4dD0lTWNnsT9DR zo0C#stD|r0z2;0b$za{si8X_CB@tj8$H6zvU3p6O6h_&3EI5O+12Gf3RqK*<-8HWT z2Uj1ZZ~vO)mH(g>$seX+9j39?@6fZn6c`bf4u9X&$io(Fe(jq>$N6W90X8A-LIJie z>ax#6R(*bxJWPUtpize;*l6MDd#zlX+$!@ttL&thEDcjC(;2S;f_vuNT)3kWv>SlJ z6n5qV!n3<{R9B!TbK*xu@BYwW3GM?Gsy&+hIr=aYu62r&WZzt9FJ-pMmgcCww=Rx) zn=6w*g`3fN%Bq+>C{y-Jo1*c1vTQyD61{9HO11FmE7y+PQFA+=dcueZPw0f7=sY*Z zWIk+ed0QvTc$9&bHf&BXY~8rBCdk&0N-Bp1#_xvyUR7HC_ zo|~L@0RQ%UDdnYSp;rst_KxHWAAkyjP-;`M^t9#BURi>1-HM82h+qouxz+;R{4h_3 zO2%V~+l|#VZC-Q5RH{AJVZO_7jwgSi*~pK2IYnqD5>=8Vi48X$>ny#& zrMdWQ@tyArCc)eVgCQLQlVbH}th{4ePHXo3%8vUw&bvJBawUU;XwzIf2rw&wvs z0a8Rn$LrHus>Yv#st{l0^9}k3%WRrNE5**+?q8Fox6K%~lB5&@k5fAU4>t-YtN1n2Xb2lEyXvG|9&y?lGI4tXf1Zn=DSyyl&1Nw{;S00!v2E80@n35 z>n*_bCRE)EOn1141j+<7g8UbUcR@Wy+)a~L1~!K0NS*frtKYnN1KtY*1Epel`!jjp z$lPcv*cn!jp2QK(7WI&pcXD{O^x~A;m$sgPq#3tb;bFB$N@=x)r5E!DZPW*ptvV^n z-6S3;74a4JRtY3l4)18;uj6J-@4EKN)l`$<;85HbyL(&SE8wBt+S|No$EG;?IF?Fk z;(4>4^_k=+>76)AU}Wxlb|s6z&{%ksGuk*DI_h|)vIg0A3{!YGa>=3n0W0a7n6Ax=0)7#{TL`eQ3oyP+|r3%ugb z;+W}a6|DQJozJlsA76g{=AEbK$sOu)-gne{#tEN4e}1OM84|*OFQi6p#rXv*&F^A! zp-rPe#h|ISTK}!=rPu}V{iaMdx3RR$nH8O;rD75wk)QCgGP-a5ne`)I+qza`y)fA) z|LYCeBk2QXgjWYS#&SUJr`=O{w!BAj%Owv$ZVXb+fRJ9V+V17c3g^I9=SNn#fw?h( zAt6aX)kYBH$&)8)iVyxMg8H;$mY(mv)_p8H`&hrY&p7 zpC7AatZy>PL2D4x-qu!8;C%@S+G1j2K(BW&WxGSqg9#Ag6x)veqZ}CeF@ELO z={SaX-0ywarDH3xr{m}iu3WpWFsx8ce#!@=9Inm_54D4Q>s+j z&E;E#e3sdB9zH=-Cz)S#Q`I(vrhW1Iz@i}{+)fD;iI$A5D>}rbajsgZnKR75$C$!092VCeK*QH zuISjFGe&0w-=eOur3L1VW|NPE7L#4z+9-1IQ2w_sGeOS}F)3eVVS84^|Ku{1fbi7V1hGH#7UWR>z+7Xb^F%b1{9Iid;4xdyx-ZV9heWYY# z&|Eum=(dHDd+#mWF7K;*T$CN{o)5xJlls=ng~;ct2pIVPcp9v zFo{fyUD$fQr-U1D%xr6d(AiiJ|7f{hN5qU*(e+=uhGwR+FO2yGXxWfPeCF1zD-5` zS_93|h%5Wf6`c~#>77e2ZJbiOqr0heocQRG6X@iOPe?$lnNDcl4wl&Ma)m&MI?T=G z?+|fQQC|Ma<;x<^o{8*>ga-!3`=X z>0_3EJSFPscxmqi)77`p-d`hI7#d2Ry9ZiK0DlajFDz0% z0No>QWySKEMxi_u+@W_ep4!ks)!+na@QvG~Jj9l_8|$@akGT%R7;z~QUcmFUA^H?9 zXrbaiz_F@F|4`}*;y(Xs>c8fj_i z{G!)HAdkWCfAGdQVQQqz8a7fuS@3LZ7y{QCbIaEVt#&JhoT7d!yAJCq?aQ$3?{La# z-dZh-$0brx{v*`6$RyYpccJHHs9!j@iGVXvzcYo$9*gU4RVvjH(o1>?<6Z{qhaSrQ zRiebOw_ePTNf990%C#!8(w?6?IYaAG^X3n47UQsJ7K8gy{k1moPL zHO{|vFof_M&%de`oX7uu?EmFIu36aN_`!Ders!16+E2l-MS;h*pW3Fr*?Md4y)evF z=1G6#u}rQ(mfqsKOfIk$A<<}T$uU;;Q-79?Jw*AR8THTj-DOShVo3>Pb3NkcaSrP9 z1q1UIHrnk_Y8V{@0XqmwfWfOhf9B555sNEaT%7^VY}a`})Ar`gQ88I_^Yq@nzKZ_K zZ;&NP+qAr~amq$Lj~yKYgZR?!rLNA-^Am#?<#)QIz$0M>i^aFGA%fyO3sJrWmP7zv z2E=q`dio@Kd2w+OF#>dJjT82|R&XwzI>bgNrlFxRGXFiX2fHR*KD%lsxk=5=1A>&jVDQqmK)4Yt@HGa474U+4S7`YMn8R}lN({n-7Q6jNUiECu%qLZrjK z4I9+#H|Lwl9btfLo@4?%-e?$*l%77>e?Mw(G604=G&GdXbCFzcXRPB%riEsVD2O`{ zV|tbyD!Q_H{)lLl{#4|It1jku98m^dPaCMNB`1!WOK#2+B8Qch4G zB5MTNF#{N@08?uQ*f|6?HaMrpiiUR6q#^{b!JzDJue%rB!g0$q>R?9s4<;MjlYj>G zw%`Fy^xFbK);|OjoTL8|hg_g5&0pHd|M!o7cA{bRY#=s+DijkN5I_PfS~vItx6wsg z%en6BVwk#dSxrsNkM>6&^ML1IkTx0c!9xY?t@DeHJSMC1rBPB+3Z_fS$Y8H8ImG^{ zwN)1ITrmtD9v%rXF)`ey$N9fo1FT__mcOf<;Xg{`|H+Sfgf_S?dxb?sIdI>*V>J8F zayam7R@N#aS%DlS2INrPy@!de%IlcG&TIz)akr~lK!<+X-G=W#7AVT{A@I)uPqT#xpoiBtY{L1?mw_=rpbIay$^pEkL-(J+t;v>(D2b z_t0-9|JET6S z7HiQQM}c};rzwUu?k5f%W}l`Ma#Dv@&~j+prolB|D52m3?|CxkDDw3B%<>IT zi*|rHje@%RRhR@ou!lGqh?Rn}z#@euyb2UFrfb(sf0%NV9VR=a`1{h6Vvs}tS+T=3 zZy+A@K8S0N0UBuxsP1PF9T2#e93!TOPMoj3-r3xIQEUs0cxr2pKK^6^XFrnV17VJY zf+7VJL7!fzp=-b!x7G7GR`~#gtMA^wNBVkX@?l-XrV8~!Fog+1lsf3tr4FRsUmktB zPRH2K&wYFE0Szg0fS3+*h~Q&AogrfDf@2G`^&-j_4NuI)IeKc9Y`N>br{{&>y~F+k zH2WJ5&^ZtGEzQtw<@ywJsoxX$UZpElDL*Jrc?APS2t7J5j=_IZgaIxr^7^1>V3+}# zG&osMJ+iM)$EgG%`5C`F!o+|Iw zu*c>gvOSXW77e69vh>32Jq*8A6lMBZm>r+b5)gRv}Ix)z4!kf_ujgu|gmCVe~2UU$B z`v?UMjcc$;czK;hZYaRorcLp2Iq{wH)JNPGSBa=$Gl%IYCo9|fA;qE08qMF*RgX@In-`B?icMVHocZAUS1anhOO$+i^tgo-X4l5>+z3TA9H_B6Q zs({W&D^`fj?YqB2i?__;l6eU(c?zzIP9?Qsf&9R2k<2>!w4NG{>)YpEKY#p~0&@oi zI4@e;+RhOZUk0{4^m-@(C$`=a`#i;T%~ZfW;lSaFT{u!cb^V|3c~}gEs*=S@3Pdx8 z#^0QyUDyAPj|C4U#zBkzR#=v#{yz)LH}l7jyC4Xu9?v=myumA9?ftzb=iON? zT4PuU@CaI7!^Ee6*%bkbK4vzyE>MrFfzUAmc7Z?Z>Ko9&!GQy2X9uVpaQ|zTFr31I z()1YcR*^vtBK>CTAA1k8KZk|HDD|n?Ai@zyj>og1kt*7Z5REk?Bm@}>@Rge5375-^ zDZpC4)L=0d2v;FgQc_}vWQX9B2kS~6bhwKinpF!KIF;`O`l)bskeCs~*~Y-tMdFN! z#_$w>M(Jc=?SqI19x|0o8B}xN9Pp<@;yc97c4~xY7%t=8h0OE-Vu!7)4H&Vput0%= zI0Y&^RAV(VO72Y8Vhd~F8d*5=@rzrS7Fw^E)7%G#L>B1Cs08ff;h7_!m({)P1wvIe zE-pnDrL@!h6E?~?W5CinQ!!$JW(Kmzf;9_HbgZzljbSpW=9+{6+23W0mzTG;sVTS* z3zEbUG){c5-y^26ot@nZs8EwYJqQZL=X~L)sY_=eeEHlMgdSCX_tkq0?1( zD@`ar-uc95C60kM^k0yXiAbk}s3;lH@1MUNM}ndVwoJtv2951VZ3-#6b9EOw5djxNy2s%HB#MFcDK0Adp<<*NbdvYm4|4Yi z9YUnh_U{I9D{|TplT}d(0VV8?a1YWYB02+{B~f55#E@b&Jh=hO?||w6dL-ID=$#(; z*?yiEvL=hsb!y__; z;RnvS3`9H7uW|*(L;`~(LLkkX6xrM49DCIU!89QpRRpab#BLBQeE}Jx3T6c{ z2B7^P%~x-bHX;EF5c^sAkW7NzZvh-Ykq(M( z$od2bBU+(|zEY7rEVKZEbA??Itm? z;9HH~lQv-11=c9Ei*u1y(5&o86-Zj{Jr10Iyki;;)!}Ns2R@W7$oLoL=qvdoq;VRIpHGEhFJmg3fE&-(s2#i$rw@1Bu zL2L=SH?k8p!Qf&7#!>(#s)H^aAQ6ZpJ46TtZbp|9<^`iI)1^iG82l+rA|WPrl9IxW z7CP6@a3QMz1QcP+Sv+77Onz}j{7e_mZ+K|ix)Kx?M!_?fXFkN6vk3llw=5h$`i-xW zUR=EMsTZwDi}{1c60Q8?Ni-BQ8By_}!sQypeTdy9F;F;wgz3gpDhQm)cE;Hz2Oq(E za3&9slZ&-TosE%)Qt|`pmv`N?PpfpXdqpn6&LLL1>yVP1eB5yWBIqdK%oDAW!TZWZ z4>G~K1;|7gEDwX}keH(o!m%9ZeJ7;BjfoM#$H(V$*vNnaNI+Ov3hXkcZFi9wK2Iqa z39LY~D-icc!lL1`{T*4l9KL|8Zs0)cc~g3Du=MM~@IRKdh2CNTetuC%-U_WHd_Wl( zex}SCbVGI%AqJL1j?jlpTCm0S*eTbU9i*!dF5A&Vn%Af~F1S*ctjB1u%jq8Hs6v6@ zKFl3)u-R*d-oRkq3}`r~Y46Qz>iIJ0#l^8IFef^{vITS(CD<)gOC1V0I5=SNaYAs@HEn;ddVs0&BX)R)HEn;geVs9OT8ntM7V){70006~7P$Zb diff --git a/docs/articles/index.html b/docs/articles/index.html index 55a2613f7..f37f67876 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - + Skip to contents @@ -13,7 +13,7 @@ mizer - 2.5.4 + 2.5.4.9125

    ").addClass(errClass).css("position", "absolute") + .css("top", el.offsetTop) + .css("left", el.offsetLeft) + // setting width can push out the page size, forcing otherwise + // unnecessary scrollbars to appear and making it impossible for + // the element to shrink; so use max-width instead + .css("maxWidth", el.offsetWidth) + .css("height", el.offsetHeight); + errorDiv.text(err.message); + $el.after(errorDiv); + + // Really dumb way to keep the size/position of the error in sync with + // the parent element as the window is resized or whatever. + var intId = setInterval(function() { + if (!errorDiv[0].parentElement) { + clearInterval(intId); + return; + } + errorDiv + .css("top", el.offsetTop) + .css("left", el.offsetLeft) + .css("maxWidth", el.offsetWidth) + .css("height", el.offsetHeight); + }, 500); + } + } + }, + clearError: function(el) { + var $el = $(el); + var display = $el.data("restore-display-mode"); + $el.data("restore-display-mode", null); + + if (display === "inline" || display === "inline-block") { + if (display) + $el.css("display", display); + $(el.nextSibling).filter(".htmlwidgets-error").remove(); + } else if (display === "block"){ + $el.css("visibility", "inherit"); + $(el.nextSibling).filter(".htmlwidgets-error").remove(); + } + }, + sizing: {} + }; + + // Called by widget bindings to register a new type of widget. The definition + // object can contain the following properties: + // - name (required) - A string indicating the binding name, which will be + // used by default as the CSS classname to look for. + // - initialize (optional) - A function(el) that will be called once per + // widget element; if a value is returned, it will be passed as the third + // value to renderValue. + // - renderValue (required) - A function(el, data, initValue) that will be + // called with data. Static contexts will cause this to be called once per + // element; Shiny apps will cause this to be called multiple times per + // element, as the data changes. + window.HTMLWidgets.widget = function(definition) { + if (!definition.name) { + throw new Error("Widget must have a name"); + } + if (!definition.type) { + throw new Error("Widget must have a type"); + } + // Currently we only support output widgets + if (definition.type !== "output") { + throw new Error("Unrecognized widget type '" + definition.type + "'"); + } + // TODO: Verify that .name is a valid CSS classname + + // Support new-style instance-bound definitions. Old-style class-bound + // definitions have one widget "object" per widget per type/class of + // widget; the renderValue and resize methods on such widget objects + // take el and instance arguments, because the widget object can't + // store them. New-style instance-bound definitions have one widget + // object per widget instance; the definition that's passed in doesn't + // provide renderValue or resize methods at all, just the single method + // factory(el, width, height) + // which returns an object that has renderValue(x) and resize(w, h). + // This enables a far more natural programming style for the widget + // author, who can store per-instance state using either OO-style + // instance fields or functional-style closure variables (I guess this + // is in contrast to what can only be called C-style pseudo-OO which is + // what we required before). + if (definition.factory) { + definition = createLegacyDefinitionAdapter(definition); + } + + if (!definition.renderValue) { + throw new Error("Widget must have a renderValue function"); + } + + // For static rendering (non-Shiny), use a simple widget registration + // scheme. We also use this scheme for Shiny apps/documents that also + // contain static widgets. + window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || []; + // Merge defaults into the definition; don't mutate the original definition. + var staticBinding = extend({}, defaults, definition); + overrideMethod(staticBinding, "find", function(superfunc) { + return function(scope) { + var results = superfunc(scope); + // Filter out Shiny outputs, we only want the static kind + return filterByClass(results, "html-widget-output", false); + }; + }); + window.HTMLWidgets.widgets.push(staticBinding); + + if (shinyMode) { + // Shiny is running. Register the definition with an output binding. + // The definition itself will not be the output binding, instead + // we will make an output binding object that delegates to the + // definition. This is because we foolishly used the same method + // name (renderValue) for htmlwidgets definition and Shiny bindings + // but they actually have quite different semantics (the Shiny + // bindings receive data that includes lots of metadata that it + // strips off before calling htmlwidgets renderValue). We can't + // just ignore the difference because in some widgets it's helpful + // to call this.renderValue() from inside of resize(), and if + // we're not delegating, then that call will go to the Shiny + // version instead of the htmlwidgets version. + + // Merge defaults with definition, without mutating either. + var bindingDef = extend({}, defaults, definition); + + // This object will be our actual Shiny binding. + var shinyBinding = new Shiny.OutputBinding(); + + // With a few exceptions, we'll want to simply use the bindingDef's + // version of methods if they are available, otherwise fall back to + // Shiny's defaults. NOTE: If Shiny's output bindings gain additional + // methods in the future, and we want them to be overrideable by + // HTMLWidget binding definitions, then we'll need to add them to this + // list. + delegateMethod(shinyBinding, bindingDef, "getId"); + delegateMethod(shinyBinding, bindingDef, "onValueChange"); + delegateMethod(shinyBinding, bindingDef, "onValueError"); + delegateMethod(shinyBinding, bindingDef, "renderError"); + delegateMethod(shinyBinding, bindingDef, "clearError"); + delegateMethod(shinyBinding, bindingDef, "showProgress"); + + // The find, renderValue, and resize are handled differently, because we + // want to actually decorate the behavior of the bindingDef methods. + + shinyBinding.find = function(scope) { + var results = bindingDef.find(scope); + + // Only return elements that are Shiny outputs, not static ones + var dynamicResults = results.filter(".html-widget-output"); + + // It's possible that whatever caused Shiny to think there might be + // new dynamic outputs, also caused there to be new static outputs. + // Since there might be lots of different htmlwidgets bindings, we + // schedule execution for later--no need to staticRender multiple + // times. + if (results.length !== dynamicResults.length) + scheduleStaticRender(); + + return dynamicResults; + }; + + // Wrap renderValue to handle initialization, which unfortunately isn't + // supported natively by Shiny at the time of this writing. + + shinyBinding.renderValue = function(el, data) { + Shiny.renderDependencies(data.deps); + // Resolve strings marked as javascript literals to objects + if (!(data.evals instanceof Array)) data.evals = [data.evals]; + for (var i = 0; data.evals && i < data.evals.length; i++) { + window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]); + } + if (!bindingDef.renderOnNullValue) { + if (data.x === null) { + el.style.visibility = "hidden"; + return; + } else { + el.style.visibility = "inherit"; + } + } + if (!elementData(el, "initialized")) { + initSizing(el); + + elementData(el, "initialized", true); + if (bindingDef.initialize) { + var rect = el.getBoundingClientRect(); + var result = bindingDef.initialize(el, rect.width, rect.height); + elementData(el, "init_result", result); + } + } + bindingDef.renderValue(el, data.x, elementData(el, "init_result")); + evalAndRun(data.jsHooks.render, elementData(el, "init_result"), [el, data.x]); + }; + + // Only override resize if bindingDef implements it + if (bindingDef.resize) { + shinyBinding.resize = function(el, width, height) { + // Shiny can call resize before initialize/renderValue have been + // called, which doesn't make sense for widgets. + if (elementData(el, "initialized")) { + bindingDef.resize(el, width, height, elementData(el, "init_result")); + } + }; + } + + Shiny.outputBindings.register(shinyBinding, bindingDef.name); + } + }; + + var scheduleStaticRenderTimerId = null; + function scheduleStaticRender() { + if (!scheduleStaticRenderTimerId) { + scheduleStaticRenderTimerId = setTimeout(function() { + scheduleStaticRenderTimerId = null; + window.HTMLWidgets.staticRender(); + }, 1); + } + } + + // Render static widgets after the document finishes loading + // Statically render all elements that are of this widget's class + window.HTMLWidgets.staticRender = function() { + var bindings = window.HTMLWidgets.widgets || []; + forEach(bindings, function(binding) { + var matches = binding.find(document.documentElement); + forEach(matches, function(el) { + var sizeObj = initSizing(el, binding); + + var getSize = function(el) { + if (sizeObj) { + return {w: sizeObj.getWidth(), h: sizeObj.getHeight()} + } else { + var rect = el.getBoundingClientRect(); + return {w: rect.width, h: rect.height} + } + }; + + if (hasClass(el, "html-widget-static-bound")) + return; + el.className = el.className + " html-widget-static-bound"; + + var initResult; + if (binding.initialize) { + var size = getSize(el); + initResult = binding.initialize(el, size.w, size.h); + elementData(el, "init_result", initResult); + } + + if (binding.resize) { + var lastSize = getSize(el); + var resizeHandler = function(e) { + var size = getSize(el); + if (size.w === 0 && size.h === 0) + return; + if (size.w === lastSize.w && size.h === lastSize.h) + return; + lastSize = size; + binding.resize(el, size.w, size.h, initResult); + }; + + on(window, "resize", resizeHandler); + + // This is needed for cases where we're running in a Shiny + // app, but the widget itself is not a Shiny output, but + // rather a simple static widget. One example of this is + // an rmarkdown document that has runtime:shiny and widget + // that isn't in a render function. Shiny only knows to + // call resize handlers for Shiny outputs, not for static + // widgets, so we do it ourselves. + if (window.jQuery) { + window.jQuery(document).on( + "shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets", + resizeHandler + ); + window.jQuery(document).on( + "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets", + resizeHandler + ); + } + + // This is needed for the specific case of ioslides, which + // flips slides between display:none and display:block. + // Ideally we would not have to have ioslide-specific code + // here, but rather have ioslides raise a generic event, + // but the rmarkdown package just went to CRAN so the + // window to getting that fixed may be long. + if (window.addEventListener) { + // It's OK to limit this to window.addEventListener + // browsers because ioslides itself only supports + // such browsers. + on(document, "slideenter", resizeHandler); + on(document, "slideleave", resizeHandler); + } + } + + var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']"); + if (scriptData) { + var data = JSON.parse(scriptData.textContent || scriptData.text); + // Resolve strings marked as javascript literals to objects + if (!(data.evals instanceof Array)) data.evals = [data.evals]; + for (var k = 0; data.evals && k < data.evals.length; k++) { + window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]); + } + binding.renderValue(el, data.x, initResult); + evalAndRun(data.jsHooks.render, initResult, [el, data.x]); + } + }); + }); + + invokePostRenderHandlers(); + } + + + function has_jQuery3() { + if (!window.jQuery) { + return false; + } + var $version = window.jQuery.fn.jquery; + var $major_version = parseInt($version.split(".")[0]); + return $major_version >= 3; + } + + /* + / Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's + / on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now + / really means $(setTimeout(fn)). + / https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous + / + / Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny + / one tick later than it did before, which means staticRender() is + / called renderValue() earlier than (advanced) widget authors might be expecting. + / https://github.com/rstudio/shiny/issues/2630 + / + / For a concrete example, leaflet has some methods (e.g., updateBounds) + / which reference Shiny methods registered in initShiny (e.g., setInputValue). + / Since leaflet is privy to this life-cycle, it knows to use setTimeout() to + / delay execution of those methods (until Shiny methods are ready) + / https://github.com/rstudio/leaflet/blob/18ec981/javascript/src/index.js#L266-L268 + / + / Ideally widget authors wouldn't need to use this setTimeout() hack that + / leaflet uses to call Shiny methods on a staticRender(). In the long run, + / the logic initShiny should be broken up so that method registration happens + / right away, but binding happens later. + */ + function maybeStaticRenderLater() { + if (shinyMode && has_jQuery3()) { + window.jQuery(window.HTMLWidgets.staticRender); + } else { + window.HTMLWidgets.staticRender(); + } + } + + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", function() { + document.removeEventListener("DOMContentLoaded", arguments.callee, false); + maybeStaticRenderLater(); + }, false); + } else if (document.attachEvent) { + document.attachEvent("onreadystatechange", function() { + if (document.readyState === "complete") { + document.detachEvent("onreadystatechange", arguments.callee); + maybeStaticRenderLater(); + } + }); + } + + + window.HTMLWidgets.getAttachmentUrl = function(depname, key) { + // If no key, default to the first item + if (typeof(key) === "undefined") + key = 1; + + var link = document.getElementById(depname + "-" + key + "-attachment"); + if (!link) { + throw new Error("Attachment " + depname + "/" + key + " not found in document"); + } + return link.getAttribute("href"); + }; + + window.HTMLWidgets.dataframeToD3 = function(df) { + var names = []; + var length; + for (var name in df) { + if (df.hasOwnProperty(name)) + names.push(name); + if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") { + throw new Error("All fields must be arrays"); + } else if (typeof(length) !== "undefined" && length !== df[name].length) { + throw new Error("All fields must be arrays of the same length"); + } + length = df[name].length; + } + var results = []; + var item; + for (var row = 0; row < length; row++) { + item = {}; + for (var col = 0; col < names.length; col++) { + item[names[col]] = df[names[col]][row]; + } + results.push(item); + } + return results; + }; + + window.HTMLWidgets.transposeArray2D = function(array) { + if (array.length === 0) return array; + var newArray = array[0].map(function(col, i) { + return array.map(function(row) { + return row[i] + }) + }); + return newArray; + }; + // Split value at splitChar, but allow splitChar to be escaped + // using escapeChar. Any other characters escaped by escapeChar + // will be included as usual (including escapeChar itself). + function splitWithEscape(value, splitChar, escapeChar) { + var results = []; + var escapeMode = false; + var currentResult = ""; + for (var pos = 0; pos < value.length; pos++) { + if (!escapeMode) { + if (value[pos] === splitChar) { + results.push(currentResult); + currentResult = ""; + } else if (value[pos] === escapeChar) { + escapeMode = true; + } else { + currentResult += value[pos]; + } + } else { + currentResult += value[pos]; + escapeMode = false; + } + } + if (currentResult !== "") { + results.push(currentResult); + } + return results; + } + // Function authored by Yihui/JJ Allaire + window.HTMLWidgets.evaluateStringMember = function(o, member) { + var parts = splitWithEscape(member, '.', '\\'); + for (var i = 0, l = parts.length; i < l; i++) { + var part = parts[i]; + // part may be a character or 'numeric' member name + if (o !== null && typeof o === "object" && part in o) { + if (i == (l - 1)) { // if we are at the end of the line then evalulate + if (typeof o[part] === "string") + o[part] = tryEval(o[part]); + } else { // otherwise continue to next embedded object + o = o[part]; + } + } + } + }; + + // Retrieve the HTMLWidget instance (i.e. the return value of an + // HTMLWidget binding's initialize() or factory() function) + // associated with an element, or null if none. + window.HTMLWidgets.getInstance = function(el) { + return elementData(el, "init_result"); + }; + + // Finds the first element in the scope that matches the selector, + // and returns the HTMLWidget instance (i.e. the return value of + // an HTMLWidget binding's initialize() or factory() function) + // associated with that element, if any. If no element matches the + // selector, or the first matching element has no HTMLWidget + // instance associated with it, then null is returned. + // + // The scope argument is optional, and defaults to window.document. + window.HTMLWidgets.find = function(scope, selector) { + if (arguments.length == 1) { + selector = scope; + scope = document; + } + + var el = scope.querySelector(selector); + if (el === null) { + return null; + } else { + return window.HTMLWidgets.getInstance(el); + } + }; + + // Finds all elements in the scope that match the selector, and + // returns the HTMLWidget instances (i.e. the return values of + // an HTMLWidget binding's initialize() or factory() function) + // associated with the elements, in an array. If elements that + // match the selector don't have an associated HTMLWidget + // instance, the returned array will contain nulls. + // + // The scope argument is optional, and defaults to window.document. + window.HTMLWidgets.findAll = function(scope, selector) { + if (arguments.length == 1) { + selector = scope; + scope = document; + } + + var nodes = scope.querySelectorAll(selector); + var results = []; + for (var i = 0; i < nodes.length; i++) { + results.push(window.HTMLWidgets.getInstance(nodes[i])); + } + return results; + }; + + var postRenderHandlers = []; + function invokePostRenderHandlers() { + while (postRenderHandlers.length) { + var handler = postRenderHandlers.shift(); + if (handler) { + handler(); + } + } + } + + // Register the given callback function to be invoked after the + // next time static widgets are rendered. + window.HTMLWidgets.addPostRenderHandler = function(callback) { + postRenderHandlers.push(callback); + }; + + // Takes a new-style instance-bound definition, and returns an + // old-style class-bound definition. This saves us from having + // to rewrite all the logic in this file to accomodate both + // types of definitions. + function createLegacyDefinitionAdapter(defn) { + var result = { + name: defn.name, + type: defn.type, + initialize: function(el, width, height) { + return defn.factory(el, width, height); + }, + renderValue: function(el, x, instance) { + return instance.renderValue(x); + }, + resize: function(el, width, height, instance) { + return instance.resize(width, height); + } + }; + + if (defn.find) + result.find = defn.find; + if (defn.renderError) + result.renderError = defn.renderError; + if (defn.clearError) + result.clearError = defn.clearError; + + return result; + } +})(); diff --git a/docs/articles/plotting_files/plotly-binding-4.11.0/plotly.js b/docs/articles/cohort_dynamics_and_diffusion_files/plotly-binding-4.12.0/plotly.js similarity index 100% rename from docs/articles/plotting_files/plotly-binding-4.11.0/plotly.js rename to docs/articles/cohort_dynamics_and_diffusion_files/plotly-binding-4.12.0/plotly.js diff --git a/docs/articles/plotting_files/plotly-htmlwidgets-css-2.11.1/plotly-htmlwidgets.css b/docs/articles/cohort_dynamics_and_diffusion_files/plotly-htmlwidgets-css-2.25.2/plotly-htmlwidgets.css similarity index 100% rename from docs/articles/plotting_files/plotly-htmlwidgets-css-2.11.1/plotly-htmlwidgets.css rename to docs/articles/cohort_dynamics_and_diffusion_files/plotly-htmlwidgets-css-2.25.2/plotly-htmlwidgets.css diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/plotly-main-2.25.2/plotly-latest.min.js b/docs/articles/cohort_dynamics_and_diffusion_files/plotly-main-2.25.2/plotly-latest.min.js new file mode 100644 index 000000000..9f88c0fde --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/plotly-main-2.25.2/plotly-latest.min.js @@ -0,0 +1,8 @@ +/** +* plotly.js v2.25.2 +* Copyright 2012-2025, Plotly, Inc. +* All rights reserved. +* Licensed under the MIT license +*/ +/*! For license information please see plotly.min.js.LICENSE.txt */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Plotly=e():t.Plotly=e()}(self,function(){return function(){var t={22:function(t,e,r){"use strict";t.exports={attributes:r(74349),layoutAttributes:r(13800),supplyDefaults:r(41562).supplyDefaults,crossTraceDefaults:r(41562).crossTraceDefaults,supplyLayoutDefaults:r(2463),calc:r(6561),crossTraceCalc:r(27050).crossTraceCalc,colorbar:r(23814),arraysToCalcdata:r(3970),plot:r(3095).plot,style:r(18095).style,styleOnSelect:r(18095).styleOnSelect,hoverPoints:r(19260).hoverPoints,eventData:r(71649),selectPoints:r(40668),moduleType:"trace",name:"bar",basePlotModule:r(29435),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}},134:function(t,e,r){"use strict";var n=r(5159),i=r(78945).BADNUM,a=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;t.exports=function(t){return"string"==typeof t&&(t=t.replace(a,"")),n(t)?Number(t):i}},348:function(t,e,r){"use strict";var n=r(16534),i=r(69562),a=r(54113),o=r(15181),s=o.strScale,l=o.strRotate,u=o.strTranslate;t.exports=function(t,e,r){var o,c,f,h,p=t.node(),d=a[r.arrowhead||0],v=a[r.startarrowhead||0],g=(r.arrowwidth||1)*(r.arrowsize||1),y=(r.arrowwidth||1)*(r.startarrowsize||1),m=e.indexOf("start")>=0,x=e.indexOf("end")>=0,b=d.backoff*g+r.standoff,_=v.backoff*y+r.startstandoff;if("line"===p.nodeName){o={x:+t.attr("x1"),y:+t.attr("y1")},c={x:+t.attr("x2"),y:+t.attr("y2")};var w=o.x-c.x,T=o.y-c.y;if(h=(f=Math.atan2(T,w))+Math.PI,b&&_&&b+_>Math.sqrt(w*w+T*T))return void D();if(b){if(b*b>w*w+T*T)return void D();var A=b*Math.cos(f),k=b*Math.sin(f);c.x+=A,c.y+=k,t.attr({x2:c.x,y2:c.y})}if(_){if(_*_>w*w+T*T)return void D();var M=_*Math.cos(f),S=_*Math.sin(f);o.x-=M,o.y-=S,t.attr({x1:o.x,y1:o.y})}}else if("path"===p.nodeName){var E=p.getTotalLength(),L="";if(E=t[1]||i[1]<=t[0])&&a[0]e[0])return!0}return!1}function _(t){var r,i,s,l,f,v,g=t._fullLayout,y=g._size,m=y.p,x=p.list(t,"",!0);if(g._paperdiv.style({width:t._context.responsive&&g.autosize&&!t._context._hasZeroWidth&&!t.layout.width?"100%":g.width+"px",height:t._context.responsive&&g.autosize&&!t._context._hasZeroHeight&&!t.layout.height?"100%":g.height+"px"}).selectAll(".main-svg").call(c.setSize,g.width,g.height),t._context.setBackground(t,g.paper_bgcolor),e.drawMainTitle(t),h.manage(t),!g._has("cartesian"))return a.previousPromises(t);function _(t,e,r){var n=t._lw/2;return"x"===t._id.charAt(0)?e?"top"===r?e._offset-m-n:e._offset+e._length+m+n:y.t+y.h*(1-(t.position||0))+n%1:e?"right"===r?e._offset+e._length+m+n:e._offset-m-n:y.l+y.w*(t.position||0)+n%1}for(r=0;r.5?"t":"b",o=t._fullLayout.margin[a],s=0;return"paper"===e.yref?s=r+e.pad.t+e.pad.b:"container"===e.yref&&(s=function(t,e,r,n,i){var a=0;return"middle"===r&&(a+=i/2),"t"===t?("top"===r&&(a+=i),a+=n-e*n):("bottom"===r&&(a+=i),a+=e*n),a}(a,n,i,t._fullLayout.height,r)+e.pad.t+e.pad.b),s>o?s:0}(t,r,g);y>0&&(function(t,e,r,n){var i="title.automargin",s=t._fullLayout.title,l=s.y>.5?"t":"b",u={x:s.x,y:s.y,t:0,b:0},c={};"paper"===s.yref&&function(t,e,r,n,i){var a="paper"===e.yref?t._fullLayout._size.h:t._fullLayout.height,s=o.isTopAnchor(e)?n:n-i,l="b"===r?a-s:s;return!(o.isTopAnchor(e)&&"t"===r||o.isBottomAnchor(e)&&"b"===r)&&l=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(h.c2p(t.x)-d);return a=Math.min(e,r)&&v<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.y)-v);return aW!=(N=D[O][1])>=W&&(R=D[O-1][0],F=D[O][0],N-B&&(z=R+(F-R)*(W-B)/(N-B),H=Math.min(H,z),q=Math.max(q,z)));H=Math.max(H,0),q=Math.min(q,h._length);var Z=s.defaultLine;return s.opacity(f.fillcolor)?Z=f.fillcolor:s.opacity((f.line||{}).color)&&(Z=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:W,y1:W,color:Z,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},639:function(t,e,r){"use strict";r.r(e);var n=2*Math.PI,i=function(t,e,r,n,i,a,o){var s=t.x,l=t.y;return{x:n*(s*=e)-i*(l*=r)+a,y:i*s+n*l+o}},a=function(t,e){var r=1.5707963267948966===e?.551915024494:-1.5707963267948966===e?-.551915024494:4/3*Math.tan(e/4),n=Math.cos(t),i=Math.sin(t),a=Math.cos(t+e),o=Math.sin(t+e);return[{x:n-i*r,y:i+n*r},{x:a+o*r,y:o-a*r},{x:a,y:o}]},o=function(t,e,r,n){var i=t*r+e*n;return i>1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};e.default=function(t){var e=t.px,r=t.py,s=t.cx,l=t.cy,u=t.rx,c=t.ry,f=t.xAxisRotation,h=void 0===f?0:f,p=t.largeArcFlag,d=void 0===p?0:p,v=t.sweepFlag,g=void 0===v?0:v,y=[];if(0===u||0===c)return[];var m=Math.sin(h*n/360),x=Math.cos(h*n/360),b=x*(e-s)/2+m*(r-l)/2,_=-m*(e-s)/2+x*(r-l)/2;if(0===b&&0===_)return[];u=Math.abs(u),c=Math.abs(c);var w=Math.pow(b,2)/Math.pow(u,2)+Math.pow(_,2)/Math.pow(c,2);w>1&&(u*=Math.sqrt(w),c*=Math.sqrt(w));var T=function(t,e,r,i,a,s,l,u,c,f,h,p){var d=Math.pow(a,2),v=Math.pow(s,2),g=Math.pow(h,2),y=Math.pow(p,2),m=d*v-d*y-v*g;m<0&&(m=0),m/=d*y+v*g;var x=(m=Math.sqrt(m)*(l===u?-1:1))*a/s*p,b=m*-s/a*h,_=f*x-c*b+(t+r)/2,w=c*x+f*b+(e+i)/2,T=(h-x)/a,A=(p-b)/s,k=(-h-x)/a,M=(-p-b)/s,S=o(1,0,T,A),E=o(T,A,k,M);return 0===u&&E>0&&(E-=n),1===u&&E<0&&(E+=n),[_,w,S,E]}(e,r,s,l,u,c,d,g,m,x,b,_),A=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,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(t){i=!0,a=t}finally{try{!n&&s.return&&s.return()}finally{if(i)throw a}}return r}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}(T,4),k=A[0],M=A[1],S=A[2],E=A[3],L=Math.abs(E)/(n/4);Math.abs(1-L)<1e-7&&(L=1);var C=Math.max(Math.ceil(L),1);E/=C;for(var P=0;Po.level||o.starts.length&&a===o.level)}break;case"constraint":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,u=-1/0,c=1/0;for(r=0;r":p>u&&(n.prefixBoundary=!0);break;case"<":(pu||n.starts.length&&h===c)&&(n.prefixBoundary=!0);break;case"][":f=Math.min(p[0],p[1]),h=Math.max(p[0],p[1]),fu&&(n.prefixBoundary=!0)}}}},879:function(t){"use strict";t.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},913:function(t){"use strict";function e(t){return 32===t||9===t||13===t||10===t}function r(t){return"number"==typeof t&&isFinite(t)&&t>0}var n=/<[-_.:a-zA-Z0-9][^>]*>/,i=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,a=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,o=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,s=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,l=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return l.test(t)?t.match(l)[0]:"px"}t.exports=function(t){if(function(t){var r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r-1}},1105:function(t,e,r){"use strict";var n=r(74697).hasColorscale,i=r(31751),a=r(3970),o=r(27050).setGroupPositions,s=r(64433),l=r(46982).traceIs,u=r(15181).extendFlat;t.exports={calc:function(t,e){for(var r=t._fullLayout,o=e.subplot,l=r[o].radialaxis,u=r[o].angularaxis,c=l.makeCalcdata(e,"r"),f=u.makeCalcdata(e,"theta"),h=e._length,p=new Array(h),d=c,v=f,g=0;gw,k=s.barLength+2*s.barPad,M=s.barWidth+2*s.barPad,S=d,E=g+y;E+M>u&&(E=u-M);var L=this.container.selectAll("rect.scrollbar-horizontal").data(A?[0]:[]);L.exit().on(".drag",null).remove(),L.enter().append("rect").classed("scrollbar-horizontal",!0).call(i.fill,s.barColor),A?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:k,height:M}),this._hbarXMin=S+k/2,this._hbarTranslateMax=w-k):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var C=y>T,P=s.barWidth+2*s.barPad,O=s.barLength+2*s.barPad,I=d+v,D=g;I+P>l&&(I=l-P);var z=this.container.selectAll("rect.scrollbar-vertical").data(C?[0]:[]);z.exit().on(".drag",null).remove(),z.enter().append("rect").classed("scrollbar-vertical",!0).call(i.fill,s.barColor),C?(this.vbar=z.attr({rx:s.barRadius,ry:s.barRadius,x:I,y:D,width:P,height:O}),this._vbarYMin=D+O/2,this._vbarTranslateMax=T-O):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=c-.5,B=C?f+P+.5:f+.5,N=h-.5,j=A?p+M+.5:p+.5,U=o._topdefs.selectAll("#"+R).data(A||C?[0]:[]);if(U.exit().remove(),U.enter().append("clipPath").attr("id",R).append("rect"),A||C?(this._clipRect=U.select("rect").attr({x:Math.floor(F),y:Math.floor(N),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(j)-Math.floor(N)}),this.container.call(a.setClipUrl,R,this.gd),this.bg.attr({x:d,y:g,width:v,height:y})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(a.setClipUrl,null),delete this._clipRect),A||C){var V=n.behavior.drag().on("dragstart",function(){n.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(V);var H=n.behavior.drag().on("dragstart",function(){n.event.sourceEvent.preventDefault(),n.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));A&&this.hbar.on(".drag",null).call(H),C&&this.vbar.on(".drag",null).call(H)}this.setTranslate(e,r)},s.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(a.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},s.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=n.event.dx),this.vbar&&(e-=n.event.dy),this.setTranslate(t,e)},s.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=n.event.deltaY),this.vbar&&(e+=n.event.deltaY),this.setTranslate(t,e)},s.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var r=t+this._hbarXMin,i=r+this._hbarTranslateMax;t=(o.constrain(n.event.x,r,i)-r)/(i-r)*(this.position.w-this._box.w)}if(this.vbar){var a=e+this._vbarYMin,s=a+this._vbarTranslateMax;e=(o.constrain(n.event.y,a,s)-a)/(s-a)*(this.position.h-this._box.h)}this.setTranslate(t,e)},s.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=o.constrain(t||0,0,r),e=o.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(a.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var i=t/r;this.hbar.call(a.setTranslate,t+i*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(a.setTranslate,t,e+s*this._vbarTranslateMax)}}},1798:function(t,e,r){"use strict";var n=r(20042),i=r(23276),a=r(79335),o=r(99012).axisHoverFormat,s=r(8357).extendFlat;t.exports=s({x:n.x,y:n.y,z:n.z,marker:n.marker,histnorm:n.histnorm,histfunc:n.histfunc,nbinsx:n.nbinsx,xbins:n.xbins,nbinsy:n.nbinsy,ybins:n.ybins,autobinx:n.autobinx,autobiny:n.autobiny,bingroup:n.bingroup,xbingroup:n.xbingroup,ybingroup:n.ybingroup,autocontour:i.autocontour,ncontours:i.ncontours,contours:i.contours,line:{color:i.line.color,width:s({},i.line.width,{dflt:.5}),dash:i.line.dash,smoothing:i.line.smoothing,editType:"plot"},xhoverformat:o("x"),yhoverformat:o("y"),zhoverformat:o("z",1),hovertemplate:n.hovertemplate,texttemplate:i.texttemplate,textfont:i.textfont},a("",{cLetter:"z",editTypeOverride:"calc"}))},1810:function(t,e,r){"use strict";var n=r(62290),i=r(37101).Dj,a=r(16534),o=r(14714),s=r(54485),l=r(43481),u=r(25623),c=r(69562),f=r(88191),h=r(15181),p=h.strTranslate,d=h.strRotate,v=r(51257),g=v.keyFun,y=v.repeat,m=v.unwrap,x=r(3071),b=r(46982),_=r(5126),w=_.CAP_SHIFT,T=_.LINE_SPACING;function A(t,e,r){var n,i=m(e),a=i.trace,c=a.domain,f="h"===a.orientation,p=a.node.pad,d=a.node.thickness,v=t.width*(c.x[1]-c.x[0]),g=t.height*(c.y[1]-c.y[0]),y=i._nodes,x=i._links,b=i.circular;(n=b?s.sankeyCircular().circularLinkGap(0):o.sankey()).iterations(l.sankeyIterations).size(f?[v,g]:[g,v]).nodeWidth(d).nodePadding(p).nodeId(function(t){return t.pointNumber}).nodes(y).links(x);var _,w,T,A=n();for(var k in n.nodePadding()o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i}(y=A.nodes).forEach(function(t){var e,r,n,i=0,a=t.length;for(t.sort(function(t,e){return t.y0-e.y0}),n=0;n=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+p}),n.update(A)}return{circular:b,key:r,trace:a,guid:h.randstr(),horizontal:f,width:v,height:g,nodePad:a.node.pad,nodeLineColor:a.node.line.color,nodeLineWidth:a.node.line.width,linkLineColor:a.link.line.color,linkLineWidth:a.link.line.width,linkArrowLength:a.link.arrowlen,valueFormat:a.valueformat,valueSuffix:a.valuesuffix,textFont:a.textfont,translateX:c.x[0]*t.width+t.margin.l,translateY:t.height-c.y[1]*t.height+t.margin.t,dragParallel:f?g:v,dragPerpendicular:f?v:g,arrangement:a.arrangement,sankey:n,graph:A,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function k(t,e,r){var n=u(e.color),i=e.source.label+"|"+e.target.label+"__"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:i,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:c.tinyRGB(n),tinyColorAlpha:n.getAlpha(),linkPath:M,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,linkArrowLength:t.linkArrowLength,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function M(){return function(t){var e=t.linkArrowLength;if(t.link.circular)return function(t,e){var r=t.width/2,n=t.circularPathData;return"top"===t.circularLinkType?"M "+(n.targetX-e)+" "+(n.targetY+r)+" L"+(n.rightInnerExtent-e)+" "+(n.targetY+r)+"A"+(n.rightLargeArcRadius+r)+" "+(n.rightSmallArcRadius+r)+" 0 0 1 "+(n.rightFullExtent-r-e)+" "+(n.targetY-n.rightSmallArcRadius)+"L"+(n.rightFullExtent-r-e)+" "+n.verticalRightInnerExtent+"A"+(n.rightLargeArcRadius+r)+" "+(n.rightLargeArcRadius+r)+" 0 0 1 "+(n.rightInnerExtent-e)+" "+(n.verticalFullExtent-r)+"L"+n.leftInnerExtent+" "+(n.verticalFullExtent-r)+"A"+(n.leftLargeArcRadius+r)+" "+(n.leftLargeArcRadius+r)+" 0 0 1 "+(n.leftFullExtent+r)+" "+n.verticalLeftInnerExtent+"L"+(n.leftFullExtent+r)+" "+(n.sourceY-n.leftSmallArcRadius)+"A"+(n.leftLargeArcRadius+r)+" "+(n.leftSmallArcRadius+r)+" 0 0 1 "+n.leftInnerExtent+" "+(n.sourceY+r)+"L"+n.sourceX+" "+(n.sourceY+r)+"L"+n.sourceX+" "+(n.sourceY-r)+"L"+n.leftInnerExtent+" "+(n.sourceY-r)+"A"+(n.leftLargeArcRadius-r)+" "+(n.leftSmallArcRadius-r)+" 0 0 0 "+(n.leftFullExtent-r)+" "+(n.sourceY-n.leftSmallArcRadius)+"L"+(n.leftFullExtent-r)+" "+n.verticalLeftInnerExtent+"A"+(n.leftLargeArcRadius-r)+" "+(n.leftLargeArcRadius-r)+" 0 0 0 "+n.leftInnerExtent+" "+(n.verticalFullExtent+r)+"L"+(n.rightInnerExtent-e)+" "+(n.verticalFullExtent+r)+"A"+(n.rightLargeArcRadius-r)+" "+(n.rightLargeArcRadius-r)+" 0 0 0 "+(n.rightFullExtent+r-e)+" "+n.verticalRightInnerExtent+"L"+(n.rightFullExtent+r-e)+" "+(n.targetY-n.rightSmallArcRadius)+"A"+(n.rightLargeArcRadius-r)+" "+(n.rightSmallArcRadius-r)+" 0 0 0 "+(n.rightInnerExtent-e)+" "+(n.targetY-r)+"L"+(n.targetX-e)+" "+(n.targetY-r)+(e>0?"L"+n.targetX+" "+n.targetY:"")+"Z":"M "+(n.targetX-e)+" "+(n.targetY-r)+" L"+(n.rightInnerExtent-e)+" "+(n.targetY-r)+"A"+(n.rightLargeArcRadius+r)+" "+(n.rightSmallArcRadius+r)+" 0 0 0 "+(n.rightFullExtent-r-e)+" "+(n.targetY+n.rightSmallArcRadius)+"L"+(n.rightFullExtent-r-e)+" "+n.verticalRightInnerExtent+"A"+(n.rightLargeArcRadius+r)+" "+(n.rightLargeArcRadius+r)+" 0 0 0 "+(n.rightInnerExtent-e)+" "+(n.verticalFullExtent+r)+"L"+n.leftInnerExtent+" "+(n.verticalFullExtent+r)+"A"+(n.leftLargeArcRadius+r)+" "+(n.leftLargeArcRadius+r)+" 0 0 0 "+(n.leftFullExtent+r)+" "+n.verticalLeftInnerExtent+"L"+(n.leftFullExtent+r)+" "+(n.sourceY+n.leftSmallArcRadius)+"A"+(n.leftLargeArcRadius+r)+" "+(n.leftSmallArcRadius+r)+" 0 0 0 "+n.leftInnerExtent+" "+(n.sourceY-r)+"L"+n.sourceX+" "+(n.sourceY-r)+"L"+n.sourceX+" "+(n.sourceY+r)+"L"+n.leftInnerExtent+" "+(n.sourceY+r)+"A"+(n.leftLargeArcRadius-r)+" "+(n.leftSmallArcRadius-r)+" 0 0 1 "+(n.leftFullExtent-r)+" "+(n.sourceY+n.leftSmallArcRadius)+"L"+(n.leftFullExtent-r)+" "+n.verticalLeftInnerExtent+"A"+(n.leftLargeArcRadius-r)+" "+(n.leftLargeArcRadius-r)+" 0 0 1 "+n.leftInnerExtent+" "+(n.verticalFullExtent-r)+"L"+(n.rightInnerExtent-e)+" "+(n.verticalFullExtent-r)+"A"+(n.rightLargeArcRadius-r)+" "+(n.rightLargeArcRadius-r)+" 0 0 1 "+(n.rightFullExtent+r-e)+" "+n.verticalRightInnerExtent+"L"+(n.rightFullExtent+r-e)+" "+(n.targetY+n.rightSmallArcRadius)+"A"+(n.rightLargeArcRadius-r)+" "+(n.rightSmallArcRadius-r)+" 0 0 1 "+(n.rightInnerExtent-e)+" "+(n.targetY+r)+"L"+(n.targetX-e)+" "+(n.targetY+r)+(e>0?"L"+n.targetX+" "+n.targetY:"")+"Z"}(t.link,e);var r=Math.abs((t.link.target.x0-t.link.source.x1)/2);e>r&&(e=r);var n=t.link.source.x1,a=t.link.target.x0-e,o=i(n,a),s=o(.5),l=o(.5),u=t.link.y0-t.link.width/2,c=t.link.y0+t.link.width/2,f=t.link.y1-t.link.width/2,h=t.link.y1+t.link.width/2,p="M"+n+","+u,d="C"+s+","+u+" "+l+","+f+" "+a+","+f,v="C"+l+","+h+" "+s+","+c+" "+n+","+c,g=e>0?"L"+(a+e)+","+(f+t.link.width/2):"";return p+d+(g+="L"+a+","+h)+v+"Z"}}function S(t,e){var r=u(e.color),n=l.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),s="node_"+e.pointNumber;return e.group&&(s=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:s,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:c.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,s].join("_"),interactionState:t.interactionState,figure:t}}function E(t){t.attr("transform",function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))})}function L(t){t.call(E)}function C(t,e){t.call(L),e.attr("d",M())}function P(t){t.attr("width",function(t){return t.node.x1-t.node.x0}).attr("height",function(t){return t.visibleHeight})}function O(t){return t.link.width>1||t.linkLineWidth>0}function I(t){return p(t.translateX,t.translateY)+(t.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function D(t,e,r){t.on(".basic",null).on("mouseover.basic",function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.hover(this,t,e),t.interactionState.hovered=[this,t])}).on("mousemove.basic",function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.follow(this,t),t.interactionState.hovered=[this,t])}).on("mouseout.basic",function(t){t.interactionState.dragInProgress||t.partOfGroup||(r.unhover(this,t,e),t.interactionState.hovered=!1)}).on("click.basic",function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),t.interactionState.dragInProgress||t.partOfGroup||r.select(this,t,e)})}function z(t,e,r,i){var o=a.behavior.drag().origin(function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}}).on("dragstart",function(a){if("fixed"!==a.arrangement&&(h.ensureSingle(i._fullLayout._infolayer,"g","dragcover",function(t){i._fullLayout._dragCover=t}),h.raiseToTop(this),a.interactionState.dragInProgress=a.node,F(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),"snap"===a.arrangement)){var o=a.traceId+"|"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):function(t,e,r){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,i,r)).stop()}(0,o,a),function(t,e,r,n,i){window.requestAnimationFrame(function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var s=r.node.originalX;r.node.x0=s-r.visibleWidth/2,r.node.x1=s+r.visibleWidth/2,R(r,i)}})}(t,e,a,o,i)}}).on("drag",function(r){if("fixed"!==r.arrangement){var n=a.event.x,i=a.event.y;"snap"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2):("freeform"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),i=Math.max(0,Math.min(r.size-r.visibleHeight/2,i)),r.node.y0=i-r.visibleHeight/2,r.node.y1=i+r.visibleHeight/2),F(r.node),"snap"!==r.arrangement&&(r.sankey.update(r.graph),C(t.filter(B(r)),e))}}).on("dragend",function(t){if("fixed"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;e0?(0,n.A)(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,r){e.setFullYear(e.getFullYear()+r*t)}):null},e.A=i;var a=i.range},2040:function(t){"use strict";t.exports=Math.min},2086:function(t,e,r){"use strict";var n=r(46982);t.exports=function(t,e){for(var r=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[r]||{}).dictionary;if(s){var l=s[e];if(l)return l}a=n.localeRegistry}var u=r.split("-")[0];if(u===r)break;r=u}return e}},2257:function(t,e,r){"use strict";var n=r(31751);t.exports=function(t,e){for(var r=e.u,i=e.v,a=e.w,o=Math.min(e.x.length,e.y.length,e.z.length,r.length,i.length,a.length),s=-1/0,l=1/0,u=0;u")),c.color=function(t,e){var r=t[e.dir].marker,n=r.color,a=r.line.color,o=r.line.width;return i(n)?n:i(a)&&o?a:void 0}(h,g),[c]}function A(t){return n(v,t,h[d+"hoverformat"])}}},2290:function(t,e,r){"use strict";var n=r(16534),i=r(96221),a=r(37101).GW,o=r(88191),s=r(15181),l=r(3071),u=r(70394),c=u.recordMinTextSize,f=u.clearMinTextSize,h=r(98354),p=r(10088).getRotationAngle,d=h.computeTransform,v=h.transformInsideText,g=r(50928).styleOne,y=r(18095).resizeText,m=r(96303),x=r(23748),b=r(95304);function _(t,r,u,f){var h=t._context.staticPlot,y=t._fullLayout,_=!y.uniformtext.mode&&b.hasTransition(f),T=n.select(u).selectAll("g.slice"),A=r[0],k=A.trace,M=A.hierarchy,S=b.findEntryWithLevel(M,k.level),E=b.getMaxDepth(k),L=y._size,C=k.domain,P=L.w*(C.x[1]-C.x[0]),O=L.h*(C.y[1]-C.y[0]),I=.5*Math.min(P,O),D=A.cx=L.l+L.w*(C.x[1]+C.x[0])/2,z=A.cy=L.t+L.h*(1-C.y[0])-O/2;if(!S)return T.remove();var R=null,F={};_&&T.each(function(t){F[b.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!R&&b.isEntry(t)&&(R=t)});var B=function(t){return i.partition().size([2*Math.PI,t.height+1])(t)}(S).descendants(),N=S.height+1,j=0,U=E;A.hasMultipleRoots&&b.isHierarchyRoot(S)&&(B=B.slice(1),N-=1,j=1,U+=1),B=B.filter(function(t){return t.y1<=U});var V=p(k.rotation);V&&B.forEach(function(t){t.x0+=V,t.x1+=V});var H=Math.min(N,E),q=function(t){return(t-j)/H*I},G=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},Y=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,D,z)},W=function(t){return D+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},Z=function(t){return z+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(T=T.data(B,b.getPtId)).enter().append("g").classed("slice",!0),_?T.exit().transition().each(function(){var t=n.select(this);t.select("path.surface").transition().attrTween("d",function(t){var e=function(t){var e,r=b.getPtId(t),n=F[r],i=F[b.getPtId(S)];if(i){var o=(t.x1>i.x1?2*Math.PI:0)+V;e=t.rpx1X?2*Math.PI:0)+V;e={x0:i,x1:i}}else e={rpx0:I,rpx1:I},s.extendFlat(e,$(t));else e={rpx0:0,rpx1:0};else e={x0:V,x1:V};return a(e,n)}(t);return function(t){return Y(e(t))}}):f.attr("d",Y),u.call(m,S,t,r,{eventDataKeys:x.eventDataKeys,transitionTime:x.CLICK_TRANSITION_TIME,transitionEasing:x.CLICK_TRANSITION_EASING}).call(b.setSliceCursor,t,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:t._transitioning}),f.call(g,i,k,t);var p=s.ensureSingle(u,"g","slicetext"),w=s.ensureSingle(p,"text","",function(t){t.attr("data-notex",1)}),T=s.ensureUniformFontSize(t,b.determineTextFont(k,i,y.font));w.text(e.formatSliceLabel(i,S,k,r,y)).classed("slicetext",!0).attr("text-anchor","middle").call(o.font,T).call(l.convertToTspans,t);var M=o.bBox(w.node());i.transform=v(M,i,A),i.transform.targetX=W(i),i.transform.targetY=Z(i);var E=function(t,e){var r=t.transform;return d(r,e),r.fontSize=T.size,c(k.type,r,y),s.getTextTransform(r)};_?w.transition().attrTween("transform",function(t){var e=function(t){var e,r=F[b.getPtId(t)],n=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:n.textPosAngle,scale:0,rotate:n.rotate,rCenter:n.rCenter,x:n.x,y:n.y}},R)if(t.parent)if(X){var i=t.x1>X?2*Math.PI:0;e.x0=e.x1=i}else s.extendFlat(e,$(t));else e.x0=e.x1=V;else e.x0=e.x1=V;var o=a(e.transform.textPosAngle,t.transform.textPosAngle),l=a(e.rpx1,t.rpx1),u=a(e.x0,t.x0),f=a(e.x1,t.x1),h=a(e.transform.scale,n.scale),p=a(e.transform.rotate,n.rotate),d=0===n.rCenter?3:0===e.transform.rCenter?1/3:1,v=a(e.transform.rCenter,n.rCenter);return function(t){var e=l(t),r=u(t),i=f(t),a=function(t){return v(Math.pow(t,d))}(t),s={pxmid:G(e,(r+i)/2),rpx1:e,transform:{textPosAngle:o(t),rCenter:a,x:n.x,y:n.y}};return c(k.type,n,y),{transform:{targetX:W(s),targetY:Z(s),scale:h(t),rotate:p(t),rCenter:a}}}}(t);return function(t){return E(e(t),M)}}):w.attr("transform",E(i,M))})}function w(t){return e=t.rpx1,r=t.transform.textPosAngle,[e*Math.sin(r),-e*Math.cos(r)];var e,r}e.plot=function(t,e,r,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,u=!r,c=!s.uniformtext.mode&&b.hasTransition(r);f("sunburst",s),(a=l.selectAll("g.trace.sunburst").data(e,function(t){return t[0].trace.uid})).enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),a.order(),c?(i&&(o=i()),n.transition().duration(r.duration).ease(r.easing).each("end",function(){o&&o()}).each("interrupt",function(){o&&o()}).each(function(){l.selectAll("g.trace").each(function(e){_(t,e,this,r)})})):(a.each(function(e){_(t,e,this,r)}),s.uniformtext.mode&&y(t,s._sunburstlayer.selectAll(".trace"),"sunburst")),u&&a.exit().remove()},e.formatSliceLabel=function(t,e,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!(a||o&&"none"!==o))return"";var l=i.separators,u=n[0],c=t.data.data,f=u.hierarchy,h=b.isHierarchyRoot(t),p=b.getParent(f,t),d=b.getValue(t);if(!a){var v,g=o.split("+"),y=function(t){return-1!==g.indexOf(t)},m=[];if(y("label")&&c.label&&m.push(c.label),c.hasOwnProperty("v")&&y("value")&&m.push(b.formatValue(c.v,l)),!h){y("current path")&&m.push(b.getPath(t.data));var x=0;y("percent parent")&&x++,y("percent entry")&&x++,y("percent root")&&x++;var _=x>1;if(x){var w,T=function(t){v=b.formatPercent(w,l),_&&(v+=" of "+t),m.push(v)};y("percent parent")&&!h&&(w=d/b.getValue(p),T("parent")),y("percent entry")&&(w=d/b.getValue(e),T("entry")),y("percent root")&&(w=d/b.getValue(f),T("root"))}}return y("text")&&(v=s.castOption(r,c.i,"text"),s.isValidTextValue(v)&&m.push(v)),m.join("
    ")}var A=s.castOption(r,c.i,"texttemplate");if(!A)return"";var k={};c.label&&(k.label=c.label),c.hasOwnProperty("v")&&(k.value=c.v,k.valueLabel=b.formatValue(c.v,l)),k.currentPath=b.getPath(t.data),h||(k.percentParent=d/b.getValue(p),k.percentParentLabel=b.formatPercent(k.percentParent,l),k.parent=b.getPtLabel(p)),k.percentEntry=d/b.getValue(e),k.percentEntryLabel=b.formatPercent(k.percentEntry,l),k.entry=b.getPtLabel(e),k.percentRoot=d/b.getValue(f),k.percentRootLabel=b.formatPercent(k.percentRoot,l),k.root=b.getPtLabel(f),c.hasOwnProperty("color")&&(k.color=c.color);var M=s.castOption(r,c.i,"text");return(s.isValidTextValue(M)||""===M)&&(k.text=M),k.customdata=s.castOption(r,c.i,"customdata"),s.texttemplateString(A,k,i._d3locale,k,r._meta||{})}},2362:function(t){"use strict";t.exports=JSON.parse('["normal","condensed","semi-condensed","extra-condensed","ultra-condensed","expanded","semi-expanded","extra-expanded","ultra-expanded"]')},2378:function(t,e,r){"use strict";var n=r(6624);e._doPlot=n._doPlot,e.newPlot=n.newPlot,e.restyle=n.restyle,e.relayout=n.relayout,e.redraw=n.redraw,e.update=n.update,e._guiRestyle=n._guiRestyle,e._guiRelayout=n._guiRelayout,e._guiUpdate=n._guiUpdate,e._storeDirectGUIEdit=n._storeDirectGUIEdit,e.react=n.react,e.extendTraces=n.extendTraces,e.prependTraces=n.prependTraces,e.addTraces=n.addTraces,e.deleteTraces=n.deleteTraces,e.moveTraces=n.moveTraces,e.purge=n.purge,e.addFrames=n.addFrames,e.deleteFrames=n.deleteFrames,e.animate=n.animate,e.setPlotConfig=n.setPlotConfig;var i=r(72565).getGraphDiv,a=r(87099).eraseActiveShape;e.deleteActiveShape=function(t){return a(i(t))},e.toImage=r(25103),e.validate=r(51326),e.downloadImage=r(68552);var o=r(46745);e.makeTemplate=o.makeTemplate,e.validateTemplate=o.validateTemplate},2463:function(t,e,r){"use strict";var n=r(46982),i=r(26446),a=r(15181),o=r(13800);t.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,u=!1,c=!1,f={},h=s("barmode"),p=0;pl&&C[y].gap;)y--;for(x=C[y].s,v=C.length-1;v>y;v--)C[v].s=x;for(;lu||v>c)&&(s.style("overflow","hidden"),d=(p=s.node().getBoundingClientRect()).width,v=p.height);var y=+t.attr("x"),m=+t.attr("y"),x=-(r||t.node().getBoundingClientRect().height)/4;if("y"===O[0])l.attr({transform:"rotate("+[-90,y,m]+")"+a(-d/2,x-v/2)});else if("l"===O[0])m=x-v/2;else if("a"===O[0]&&0!==O.indexOf("atitle"))y=0,m=x;else{var b=t.attr("text-anchor");y-=d*("middle"===b?.5:"end"===b?1:0),m=m+x-v/2}s.attr({x:y,y:m}),g&&g.call(t,l),e(l)})})):I(),t}function I(){P.empty()||(O=t.attr("class")+"-math",P.select("svg."+O).remove()),t.text("").style("white-space","pre");var r=function(t,e){e=e.replace(y," ");var r,a=!1,l=[],u=-1;function c(){u++;var e=document.createElementNS(o.svg,"tspan");n.select(e).attr({class:"line",dy:u*s+"em"}),t.appendChild(e),r=e;var i=l;if(l=[{node:e}],i.length>1)for(var a=1;a doesnt match end tag <"+t+">. Pretending it did match.",e),r=l[l.length-1].node}else i.log("Ignoring unexpected end tag .",e)}b.test(e)?c():(r=t,l=[{node:t}]);for(var E=e.split(m),P=0;P|>|>)/g,f=[["$","$"],["\\(","\\)"]],h={sup:"font-size:70%",sub:"font-size:70%",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},p={sub:"0.3em",sup:"-0.6em"},d={sub:"-0.21em",sup:"0.42em"},v="​",g=["http:","https:","mailto:","",void 0,":"],y=e.NEWLINES=/(\r\n?|\n)/g,m=/(<[^<>]*>)/,x=/<(\/?)([^ >]*)(\s+(.*))?>/i,b=//i;e.BR_TAG_ALL=//gi;var _=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,w=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,T=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,A=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function k(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&L(n)}var M=/(^|;)\s*color:/;e.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:["br"],i=t.split(m),a=[],o="",s=0,l=0;l3?a.push(u.substr(0,p-3)+"..."):a.push(u.substr(0,p));break}o=""}}return a.join("")};var S={mu:"μ",amp:"&",lt:"<",gt:">",nbsp:" ",times:"×",plusmn:"±",deg:"°"},E=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function L(t){return t.replace(E,function(t,e){return("#"===e.charAt(0)?function(t){if(!(t>1114111)){var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}}("x"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):S[e])||t})}function C(t){var e=encodeURI(decodeURI(t)),r=document.createElement("a"),n=document.createElement("a");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==g.indexOf(i)&&-1!==g.indexOf(a)?e:""}function P(t,e,r){var n,a,o,s=r.horizontalAlign,l=r.verticalAlign||"top",u=t.node().getBoundingClientRect(),c=e.node().getBoundingClientRect();return a="bottom"===l?function(){return u.bottom-n.height}:"middle"===l?function(){return u.top+(u.height-n.height)/2}:function(){return u.top},o="right"===s?function(){return u.right-n.width}:"center"===s?function(){return u.left+(u.width-n.width)/2}:function(){return u.left},function(){n=this.node().getBoundingClientRect();var t=o()-c.left,e=a()-c.top,s=r.gd||{};if(r.gd){s._fullLayout._calcInverseTransform(s);var l=i.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+"px",left:t+"px","z-index":1e3}),this}}e.convertEntities=L,e.sanitizeHTML=function(t){t=t.replace(y," ");for(var e=document.createElement("p"),r=e,i=[],a=t.split(m),o=0;o0}function S(t){return"auto"===t?0:t}function E(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=a.anchor||"end",c="end"===u,f="start"===u,h=((a.leftToRight||0)+1)/2,p=1-h,d=i.width,v=i.height,g=Math.abs(e-t),y=Math.abs(n-r),m=g>2*_&&y>2*_?_:0;g-=2*m,y-=2*m;var x=S(l);"auto"!==l||d<=g&&v<=y||!(d>g||v>y)||(d>y||v>g)&&d.01?G:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?G(t):t>e?Math.ceil(t):Math.floor(t)};N=Y(N,j,R),j=Y(j,N,R),U=Y(U,V,!R),V=Y(V,U,!R)}var W=k(a.ensureSingle(I,"path"),P,g,y);if(W.style("vector-effect",O?"none":"non-scaling-stroke").attr("d",isNaN((j-N)*(V-U))||H&&t._context.staticPlot?"M0,0Z":"M"+N+","+U+"V"+V+"H"+j+"V"+U+"Z").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&F){var Z=l.makePointStyleFns(f);l.singlePointStyle(u,W,f,Z,t)}!function(t,e,r,n,i,s,u,f,p,g,y){var w,T=e.xaxis,M=e.yaxis,C=t._fullLayout;function P(e,r,n){return a.ensureSingle(e,"text").text(r).attr({class:"bartext bartext-"+w,"text-anchor":"middle","data-notex":1}).call(l.font,n).call(o.convertToTspans,t)}var O=n[0].trace,I="h"===O.orientation,D=function(t,e,r,n,i){var o,s=e[0].trace;return o=s.texttemplate?function(t,e,r,n,i){var o=e[0].trace,s=a.castOption(o,r,"texttemplate");if(!s)return"";var l,u,f,h,p="histogram"===o.type,d="waterfall"===o.type,v="funnel"===o.type,g="h"===o.orientation;function y(t){return c(h,h.c2l(t),!0).text}g?(l="y",u=i,f="x",h=n):(l="x",u=n,f="y",h=i);var m,x=e[r],_={};_.label=x.p,_.labelLabel=_[l+"Label"]=(m=x.p,c(u,u.c2l(m),!0).text);var w=a.castOption(o,x.i,"text");(0===w||w)&&(_.text=w),_.value=x.s,_.valueLabel=_[f+"Label"]=y(x.s);var T={};b(T,o,x.i),(p||void 0===T.x)&&(T.x=g?_.value:_.label),(p||void 0===T.y)&&(T.y=g?_.label:_.value),(p||void 0===T.xLabel)&&(T.xLabel=g?_.valueLabel:_.labelLabel),(p||void 0===T.yLabel)&&(T.yLabel=g?_.labelLabel:_.valueLabel),d&&(_.delta=+x.rawS||x.s,_.deltaLabel=y(_.delta),_.final=x.v,_.finalLabel=y(_.final),_.initial=_.final-_.delta,_.initialLabel=y(_.initial)),v&&(_.value=x.s,_.valueLabel=y(_.value),_.percentInitial=x.begR,_.percentInitialLabel=a.formatPercent(x.begR),_.percentPrevious=x.difR,_.percentPreviousLabel=a.formatPercent(x.difR),_.percentTotal=x.sumR,_.percenTotalLabel=a.formatPercent(x.sumR));var A=a.castOption(o,x.i,"customdata");return A&&(_.customdata=A),a.texttemplateString(s,_,t._d3locale,T,_,o._meta||{})}(t,e,r,n,i):s.textinfo?function(t,e,r,n){var i=t[0].trace,o="h"===i.orientation,s="waterfall"===i.type,l="funnel"===i.type;function u(t){return c(o?r:n,+t,!0).text}var f,h,p=i.textinfo,d=t[e],v=p.split("+"),g=[],y=function(t){return-1!==v.indexOf(t)};if(y("label")&&g.push((h=t[e].p,c(o?n:r,h,!0).text)),y("text")&&(0===(f=a.castOption(i,d.i,"text"))||f)&&g.push(f),s){var m=+d.rawS||d.s,x=d.v,b=x-m;y("initial")&&g.push(u(b)),y("delta")&&g.push(u(m)),y("final")&&g.push(u(x))}if(l){y("value")&&g.push(u(d.s));var _=0;y("percent initial")&&_++,y("percent previous")&&_++,y("percent total")&&_++;var w=_>1;y("percent initial")&&(f=a.formatPercent(d.begR),w&&(f+=" of initial"),g.push(f)),y("percent previous")&&(f=a.formatPercent(d.difR),w&&(f+=" of previous"),g.push(f)),y("percent total")&&(f=a.formatPercent(d.sumR),w&&(f+=" of total"),g.push(f))}return g.join("
    ")}(e,r,n,i):v.getValue(s.text,r),v.coerceString(m,o)}(C,n,i,T,M);w=function(t,e){var r=v.getValue(t.textposition,e);return v.coerceEnumerated(x,r)}(O,i);var z="stack"===g.mode||"relative"===g.mode,R=n[i],F=!z||R._outmost;if(D&&"none"!==w&&(!R.isBlank&&s!==u&&f!==p||"auto"!==w&&"inside"!==w)){var B=C.font,N=d.getBarColor(n[i],O),j=d.getInsideTextFont(O,i,B,N),U=d.getOutsideTextFont(O,i,B),V=r.datum();I?"log"===T.type&&V.s0<=0&&(s=T.range[0]0&&Y>0&&(G<=Z&&Y<=X||G<=X&&Y<=Z||(I?Z>=G*(X/Y):X>=Y*(Z/G)))?w="inside":(w="outside",H.remove(),H=null)):w="inside"),!H){var J=(H=P(r,D,W=a.ensureUniformFontSize(t,"outside"===w?U:j))).attr("transform");if(H.attr("transform",""),G=(q=l.bBox(H.node())).width,Y=q.height,H.attr("transform",J),G<=0||Y<=0)return void H.remove()}var K,$=O.textangle;K="outside"===w?function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,u=a.angle||0,c=i.width,f=i.height,h=Math.abs(e-t),p=Math.abs(n-r);o=s?p>2*_?_:0:h>2*_?_:0;var d=1;l&&(d=s?Math.min(1,p/f):Math.min(1,h/c));var v=S(u),g=E(i,v),y=(s?g.x:g.y)/2,m=(i.left+i.right)/2,x=(i.top+i.bottom)/2,b=(t+e)/2,w=(r+n)/2,T=0,k=0,M=s?A(e,t):A(r,n);return s?(b=e-M*o,T=M*y):(w=n+M*o,k=-M*y),{textX:m,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:k,scale:d,rotate:v}}(s,u,f,p,q,{isHorizontal:I,constrained:"both"===O.constraintext||"outside"===O.constraintext,angle:$}):L(s,u,f,p,q,{isHorizontal:I,constrained:"both"===O.constraintext||"inside"===O.constraintext,angle:$,anchor:O.insidetextanchor}),K.fontSize=W.size,h("histogram"===O.type?"bar":O.type,K,C),R.transform=K;var Q=k(H,C,g,y);a.setTransormAndDisplay(Q,K)}else r.select("text").remove()}(t,e,I,r,p,N,j,U,V,g,y),e.layerClipId&&l.hideOutsideRangePoint(u,I.select("text"),w,C,f.xcalendar,f.ycalendar)});var U=!1===f.cliponaxis;l.setClipUrl(u,U?null:e.layerClipId,t)});u.getComponentMethod("errorbars","plot")(t,I,e,g)},toMoveInsideBar:L}},3115:function(t,e,r){"use strict";var n=r(15181),i=r(40243),a=r(93003).id2name,o=r(94257),s=r(44559),l=r(18687),u=r(78945).ALMOST_EQUAL,c=r(5126).FROM_BL;function f(t,e,r){var i=r.axIds,s=r.layoutOut,l=r.hasImage,u=s._axisConstraintGroups,c=s._axisMatchGroups,f=e._id,v=f.charAt(0),g=((s._splomAxes||{})[v]||{})[f]||{},y=e._id,m="x"===y.charAt(0);function x(r,i){return n.coerce(t,e,o,r,i)}e._matchGroup=null,e._constraintGroup=null,x("constrain",l?"domain":"range"),n.coerce(t,e,{constraintoward:{valType:"enumerated",values:m?["left","center","right"]:["bottom","middle","top"],dflt:m?"center":"middle"}},"constraintoward");var b,_,w=e.type,T=[];for(b=0;bn?i.substr(n):a.substr(r))+o:i+a+t*e:o}function g(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;ou*x)||T)for(r=0;rI&&FP&&(P=F);h/=(P-C)/(2*O),C=l.l2r(C),P=l.l2r(P),l.range=l._input.range=S=0;i--)a[c-i]=t[f][i],o[c-i]=e[f][i];for(s.push({x:a,y:o,bicubic:l}),i=f,a=[],o=[];i>=0;i--)a[f-i]=t[i][0],o[f-i]=e[i][0];return s.push({x:a,y:o,bicubic:u}),s}},3539:function(t,e,r){"use strict";t.exports=r(96180)},3658:function(t,e,r){"use strict";var n=r(26446);t.exports=function(t,e,r){var i={},a={_fullLayout:r},o=n.getFromTrace(a,e,"x"),s=n.getFromTrace(a,e,"y"),l=t.orig_x;void 0===l&&(l=t.x);var u=t.orig_y;return void 0===u&&(u=t.y),i.xLabel=n.tickText(o,o.c2l(l),!0).text,i.yLabel=n.tickText(s,s.c2l(u),!0).text,i}},3970:function(t,e,r){"use strict";var n=r(15181);t.exports=function(t,e){for(var r=0;rE*b?i=(a=b)*E:a=(i=x)/E,o=y*i/x,l=m*a/b,r=e.l+e.w*v-i/2,n=e.t+e.h*(1-g)-a/2,p.x0=r,p.y0=n,p.w=i,p.h=a,p.sum=_,p.xaxis={type:"linear",range:[w+2*A-_,_-w-2*T],domain:[v-o/2,v+o/2],_id:"x"},f(p.xaxis,p.graphDiv._fullLayout),p.xaxis.setScale(),p.xaxis.isPtWithinRange=function(t){return t.a>=p.aaxis.range[0]&&t.a<=p.aaxis.range[1]&&t.b>=p.baxis.range[1]&&t.b<=p.baxis.range[0]&&t.c>=p.caxis.range[1]&&t.c<=p.caxis.range[0]},p.yaxis={type:"linear",range:[w,_-T-A],domain:[g-l/2,g+l/2],_id:"y"},f(p.yaxis,p.graphDiv._fullLayout),p.yaxis.setScale(),p.yaxis.isPtWithinRange=function(){return!0};var k=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-A],side:"left",tickangle:(+t.aaxis.tickangle||0)-30,domain:[k,k+l*E],anchor:"free",position:0,_id:"y",_length:i});f(M,p.graphDiv._fullLayout),M.setScale();var S=p.baxis=h({},t.baxis,{range:[_-w-A,T],side:"bottom",domain:p.xaxis.domain,anchor:"free",position:0,_id:"x",_length:i});f(S,p.graphDiv._fullLayout),S.setScale();var L=p.caxis=h({},t.caxis,{range:[_-w-T,A],side:"right",tickangle:(+t.caxis.tickangle||0)+30,domain:[k,k+l*E],anchor:"free",position:0,_id:"y",_length:i});f(L,p.graphDiv._fullLayout),L.setScale();var C="M"+r+","+(n+a)+"h"+i+"l-"+i/2+",-"+a+"Z";p.clipDef.select("path").attr("d",C),p.layers.plotbg.select("path").attr("d",C);var P="M0,"+a+"h"+i+"l-"+i/2+",-"+a+"Z";p.clipDefRelative.select("path").attr("d",P);var O=s(r,n);p.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",O),p.clipDefRelative.select("path").attr("transform",null);var I=s(r-S._offset,n+a);p.layers.baxis.attr("transform",I),p.layers.bgrid.attr("transform",I);var D=s(r+i/2,n)+"rotate(30)"+s(0,-M._offset);p.layers.aaxis.attr("transform",D),p.layers.agrid.attr("transform",D);var z=s(r+i/2,n)+"rotate(-30)"+s(0,-L._offset);p.layers.caxis.attr("transform",z),p.layers.cgrid.attr("transform",z),p.drawAxes(!0),p.layers.aline.select("path").attr("d",M.showline?"M"+r+","+(n+a)+"l"+i/2+",-"+a:"M0,0").call(u.stroke,M.linecolor||"#000").style("stroke-width",(M.linewidth||0)+"px"),p.layers.bline.select("path").attr("d",S.showline?"M"+r+","+(n+a)+"h"+i:"M0,0").call(u.stroke,S.linecolor||"#000").style("stroke-width",(S.linewidth||0)+"px"),p.layers.cline.select("path").attr("d",L.showline?"M"+(r+i/2)+","+n+"l"+i/2+","+a:"M0,0").call(u.stroke,L.linecolor||"#000").style("stroke-width",(L.linewidth||0)+"px"),p.graphDiv._context.staticPlot||p.initInteractions(),c.setClipUrl(p.layers.frontplot,p._hasClipOnAxisFalse?null:p.clipId,p.graphDiv)},S.drawAxes=function(t){var e=this,r=e.graphDiv,n=e.id.substr(7)+"title",i=e.layers,a=e.aaxis,o=e.baxis,s=e.caxis;if(e.drawAx(a),e.drawAx(o),e.drawAx(s),t){var u=Math.max(a.showticklabels?a.tickfont.size/2:0,(s.showticklabels?.75*s.tickfont.size:0)+("outside"===s.ticks?.87*s.ticklen:0)),c=(o.showticklabels?o.tickfont.size:0)+("outside"===o.ticks?o.ticklen:0)+3;i["a-title"]=b.draw(r,"a"+n,{propContainer:a,propName:e.id+".aaxis.title",placeholder:l(r,"Click to enter Component A title"),attributes:{x:e.x0+e.w/2,y:e.y0-a.title.font.size/3-u,"text-anchor":"middle"}}),i["b-title"]=b.draw(r,"b"+n,{propContainer:o,propName:e.id+".baxis.title",placeholder:l(r,"Click to enter Component B title"),attributes:{x:e.x0-c,y:e.y0+e.h+.83*o.title.font.size+c,"text-anchor":"middle"}}),i["c-title"]=b.draw(r,"c"+n,{propContainer:s,propName:e.id+".caxis.title",placeholder:l(r,"Click to enter Component C title"),attributes:{x:e.x0+e.w+c,y:e.y0+e.h+.83*s.title.font.size+c,"text-anchor":"middle"}})}},S.drawAx=function(t){var e,r=this,n=r.graphDiv,i=t._name,a=i.charAt(0),s=t._id,l=r.layers[i],u=a+"tickLayout",c=(e=t).ticks+String(e.ticklen)+String(e.showticklabels);r[u]!==c&&(l.selectAll("."+s+"tick").remove(),r[u]=c),t.setScale();var f=d.calcTicks(t),h=d.clipEnds(t,f),p=d.makeTransTickFn(t),v=d.getTickSigns(t)[2],g=o.deg2rad(30),y=v*(t.linewidth||1)/2,m=v*t.ticklen,x=r.w,b=r.h,_="b"===a?"M0,"+y+"l"+Math.sin(g)*m+","+Math.cos(g)*m:"M"+y+",0l"+Math.cos(g)*m+","+-Math.sin(g)*m,w={a:"M0,0l"+b+",-"+x/2,b:"M0,0l-"+x/2+",-"+b,c:"M0,0l-"+b+","+x/2}[a];d.drawTicks(n,t,{vals:"inside"===t.ticks?h:f,layer:l,path:_,transFn:p,crisp:!1}),d.drawGrid(n,t,{vals:h,layer:r.layers[a+"grid"],path:w,transFn:p,crisp:!1}),d.drawLabels(n,t,{vals:f,layer:l,transFn:p,labelFns:d.makeLabelFns(t,0,30)})};var L=k.MINZOOM/2+.87,C="m-0.87,.5h"+L+"v3h-"+(L+5.2)+"l"+(L/2+2.6)+",-"+(.87*L+4.5)+"l2.6,1.5l-"+L/2+","+.87*L+"Z",P="m0.87,.5h-"+L+"v3h"+(L+5.2)+"l-"+(L/2+2.6)+",-"+(.87*L+4.5)+"l-2.6,1.5l"+L/2+","+.87*L+"Z",O="m0,1l"+L/2+","+.87*L+"l2.6,-1.5l-"+(L/2+2.6)+",-"+(.87*L+4.5)+"l-"+(L/2+2.6)+","+(.87*L+4.5)+"l2.6,1.5l"+L/2+",-"+.87*L+"Z",I=!0;function D(t){n.select(t).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}S.clearOutline=function(){A(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,y,b,T,A,M=this,S=M.layers.plotbg.select("path").node(),L=M.graphDiv,z=L._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+".aaxis.min"]=t.a,e[M.id+".baxis.min"]=t.b,e[M.id+".caxis.min"]=t.c,e}function F(t,e){var r=L._fullLayout.clickmode;D(L),2===t&&(L.emit("plotly_doubleclick",null),a.call("_guiRelayout",L,R({a:0,b:0,c:0}))),r.indexOf("select")>-1&&1===t&&w(e,L,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf("event")>-1&&g.click(L,e,M.id)}function B(t,e){return 1-e/M.h}function N(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function j(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(i,a){var o=r+i*t,s=n+a*e,l=Math.max(0,Math.min(1,B(0,n),B(0,s))),u=Math.max(0,Math.min(1,N(r,n),N(o,s))),c=Math.max(0,Math.min(1,j(r,n),j(o,s))),v=(l/2+c)*M.w,g=(1-l/2-u)*M.w,m=(v+g)/2,x=g-v,_=(1-l)*M.h,w=_-x/E;x.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),A.transition().style("opacity",1).duration(200),b=!0),L.emit("plotly_relayouting",R(p))}function V(){D(L),p!==f&&(a.call("_guiRelayout",L,R(p)),I&&L.data&&L._context.showTips&&(o.notifier(l(L,"Double-click to zoom back out"),"long"),I=!1))}function H(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(p={a:f.a-n,b:f.b+(r+n)/2,c:f.c-(r-n)/2}).a,p.b,p.c].sort(o.sorterAsc),a=i.indexOf(p.a),l=i.indexOf(p.b),u=i.indexOf(p.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),p={a:i[a],b:i[l],c:i[u]},e=(f.a-p.a)*M.yaxis._m,t=(f.c-p.c-f.b+p.b)*M.xaxis._m);var h=s(M.x0+t,M.y0+e);M.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",h);var d=s(-t,-e);M.clipDefRelative.select("path").attr("transform",d),M.aaxis.range=[p.a,M.sum-p.b-p.c],M.baxis.range=[M.sum-p.a-p.c,p.b],M.caxis.range=[M.sum-p.a-p.b,p.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(".scatterlayer").selectAll(".trace").call(c.hideOutsideRangePoints,M),L.emit("plotly_relayouting",R(p))}function q(){a.call("_guiRelayout",L,R(p))}this.dragOptions={element:S,gd:L,plotinfo:{id:M.id,domain:L._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(a,l,c){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=L._fullLayout._invScaleX,e=L._fullLayout._invScaleY;var v=M.dragOptions.dragmode=L._fullLayout.dragmode;m(v)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,"zoom"===v?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,a){var l=S.getBoundingClientRect();r=e-l.left,n=a-l.top,L._fullLayout._calcInverseTransform(L);var c=L._fullLayout._invTransform,v=o.apply3DTransform(c)(r,n);r=v[0],n=v[1],f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,h=M.aaxis.range[1]-f.a,d=i(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),y="M0,"+M.h+"L"+M.w/2+", 0L"+M.w+","+M.h+"Z",b=!1,T=z.append("path").attr("class","zoombox").attr("transform",s(M.x0,M.y0)).style({fill:d>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",y),A=z.append("path").attr("class","zoombox-corners").attr("transform",s(M.x0,M.y0)).style({fill:u.background,stroke:u.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),M.clearOutline(L)}(0,l,c)):"pan"===v?(M.dragOptions.moveFn=H,M.dragOptions.clickFn=F,M.dragOptions.doneFn=q,f={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},p=f,M.clearOutline(L)):(x(v)||m(v))&&_(a,l,c,M.dragOptions,v)}},S.onmousemove=function(t){g.hover(L,t,M.id),L._fullLayout._lasthover=S,L._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){L._dragging||v.unhover(L,t)},v.init(this.dragOptions)}},4161:function(t,e,r){"use strict";var n=r(16534),i=r(69562),a=r(26100).stylePoints;t.exports=function(t){var e=n.select(t).selectAll("g.trace.violins");e.style("opacity",function(t){return t[0].trace.opacity}),e.each(function(e){var r=e[0].trace,o=n.select(this),s=r.box||{},l=s.line||{},u=r.meanline||{},c=u.width;o.selectAll("path.violin").style("stroke-width",r.line.width+"px").call(i.stroke,r.line.color).call(i.fill,r.fillcolor),o.selectAll("path.box").style("stroke-width",l.width+"px").call(i.stroke,l.color).call(i.fill,s.fillcolor);var f={"stroke-width":c+"px","stroke-dasharray":2*c+"px,"+c+"px"};o.selectAll("path.mean").style(f).call(i.stroke,u.color),o.selectAll("path.meanline").style(f).call(i.stroke,u.color),a(o,r,t)})}},4536:function(t,e,r){"use strict";var n=r(15181),i=r(69562),a=r(92444),o=r(13516),s=r(60609).KO,l=r(5005),u=r(31357),c=r(14736),f=r(25124),h=r(98333),p=r(16361),d=r(50446),v=r(40223),g=r(71045),y=r(29888),m=y.axisNames;function x(t,e,r,o){var d=r("bgcolor");o.bgColor=i.combine(d,o.paper_bgcolor);var x=r("sector");r("hole");var _,w=s(o.fullData,y.name,o.id),T=o.layoutOut;function A(t,e){return r(_+"."+t,e)}for(var k=0;k")}}t.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,u=s.cd[s.index],c=s.trace;if(l.isPtInside(u))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(u,c,l,s),s.hovertemplate=c.hovertemplate,o}},makeHoverPointText:i}},4562:function(t,e,r){"use strict";var n=r(7458).overrideAll,i=r(39420),a=r(76892),o=r(60432),s=r(29278),l=r(29435),u=r(34535),c=r(60609).KO;e.name="gl2d",e.attr=["xaxis","yaxis"],e.idRoot=["x","y"],e.idRegex=s.idRegex,e.attrRegex=s.attrRegex,e.attributes=r(32002),e.supplyLayoutDefaults=function(t,e,r){e._has("cartesian")||l.supplyLayoutDefaults(t,e,r)},e.layoutAttrOverrides=n(l.layoutAttributes,"plot","from-root"),e.baseLayoutAttrOverrides=n({plot_bgcolor:a.plot_bgcolor,hoverlabel:u.hoverlabel},"plot","nested"),e.plot=function(t){for(var e=t._fullLayout,r=t._fullData,n=e._subplots.gl2d,a=0;a0?n>=l:n<=l));i++)n>c&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var pt=Math.pow(10,Math.floor(Math.log(ht)/Math.LN10));ct*=pt*u.roundUp(ht/pt,[2,5,10]),(Math.abs(Y.start)/Y.size+1e-6)%1<2e-6&&(lt.tick0=0)}lt.dtick=ct}lt.domain=o?[ot+O/B.h,ot+Q-O/B.h]:[ot+P/B.w,ot+Q-P/B.w],lt.setScale(),t.attr("transform",c(Math.round(B.l),Math.round(B.t)));var dt,vt=t.select("."+k.cbtitleunshift).attr("transform",c(-Math.round(B.l),-Math.round(B.t))),gt=lt.ticklabelposition,yt=lt.title.font.size,mt=t.select("."+k.cbaxis),xt=0,bt=0;function _t(n,i){var a={propContainer:lt,propName:e._propPrefix+"title",traceIndex:e._traceIndex,_meta:e._meta,placeholder:F._dfltTitle.colorbar,containerGroup:t.select("."+k.cbtitle)},o="h"===n.charAt(0)?n.substr(1):"h"+n;t.selectAll("."+o+",."+o+"-math-group").remove(),v.draw(r,n,f(a,i||{}))}return u.syncOrAsync([a.previousPromises,function(){var t,e;(o&&ut||!o&&!ut)&&("top"===V&&(t=P+B.l+tt*I,e=O+B.t+et*(1-ot-Q)+3+.75*yt),"bottom"===V&&(t=P+B.l+tt*I,e=O+B.t+et*(1-ot)-3-.25*yt),"right"===V&&(e=O+B.t+et*D+3+.75*yt,t=P+B.l+tt*ot),_t(lt._id+"title",{attributes:{x:t,y:e,"text-anchor":o?"start":"middle"}}))},function(){if(!o&&!ut||o&&ut){var a,l=t.select("."+k.cbtitle),f=l.select("text"),h=[-M/2,M/2],d=l.select(".h"+lt._id+"title-math-group").node(),v=15.6;if(f.node()&&(v=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),bt=a.width,(xt=a.height)>v&&(h[1]-=(xt-v)/2)):f.node()&&!f.classed(k.jsPlaceholder)&&(a=p.bBox(f.node()),bt=a.width,xt=a.height),o){if(xt){if(xt+=5,"top"===V)lt.domain[1]-=xt/B.h,h[1]*=-1;else{lt.domain[0]+=xt/B.h;var y=g.lineCount(f);h[1]+=(1-y)*v}l.attr("transform",c(h[0],h[1])),lt.setScale()}}else bt&&("right"===V&&(lt.domain[0]+=(bt+yt/2)/B.w),l.attr("transform",c(h[0],h[1])),lt.setScale())}t.selectAll("."+k.cbfills+",."+k.cblines).attr("transform",o?c(0,Math.round(B.h*(1-lt.domain[1]))):c(Math.round(B.w*lt.domain[0]),0)),mt.attr("transform",o?c(0,Math.round(-B.t)):c(Math.round(-B.l),0));var m=t.select("."+k.cbfills).selectAll("rect."+k.cbfill).attr("style","").data(Z);m.enter().append("rect").classed(k.cbfill,!0).attr("style",""),m.exit().remove();var x=H.map(lt.c2p).map(Math.round).sort(function(t,e){return t-e});m.each(function(t,a){var s=[0===a?H[0]:(Z[a]+Z[a-1])/2,a===Z.length-1?H[1]:(Z[a]+Z[a+1])/2].map(lt.c2p).map(Math.round);o&&(s[1]=u.constrain(s[1]+(s[1]>s[0])?1:-1,x[0],x[1]));var l=n.select(this).attr(o?"x":"y",rt).attr(o?"y":"x",n.min(s)).attr(o?"width":"height",Math.max(J,2)).attr(o?"height":"width",Math.max(n.max(s)-n.min(s),2));if(e._fillgradient)p.gradient(l,r,e._id,o?"vertical":"horizontalreversed",e._fillgradient,"fill");else{var c=G(t).replace("e-","");l.attr("fill",i(c).toHexString())}});var b=t.select("."+k.cblines).selectAll("path."+k.cbline).data(j.color&&j.width?X:[]);b.enter().append("path").classed(k.cbline,!0),b.exit().remove(),b.each(function(t){var e=rt,r=Math.round(lt.c2p(t))+j.width/2%1;n.select(this).attr("d","M"+(o?e+","+r:r+","+e)+(o?"h":"v")+J).call(p.lineGroupStyle,j.width,q(t),j.dash)}),mt.selectAll("g."+lt._id+"tick,path").remove();var _=rt+J+(M||0)/2-("outside"===e.ticks?1:0),T=s.calcTicks(lt),A=s.getTickSigns(lt)[2];return s.drawTicks(r,lt,{vals:"inside"===lt.ticks?s.clipEnds(lt,T):T,layer:mt,path:s.makeTickPath(lt,_,A),transFn:s.makeTransTickFn(lt)}),s.drawLabels(r,lt,{vals:T,layer:mt,transFn:s.makeTransTickLabelFn(lt),labelFns:s.makeLabelFns(lt,_)})},function(){if(o&&!ut||!o&&ut){var t,i,a=lt.position||0,s=lt._offset+lt._length/2;if("right"===V)i=s,t=B.l+tt*a+10+yt*(lt.showticklabels?1:.5);else if(t=s,"bottom"===V&&(i=B.t+et*a+10+(-1===gt.indexOf("inside")?lt.tickfont.size:0)+("intside"!==lt.ticks&&e.ticklen||0)),"top"===V){var l=U.text.split("
    ").length;i=B.t+et*a+10-J-w*yt*l}_t((o?"h":"v")+lt._id+"title",{avoid:{selection:n.select(r).selectAll("g."+lt._id+"tick"),side:V,offsetTop:o?0:B.t,offsetLeft:o?B.l:0,maxShift:o?F.width:F.height},attributes:{x:t,y:i,"text-anchor":"middle"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=J+M/2;-1===gt.indexOf("inside")&&(n=p.bBox(mt.node()),s+=o?n.width:n.height),dt=vt.select("text");var u=0,f=o&&"top"===V,v=!o&&"right"===V,g=0;if(dt.node()&&!dt.classed(k.jsPlaceholder)){var m,x=vt.select(".h"+lt._id+"title-math-group").node();x&&(o&&ut||!o&&!ut)?(u=(n=p.bBox(x)).width,m=n.height):(u=(n=p.bBox(vt.node())).right-B.l-(o?rt:st),m=n.bottom-B.t-(o?st:rt),o||"top"!==V||(s+=n.height,g=n.height)),v&&(dt.attr("transform",c(u/2+yt/2,0)),u*=2),s=Math.max(s,o?u:m)}var b=2*(o?P:O)+s+S+M/2,w=0;!o&&U.text&&"bottom"===C&&D<=0&&(b+=w=b/2,g+=w),F._hColorbarMoveTitle=w,F._hColorbarMoveCBTitle=g;var N=S+M,j=(o?rt:st)-N/2-(o?P:0),H=(o?st:rt)-(o?$:O+g-w);t.select("."+k.cbbg).attr("x",j).attr("y",H).attr(o?"width":"height",Math.max(b-w,2)).attr(o?"height":"width",Math.max($+N,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style("stroke-width",S);var q=v?Math.max(u-10,0):0;t.selectAll("."+k.cboutline).attr("x",(o?rt:st+P)+q).attr("y",(o?st+O-$:rt)+(f?xt:0)).attr(o?"width":"height",Math.max(J,2)).attr(o?"height":"width",Math.max($-(o?2*O+xt:2*P+q),2)).call(d.stroke,e.outlinecolor).style({fill:"none","stroke-width":M});var G=o?nt*b:0,Y=o?0:(1-it)*b-g;if(G=R?B.l-G:-G,Y=z?B.t-Y:-Y,t.attr("transform",c(G,Y)),!o&&(S||i(E).getAlpha()&&!i.equals(F.paper_bgcolor,E))){var W=mt.selectAll("text"),Z=W[0].length,X=t.select("."+k.cbbg).node(),K=p.bBox(X),Q=p.getTranslate(t);W.each(function(t,e){var r=Z-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=K.right+Q.x+st-S-2+I-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=K.left+Q.x+st+S+2-s)<0&&(n=0)}n&&(Z<3?this.setAttribute("transform","translate("+n+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var tt={},et=T[L],at=A[L],ot=T[C],ct=A[C],ft=b-J;o?("pixels"===h?(tt.y=D,tt.t=$*ot,tt.b=$*ct):(tt.t=tt.b=0,tt.yt=D+l*ot,tt.yb=D-l*ct),"pixels"===_?(tt.x=I,tt.l=b*et,tt.r=b*at):(tt.l=ft*et,tt.r=ft*at,tt.xl=I-y*et,tt.xr=I+y*at)):("pixels"===h?(tt.x=I,tt.l=$*et,tt.r=$*at):(tt.l=tt.r=0,tt.xl=I+l*et,tt.xr=I-l*at),"pixels"===_?(tt.y=1-D,tt.t=b*ot,tt.b=b*ct):(tt.t=ft*ot,tt.b=ft*ct,tt.yt=D-y*ot,tt.yb=D+y*ct));var ht=e.y<.5?"b":"t",pt=e.x<.5?"l":"r";r._fullLayout._reservedMargin[e._id]={};var bt={r:F.width-j-G,l:j+tt.r,b:F.height-H-Y,t:H+tt.b};R&&z?a.autoMargin(r,e._id,tt):R?r._fullLayout._reservedMargin[e._id][ht]=bt[ht]:z||o?r._fullLayout._reservedMargin[e._id][pt]=bt[pt]:r._fullLayout._reservedMargin[e._id][ht]=bt[ht]}],r)}(r,e,t);y&&y.then&&(t._promises||[]).push(y),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,a,s="v"===e.orientation,u=r._fullLayout._size;l.init({element:t.node(),gd:r,prepFn:function(){n=t.attr("transform"),h(t)},moveFn:function(r,o){t.attr("transform",n+c(r,o)),i=l.align((s?e._uFrac:e._vFrac)+r/u.w,s?e._thickFrac:e._lenFrac,0,1,e.xanchor),a=l.align((s?e._vFrac:1-e._uFrac)-o/u.h,s?e._lenFrac:e._thickFrac,0,1,e.yanchor);var f=l.getCursor(i,a,e.xanchor,e.yanchor);h(t,f)},doneFn:function(){if(h(t),void 0!==i&&void 0!==a){var n={};n[e._propPrefix+"x"]=i,n[e._propPrefix+"y"]=a,void 0!==e._traceIndex?o.call("_guiRestyle",r,n,e._traceIndex):o.call("_guiRelayout",r,n)}}})}(r,e,t)}),e.exit().each(function(e){a.autoMargin(t,e._id)}).remove(),e.order()}}},4630:function(t){t.exports=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}},4814:function(t,e,r){"use strict";var n=r(20454);t.exports=function(t){if(!n(t))throw new TypeError(t+" is not an Object");return t}},4824:function(t,e,r){"use strict";var n=r(16534),i=r(15181);t.exports=function(t,e,r,a){var o=e.yaxis,s=e.xaxis,l=!!s.rangebreaks;i.makeTraceGroups(a,r,"trace ohlc").each(function(t){var e=n.select(this),r=t[0],a=r.t;if(!0!==r.trace.visible||a.empty)e.remove();else{var u=a.tickLen,c=e.selectAll("path").data(i.identity);c.enter().append("path"),c.exit().remove(),c.attr("d",function(t){if(t.empty)return"M0,0Z";var e=s.c2p(t.pos-u,!0),r=s.c2p(t.pos+u,!0),n=l?(e+r)/2:s.c2p(t.pos,!0);return"M"+e+","+o.c2p(t.o,!0)+"H"+n+"M"+n+","+o.c2p(t.h,!0)+"V"+o.c2p(t.l,!0)+"M"+r+","+o.c2p(t.c,!0)+"H"+n})}})}},4840:function(t){t.exports=function(t,e,r){var n=[],i=[];return t.forEach(function(t){var a=t.start,o=t.end;if(e.pointsSame(a,o))console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");else{r&&r.chainStart(t);for(var s={index:0,matches_head:!1,matches_pt1:!1},l={index:0,matches_head:!1,matches_pt1:!1},u=s,c=0;c0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}t.exports=e,e.canvas=document.createElement("canvas"),e.cache={}},5159:function(t,e,r){"use strict";var n=r(26116);t.exports=function(t){var e=typeof t;if("string"===e){var r=t;if(0===(t=+t)&&n(r))return!1}else if("number"!==e)return!1;return t-t<1}},5182:function(t,e,r){"use strict";var n=r(21534);n.plot=r(43775),t.exports=n},5271:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:r(16665),categories:["polar","symbols","showLegend","scatter-like"],attributes:r(73990),supplyDefaults:r(73553).supplyDefaults,colorbar:r(23814),formatLabels:r(90812),calc:r(13218),plot:r(10272),style:r(26100).style,styleOnSelect:r(26100).styleOnSelect,hoverPoints:r(4537).hoverPoints,selectPoints:r(64061),meta:{}}},5395:function(t){t.exports=function(t,e,r,n){var i=Math.tan(e.upDegrees*Math.PI/180),a=Math.tan(e.downDegrees*Math.PI/180),o=Math.tan(e.leftDegrees*Math.PI/180),s=Math.tan(e.rightDegrees*Math.PI/180),l=2/(o+s),u=2/(i+a);return t[0]=l,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=u,t[6]=0,t[7]=0,t[8]=-(o-s)*l*.5,t[9]=(i-a)*u*.5,t[10]=n/(r-n),t[11]=-1,t[12]=0,t[13]=0,t[14]=n*r/(r-n),t[15]=0,t}},5651:function(t){"use strict";t.exports=function(t,e,r,n){var i=n("contours.start"),a=n("contours.end"),o=!1===i||!1===a,s=r("contours.size");!(o?e.autocontour=!0:r("autocontour",!1))&&s||r("ncontours")}},5675:function(t,e,r){"use strict";t.exports=r(30252)},5763:function(t){t.exports=function(t){var i=[];return t.replace(r,function(t,r,a){var o=r.toLowerCase();for(a=function(t){var e=t.match(n);return e?e.map(Number):[]}(a),"m"==o&&a.length>2&&(i.push([r].concat(a.splice(0,2))),o="l",r="m"==r?"l":"L");;){if(a.length==e[o])return a.unshift(r),i.push(a);if(a.length=0?l=p:(l=p=h,h++),l2?arguments[2]:{},a=n(e);i&&(a=o.call(a,Object.getOwnPropertySymbols(e)));for(var s=0;s0?".":"")+a;i.isPlainObject(o)?l(o,e,s,n+1):e(s,a,o)}})}e.manageCommandObserver=function(t,r,n,o){var s={},l=!0;r&&r._commandObserver&&(s=r._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var u=e.hasSimpleAPICommandBindings(t,n,s.lookupTable);if(r&&r._commandObserver){if(u)return s;if(r._commandObserver.remove)return r._commandObserver.remove(),r._commandObserver=null,s}if(u){a(t,u,s.cache),s.check=function(){if(l){var e=a(t,u,s.cache);return e.changed&&o&&void 0!==s.lookupTable[e.value]&&(s.disable(),Promise.resolve(o({value:e.value,type:u.type,prop:u.prop,traces:u.traces,index:s.lookupTable[e.value]})).then(s.enable,s.enable)),e.changed}};for(var c=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],f=0;f=t.data.length||i<-t.data.length)throw new Error(r+" must be valid indices for gd.data.");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function O(t,e,r){if(!Array.isArray(t.data))throw new Error("gd.data must be an array.");if(void 0===e)throw new Error("currentIndices is a required argument.");if(Array.isArray(e)||(e=[e]),P(t,e,"currentIndices"),void 0===r||Array.isArray(r)||(r=[r]),void 0!==r&&P(t,r,"newIndices"),void 0!==r&&e.length!==r.length)throw new Error("current and new indices must be of equal length.")}function I(t,e,r,n,a){!function(t,e,r,n){var i=o.isPlainObject(n);if(!Array.isArray(t.data))throw new Error("gd.data must be an array");if(!o.isPlainObject(e))throw new Error("update must be a key:value object");if(void 0===r)throw new Error("indices must be an integer or array of integers");for(var a in P(t,r,"indices"),e){if(!Array.isArray(e[a])||e[a].length!==r.length)throw new Error("attribute "+a+" must be an array of length equal to indices array length");if(i&&(!(a in n)||!Array.isArray(n[a])||n[a].length!==e[a].length))throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object")}}(t,e,r,n);for(var l=function(t,e,r,n){var a,l,u,c,f,h=o.isPlainObject(n),p=[];for(var d in Array.isArray(r)||(r=[r]),r=C(r,t.data.length-1),e)for(var v=0;v-1&&-1===r.indexOf("grouptitlefont")?l(r,r.replace("titlefont","title.font")):r.indexOf("titleposition")>-1?l(r,r.replace("titleposition","title.position")):r.indexOf("titleside")>-1?l(r,r.replace("titleside","title.side")):r.indexOf("titleoffset")>-1&&l(r,r.replace("titleoffset","title.offset")):l(r,r.replace("title","title.text"));function l(e,r){t[r]=t[e],delete t[e]}}function U(t,e,r){t=o.getGraphDiv(t),_.clearPromiseQueue(t);var n={};if("string"==typeof e)n[e]=r;else{if(!o.isPlainObject(e))return o.warn("Relayout fail.",e,r),Promise.reject();n=o.extendFlat({},e)}Object.keys(n).length&&(t.changed=!0);var i=W(t,n),a=i.flags;a.calc&&(t.calcdata=void 0);var s=[h.previousPromises];a.layoutReplot?s.push(w.layoutReplot):Object.keys(n).length&&(V(t,a,i)||h.supplyDefaults(t),a.legend&&s.push(w.doLegend),a.layoutstyle&&s.push(w.layoutStyles),a.axrange&&H(s,i.rangesAltered),a.ticks&&s.push(w.doTicksRelayout),a.modebar&&s.push(w.doModeBar),a.camera&&s.push(w.doCamera),a.colorbars&&s.push(w.doColorBars),s.push(M)),s.push(h.rehover,h.redrag,h.reselect),u.add(t,U,[t,i.undoit],U,[t,i.redoit]);var l=o.syncOrAsync(s,t);return l&&l.then||(l=Promise.resolve(t)),l.then(function(){return t.emit("plotly_relayout",i.eventData),t})}function V(t,e,r){var n=t._fullLayout;if(!e.axrange)return!1;for(var i in e)if("axrange"!==i&&e[i])return!1;for(var a in r.rangesAltered){var o=p.id2name(a),s=t.layout[o],l=n[o];if(l.autorange=s.autorange,s.range&&(l.range=s.range.slice()),l.cleanRange(),l._matchGroup)for(var u in l._matchGroup)if(u!==a){var c=n[p.id2name(u)];c.autorange=l.autorange,c.range=l.range.slice(),c._input.range=l.range.slice()}}return!0}function H(t,e){var r=e?function(t){var r=[];for(var n in e){var i=p.getFromId(t,n);if(r.push(n),-1!==(i.ticklabelposition||"").indexOf("inside")&&i._anchorAxis&&r.push(i._anchorAxis._id),i._matchGroup)for(var a in i._matchGroup)e[a]||r.push(a)}return p.draw(t,r,{skipTitle:!0})}:function(t){return p.draw(t,"redraw")};t.push(m,w.doAutoRangeAndConstraints,r,w.drawData,w.finalDraw)}var q=/^[xyz]axis[0-9]*\.range(\[[0|1]\])?$/,G=/^[xyz]axis[0-9]*\.autorange$/,Y=/^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/;function W(t,e){var r,n,i,a=t.layout,l=t._fullLayout,u=l._guiEditing,h=F(l._preGUI,u),d=Object.keys(e),v=p.list(t),g=o.extendDeepAll({},e),y={};for(j(e),d=Object.keys(e),n=0;n0&&"string"!=typeof I.parts[z];)z--;var B=I.parts[z],N=I.parts[z-1]+"."+B,U=I.parts.slice(0,z).join("."),V=s(t.layout,U).get(),H=s(l,U).get(),W=I.get();if(void 0!==D){M[O]=D,S[O]="reverse"===B?D:R(W);var X=f.getLayoutValObject(l,I.parts);if(X&&X.impliedEdits&&null!==D)for(var J in X.impliedEdits)E(o.relativeAttr(O,J),X.impliedEdits[J]);if(-1!==["width","height"].indexOf(O))if(D){E("autosize",null);var K="height"===O?"width":"height";E(K,l[K])}else l[O]=t._initialAutoSize[O];else if("autosize"===O)E("width",D?null:l.width),E("height",D?null:l.height);else if(N.match(q))P(N),s(l,U+"._inputRange").set(null);else if(N.match(G)){P(N),s(l,U+"._inputRange").set(null);var $=s(l,U).get();$._inputDomain&&($._input.domain=$._inputDomain.slice())}else N.match(Y)&&s(l,U+"._inputDomain").set(null);if("type"===B){L=V;var Q="linear"===H.type&&"log"===D,tt="log"===H.type&&"linear"===D;if(Q||tt){if(L&&L.range)if(H.autorange)Q&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var et=L.range[0],rt=L.range[1];Q?(et<=0&&rt<=0&&E(U+".autorange",!0),et<=0?et=rt/1e6:rt<=0&&(rt=et/1e6),E(U+".range[0]",Math.log(et)/Math.LN10),E(U+".range[1]",Math.log(rt)/Math.LN10)):(E(U+".range[0]",Math.pow(10,et)),E(U+".range[1]",Math.pow(10,rt)))}else E(U+".autorange",!0);Array.isArray(l._subplots.polar)&&l._subplots.polar.length&&l[I.parts[0]]&&"radialaxis"===I.parts[1]&&delete l[I.parts[0]]._subplot.viewInitial["radialaxis.range"],c.getComponentMethod("annotations","convertCoords")(t,H,D,E),c.getComponentMethod("images","convertCoords")(t,H,D,E)}else E(U+".autorange",!0),E(U+".range",null);s(l,U+"._inputRange").set(null)}else if(B.match(A)){var nt=s(l,O).get(),it=(D||{}).type;it&&"-"!==it||(it="linear"),c.getComponentMethod("annotations","convertCoords")(t,nt,it,E),c.getComponentMethod("images","convertCoords")(t,nt,it,E)}var at=b.containerArrayMatch(O);if(at){r=at.array,n=at.index;var ot=at.property,st=X||{editType:"calc"};""!==n&&""===ot&&(b.isAddVal(D)?S[O]=null:b.isRemoveVal(D)?S[O]=(s(a,r).get()||[])[n]:o.warn("unrecognized full object value",e)),T.update(k,st),y[r]||(y[r]={});var lt=y[r][n];lt||(lt=y[r][n]={}),lt[ot]=D,delete e[O]}else"reverse"===B?(V.range?V.range.reverse():(E(U+".autorange",!0),V.range=[1,0]),H.autorange?k.calc=!0:k.plot=!0):("dragmode"===O&&(!1===D&&!1!==W||!1!==D&&!1===W)||l._has("scatter-like")&&l._has("regl")&&"dragmode"===O&&("lasso"===D||"select"===D)&&"lasso"!==W&&"select"!==W||l._has("gl2d")?k.plot=!0:X?T.update(k,X):k.calc=!0,I.set(D))}}for(r in y)b.applyContainerArrayChanges(t,h(a,r),y[r],k,h)||(k.plot=!0);for(var ut in C){var ct=(L=p.getFromId(t,ut))&&L._constraintGroup;if(ct)for(var ft in k.calc=!0,ct)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}(Z(t)||e.height||e.width)&&(k.plot=!0);var ht=l.shapes;for(n=0;n1;)if(n.pop(),void 0!==(r=s(e,n.join(".")+".uirevision").get()))return r;return e.uirevision}function et(t,e){for(var r=0;r=i.length?i[0]:i[t]:i}function l(t){return Array.isArray(a)?t>=a.length?a[0]:a[t]:a}function u(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise(function(a,c){function f(){t.emit("plotly_animating"),n._lastFrameAt=-1/0,n._timeToNext=0,n._runningTransitions=0,n._currentFrame=null;var e=function(){n._animationRaf=window.requestAnimationFrame(e),Date.now()-n._lastFrameAt>n._timeToNext&&function(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,h.transition(t,e.frame.data,e.frame.layout,_.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then(function(){e.onComplete&&e.onComplete()}),t.emit("plotly_animatingframe",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit("plotly_animated"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}()};e()}var p,d,v=0;function g(t){return Array.isArray(i)?v>=i.length?t.transitionOpts=i[v]:t.transitionOpts=i[0]:t.transitionOpts=i,v++,t}var y=[],m=null==e,x=Array.isArray(e);if(m||x||!o.isPlainObject(e)){if(m||-1!==["string","number"].indexOf(typeof e))for(p=0;p0&&TT)&&A.push(d);y=A}}y.length>0?function(e){if(0!==e.length){for(var i=0;i=0;n--)if(o.isPlainObject(e[n])){var v=e[n].name,g=(c[v]||d[v]||{}).name,y=e[n].name,m=c[g]||d[g];g&&y&&"number"==typeof y&&m&&k<5&&(k++,o.warn('addFrames: overwriting frame "'+(c[g]||d[g]).name+'" with a frame whose name of type "number" also equates to "'+g+'". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===k&&o.warn("addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.")),d[v]={name:v},p.push({frame:h.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:f+n})}p.sort(function(t,e){return t.index>e.index?-1:t.index=0;n--){if("number"==typeof(i=p[n].frame).name&&o.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!i.name)for(;c[i.name="frame "+t._transitionData._counter++];);if(c[i.name]){for(a=0;a=0;r--)n=e[r],a.push({type:"delete",index:n}),s.unshift({type:"insert",index:n,value:i[n]});var l=h.modifyFrames,c=h.modifyFrames,f=[t,s],p=[t,a];return u&&u.add(t,l,f,c,p),h.modifyFrames(t,a)},e.addTraces=function t(r,n,i){r=o.getGraphDiv(r);var a,s,l=[],c=e.deleteTraces,f=t,h=[r,l],p=[r,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error("gd.data must be an array.");if(void 0===e)throw new Error("traces must be defined.");for(Array.isArray(e)||(e=[e]),n=0;n=0&&r=0&&r=m)&&(r<=y&&(r=y),o>=m&&(o=m),l=Math.floor((o-r)/s)+1,u=0),h=0;hy&&(v.unshift(y),g.unshift(g[0])),v[v.length-1]i&&(i=c,o=u)}}return i?a(o):s};case"rms":return function(t,e){for(var r=0,i=0,o=0;o4))}},8374:function(t){"use strict";var e=Object.prototype.toString,r=e.call("");t.exports=function(t){return"string"==typeof t||t&&"object"==typeof t&&(t instanceof String||e.call(t)===r)||!1}},8377:function(t,e,r){"use strict";var n=r(31164),i=r(28209),a=r(38532).rb,o=r(38532).ay,s=r(79335),l=r(8357).extendFlat,u=n.marker,c=n.line,f=u.line;t.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:l({},n.mode,{dflt:"markers"}),text:l({},n.text,{}),texttemplate:o({editType:"plot"},{keys:["a","b","text"]}),hovertext:l({},n.hovertext,{}),line:{color:c.color,width:c.width,dash:c.dash,backoff:c.backoff,shape:l({},c.shape,{values:["linear","spline"]}),smoothing:c.smoothing,editType:"calc"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:n.fillcolor,marker:l({symbol:u.symbol,opacity:u.opacity,maxdisplayed:u.maxdisplayed,angle:u.angle,angleref:u.angleref,standoff:u.standoff,size:u.size,sizeref:u.sizeref,sizemin:u.sizemin,sizemode:u.sizemode,line:l({width:f.width,editType:"calc"},s("marker.line")),gradient:u.gradient,editType:"calc"},s("marker")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:["a","b","text","name"]}),hoveron:n.hoveron,hovertemplate:a()}},8383:function(t,e,r){"use strict";var n=r(5159),i=r(79095);t.exports=function(t,e,r,a){e=e||{};var o="log"===r&&"linear"===e.type,s="linear"===r&&"log"===e.type;if(o||s)for(var l,u,c=t._fullLayout.images,f=e._id.charAt(0),h=0;h=3&&(o=r),s=t,"[object Array]"===i.call(s)?function(t,e,r){for(var n=0,i=t.length;n0?i.pi:-i.pi,u=(0,i.tn)(o-r);(0,i.tn)(u-i.pi)0?i.TW:-i.TW),t.point(a,n),t.lineEnd(),t.lineStart(),t.point(l,n),t.point(o,n),e=0):a!==l&&u>=i.pi&&((0,i.tn)(r-a)i.Ni?(0,i.rY)(((0,i.F8)(e)*(o=(0,i.gn)(n))*(0,i.F8)(r)-(0,i.F8)(n)*(a=(0,i.gn)(e))*(0,i.F8)(t))/(a*o*s)):(e+n)/2}(r,n,o,s),t.point(a,n),t.lineEnd(),t.lineStart(),t.point(l,n),e=0),t.point(r=o,n=s),a=l},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}},function(t,e,r,n){var a;if(null==t)a=r*i.TW,n.point(-i.pi,a),n.point(0,a),n.point(i.pi,a),n.point(i.pi,0),n.point(i.pi,-a),n.point(0,-a),n.point(-i.pi,-a),n.point(-i.pi,0),n.point(-i.pi,a);else if((0,i.tn)(t[0]-e[0])>i.Ni){var o=t[0]S[f]&&f path").each(function(t){if(!t.isBlank){var e=s[t.dir].marker;n.select(this).call(a.fill,e.color).call(a.stroke,e.line.color).call(i.dashLine,e.line.dash,e.line.width).style("opacity",s.selectedpoints&&!t.selected?o:1)}}),u(r,s,t),r.selectAll(".lines").each(function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll("path"),t.width,t.color,t.dash)})})}}},8972:function(t,e,r){"use strict";t.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return"altKey"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),"shiftKey"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),"ctrlKey"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),"metaKey"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function u(t,s){var u=n.x(s),c=n.y(s);"buttons"in s&&(t=0|s.buttons),(t!==r||u!==i||c!==a||l(s))&&(r=0|t,i=u||0,a=c||0,e&&e(r,i,a,o))}function c(t){u(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?u(0,t):u(r,t)}function d(t){u(r|n.buttons(t),t)}function v(t){u(r&~n.buttons(t),t)}function g(){s||(s=!0,t.addEventListener("mousemove",p),t.addEventListener("mousedown",d),t.addEventListener("mouseup",v),t.addEventListener("mouseleave",c),t.addEventListener("mouseenter",c),t.addEventListener("mouseout",c),t.addEventListener("mouseover",c),t.addEventListener("blur",f),t.addEventListener("keyup",h),t.addEventListener("keydown",h),t.addEventListener("keypress",h),t!==window&&(window.addEventListener("blur",f),window.addEventListener("keyup",h),window.addEventListener("keydown",h),window.addEventListener("keypress",h)))}g();var y={element:t};return Object.defineProperties(y,{enabled:{get:function(){return s},set:function(e){e?g():s&&(s=!1,t.removeEventListener("mousemove",p),t.removeEventListener("mousedown",d),t.removeEventListener("mouseup",v),t.removeEventListener("mouseleave",c),t.removeEventListener("mouseenter",c),t.removeEventListener("mouseout",c),t.removeEventListener("mouseover",c),t.removeEventListener("blur",f),t.removeEventListener("keyup",h),t.removeEventListener("keydown",h),t.removeEventListener("keypress",h),t!==window&&(window.removeEventListener("blur",f),window.removeEventListener("keyup",h),window.removeEventListener("keydown",h),window.removeEventListener("keypress",h)))},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),y};var n=r(98492)},8987:function(t,e,r){"use strict";var n=r(15181),i=r(41993),a=r(41562).handleText,o=r(72639),s=r(63457),l=r(82988),u=r(69562),c=r(11881),f=c.INCREASING.COLOR,h=c.DECREASING.COLOR;function p(t,e,r){t(e+".marker.color",r),t(e+".marker.line.color",u.defaultLine),t(e+".marker.line.width")}t.exports={supplyDefaults:function(t,e,r,i){function u(r,i){return n.coerce(t,e,l,r,i)}if(o(t,e,i,u)){s(t,e,i,u),u("xhoverformat"),u("yhoverformat"),u("measure"),u("orientation",e.x&&!e.y?"h":"v"),u("base"),u("offset"),u("width"),u("text"),u("hovertext"),u("hovertemplate");var c=u("textposition");a(t,e,i,u,c,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),"none"!==e.textposition&&(u("texttemplate"),e.texttemplate||u("textinfo")),p(u,"increasing",f),p(u,"decreasing",h),p(u,"totals","#4499FF"),u("connector.visible")&&(u("connector.mode"),u("connector.line.width")&&(u("connector.line.color"),u("connector.line.dash")))}else e.visible=!1},crossTraceDefaults:function(t,e){var r,a;function o(t){return n.coerce(a._input,a,l,t)}if("group"===e.waterfallmode)for(var s=0;s0;)A=k.c2p(N[C]),C--;for(A0;)L=M.c2p(j[C]),C--;L=k._length||A<=0||E>=M._length||L<=0)return I.selectAll("image").data([]).exit().remove(),void b(I);"fast"===X?(K=Y,$=G):(K=Q,$=tt);var et=document.createElement("canvas");et.width=K,et.height=$;var rt,nt,it=et.getContext("2d"),at=p(z,{noNumericCheck:!0,returnArray:!0});"fast"===X?(rt=W?function(t){return Y-1-t}:l.identity,nt=Z?function(t){return G-1-t}:l.identity):(rt=function(t){return l.constrain(Math.round(k.c2p(N[t])-r),0,Q)},nt=function(t){return l.constrain(Math.round(M.c2p(j[t])-E),0,tt)});var ot,st,lt,ut,ct=nt(0),ft=[ct,ct],ht=W?0:1,pt=Z?0:1,dt=0,vt=0,gt=0,yt=0;function mt(t,e){if(void 0!==t){var r=at(t);return r[0]=Math.round(r[0]),r[1]=Math.round(r[1]),r[2]=Math.round(r[2]),dt+=e,vt+=r[0]*e,gt+=r[1]*e,yt+=r[2]*e,r}return[0,0,0,0]}function xt(t,e,r,n){var i=t[r.bin0];if(void 0===i)return mt(void 0,1);var a,o=t[r.bin1],s=e[r.bin0],l=e[r.bin1],u=o-i||0,c=s-i||0;return a=void 0===o?void 0===l?0:void 0===s?2*(l-i):2*(2*l-s-i)/3:void 0===l?void 0===s?0:2*(2*i-o-s)/3:void 0===s?2*(2*l-o-i)/3:l+i-o-s,mt(i+r.frac*u+n.frac*(c+r.frac*a))}if("default"!==X){var bt,_t=0;try{bt=new Uint8Array(K*$*4)}catch(t){bt=new Array(K*$*4)}if("smooth"===X){var wt,Tt,At,kt=U||N,Mt=V||j,St=new Array(kt.length),Et=new Array(Mt.length),Lt=new Array(Q),Ct=U?w:_,Pt=V?w:_;for(C=0;CXt||Xt>M._length))for(P=Gt;PKt||Kt>k._length)){var $t=c({x:Jt,y:Zt},z,t._fullLayout);$t.x=Jt,$t.y=Zt;var Qt=D.z[C][P];void 0===Qt?($t.z="",$t.zLabel=""):($t.z=Qt,$t.zLabel=s.tickText(Ut,Qt,"hover").text);var te=D.text&&D.text[C]&&D.text[C][P];void 0!==te&&!1!==te||(te=""),$t.text=te;var ee=l.texttemplateString(Nt,$t,t._fullLayout._d3locale,$t,z._meta||{});if(ee){var re=ee.split("
    "),ne=re.length,ie=0;for(O=0;O0)if("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===l.prototype||(e=function(t){return l.from(t)}(e)),n)s.endEmitted?w(t,new _):S(t,s,e,!0);else if(s.ended)w(t,new x);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?S(t,s,e,!1):O(t,s)):S(t,s,e,!1)}else n||(s.reading=!1,O(t,s));return!s.ended&&(s.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=E?t=E:(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 C(t){var e=t._readableState;a("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(a("emitReadable",e.flowing),e.emittedReadable=!0,i.nextTick(P,t))}function P(t){var e=t._readableState;a("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,F(t)}function O(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function z(t){a("readable nexttick read 0"),t.read(0)}function R(t,e){a("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),F(t),e.flowing&&!e.reading&&t.read(0)}function F(t){var e=t._readableState;for(a("flow",e.flowing);e.flowing&&null!==t.read(););}function B(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function N(t){var e=t._readableState;a("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,i.nextTick(j,e,t))}function j(t,e){if(a("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function U(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return a("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?N(this):C(this),null;if(0===(t=L(t,e))&&e.ended)return 0===e.length&&N(this),null;var n,i=e.needReadable;return a("need readable",i),(0===e.length||e.length-t0?B(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&N(this)),null!==n&&this.emit("data",n),n},k.prototype._read=function(t){w(this,new b("_read()"))},k.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,a("pipe count=%d opts=%j",n.pipesCount,e);var s=e&&!1===e.end||t===i.stdout||t===i.stderr?v:l;function l(){a("onend"),t.end()}n.endEmitted?i.nextTick(s):r.once("end",s),t.on("unpipe",function e(i,o){a("onunpipe"),i===r&&o&&!1===o.hasUnpiped&&(o.hasUnpiped=!0,a("cleanup"),t.removeListener("close",p),t.removeListener("finish",d),t.removeListener("drain",u),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",l),r.removeListener("end",v),r.removeListener("data",f),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||u())});var u=function(t){return function(){var e=t._readableState;a("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&o(t,"data")&&(e.flowing=!0,F(t))}}(r);t.on("drain",u);var c=!1;function f(e){a("ondata");var i=t.write(e);a("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==U(n.pipes,t))&&!c&&(a("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){a("onerror",e),v(),t.removeListener("error",h),0===o(t,"error")&&w(t,e)}function p(){t.removeListener("finish",d),v()}function d(){a("onfinish"),t.removeListener("close",p),v()}function v(){a("unpipe"),r.unpipe(t)}return r.on("data",f),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",p),t.once("finish",d),t.emit("pipe",r),n.flowing||(a("pipe resume"),r.resume()),t},k.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 a=0;a0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,a("on readable",n.length,n.reading),n.length?C(this):n.reading||i.nextTick(z,this))),r},k.prototype.addListener=k.prototype.on,k.prototype.removeListener=function(t,e){var r=s.prototype.removeListener.call(this,t,e);return"readable"===t&&i.nextTick(D,this),r},k.prototype.removeAllListeners=function(t){var e=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||i.nextTick(D,this),e},k.prototype.resume=function(){var t=this._readableState;return t.flowing||(a("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,i.nextTick(R,t,e))}(this,t)),t.paused=!1,this},k.prototype.pause=function(){return a("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(a("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},k.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var i in t.on("end",function(){if(a("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(i){a("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i||(r.objectMode||i&&i.length)&&(e.push(i)||(n=!0,t.pause()))}),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var o=0;o=n&&t<=i?t:c}if("string"!=typeof t&&"number"!=typeof t)return c;t=String(t);var u=_(r),y=t.charAt(0);!u||"G"!==y&&"g"!==y||(t=t.substr(1),r="");var w=u&&"chinese"===r.substr(0,7),T=t.match(w?x:m);if(!T)return c;var A=T[1],k=T[3]||"1",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),L=Number(T[11]||0);if(u){if(2===A.length)return c;var C;A=Number(A);try{var P=g.getComponentMethod("calendars","getCal")(r);if(w){var O="i"===k.charAt(k.length-1);k=parseInt(k,10),C=P.newDate(A,P.toMonthIndex(A,k,O),M)}else C=P.newDate(A,Number(k),M)}catch(t){return c}return C?(C.toJD()-v)*f+S*h+E*p+L*d:c}A=2===A.length?(Number(A)+2e3-b)%100+b:Number(A),k-=1;var I=new Date(Date.UTC(2e3,k,M,S,E));return I.setUTCFullYear(A),I.getUTCMonth()!==k||I.getUTCDate()!==M?c:I.getTime()+L*d},n=e.MIN_MS=e.dateTime2ms("-9999"),i=e.MAX_MS=e.dateTime2ms("9999-12-31 23:59:59.9999"),e.isDateTime=function(t,r){return e.dateTime2ms(t,r)!==c};var T=90*f,A=3*h,k=5*p;function M(t,e,r,n,i){if((e||r||n||i)&&(t+=" "+w(e,2)+":"+w(r,2),(n||i)&&(t+=":"+w(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+="."+w(i,a)}return t}e.ms2DateTime=function(t,e,r){if("number"!=typeof t||!(t>=n&&t<=i))return c;e||(e=0);var a,o,s,u,m,x,b=Math.floor(10*l(t+.05,1)),w=Math.round(t-b/10);if(_(r)){var S=Math.floor(w/f)+v,E=Math.floor(l(t,f));try{a=g.getComponentMethod("calendars","getCal")(r).fromJD(S).formatDate("yyyy-mm-dd")}catch(t){a=y("G%Y-%m-%d")(new Date(w))}if("-"===a.charAt(0))for(;a.length<11;)a="-0"+a.substr(1);else for(;a.length<10;)a="0"+a;o=e=n+f&&t<=i-f))return c;var e=Math.floor(10*l(t+.05,1)),r=new Date(Math.round(t-e/10));return M(a("%Y-%m-%d")(r),r.getHours(),r.getMinutes(),r.getSeconds(),10*r.getUTCMilliseconds()+e)},e.cleanDate=function(t,r,n){if(t===c)return r;if(e.isJSDate(t)||"number"==typeof t&&isFinite(t)){if(_(n))return s.error("JS Dates and milliseconds are incompatible with world calendars",t),r;if(!(t=e.ms2DateTimeLocal(+t))&&void 0!==r)return r}else if(!e.isDateTime(t,n))return s.error("unrecognized date",t),r;return t};var S=/%\d?f/g,E=/%h/g,L={1:"1",2:"1",3:"2",4:"2"};function C(t,e,r,n){t=t.replace(S,function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,"")||"0"});var i=new Date(Math.floor(e+.05));if(t=t.replace(E,function(){return L[r("%q")(i)]}),_(n))try{t=g.getComponentMethod("calendars","worldCalFmt")(t,e,n)}catch(t){return"Invalid"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];e.formatDate=function(t,e,r,n,i,a){if(i=_(i)&&i,!e)if("y"===r)e=a.year;else if("m"===r)e=a.month;else{if("d"!==r)return function(t,e){var r=l(t+.05,f),n=w(Math.floor(r/h),2)+":"+w(l(Math.floor(r/p),60),2);if("M"!==e){o(e)||(e=0);var i=(100+Math.min(l(t/d,60),P[e])).toFixed(e).substr(1);e>0&&(i=i.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+i}return n}(t,r)+"\n"+C(a.dayMonthYear,t,n,i);e=a.dayMonth+"\n"+a.year}return C(e,t,n,i)};var O=3*f;e.incrementMonth=function(t,e,r){r=_(r)&&r;var n=l(t,f);if(t=Math.round(t-n),r)try{var i=Math.round(t/f)+v,a=g.getComponentMethod("calendars","getCal")(r),o=a.fromJD(i);return e%12?a.add(o,e,"m"):a.add(o,e/12,"y"),(o.toJD()-v)*f+n}catch(e){s.error("invalid ms "+t+" in calendar "+r)}var u=new Date(t+O);return u.setUTCMonth(u.getUTCMonth()+e)+n-O},e.findExactDates=function(t,e){for(var r,n,i=0,a=0,s=0,l=0,u=_(e)&&g.getComponentMethod("calendars","getCal")(e),c=0;c0;){var a=r%10;n=(0===a?"":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),n(a.prototype,{newDate:function(t,e,r){return this._calendar.newDate(null==t?this:t,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,"y")},month:function(t){return 0===arguments.length?this._month:this.set(t,"m")},day:function(t){return 0===arguments.length?this._day:this.set(t,"d")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(u.local.invalidDate||u.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(u.local.differentCalendars||u.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?"-":"")+o(Math.abs(this.year()),4)+"-"+o(this.month(),2)+"-"+o(this.day(),2)}}),n(s.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,u.local.invalidDate||u.regionalOptions[""].invalidDate),r=t.day(),e=t.month(),t=t.year()),new a(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,u.local.invalidYear||u.regionalOptions[""].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,u.local.invalidYear||u.regionalOptions[""].invalidYear);return(e.year()<0?"-":"")+o(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,u.local.invalidYear||u.regionalOptions[""].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,u.local.invalidMonth||u.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,u.local.invalidMonth||u.regionalOptions[""].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,u.local.invalidYear||u.regionalOptions[""].invalidYear);return this.leapYear(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,u.local.invalidDate||u.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,u.local.invalidDate||u.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,u.local.invalidDate||u.regionalOptions[""].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,u.local.invalidDate||u.regionalOptions[""].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,"d"===r||"w"===r){var n=t.toJD()+e*("w"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+("y"===r?e:0),o=t.monthOfYear()+("m"===r?e:0);i=t.day(),"y"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):"m"===r&&(function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||"y"!==n&&"m"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,u.local.invalidDate||u.regionalOptions[""].invalidDate);var n="y"===r?e:t.year(),i="m"===r?e:t.month(),a="d"===r?e:t.day();return"y"!==r&&"m"!==r||(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),u=i-(l>2.5?4716:4715);return u<=0&&u--,this.newDate(u,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,u.local.invalidDate||u.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var u=t.exports=new i;u.cdate=a,u.baseCalendar=s,u.calendars.gregorian=l},10017:function(t,e,r){"use strict";var n,i=r(78030),a=r(22138)(),o=r(16423),s=r(94693);if(a){var l=i("RegExp.prototype.exec"),u={},c=function(){throw u},f={toString:c,valueOf:c};"symbol"==typeof Symbol.toPrimitive&&(f[Symbol.toPrimitive]=c),n=function(t){if(!t||"object"!=typeof t)return!1;var e=s(t,"lastIndex");if(!e||!o(e,"value"))return!1;try{l(t,f)}catch(t){return t===u}}}else{var h=i("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},10088:function(t,e,r){"use strict";var n=r(15181);function i(t){return-1!==t.indexOf("e")?t.replace(/[.]?0+e/,"e"):-1!==t.indexOf(".")?t.replace(/[.]?0+$/,""):t}e.formatPiePercent=function(t,e){var r=i((100*t).toPrecision(3));return n.numSeparate(r,e)+"%"},e.formatPieValue=function(t,e){var r=i(t.toPrecision(10));return n.numSeparate(r,e)},e.getFirstFilled=function(t,e){if(Array.isArray(t))for(var r=0;r1)for(r=0;r-1&&g(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf("event")>-1&&u.click(n,e.originalEvent)}}},b.updateFx=function(t){var e=this,r=e.map,n=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=function(t,r){r.isRect?(t.range={})[e.id]=[u([r.xmin,r.ymin]),u([r.xmax,r.ymax])]:(t.lassoPoints={})[e.id]=r.map(u)};var s=e.dragOptions;e.dragOptions=i.extendDeep(s||{},{dragmode:t.dragmode,element:e.div,gd:n,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off("click",e.onClickInPanHandler),h(o)||f(o)?(r.dragPan.disable(),r.on("zoomstart",e.clearOutline),e.dragOptions.prepFn=function(t,r,n){p(t,r,n,e.dragOptions,o)},l.init(e.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",e.clearOutline),e.div.onmousedown=null,e.div.ontouchstart=null,e.div.removeEventListener("touchstart",e.div._ontouchstart),e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on("click",e.onClickInPanHandler))}function u(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},b.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+"px",n.height=r.h*(e.y[1]-e.y[0])+"px",n.left=r.l+e.x[0]*r.w+"px",n.top=r.t+(1-e.y[1])*r.h+"px",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},b.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e":return function(t){return h(t)>s};case">=":return function(t){return h(t)>=s};case"[]":return function(t){var e=h(t);return e>=s[0]&&e<=s[1]};case"()":return function(t){var e=h(t);return e>s[0]&&e=s[0]&&es[0]&&e<=s[1]};case"][":return function(t){var e=h(t);return e<=s[0]||e>=s[1]};case")(":return function(t){var e=h(t);return es[1]};case"](":return function(t){var e=h(t);return e<=s[0]||e>s[1]};case")[":return function(t){var e=h(t);return e=s[1]};case"{}":return function(t){return-1!==s.indexOf(h(t))};case"}{":return function(t){return-1===s.indexOf(h(t))}}}(r,a.getDataToCoordFunc(t,e,s,i),h),x={},b={},_=0;d?(g=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set(new Array(f))},y=function(t,e){var r=x[t.astr][e];t.get()[e]=r}):(g=function(t){x[t.astr]=n.extendDeep([],t.get()),t.set([])},y=function(t,e){var r=x[t.astr][e];t.get().push(r)}),A(g);for(var w=o(e.transforms,r),T=0;Tt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\n\t\tdiscard;\n\t}\n\n\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\n\n\tfloat borderRadius = fragBorderRadius;\n\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\n\tvec4 color = mix(fragColor, fragBorderColor, ratio);\n\tcolor.a *= alpha * opacity;\n\tgl_FragColor = color;\n}\n"]),l.vert=h(["precision highp float;\n#define GLSLIFY 1\n\nattribute float x, y, xFract, yFract;\nattribute float size, borderSize;\nattribute vec4 colorId, borderColorId;\nattribute float isActive;\n\n// `invariant` effectively turns off optimizations for the position.\n// We need this because -fast-math on M1 Macs is re-ordering\n// floating point operations in a way that causes floating point\n// precision limits to put points in the wrong locations.\ninvariant gl_Position;\n\nuniform bool constPointSize;\nuniform float pixelRatio;\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\nuniform sampler2D paletteTexture;\n\nconst float maxSize = 100.;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragBorderRadius, fragWidth;\n\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\n\nbool isDirect = (paletteSize.x < 1.);\n\nvec4 getColor(vec4 id) {\n return isDirect ? id / 255. : texture2D(paletteTexture,\n vec2(\n (id.x + .5) / paletteSize.x,\n (id.y + .5) / paletteSize.y\n )\n );\n}\n\nvoid main() {\n // ignore inactive points\n if (isActive == 0.) return;\n\n vec2 position = vec2(x, y);\n vec2 positionFract = vec2(xFract, yFract);\n\n vec4 color = getColor(colorId);\n vec4 borderColor = getColor(borderColorId);\n\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n\n gl_PointSize = (size + borderSize) * pointSizeScale;\n\n vec2 pos = (position + translate) * scale\n + (positionFract + translateFract) * scale\n + (position + translate) * scaleFract\n + (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\n\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\n fragColor = color;\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\n fragWidth = 1. / gl_PointSize;\n}\n"]),g&&(l.frag=l.frag.replace("smoothstep","smoothStep"),s.frag=s.frag.replace("smoothstep","smoothStep")),this.drawCircle=t(l)}b.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=c(t,{bounds:f}):n&&n.length&&(e.tree=n),e.tree){var h={primitive:"points",usage:"static",data:e.tree,type:"uint32"};e.elements?e.elements(h):e.elements=o.elements(h)}var p=y.float32(t);return i({data:p,usage:"dynamic"}),a({data:y.fract32(t,p),usage:"dynamic"}),s({data:new Uint8Array(u),type:"uint8",usage:"stream"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach(function(t){return t&&t.destroy&&t.destroy()}),i.length=0,e&&"number"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},b.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i0)&&(o("active"),o("direction"),o("type"),o("showactive"),o("x"),o("y"),n.noneOrAll(t,e,["x","y"]),o("xanchor"),o("yanchor"),o("pad.t"),o("pad.r"),o("pad.b"),o("pad.l"),n.coerceFont(o,"font",r.font),o("bgcolor",r.paper_bgcolor),o("bordercolor"),o("borderwidth"))}function u(t,e){function r(r,i){return n.coerce(t,e,s,r,i)}r("visible","skip"===t.method||Array.isArray(t.args))&&(r("method"),r("args"),r("args2"),r("label"),r("execute"))}t.exports=function(t,e){i(t,e,{name:o,handleItemDefaults:l})}},12017:function(t,e,r){"use strict";var n=r(28418);t.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:r(31164),layoutAttributes:r(52919),supplyDefaults:r(66571),crossTraceDefaults:r(18352),supplyLayoutDefaults:r(80784),calc:r(2524).calc,crossTraceCalc:r(8663),arraysToCalcdata:r(66335),plot:r(79758),colorbar:r(23814),formatLabels:r(3658),style:r(26100).style,styleOnSelect:r(26100).styleOnSelect,hoverPoints:r(619),selectPoints:r(64061),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:r(29435),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}},12053:function(t,e,r){"use strict";r.d(e,{By:function(){return s},KP:function(){return d},Q$:function(){return y},Sh:function(){return f},dt:function(){return c},eQ:function(){return l},fz:function(){return o},gf:function(){return g},kS:function(){return h},l3:function(){return u},se:function(){return p},t$:function(){return x},tz:function(){return m},yW:function(){return v}});var n=r(15824),i=r(21365);function a(t){return(0,n.A)(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*i.rR)/i.Fq})}var o=a(0),s=a(1),l=a(2),u=a(3),c=a(4),f=a(5),h=a(6),p=o.range,d=s.range,v=l.range,g=u.range,y=c.range,m=f.range,x=h.range},12116:function(t,e,r){"use strict";r.d(e,{A:function(){return l}});var n=r(73125),i=r(29752),a=r(18901),o=r(39913),s=r(69030);function l(t){var e=(0,a.gn)(t),r=6*a.F2,l=e>0,u=(0,a.tn)(e)>a.Ni;function c(t,r){return(0,a.gn)(t)*(0,a.gn)(r)>e}function f(t,r,i){var o=(0,n.jf)(t),s=(0,n.jf)(r),l=[1,0,0],u=(0,n.r8)(o,s),c=(0,n.W8)(u,u),f=u[0],h=c-f*f;if(!h)return!i&&t;var p=e*c/h,d=-e*f/h,v=(0,n.r8)(l,u),g=(0,n.ly)(l,p),y=(0,n.ly)(u,d);(0,n.ep)(g,y);var m=v,x=(0,n.W8)(g,m),b=(0,n.W8)(m,m),_=x*x-b*((0,n.W8)(g,g)-1);if(!(_<0)){var w=(0,a.RZ)(_),T=(0,n.ly)(m,(-x-w)/b);if((0,n.ep)(T,g),T=(0,n.EV)(T),!i)return T;var A,k=t[0],M=r[0],S=t[1],E=r[1];M0^T[1]<((0,a.tn)(T[0]-k)a.pi^(k<=T[0]&&T[0]<=M)){var P=(0,n.ly)(m,(-x+w)/b);return(0,n.ep)(P,g),[T,(0,n.EV)(P)]}}}function h(e,r){var n=l?t:a.pi-t,i=0;return e<-n?i|=1:e>n&&(i|=2),r<-n?i|=4:r>n&&(i|=8),i}return(0,s.A)(c,function(t){var e,r,n,i,s;return{lineStart:function(){i=n=!1,s=1},point:function(p,d){var v,g=[p,d],y=c(p,d),m=l?y?0:h(p,d):y?h(p+(p<0?a.pi:-a.pi),d):0;if(!e&&(i=n=y)&&t.lineStart(),y!==n&&(!(v=f(e,g))||(0,o.A)(e,v)||(0,o.A)(g,v))&&(g[2]=1),y!==n)s=0,y?(t.lineStart(),v=f(g,e),t.point(v[0],v[1])):(v=f(e,g),t.point(v[0],v[1],2),t.lineEnd()),e=v;else if(u&&e&&l^y){var x;m&r||!(x=f(g,e,!0))||(s=0,l?(t.lineStart(),t.point(x[0][0],x[0][1]),t.point(x[1][0],x[1][1]),t.lineEnd()):(t.point(x[1][0],x[1][1]),t.lineEnd(),t.lineStart(),t.point(x[0][0],x[0][1],3)))}!y||e&&(0,o.A)(e,g)||t.point(g[0],g[1]),e=g,n=y,r=m},lineEnd:function(){n&&t.lineEnd(),e=null},clean:function(){return s|(i&&n)<<1}}},function(e,n,a,o){(0,i.J)(o,t,r,a,e,n)},l?[0,-t]:[-a.pi,t-a.pi])}},12203:function(t,e,r){"use strict";var n=r(5159),i=r(15181),a=r(78945),o=a.ONEDAY,s=a.ONEWEEK;e.dtick=function(t,e){var r="log"===e,i="date"===e,a="category"===e,s=i?o:1;if(!t)return s;if(n(t))return(t=Number(t))<=0?s:a?Math.max(1,Math.round(t)):i?Math.max(.1,t):t;if("string"!=typeof t||!i&&!r)return s;var l=t.charAt(0),u=t.substr(1);return(u=n(u)?Number(u):0)<=0||!(i&&"M"===l&&u===Math.round(u)||r&&"L"===l||r&&"D"===l&&(1===u||2===u))?s:t},e.tick0=function(t,e,r,a){return"date"===e?i.cleanDate(t,i.dateTick0(r,a%s===0?1:0)):"D1"!==a&&"D2"!==a?n(t)?Number(t):0:void 0}},12240:function(t,e,r){"use strict";var n=r(36557).drawRaw,i=r(77494),a=["x","y","z"];t.exports=function(t){for(var e=t.fullSceneLayout,r=t.dataScale,o=e.annotations,s=0;s1){u=!0;break}}u?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+s+'"]').remove():(l._pdata=i(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*r[0],e.yaxis.r2l(l.y)*r[1],e.zaxis.r2l(l.z)*r[2]]),n(t.graphDiv,l,s,t.id,l._xa,l._ya))}}},12261:function(t,e,r){"use strict";var n=r(31164),i=r(79335),a=r(99012).axisHoverFormat,o=r(38532).rb,s=r(73317),l=r(29278).idRegex,u=r(92444).templatedArray,c=r(8357).extendFlat,f=n.marker,h=f.line,p=c(i("marker.line",{editTypeOverride:"calc"}),{width:c({},h.width,{editType:"calc"}),editType:"calc"}),d=c(i("marker"),{symbol:f.symbol,angle:f.angle,size:c({},f.size,{editType:"markerSize"}),sizeref:f.sizeref,sizemin:f.sizemin,sizemode:f.sizemode,opacity:f.opacity,colorbar:f.colorbar,line:p,editType:"calc"});function v(t){return{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"subplotid",regex:l[t],editType:"plot"}}}d.color.editType=d.cmin.editType=d.cmax.editType="style",t.exports={dimensions:u("dimension",{visible:{valType:"boolean",dflt:!0,editType:"calc"},label:{valType:"string",editType:"calc"},values:{valType:"data_array",editType:"calc+clearAxisTypes"},axis:{type:{valType:"enumerated",values:["linear","log","date","category"],editType:"calc+clearAxisTypes"},matches:{valType:"boolean",dflt:!1,editType:"calc"},editType:"calc+clearAxisTypes"},editType:"calc+clearAxisTypes"}),text:c({},s.text,{}),hovertext:c({},s.hovertext,{}),hovertemplate:o(),xhoverformat:a("x"),yhoverformat:a("y"),marker:d,xaxes:v("x"),yaxes:v("y"),diagonal:{visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},showupperhalf:{valType:"boolean",dflt:!0,editType:"calc"},showlowerhalf:{valType:"boolean",dflt:!0,editType:"calc"},selected:{marker:s.selected.marker,editType:"calc"},unselected:{marker:s.unselected.marker,editType:"calc"},opacity:s.opacity}},12358:function(t,e,r){"use strict";var n=r(93335),i={getDelay:n.getDelay,getRedrawFunc:n.getRedrawFunc,clone:r(58328),toSVG:r(65479),svgToImg:r(69982),toImage:r(59884),downloadImage:r(68552)};t.exports=i},12367:function(t){"use strict";function e(t,e){return e?e.d2l(t):t}function r(t,e){return e?e.l2d(t):t}function n(t,r){return e(t.x1,r)-e(t.x0,r)}function i(t,r,n){return e(t.y1,n)-e(t.y0,n)}t.exports={x0:function(t){return t.x0},x1:function(t){return t.x1},y0:function(t){return t.y0},y1:function(t){return t.y1},slope:function(t,e,r){return"line"!==t.type?void 0:i(t,0,r)/n(t,e)},dx:n,dy:i,width:function(t,e){return Math.abs(n(t,e))},height:function(t,e,r){return Math.abs(i(t,0,r))},length:function(t,e,r){return"line"!==t.type?void 0:Math.sqrt(Math.pow(n(t,e),2)+Math.pow(i(t,0,r),2))},xcenter:function(t,n){return r((e(t.x1,n)+e(t.x0,n))/2,n)},ycenter:function(t,n,i){return r((e(t.y1,i)+e(t.y0,i))/2,i)}}},12409:function(t,e,r){"use strict";var n=r(31164),i=r(79335),a=r(99012).axisHoverFormat,o=r(38532).rb,s=r(38532).ay,l=r(28209),u=r(31790),c=r(5935),f=r(8357).extendFlat,h=r(7458).overrideAll,p=r(72198),d=n.line,v=n.marker,g=v.line,y=f({width:d.width,dash:{valType:"enumerated",values:p(u),dflt:"solid"}},i("line")),m=t.exports=h({x:n.x,y:n.y,z:{valType:"data_array"},text:f({},n.text,{}),texttemplate:s({},{}),hovertext:f({},n.hovertext,{}),hovertemplate:o(),xhoverformat:a("x"),yhoverformat:a("y"),zhoverformat:a("z"),mode:f({},n.mode,{dflt:"lines+markers"}),surfaceaxis:{valType:"enumerated",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:"color"},projection:{x:{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}},y:{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}},z:{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}}},connectgaps:n.connectgaps,line:y,marker:f({symbol:{valType:"enumerated",values:p(c),dflt:"circle",arrayOk:!0},size:f({},v.size,{dflt:8}),sizeref:v.sizeref,sizemin:v.sizemin,sizemode:v.sizemode,opacity:f({},v.opacity,{arrayOk:!1}),colorbar:v.colorbar,line:f({width:f({},g.width,{arrayOk:!1})},i("marker.line"))},i("marker")),textposition:f({},n.textposition,{dflt:"top center"}),textfont:{color:n.textfont.color,size:n.textfont.size,family:f({},n.textfont.family,{arrayOk:!1})},opacity:l.opacity,hoverinfo:f({},l.hoverinfo)},"calc","nested");m.x.editType=m.y.editType=m.z.editType="calc+clearAxisTypes"},12819:function(t){"use strict";t.exports=function(t,e,r){!1===r("zsmooth")&&(r("xgap"),r("ygap")),r("zhoverformat")}},13115:function(t,e,r){"use strict";var n=r(15181).isTypedArray;e.convertTypedArray=function(t){return n(t)?Array.prototype.slice.call(t):t},e.isOrdinal=function(t){return!!t.tickvals},e.isVisible=function(t){return t.visible||!("visible"in t)}},13218:function(t,e,r){"use strict";var n=r(5159),i=r(78945).BADNUM,a=r(26446),o=r(80924),s=r(66335),l=r(64433),u=r(2524).calcMarkerSize;t.exports=function(t,e){for(var r=t._fullLayout,c=e.subplot,f=r[c].radialaxis,h=r[c].angularaxis,p=f.makeCalcdata(e,"r"),d=h.makeCalcdata(e,"theta"),v=e._length,g=new Array(v),y=0;y-1?-1:t.indexOf("right")>-1?1:0}function b(t){return null==t?0:t.indexOf("top")>-1?-1:t.indexOf("bottom")>-1?1:0}function _(t,e){return e(4*t)}function w(t){return p[t]}function T(t,e,r,n,i){var a=null;if(l.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var E=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],l=[];for(n=0;n1){var e=["LOG:"];for(t=0;t1){var r=[];for(t=0;t"),"long")}},a.warn=function(){var t;if(n.logging>0){var e=["WARN:"];for(t=0;t0){var r=[];for(t=0;t"),"stick")}},a.error=function(){var t;if(n.logging>0){var e=["ERROR:"];for(t=0;t0){var r=[];for(t=0;t"),"stick")}}},13621:function(t,e,r){"use strict";t.exports=r(34758)},13625:function(t){"use strict";t.exports=function(t,e,n){var i,a,o={};if("string"==typeof e&&(e=r(e)),Array.isArray(e)){var s={};for(a=0;a-1?C+I:-(O+I):0,z={x0:P,x1:P,y0:D,y1:D+O},R=function(t,e,r){var n=y.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},N={},j=null,U=function(t,e){return e?B[h(t)]:N[h(t)]};g.hasMultipleRoots&&A&&M++,y._maxDepth=M,y._backgroundColor=v.paper_bgcolor,y._entryDepth=b.data.depth,y._atRootLevel=A;var V=-L/2+S.l+S.w*(E.x[1]+E.x[0])/2,H=-C/2+S.t+S.h*(1-(E.y[1]+E.y[0])/2),q=function(t){return V+t},G=function(t){return H+t},Y=G(0),W=q(0),Z=function(t){return W+t},X=function(t){return Y+t};function J(t,e){return t+","+e}var K=Z(0),$=function(t){t.x=Math.max(K,t.x)},Q=y.pathbar.edgeshape,tt=y[m?"tiling":"marker"].pad,et=function(t){return-1!==y.textposition.indexOf(t)},rt=et("top"),nt=et("left"),it=et("right"),at=et("bottom"),ot=function(t,e){var r=t.x0,n=t.x1,i=t.y0,a=t.y1,o=t.textBB,c=rt||e.isHeader&&!at?"start":at?"end":"middle",f=et("right"),h=et("left")||e.onPathbar?-1:f?1:0;if(e.isHeader){if((r+=(m?tt:tt.l)-s)>=(n-=(m?tt:tt.r)-s)){var p=(r+n)/2;r=p,n=p}var d;at?i<(d=a-(m?tt:tt.b))&&d"===Q?(l.x-=a,u.x-=a,c.x-=a,f.x-=a):"/"===Q?(c.x-=a,f.x-=a,o.x-=a/2,s.x-=a/2):"\\"===Q?(l.x-=a,u.x-=a,o.x-=a/2,s.x-=a/2):"<"===Q&&(o.x-=a,s.x-=a),$(l),$(f),$(o),$(u),$(c),$(s),"M"+J(l.x,l.y)+"L"+J(u.x,u.y)+"L"+J(s.x,s.y)+"L"+J(c.x,c.y)+"L"+J(f.x,f.y)+"L"+J(o.x,o.y)+"Z"},toMoveInsideSlice:ot,makeUpdateSliceInterpolator:lt,makeUpdateTextInterpolator:ut,handleSlicesExit:ct,hasTransition:k,strTransform:ft}):w.remove()}},14083:function(t,e,r){"use strict";var n=r(5159),i=r(15181),a=r(44236),o=r(88191),s=r(93024).makeBlank,l=r(90438);function u(t){var e,r=t[0].trace,n=r._opts;if(r.selectedpoints){for(var a=o.makeSelectedPointStyleFns(r),s=0;s1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;ih.range[1]&&(x+=Math.PI),n.getClosest(u,function(t){return v(m,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?g+Math.min(1,Math.abs(t.thetag1-t.thetag0)/y)-1+(t.rp1-m)/(t.rp1-t.rp0)-1:1/0},t),!1!==t.index){var b=u[t.index];t.x0=t.x1=b.ct[0],t.y0=t.y1=b.ct[1];var _=i.extendFlat({},b,{r:b.s,theta:b.p});return o(b,c,t),s(_,c,f,t),t.hovertemplate=c.hovertemplate,t.color=a(c,b),t.xLabelVal=t.yLabelVal=void 0,b.s<0&&(t.idealAlign="left"),[t]}}},14511:function(t,e,r){"use strict";var n=r(26446);t.exports=function(t,e,r){var i={},a=r[e.subplot]._subplot;return i.realLabel=n.tickText(a.radialAxis,t.real,!0).text,i.imagLabel=n.tickText(a.angularAxis,t.imag,!0).text,i}},14617:function(t,e,r){"use strict";var n=r(72198),i="1.10.1",a='©
    OpenStreetMap contributors',o=['© Carto',a].join(" "),s=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),l={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:a,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:o,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:o,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:s,tiles:["https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:s,tiles:["https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),tiles:["https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},u=n(l);t.exports={requiredVersion:i,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:l,styleValuesNonMapbox:u,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install mapbox-gl@"+i+"."].join("\n"),noAccessTokenErrorMsg:["Missing Mapbox access token.","Mapbox trace type require a Mapbox access token to be registered.","For example:"," Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });","More info here: https://www.mapbox.com/help/define-access-token/"].join("\n"),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",u.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join("\n"),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join("\n"),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z",path1:"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z",path2:"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z",polygon:"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner":"display: none;","ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner":"display: block; margin-top:2px","ctrl-attrib.mapboxgl-compact:hover":"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;","ctrl-attrib.mapboxgl-compact::after":'content: ""; cursor: pointer; position: absolute; background-image: url(\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;',"ctrl-attrib.mapboxgl-compact":"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;","ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; right: 0","ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; left: 0","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","ctrl-logo":'display:block; width: 21px; height: 21px; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E\')'}}},14665:function(t,e,r){"use strict";var n=r(46982);t.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split("[")[0],s=0;so&&(s=o);var l=(0,n.jk)(r,function(t){return(a-e-(t.length-1)*s)/(0,n.cz)(t,d)});r.forEach(function(t){t.forEach(function(t,e){t.y1=(t.y0=e)+t.value*l})}),t.links.forEach(function(t){t.width=t.value*l})})(),f();for(var o=1,l=k;l>0;--l)c(o*=.99),f(),u(o),f();function u(t){r.forEach(function(e){e.forEach(function(e){if(e.targetLinks.length){var r=((0,n.cz)(e.targetLinks,g)/(0,n.cz)(e.targetLinks,d)-v(e))*t;e.y0+=r,e.y1+=r}})})}function c(t){r.slice().reverse().forEach(function(e){e.forEach(function(e){if(e.sourceLinks.length){var r=((0,n.cz)(e.sourceLinks,y)/(0,n.cz)(e.sourceLinks,d)-v(e))*t;e.y0+=r,e.y1+=r}})})}function f(){r.forEach(function(t){var r,n,i,o=e,l=t.length;for(t.sort(p),i=0;i0&&(r.y0+=n,r.y1+=n),o=r.y1+s;if((n=o-s-a)>0)for(o=r.y0-=n,r.y1-=n,i=l-2;i>=0;--i)(n=(r=t[i]).y1+s-o)>0&&(r.y0-=n,r.y1-=n),o=r.y0})}}(l),E(l),l}function E(t){t.nodes.forEach(function(t){t.sourceLinks.sort(h),t.targetLinks.sort(f)}),t.nodes.forEach(function(t){var e=t.y0,r=e;t.sourceLinks.forEach(function(t){t.y0=e+t.width/2,e+=t.width}),t.targetLinks.forEach(function(t){t.y1=r+t.width/2,r+=t.width})})}return S.update=function(t){return E(t),t},S.nodeId=function(t){return arguments.length?(u="function"==typeof t?t:c(t),S):u},S.nodeAlign=function(t){return arguments.length?(w="function"==typeof t?t:c(t),S):w},S.nodeWidth=function(t){return arguments.length?(o=+t,S):o},S.nodePadding=function(t){return arguments.length?(s=+t,S):s},S.nodes=function(t){return arguments.length?(T="function"==typeof t?t:c(t),S):T},S.links=function(t){return arguments.length?(A="function"==typeof t?t:c(t),S):A},S.size=function(n){return arguments.length?(t=e=0,r=+n[0],a=+n[1],S):[r-t,a-e]},S.extent=function(n){return arguments.length?(t=+n[0][0],r=+n[1][0],e=+n[0][1],a=+n[1][1],S):[[t,e],[r,a]]},S.iterations=function(t){return arguments.length?(k=+t,S):k},S}var T=r(63919);function A(t){return[t.source.x1,t.y0]}function k(t){return[t.target.x0,t.y1]}function M(){return(0,T.pq)().source(A).target(k)}},14736:function(t,e,r){"use strict";var n=r(15181),i=r(69562).contrast,a=r(94257),o=r(33643),s=r(46716);function l(t,e){function r(r,i){return n.coerce(t,e,a.tickformatstops,r,i)}r("enabled")&&(r("dtickrange"),r("value"))}t.exports=function(t,e,r,u,c){c||(c={});var f=r("labelalias");n.isPlainObject(f)||delete e.labelalias;var h=o(t);if(r("showticklabels")){var p=c.font||{},d=e.color,v=-1!==(e.ticklabelposition||"").indexOf("inside")?i(c.bgColor):d&&d!==a.color.dflt?d:p.color;if(n.coerceFont(r,"tickfont",{family:p.family,size:p.size,color:v}),c.noTicklabelstep||"multicategory"===u||"log"===u||r("ticklabelstep"),c.noAng||r("tickangle"),"category"!==u){var g=r("tickformat");s(t,e,{name:"tickformatstops",inclusionAttr:"enabled",handleItemDefaults:l}),e.tickformatstops.length||delete e.tickformatstops,c.noExp||g||"date"===u||(r("showexponent",h),r("exponentformat"),r("minexponent"),r("separatethousands"))}}}},14751:function(t,e,r){"use strict";var n=r(41199),i=r(15181),a=r(51257).wrap,o=i.isArrayOrTypedArray,s=i.isIndex,l=r(44236);t.exports=function(t,e){var r=function(t){var e,r=t.node,a=t.link,u=[],c=o(a.color),f=o(a.customdata),h={},p={},d=a.colorscales.length;for(e=0;em&&(m=a.source[e]),a.target[e]>m&&(m=a.target[e]);var x,b=m+1;t.node._count=b;var _=t.node.groups,w={};for(e=0;e<_.length;e++){var T=_[e];for(x=0;x0&&s(E,b)&&s(L,b)&&(!w.hasOwnProperty(E)||!w.hasOwnProperty(L)||w[E]!==w[L])){w.hasOwnProperty(L)&&(L=w[L]),w.hasOwnProperty(E)&&(E=w[E]),L=+L,h[E=+E]=h[L]=!0;var C="";a.label&&a.label[e]&&(C=a.label[e]);var P=null;C&&p.hasOwnProperty(C)&&(P=p[C]),u.push({pointNumber:e,label:C,color:c?a.color[e]:a.color,customdata:f?a.customdata[e]:a.customdata,concentrationscale:P,source:E,target:L,value:+S}),M.source.push(E),M.target.push(L)}}var O=b+_.length,I=o(r.color),D=o(r.customdata),z=[];for(e=0;eb-1,childrenNodes:[],pointNumber:e,label:R,color:I?r.color[e]:r.color,customdata:D?r.customdata[e]:r.customdata})}var F=!1;return function(t,e,r){for(var a=i.init2dArray(t,0),o=0;o1})}(O,M.source,M.target)&&(F=!0),{circular:F,links:u,nodes:z,groups:_,groupLookup:w}}(e);return a({circular:r.circular,_nodes:r.nodes,_links:r.links,_groups:r.groups,_groupLookup:r.groupLookup})}},14827:function(t,e,r){"use strict";var n=r(5159),i=r(46982),a=r(15181),o=r(92444),s=r(68572);t.exports=function(t,e,r,l){var u="error_"+l.axis,c=o.newContainer(e,u),f=t[u]||{};function h(t,e){return a.coerce(f,c,s,t,e)}if(!1!==h("visible",void 0!==f.array||void 0!==f.value||"sqrt"===f.type)){var p=h("type","array"in f?"data":"percent"),d=!0;"sqrt"!==p&&(d=h("symmetric",!(("data"===p?"arrayminus":"valueminus")in f))),"data"===p?(h("array"),h("traceref"),d||(h("arrayminus"),h("tracerefminus"))):"percent"!==p&&"constant"!==p||(h("value"),d||h("valueminus"));var v="copy_"+l.inherit+"style";l.inherit&&(e["error_"+l.inherit]||{}).visible&&h(v,!(f.color||n(f.thickness)||n(f.width))),l.inherit&&c[v]||(h("color",r),h("thickness"),h("width",i.traceIs(e,"gl3d")?0:4))}}},14994:function(t,e,r){"use strict";var n=r(31751);t.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:"",cLetter:"c"})}},15095:function(t,e,r){"use strict";var n=r(26446),i=r(8357).extendFlat;t.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;r=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},e.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),e.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},e.enable(i())},15181:function(t,e,r){"use strict";var n=r(16534),i=r(99146).aL,a=r(54718).GP,o=r(5159),s=r(78945),l=s.FP_SAFE,u=-l,c=s.BADNUM,f=t.exports={};f.adjustFormat=function(t){return!t||/^\d[.]\df/.test(t)||/[.]\d%/.test(t)?t:"0.f"===t?"~f":/^\d%/.test(t)?"~%":/^\ds/.test(t)?"~s":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?"~"+t:t};var h={};f.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,f.warn('encountered bad format: "'+e+'"'))},f.noFormat=function(t){return String(t)},f.numberFormat=function(t){var e;try{e=a(f.adjustFormat(t))}catch(e){return f.warnBadFormat(t),f.noFormat}return e},f.nestedProperty=r(23716),f.keyedContainer=r(75563),f.relativeAttr=r(42699),f.isPlainObject=r(10194),f.toLogRange=r(79095),f.relinkPrivateKeys=r(43288);var p=r(80740);f.isTypedArray=p.isTypedArray,f.isArrayOrTypedArray=p.isArrayOrTypedArray,f.isArray1D=p.isArray1D,f.ensureArray=p.ensureArray,f.concat=p.concat,f.maxRowLength=p.maxRowLength,f.minRowLength=p.minRowLength;var d=r(82797);f.mod=d.mod,f.modHalf=d.modHalf;var v=r(33064);f.valObjectMeta=v.valObjectMeta,f.coerce=v.coerce,f.coerce2=v.coerce2,f.coerceFont=v.coerceFont,f.coercePattern=v.coercePattern,f.coerceHoverinfo=v.coerceHoverinfo,f.coerceSelectionMarkerOpacity=v.coerceSelectionMarkerOpacity,f.validate=v.validate;var g=r(9752);f.dateTime2ms=g.dateTime2ms,f.isDateTime=g.isDateTime,f.ms2DateTime=g.ms2DateTime,f.ms2DateTimeLocal=g.ms2DateTimeLocal,f.cleanDate=g.cleanDate,f.isJSDate=g.isJSDate,f.formatDate=g.formatDate,f.incrementMonth=g.incrementMonth,f.dateTick0=g.dateTick0,f.dfltRange=g.dfltRange,f.findExactDates=g.findExactDates,f.MIN_MS=g.MIN_MS,f.MAX_MS=g.MAX_MS;var y=r(46329);f.findBin=y.findBin,f.sorterAsc=y.sorterAsc,f.sorterDes=y.sorterDes,f.distinctVals=y.distinctVals,f.roundUp=y.roundUp,f.sort=y.sort,f.findIndexOfMin=y.findIndexOfMin,f.sortObjectKeys=r(72198);var m=r(94153);f.aggNums=m.aggNums,f.len=m.len,f.mean=m.mean,f.median=m.median,f.midRange=m.midRange,f.variance=m.variance,f.stdev=m.stdev,f.interp=m.interp;var x=r(33240);f.init2dArray=x.init2dArray,f.transposeRagged=x.transposeRagged,f.dot=x.dot,f.translationMatrix=x.translationMatrix,f.rotationMatrix=x.rotationMatrix,f.rotationXYMatrix=x.rotationXYMatrix,f.apply3DTransform=x.apply3DTransform,f.apply2DTransform=x.apply2DTransform,f.apply2DTransform2=x.apply2DTransform2,f.convertCssMatrix=x.convertCssMatrix,f.inverseTransformMatrix=x.inverseTransformMatrix;var b=r(37629);f.deg2rad=b.deg2rad,f.rad2deg=b.rad2deg,f.angleDelta=b.angleDelta,f.angleDist=b.angleDist,f.isFullCircle=b.isFullCircle,f.isAngleInsideSector=b.isAngleInsideSector,f.isPtInsideSector=b.isPtInsideSector,f.pathArc=b.pathArc,f.pathSector=b.pathSector,f.pathAnnulus=b.pathAnnulus;var _=r(51958);f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=r(17875);f.segmentsIntersect=w.segmentsIntersect,f.segmentDistance=w.segmentDistance,f.getTextLocation=w.getTextLocation,f.clearLocationCache=w.clearLocationCache,f.getVisibleSegment=w.getVisibleSegment,f.findPointOnPath=w.findPointOnPath;var T=r(8357);f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var A=r(13616);f.log=A.log,f.warn=A.warn,f.error=A.error;var k=r(90778);f.counterRegex=k.counter;var M=r(57341);f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=r(72565);function E(t){var e={};for(var r in t)for(var n=t[r],i=0;il||t=e)&&o(t)&&t>=0&&t%1==0},f.noop=r(32021),f.identity=r(94963),f.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},f.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},f.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(f.warn("randstr failed uniqueness"),l):t(e,r,n,(i||0)+1):l},f.OptionControl=function(t,e){t||(t={}),e||(e="opt");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r["_"+e]=t,r},f.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,u=new Array(l),c=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*u[n];c[r]=a}return c},f.syncOrAsync=function(t,e,r){var n;function i(){return f.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},f.stripTrailingSlash=function(t){return"/"===t.substr(-1)?t.substr(0,t.length-1):t},f.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0})},f.fillArray=function(t,e,r,n){if(n=n||f.identity,f.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l},f.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var z=/^\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,function(t,n){var i;return z.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:""})};var R={max:10,count:0,name:"hovertemplate"};f.hovertemplateString=function(){return U.apply(R,arguments)};var F={max:10,count:0,name:"texttemplate"};f.texttemplateString=function(){return U.apply(F,arguments)};var B=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/,N={max:10,count:0,name:"texttemplate",parseMultDiv:!0};f.texttemplateStringForShapes=function(){return U.apply(N,arguments)};var j=/^[:|\|]/;function U(t,e,r){var n=this,a=arguments;e||(e={});var o={};return t.replace(f.TEMPLATE_STRING_REGEX,function(t,s,l){var u="_xother"===s||"_yother"===s,c="_xother_"===s||"_yother_"===s,h="xother_"===s||"yother_"===s,p="xother"===s||"yother"===s||u||h||c,d=s;(u||c)&&(d=d.substring(1)),(h||c)&&(d=d.substring(0,d.length-1));var v,g,y,m=null,x=null;if(n.parseMultDiv){var b=function(t){var e=t.match(B);return e?{key:e[1],op:e[2],number:Number(e[3])}:{key:t,op:null,number:null}}(d);d=b.key,m=b.op,x=b.number}if(p){if(void 0===(v=e[d]))return""}else for(y=3;y=48&&o<=57,u=s>=48&&s<=57;if(l&&(n=10*n+o-48),u&&(i=10*i+s-48),!l||!u){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var V=2e9;f.seedPseudoRandom=function(){V=2e9},f.pseudoRandom=function(){var t=V;return V=(69069*V+1)%4294967296,Math.abs(V-t)<429496729?f.pseudoRandom():V/4294967296},f.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=f.extractOption(t,e,"htx","hovertext");if(f.isValidTextValue(i))return n(i);var a=f.extractOption(t,e,"tx","text");return f.isValidTextValue(a)?n(a):void 0},f.isValidTextValue=function(t){return t||0===t},f.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+"%",n=0;n1&&(u=1):u=0,f.strTranslate(i-u*(r+o),a-u*(n+s))+f.strScale(u)+(l?"rotate("+l+(e?"":" "+r+" "+n)+")":"")},f.setTransormAndDisplay=function(t,e){t.attr("transform",f.getTextTransform(e)),t.style("display",e.scale?null:"none")},f.ensureUniformFontSize=function(t,e){var r=f.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},f.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},f.bigFont=function(t){return Math.round(1.2*t)};var H=f.getFirefoxVersion(),q=null!==H&&H<86;f.getPositionFromD3Event=function(){return q?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},15236:function(t,e,r){"use strict";var n=r(7809),i=[32,126];t.exports=function(t){var e=(t=t||{}).shape?t.shape:t.canvas?[t.canvas.width,t.canvas.height]:[512,512],r=t.canvas||document.createElement("canvas"),a=t.font,o="number"==typeof t.step?[t.step,t.step]:t.step||[32,32],s=t.chars||i;if(a&&"string"!=typeof a&&(a=n(a)),Array.isArray(s)){if(2===s.length&&"number"==typeof s[0]&&"number"==typeof s[1]){for(var l=[],u=s[0],c=0;u<=s[1];u++)l[c++]=String.fromCharCode(u);s=l}}else s=String(s).split("");e=e.slice(),r.width=e[0],r.height=e[1];var f=r.getContext("2d");f.fillStyle="#000",f.fillRect(0,0,r.width,r.height),f.font=a,f.textAlign="center",f.textBaseline="middle",f.fillStyle="#fff";var h=o[0]/2,p=o[1]/2;for(u=0;ue[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},15291:function(t,e,r){"use strict";var n=r(5159),i=r(84538),a=r(46982),o=r(15181),s=r(37070),l=r(93003),u=r(69562),c=l.cleanId,f=l.getFromTrace,h=a.traceIs;function p(t,e){var r=t[e],n=e.charAt(0);r&&"paper"!==r&&(t[e]=c(r,n,!0))}function d(t){function e(e,r){var n=t[e],i=t.title&&t.title[r];n&&!i&&(t.title||(t.title={}),t.title[r]=t[e],delete t[e])}t&&("string"!=typeof t.title&&"number"!=typeof t.title||(t.title={text:t.title}),e("titlefont","font"),e("titleposition","position"),e("titleside","side"),e("titleoffset","offset"))}function v(t){if(!o.isPlainObject(t))return!1;var e=t.name;return delete t.name,delete t.showlegend,("string"==typeof e||"number"==typeof e)&&String(e)}function g(t,e,r,n){if(r&&!n)return t;if(n&&!r)return e;if(!t.trim())return e;if(!e.trim())return t;var i,a=Math.min(t.length,e.length);for(i=0;i0&&o.log("Clearing previous rejected promises from queue."),t._promises=[]},e.cleanLayout=function(t){var r,n;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var a=(s.subplotsRegistry.cartesian||{}).attrRegex,l=(s.subplotsRegistry.polar||{}).attrRegex,f=(s.subplotsRegistry.ternary||{}).attrRegex,h=(s.subplotsRegistry.gl3d||{}).attrRegex,v=Object.keys(t);for(r=0;r3?(I.x=1.02,I.xanchor="left"):I.x<-2&&(I.x=-.02,I.xanchor="right"),I.y>3?(I.y=1.02,I.yanchor="bottom"):I.y<-2&&(I.y=-.02,I.yanchor="top")),d(t),"rotate"===t.dragmode&&(t.dragmode="orbit"),u.clean(t),t.template&&t.template.layout&&e.cleanLayout(t.template.layout),t},e.cleanData=function(t){for(var r=0;r0)return t.substr(0,e)}e.hasParent=function(t,e){for(var r=b(e);r;){if(r in t)return!0;r=b(r)}return!1};var _=["x","y","z"];e.clearAxisTypes=function(t,e,r){for(var n=0;n("legend"===t?1:0));if(!1===M&&(r[t]=void 0),(!1!==M||f.uirevision)&&(p("uirevision",r.uirevision),!1!==M)){p("borderwidth");var S,E,L,C="h"===p("orientation"),P="paper"===p("yref"),O="paper"===p("xref"),I="left";if(C?(S=0,n.getComponentMethod("rangeslider","isVisible")(e.xaxis)?P?(E=1.1,L="bottom"):(E=1,L="top"):P?(E=-.1,L="top"):(E=0,L="bottom")):(E=1,L="auto",O?S=1.02:(S=1,I="right")),i.coerce(f,h,{x:{valType:"number",editType:"legend",min:O?-2:0,max:O?3:1,dflt:S}},"x"),i.coerce(f,h,{y:{valType:"number",editType:"legend",min:P?-2:0,max:P?3:1,dflt:E}},"y"),p("traceorder",_),u.isGrouped(r[t])&&p("tracegroupgap"),p("entrywidth"),p("entrywidthmode"),p("itemsizing"),p("itemwidth"),p("itemclick"),p("itemdoubleclick"),p("groupclick"),p("xanchor",I),p("yanchor",L),p("valign"),i.noneOrAll(f,h,["x","y"]),p("title.text")){p("title.side",C?"left":"top");var D=i.extendFlat({},d,{size:i.bigFont(d.size)});i.coerceFont(p,"title.font",D)}}}}t.exports=function(t,e,r){var n,a=r.slice(),o=e.shapes;if(o)for(n=0;n0))return o;do{o.push(a=new Date(+r)),e(r,i),t(r)}while(a=e)for(;t(e),!r(e);)e.setTime(e-1)},function(t,n){if(t>=t)if(n<0)for(;++n<=0;)for(;e(t,-1),!r(t););else for(;--n>=0;)for(;e(t,1),!r(t););})},r&&(s.count=function(e,a){return n.setTime(+e),i.setTime(+a),t(n),t(i),Math.floor(r(n,i))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t===0}:function(e){return s.count(0,e)%t===0}):s:null}),s}},16009:function(t,e,r){"use strict";t.exports={attributes:r(44708),layoutAttributes:r(13800),supplyDefaults:r(23571),crossTraceDefaults:r(61608),supplyLayoutDefaults:r(2463),calc:r(92356).calc,crossTraceCalc:r(27050).crossTraceCalc,plot:r(3095).plot,layerName:"barlayer",style:r(18095).style,styleOnSelect:r(18095).styleOnSelect,colorbar:r(23814),hoverPoints:r(54707),selectPoints:r(40668),eventData:r(99256),moduleType:"trace",name:"histogram",basePlotModule:r(29435),categories:["bar-like","cartesian","svg","bar","histogram","oriented","errorBarsOK","showLegend"],meta:{}}},16010:function(t,e,r){var n=r(47718),i=r(81611),a={M:"moveTo",C:"bezierCurveTo"};t.exports=function(t,e){t.beginPath(),i(n(e)).forEach(function(e){var r=e[0],n=e.slice(1);t[a[r]].apply(t,n)}),t.closePath()}},16040:function(t,e,r){"use strict";var n=r(54222),i=r(8357).extendFlat,a=r(5159);function o(t){if(Array.isArray(t)){for(var e=0,r=0;r=e||u===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=u,o=p(),i+=a,s=u+1,a=0);return n}function p(){return{firstRowIndex:null,lastRowIndex:null,rows:[]}}t.exports=function(t,e){var r=l(e.cells.values),p=function(t){return t.slice(e.header.values.length,t.length)},d=l(e.header.values);d.length&&!d[0].length&&(d[0]=[""],d=l(d));var v=d.concat(p(r).map(function(){return u((d[0]||[""]).length)})),g=e.domain,y=Math.floor(t._fullLayout._size.w*(g.x[1]-g.x[0])),m=Math.floor(t._fullLayout._size.h*(g.y[1]-g.y[0])),x=e.header.values.length?v[0].map(function(){return e.header.height}):[n.emptyHeaderHeight],b=r.length?r[0].map(function(){return e.cells.height}):[],_=x.reduce(s,0),w=h(b,m-_+n.uplift),T=f(h(x,_),[]),A=f(w,T),k={},M=e._fullInput.columnorder.concat(p(r.map(function(t,e){return e}))),S=v.map(function(t,r){var n=Array.isArray(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return a(n)?Number(n):1}),E=S.reduce(s,0);S=S.map(function(t){return t/E*y});var L=Math.max(o(e.header.line.width),o(e.cells.line.width)),C={key:e.uid+t._context.staticPlot,translateX:g.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-g.y[1]),size:t._fullLayout._size,width:y,maxLineWidth:L,height:m,columnOrder:M,groupHeight:m,rowBlocks:A,headerRowBlocks:T,scrollY:0,cells:i({},e.cells,{values:r}),headerCells:i({},e.header,{values:v}),gdColumns:v.map(function(t){return t[0]}),gdColumnsOriginalOrder:v.map(function(t){return t[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:v.map(function(t,e){var r=k[t];return k[t]=(r||0)+1,{key:t+"__"+k[t],label:t,specIndex:e,xIndex:M[e],xScale:c,x:void 0,calcdata:void 0,columnWidth:S[e]}})};return C.columns.forEach(function(t){t.calcdata=C,t.x=c(t)}),C}},16053:function(t,e,r){"use strict";t.exports=r(88022)},16212:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"scattersmith",basePlotModule:r(99026),categories:["smith","symbols","showLegend","scatter-like"],attributes:r(95231),supplyDefaults:r(76600),colorbar:r(23814),formatLabels:r(14511),calc:r(86047),plot:r(22745),style:r(26100).style,styleOnSelect:r(26100).styleOnSelect,hoverPoints:r(39442).hoverPoints,selectPoints:r(64061),meta:{}}},16232:function(t,e,r){"use strict";var n=r(34726);function i(t,e){null==e&&(e=!0);var r=t[0],i=t[1],a=t[2],o=t[3];return null==o&&(o=e?1:255),e&&(r*=255,i*=255,a*=255,o*=255),16777216*(r=255&n(r,0,255))+((i=255&n(i,0,255))<<16)+((a=255&n(a,0,255))<<8)+(255&n(o,0,255))}t.exports=i,t.exports.to=i,t.exports.from=function(t,e){var r=(t=+t)>>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}},16320:function(t,e,r){"use strict";var n=r(15181),i=r(7143);t.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;sS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],L=[],C=[],P="string"==typeof w.size,O="string"==typeof k.size,I=[],D=[],z=P?I:w,R=O?D:k,F=0,B=[],N=[],j=e.histnorm,U=e.histfunc,V=-1!==j.indexOf("density"),H="max"===U||"min"===U?null:0,q=a.count,G=o[j],Y=!1,W=[],Z=[],X="z"in e?e.z:"marker"in e&&Array.isArray(e.marker.color)?e.marker.color:"";X&&"count"!==U&&(Y="avg"===U,q=a[U]);var J=w.size,K=x(w.start),$=x(w.end)+(K-i.tickIncrement(K,J,!1,y))/1e6;for(r=K;r<$;r=i.tickIncrement(r,J,!1,y))L.push(H),I.push(r),Y&&C.push(0);I.push(r);var Q,tt=L.length,et=(r-K)/tt,rt=(Q=K+et/2,v.c2r(Q,0,y)),nt=k.size,it=b(k.start),at=b(k.end)+(it-i.tickIncrement(it,nt,!1,m))/1e6;for(r=it;r=0&&p=0&&de?1:t>=e?0:NaN}function y(t){return null===t?NaN:+t}function m(t){return!isNaN(t)}function x(t){return{left:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}a.ascending=g,a.descending=function(t,e){return et?1:e>=t?0:NaN},a.min=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++in&&(r=n)}else{for(;++i=n){r=n;break}for(;++in&&(r=n)}return r},a.max=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++ir&&(r=n)}else{for(;++i=n){r=n;break}for(;++ir&&(r=n)}return r},a.extent=function(t,e){var r,n,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=n){r=i=n;break}for(;++an&&(r=n),i=n){r=i=n;break}for(;++an&&(r=n),i1)return o/(l-1)},a.deviation=function(){var t=a.variance.apply(this,arguments);return t?Math.sqrt(t):t};var b=x(g);function _(t){return t.length}a.bisectLeft=b.left,a.bisect=a.bisectRight=b.right,a.bisector=function(t){return x(1===t.length?function(e,r){return g(t(e),r)}:t)},a.shuffle=function(t,e,r){(a=arguments.length)<3&&(r=t.length,a<2&&(e=0));for(var n,i,a=r-e;a;)i=Math.random()*a--|0,n=t[a+e],t[a+e]=t[i+e],t[i+e]=n;return t},a.permute=function(t,e){for(var r=e.length,n=new Array(r);r--;)n[r]=t[e[r]];return n},a.pairs=function(t){for(var e=0,r=t.length-1,n=t[0],i=new Array(r<0?0:r);e=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r};var w=Math.abs;function T(t,e){for(var r in e)Object.defineProperty(t.prototype,r,{value:e[r],enumerable:!1})}function A(){this._=Object.create(null)}function k(t){return"__proto__"==(t+="")||"\0"===t[0]?"\0"+t:t}function M(t){return"\0"===(t+="")[0]?t.slice(1):t}function S(t){return k(t)in this._}function E(t){return(t=k(t))in this._&&delete this._[t]}function L(){var t=[];for(var e in this._)t.push(M(e));return t}function C(){var t=0;for(var e in this._)++t;return t}function P(){for(var t in this._)return!1;return!0}function O(){this._=Object.create(null)}function I(t){return t}function D(t,e,r){return function(){var n=r.apply(e,arguments);return n===e?t:n}}function z(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var r=0,n=R.length;re;)i.push(n/a);else for(;(n=t+r*++o)=n.length)return e?e.call(r,a):t?a.sort(t):a;for(var l,u,c,f,h=-1,p=a.length,d=n[s++],v=new A;++h=n.length)return t;var r=[],a=i[e++];return t.forEach(function(t,n){r.push({key:t,values:s(n,e)})}),a?r.sort(function(t,e){return a(t.key,e.key)}):r}return r.map=function(t,e){return o(e,t,0)},r.entries=function(t){return s(o(a.map,t,0),0)},r.key=function(t){return n.push(t),r},r.sortKeys=function(t){return i[n.length-1]=t,r},r.sortValues=function(e){return t=e,r},r.rollup=function(t){return e=t,r},r},a.set=function(t){var e=new O;if(t)for(var r=0,n=t.length;r=0&&(n=t.slice(r+1),t=t.slice(0,r)),t)return arguments.length<2?this[t].on(n):this[t].on(n,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(n,null);return this}},a.event=null,a.requote=function(t){return t.replace(H,"\\$&")};var H=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,q={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var r in e)t[r]=e[r]};function G(t){return q(t,X),t}var Y=function(t,e){return e.querySelector(t)},W=function(t,e){return e.querySelectorAll(t)},Z=function(t,e){var r=t.matches||t[z(t,"matchesSelector")];return Z=function(t,e){return r.call(t,e)},Z(t,e)};"function"==typeof Sizzle&&(Y=function(t,e){return Sizzle(t,e)[0]||null},W=Sizzle,Z=Sizzle.matchesSelector),a.selection=function(){return a.select(l.documentElement)};var X=a.selection.prototype=[];function J(t){return"function"==typeof t?t:function(){return Y(t,this)}}function K(t){return"function"==typeof t?t:function(){return W(t,this)}}X.select=function(t){var e,r,n,i,a=[];t=J(t);for(var o=-1,s=this.length;++o=0&&"xmlns"!==(r=t.slice(0,e))&&(t=t.slice(e+1)),Q.hasOwnProperty(r)?{space:Q[r],local:t}:t}},X.attr=function(t,e){if(arguments.length<2){if("string"==typeof t){var r=this.node();return(t=a.ns.qualify(t)).local?r.getAttributeNS(t.space,t.local):r.getAttribute(t)}for(e in t)this.each(tt(e,t[e]));return this}return this.each(tt(t,e))},X.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var r=this.node(),n=(t=nt(t)).length,i=-1;if(e=r.classList){for(;++i=0;)(r=n[i])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},X.sort=function(t){t=ht.apply(this,arguments);for(var e=-1,r=this.length;++e0&&(t=t.slice(0,i));var l=yt.get(t);function u(){var e=this[n];e&&(this.removeEventListener(t,e,e.$),delete this[n])}return l&&(t=l,o=xt),i?e?function(){var i=o(e,s(arguments));u.call(this),this.addEventListener(t,this[n]=i,i.$=r),i._=e}:u:e?F:function(){var e,r=new RegExp("^__on([^.]+)"+a.requote(t)+"$");for(var n in this)if(e=n.match(r)){var i=this[n];this.removeEventListener(e[1],i,i.$),delete this[n]}}}a.selection.enter=dt,a.selection.enter.prototype=vt,vt.append=X.append,vt.empty=X.empty,vt.node=X.node,vt.call=X.call,vt.size=X.size,vt.select=function(t){for(var e,r,n,i,a,o=[],s=-1,l=this.length;++s=n&&(n=e+1);!(o=s[n])&&++n1?Pt:t<-1?-Pt:Math.asin(t)}function Rt(t){return((t=Math.exp(t))+1/t)/2}var Ft=Math.SQRT2;a.interpolateZoom=function(t,e){var r,n,i=t[0],a=t[1],o=t[2],s=e[0],l=e[1],u=e[2],c=s-i,f=l-a,h=c*c+f*f;if(h0&&(t=t.transition().duration(v)),t.call(w.event)}function S(){s&&s.domain(o.range().map(function(t){return(t-h.x)/h.k}).map(o.invert)),f&&f.domain(u.range().map(function(t){return(t-h.y)/h.k}).map(u.invert))}function E(t){g++||t({type:"zoomstart"})}function L(t){S(),t({type:"zoom",scale:h.k,translate:[h.x,h.y]})}function C(t){--g||(t({type:"zoomend"}),e=null)}function P(){var t=this,e=_.of(t,arguments),r=0,n=a.select(c(t)).on(m,function(){r=1,k(a.mouse(t),i),L(e)}).on(x,function(){n.on(m,null).on(x,null),o(r),C(e)}),i=T(a.mouse(t)),o=wt(t);Ki.call(t),E(e)}function O(){var t,e=this,r=_.of(e,arguments),n={},o=0,s=".zoom-"+a.event.changedTouches[0].identifier,l="touchmove"+s,u="touchend"+s,c=[],f=a.select(e),p=wt(e);function d(){var r=a.touches(e);return t=h.k,r.forEach(function(t){t.identifier in n&&(n[t.identifier]=T(t))}),r}function v(){var t=a.event.target;a.select(t).on(l,g).on(u,m),c.push(t);for(var r=a.event.changedTouches,s=0,f=r.length;s1){y=p[0];var x=p[1],b=y[0]-x[0],_=y[1]-x[1];o=b*b+_*_}}function g(){var s,l,u,c,f=a.touches(e);Ki.call(e);for(var h=0,p=f.length;h360?t-=360:t<0&&(t+=360),t<60?n+(i-n)*t/60:t<180?i:t<240?n+(i-n)*(240-t)/60:n}(t))}return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)||e<0?0:e>1?1:e,n=2*(r=r<0?0:r>1?1:r)-(i=r<=.5?r*(1+e):r+e-r*e),new ie(a(t+120),a(t),a(t-120))}function Gt(t,e,r){return this instanceof Gt?(this.h=+t,this.c=+e,void(this.l=+r)):arguments.length<2?t instanceof Gt?new Gt(t.h,t.c,t.l):function(t,e,r){return t>0?new Gt(Math.atan2(r,e)*It,Math.sqrt(e*e+r*r),t):new Gt(NaN,NaN,t)}(t instanceof Zt?t.l:(t=fe((t=a.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new Gt(t,e,r)}Ht.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new Vt(this.h,this.s,this.l/t)},Ht.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Vt(this.h,this.s,t*this.l)},Ht.rgb=function(){return qt(this.h,this.s,this.l)},a.hcl=Gt;var Yt=Gt.prototype=new Ut;function Wt(t,e,r){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new Zt(r,Math.cos(t*=Ot)*e,Math.sin(t)*e)}function Zt(t,e,r){return this instanceof Zt?(this.l=+t,this.a=+e,void(this.b=+r)):arguments.length<2?t instanceof Zt?new Zt(t.l,t.a,t.b):t instanceof Gt?Wt(t.h,t.c,t.l):fe((t=ie(t)).r,t.g,t.b):new Zt(t,e,r)}Yt.brighter=function(t){return new Gt(this.h,this.c,Math.min(100,this.l+Xt*(arguments.length?t:1)))},Yt.darker=function(t){return new Gt(this.h,this.c,Math.max(0,this.l-Xt*(arguments.length?t:1)))},Yt.rgb=function(){return Wt(this.h,this.c,this.l).rgb()},a.lab=Zt;var Xt=18,Jt=.95047,Kt=1,$t=1.08883,Qt=Zt.prototype=new Ut;function te(t,e,r){var n=(t+16)/116,i=n+e/500,a=n-r/200;return new ie(ne(3.2404542*(i=ee(i)*Jt)-1.5371385*(n=ee(n)*Kt)-.4985314*(a=ee(a)*$t)),ne(-.969266*i+1.8760108*n+.041556*a),ne(.0556434*i-.2040259*n+1.0572252*a))}function ee(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function re(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function ne(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function ie(t,e,r){return this instanceof ie?(this.r=~~t,this.g=~~e,void(this.b=~~r)):arguments.length<2?t instanceof ie?new ie(t.r,t.g,t.b):ue(""+t,ie,qt):new ie(t,e,r)}function ae(t){return new ie(t>>16,t>>8&255,255&t)}function oe(t){return ae(t)+""}Qt.brighter=function(t){return new Zt(Math.min(100,this.l+Xt*(arguments.length?t:1)),this.a,this.b)},Qt.darker=function(t){return new Zt(Math.max(0,this.l-Xt*(arguments.length?t:1)),this.a,this.b)},Qt.rgb=function(){return te(this.l,this.a,this.b)},a.rgb=ie;var se=ie.prototype=new Ut;function le(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function ue(t,e,r){var n,i,a,o=0,s=0,l=0;if(n=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(i=n[2].split(","),n[1]){case"hsl":return r(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return e(pe(i[0]),pe(i[1]),pe(i[2]))}return(a=de.get(t))?e(a.r,a.g,a.b):(null==t||"#"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o|=o>>4,s=240&a,s|=s>>4,l=15&a,l|=l<<4):7===t.length&&(o=(16711680&a)>>16,s=(65280&a)>>8,l=255&a)),e(o,s,l))}function ce(t,e,r){var n,i,a=Math.min(t/=255,e/=255,r/=255),o=Math.max(t,e,r),s=o-a,l=(o+a)/2;return s?(i=l<.5?s/(o+a):s/(2-o-a),n=t==o?(e-r)/s+(e0&&l<1?0:n),new Vt(n,i,l)}function fe(t,e,r){var n=re((.4124564*(t=he(t))+.3575761*(e=he(e))+.1804375*(r=he(r)))/Jt),i=re((.2126729*t+.7151522*e+.072175*r)/Kt);return Zt(116*i-16,500*(n-i),200*(i-re((.0193339*t+.119192*e+.9503041*r)/$t)))}function he(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function pe(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}se.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,r=this.g,n=this.b,i=30;return e||r||n?(e&&e=200&&e<300||304===e){try{t=r.call(i,u)}catch(t){return void o.error.call(i,t)}o.load.call(i,t)}else o.error.call(i,u)}return self.XDomainRequest&&!("withCredentials"in u)&&/^(http(s)?:)?\/\//.test(t)&&(u=new XDomainRequest),"onload"in u?u.onload=u.onerror=f:u.onreadystatechange=function(){u.readyState>3&&f()},u.onprogress=function(t){var e=a.event;a.event=t;try{o.progress.call(i,u)}finally{a.event=e}},i.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?l[t]:(null==e?delete l[t]:l[t]=e+"",i)},i.mimeType=function(t){return arguments.length?(e=null==t?null:t+"",i):e},i.responseType=function(t){return arguments.length?(c=t,i):c},i.response=function(t){return r=t,i},["get","post"].forEach(function(t){i[t]=function(){return i.send.apply(i,[t].concat(s(arguments)))}}),i.send=function(r,n,a){if(2===arguments.length&&"function"==typeof n&&(a=n,n=null),u.open(r,t,!0),null==e||"accept"in l||(l.accept=e+",*/*"),u.setRequestHeader)for(var s in l)u.setRequestHeader(s,l[s]);return null!=e&&u.overrideMimeType&&u.overrideMimeType(e),null!=c&&(u.responseType=c),null!=a&&i.on("error",a).on("load",function(t){a(null,t)}),o.beforesend.call(i,u),u.send(null==n?null:n),i},i.abort=function(){return u.abort(),i},a.rebind(i,o,"on"),null==n?i:i.get(function(t){return 1===t.length?function(e,r){t(null==e?r:null)}:t}(n))}de.forEach(function(t,e){de.set(t,ae(e))}),a.functor=ve,a.xhr=ge(I),a.dsv=function(t,e){var r=new RegExp('["'+t+"\n]"),n=t.charCodeAt(0);function i(t,r,n){arguments.length<3&&(n=r,r=null);var i=ye(t,e,null==r?a:o(r),n);return i.row=function(t){return arguments.length?i.response(null==(r=t)?a:o(t)):r},i}function a(t){return i.parse(t.responseText)}function o(t){return function(e){return i.parse(e.responseText,t)}}function s(e){return e.map(l).join(t)}function l(t){return r.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}return i.parse=function(t,e){var r;return i.parseRows(t,function(t,n){if(r)return r(t,n-1);var i=function(e){for(var r={},n=t.length,i=0;i=l)return o;if(i)return i=!1,a;var e=u;if(34===t.charCodeAt(e)){for(var r=e;r++24?(isFinite(e)&&(clearTimeout(_e),_e=setTimeout(Ae,e)),be=0):(be=1,we(Ae))}function ke(){for(var t=Date.now(),e=me;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function Me(){for(var t,e=me,r=1/0;e;)e.c?(e.t1&&Dt(t[r[n-2]],t[r[n-1]],t[i])<=0;)--n;r[n++]=i}return r.slice(0,n)}function Ce(t,e){return t[0]-e[0]||t[1]-e[1]}a.timer=function(){Te.apply(this,arguments)},a.timer.flush=function(){ke(),Me()},a.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)},a.geom={},a.geom.hull=function(t){var e=Se,r=Ee;if(arguments.length)return n(t);function n(t){if(t.length<3)return[];var n,i=ve(e),a=ve(r),o=t.length,s=[],l=[];for(n=0;n=0;--n)p.push(t[s[u[n]][2]]);for(n=+f;nMt)s=s.L;else{if(!((i=a-Ze(s,o))>Mt)){n>-Mt?(e=s.P,r=s):i>-Mt?(e=s,r=s.N):e=r=s;break}if(!s.R){e=s;break}s=s.R}var l=He(t);if(Fe.insert(e,l),e||r){if(e===r)return Qe(e),r=He(e.site),Fe.insert(l,r),l.edge=r.edge=rr(e.site,l.site),$e(e),void $e(r);if(r){Qe(e),Qe(r);var u=e.site,c=u.x,f=u.y,h=t.x-c,p=t.y-f,d=r.site,v=d.x-c,g=d.y-f,y=2*(h*g-p*v),m=h*h+p*p,x=v*v+g*g,b={x:(g*m-p*x)/y+c,y:(h*x-v*m)/y+f};ir(r.edge,u,d,b),l.edge=rr(u,t,null,b),r.edge=rr(t,d,null,b),$e(e),$e(r)}else l.edge=rr(e.site,l.site)}}function We(t,e){var r=t.site,n=r.x,i=r.y,a=i-e;if(!a)return n;var o=t.P;if(!o)return-1/0;var s=(r=o.site).x,l=r.y,u=l-e;if(!u)return s;var c=s-n,f=1/a-1/u,h=c/u;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*u)-l+u/2+i-a/2)))/f+n:(n+s)/2}function Ze(t,e){var r=t.N;if(r)return We(r,e);var n=t.site;return n.y===e?n.x:1/0}function Xe(t){this.site=t,this.edges=[]}function Je(t,e){return e.angle-t.angle}function Ke(){sr(this),this.x=this.y=this.arc=this.site=this.cy=null}function $e(t){var e=t.P,r=t.N;if(e&&r){var n=e.site,i=t.site,a=r.site;if(n!==a){var o=i.x,s=i.y,l=n.x-o,u=n.y-s,c=a.x-o,f=2*(l*(g=a.y-s)-u*c);if(!(f>=-St)){var h=l*l+u*u,p=c*c+g*g,d=(g*h-u*p)/f,v=(l*p-c*h)/f,g=v+s,y=Ue.pop()||new Ke;y.arc=t,y.site=i,y.x=d+o,y.y=g+Math.sqrt(d*d+v*v),y.cy=g,t.circle=y;for(var m=null,x=Ne._;x;)if(y.y=s)return;if(h>d){if(a){if(a.y>=u)return}else a={x:g,y:l};r={x:g,y:u}}else{if(a){if(a.y1)if(h>d){if(a){if(a.y>=u)return}else a={x:(l-i)/n,y:l};r={x:(u-i)/n,y:u}}else{if(a){if(a.y=s)return}else a={x:o,y:n*o+i};r={x:s,y:n*s+i}}else{if(a){if(a.x0)){if(e/=h,h<0){if(e0){if(e>f)return;e>c&&(c=e)}if(e=i-l,h||!(e<0)){if(e/=h,h<0){if(e>f)return;e>c&&(c=e)}else if(h>0){if(e0)){if(e/=p,p<0){if(e0){if(e>f)return;e>c&&(c=e)}if(e=a-u,p||!(e<0)){if(e/=p,p<0){if(e>f)return;e>c&&(c=e)}else if(p>0){if(e0&&(t.a={x:l+c*h,y:u+c*p}),f<1&&(t.b={x:l+f*h,y:u+f*p}),t}}}}}),l=o.length;l--;)(!tr(e=o[l],t)||!s(e)||w(e.a.x-e.b.x)Mt||w(i-r)>Mt)&&(s.splice(o,0,new ar(nr(a.site,c,w(n-f)Mt?{x:f,y:w(e-f)Mt?{x:w(r-d)Mt?{x:h,y:w(e-h)Mt?{x:w(r-p)=r&&u.x<=i&&u.y>=n&&u.y<=o?[[r,o],[i,o],[i,n],[r,n]]:[]).point=t[s]}),e}function s(t){return t.map(function(t,e){return{x:Math.round(n(t,e)/Mt)*Mt,y:Math.round(i(t,e)/Mt)*Mt,i:e}})}return o.links=function(t){return fr(s(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},o.triangles=function(t){var e=[];return fr(s(t)).cells.forEach(function(r,n){for(var i,a=r.site,o=r.edges.sort(Je),s=-1,l=o.length,u=o[l-1].edge,c=u.l===a?u.r:u.l;++sa&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:br(r,n)})),a=Tr.lastIndex;return av&&(v=l.x),l.y>g&&(g=l.y),u.push(l.x),c.push(l.y);else for(f=0;fv&&(v=x),b>g&&(g=b),u.push(x),c.push(b)}var _=v-p,T=g-d;function A(t,e,r,n,i,a,o,s){if(!isNaN(r)&&!isNaN(n))if(t.leaf){var l=t.x,u=t.y;if(null!=l)if(w(l-r)+w(u-n)<.01)k(t,e,r,n,i,a,o,s);else{var c=t.point;t.x=t.y=t.point=null,k(t,c,l,u,i,a,o,s),k(t,e,r,n,i,a,o,s)}else t.x=r,t.y=n,t.point=e}else k(t,e,r,n,i,a,o,s)}function k(t,e,r,n,i,a,o,s){var l=.5*(i+o),u=.5*(a+s),c=r>=l,f=n>=u,h=f<<1|c;t.leaf=!1,c?i=l:o=l,f?a=u:s=u,A(t=t.nodes[h]||(t.nodes[h]={leaf:!0,nodes:[],point:null,x:null,y:null}),e,r,n,i,a,o,s)}_>T?g=d+_:v=p+T;var M={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(t){A(M,t,+y(t,++f),+m(t,f),p,d,v,g)}};if(M.visit=function(t){yr(t,M,p,d,v,g)},M.find=function(t){return function(t,e,r,n,i,a,o){var s,l=1/0;return function t(u,c,f,h,p){if(!(c>a||f>o||h=_)<<1|e>=b,T=w+4;w=0&&!(r=a.interpolators[n](t,e)););return r}function kr(t,e){var r,n=[],i=[],a=t.length,o=e.length,s=Math.min(t.length,e.length);for(r=0;r=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function Dr(t){return 1-Math.cos(t*Pt)}function zr(t){return Math.pow(2,10*(t-1))}function Rr(t){return 1-Math.sqrt(1-t*t)}function Fr(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function Br(t,e){return e-=t,function(r){return Math.round(t+e*r)}}function Nr(t){var e,r,n,i=[t.a,t.b],a=[t.c,t.d],o=Ur(i),s=jr(i,a),l=Ur(((e=a)[0]+=(n=-s)*(r=i)[0],e[1]+=n*r[1],e))||0;i[0]*a[1]=0?t.slice(0,r):t,i=r>=0?t.slice(r+1):"in";return n=Sr.get(n)||Mr,i=Er.get(i)||I,e=i(n.apply(null,o.call(arguments,1))),function(t){return t<=0?0:t>=1?1:e(t)}},a.interpolateHcl=function(t,e){t=a.hcl(t),e=a.hcl(e);var r=t.h,n=t.c,i=t.l,o=e.h-r,s=e.c-n,l=e.l-i;return isNaN(s)&&(s=0,n=isNaN(n)?e.c:n),isNaN(o)?(o=0,r=isNaN(r)?e.h:r):o>180?o-=360:o<-180&&(o+=360),function(t){return Wt(r+o*t,n+s*t,i+l*t)+""}},a.interpolateHsl=function(t,e){t=a.hsl(t),e=a.hsl(e);var r=t.h,n=t.s,i=t.l,o=e.h-r,s=e.s-n,l=e.l-i;return isNaN(s)&&(s=0,n=isNaN(n)?e.s:n),isNaN(o)?(o=0,r=isNaN(r)?e.h:r):o>180?o-=360:o<-180&&(o+=360),function(t){return qt(r+o*t,n+s*t,i+l*t)+""}},a.interpolateLab=function(t,e){t=a.lab(t),e=a.lab(e);var r=t.l,n=t.a,i=t.b,o=e.l-r,s=e.a-n,l=e.b-i;return function(t){return te(r+o*t,n+s*t,i+l*t)+""}},a.interpolateRound=Br,a.transform=function(t){var e=l.createElementNS(a.ns.prefix.svg,"g");return(a.transform=function(t){if(null!=t){e.setAttribute("transform",t);var r=e.transform.baseVal.consolidate()}return new Nr(r?r.matrix:Vr)})(t)},Nr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Vr={a:1,b:0,c:0,d:1,e:0,f:0};function Hr(t){return t.length?t.pop()+",":""}function qr(t,e){var r=[],n=[];return t=a.transform(t),e=a.transform(e),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push("translate(",null,",",null,")");n.push({i:i-4,x:br(t[0],e[0])},{i:i-2,x:br(t[1],e[1])})}else(e[0]||e[1])&&r.push("translate("+e+")")}(t.translate,e.translate,r,n),function(t,e,r,n){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),n.push({i:r.push(Hr(r)+"rotate(",null,")")-2,x:br(t,e)})):e&&r.push(Hr(r)+"rotate("+e+")")}(t.rotate,e.rotate,r,n),function(t,e,r,n){t!==e?n.push({i:r.push(Hr(r)+"skewX(",null,")")-2,x:br(t,e)}):e&&r.push(Hr(r)+"skewX("+e+")")}(t.skew,e.skew,r,n),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push(Hr(r)+"scale(",null,",",null,")");n.push({i:i-4,x:br(t[0],e[0])},{i:i-2,x:br(t[1],e[1])})}else 1===e[0]&&1===e[1]||r.push(Hr(r)+"scale("+e+")")}(t.scale,e.scale,r,n),t=e=null,function(t){for(var e,i=-1,a=n.length;++i0?r=e:(t.c=null,t.t=NaN,t=null,l.end({type:"end",alpha:r=0})):e>0&&(l.start({type:"start",alpha:r=e}),t=Te(s.tick)),s):r},s.start=function(){var t,e,r,a=y.length,l=m.length,c=u[0],d=u[1];for(t=0;t=0;)r.push(i[n])}function on(t,e){for(var r=[t],n=[];null!=(t=r.pop());)if(n.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++o=0;)o.push(c=u[l]),c.parent=a,c.depth=a.depth+1;r&&(a.value=0),a.children=u}else r&&(a.value=+r.call(n,a,a.depth)||0),delete a.children;return on(i,function(e){var n,i;t&&(n=e.children)&&n.sort(t),r&&(i=e.parent)&&(i.value+=e.value)}),s}return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(an(t,function(t){t.children&&(t.value=0)}),on(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},a.layout.partition=function(){var t=a.layout.hierarchy(),e=[1,1];function r(t,e,n,i){var a=t.children;if(t.x=e,t.y=t.depth*i,t.dx=n,t.dy=i,a&&(o=a.length)){var o,s,l,u=-1;for(n=t.value?n/t.value:0;++us&&(s=n),o.push(n)}for(r=0;ri&&(n=r,i=e);return n}function bn(t){return t.reduce(_n,0)}function _n(t,e){return t+e[1]}function wn(t,e){return Tn(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function Tn(t,e){for(var r=-1,n=+t[0],i=(t[1]-n)/e,a=[];++r<=e;)a[r]=i*r+n;return a}function An(t){return[a.min(t),a.max(t)]}function kn(t,e){return t.value-e.value}function Mn(t,e){var r=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=r,r._pack_prev=e}function Sn(t,e){t._pack_next=e,e._pack_prev=t}function En(t,e){var r=e.x-t.x,n=e.y-t.y,i=t.r+e.r;return.999*i*i>r*r+n*n}function Ln(t){if((e=t.children)&&(l=e.length)){var e,r,n,i,a,o,s,l,u=1/0,c=-1/0,f=1/0,h=-1/0;if(e.forEach(Cn),(r=e[0]).x=-r.r,r.y=0,x(r),l>1&&((n=e[1]).x=n.r,n.y=0,x(n),l>2))for(In(r,n,i=e[2]),x(i),Mn(r,i),r._pack_prev=i,Mn(i,n),n=r._pack_next,a=3;a0)for(o=-1;++o=f[0]&&l<=f[1]&&((s=u[a.bisect(h,l,1,d)-1]).y+=v,s.push(i[o]));return u}return i.value=function(t){return arguments.length?(e=t,i):e},i.range=function(t){return arguments.length?(r=ve(t),i):r},i.bins=function(t){return arguments.length?(n="number"==typeof t?function(e){return Tn(e,t)}:ve(t),i):n},i.frequency=function(e){return arguments.length?(t=!!e,i):t},i},a.layout.pack=function(){var t,e=a.layout.hierarchy().sort(kn),r=0,n=[1,1];function i(i,a){var o=e.call(this,i,a),s=o[0],l=n[0],u=n[1],c=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(s.x=s.y=0,on(s,function(t){t.r=+c(t.value)}),on(s,Ln),r){var f=r*(t?1:Math.max(2*s.r/l,2*s.r/u))/2;on(s,function(t){t.r+=f}),on(s,Ln),on(s,function(t){t.r-=f})}return On(s,l/2,u/2,t?1:1/Math.max(2*s.r/l,2*s.r/u)),o}return i.size=function(t){return arguments.length?(n=t,i):n},i.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,i):t},i.padding=function(t){return arguments.length?(r=+t,i):r},nn(i,e)},a.layout.tree=function(){var t=a.layout.hierarchy().sort(null).value(null),e=Dn,r=[1,1],n=null;function i(i,a){var u=t.call(this,i,a),c=u[0],f=function(t){for(var e,r={A:null,children:[t]},n=[r];null!=(e=n.pop());)for(var i,a=e.children,o=0,s=a.length;op.x&&(p=t),t.depth>d.depth&&(d=t)});var v=e(h,p)/2-h.x,g=r[0]/(p.x+e(p,h)/2+v),y=r[1]/(d.depth||1);an(c,function(t){t.x=(t.x+v)*g,t.y=t.depth*y})}return u}function o(t){var r=t.children,n=t.parent.children,i=t.i?n[t.i-1]:null;if(r.length){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(t);var a=(r[0].z+r[r.length-1].z)/2;i?(t.z=i.z+e(t._,i._),t.m=t.z-a):t.z=a}else i&&(t.z=i.z+e(t._,i._));t.parent.A=function(t,r,n){if(r){for(var i,a=t,o=t,s=r,l=a.parent.children[0],u=a.m,c=o.m,f=s.m,h=l.m;s=Rn(s),a=zn(a),s&&a;)l=zn(l),(o=Rn(o)).a=t,(i=s.z+f-a.z-u+e(s._,a._))>0&&(Fn(Bn(s,t,n),t,i),u+=i,c+=i),f+=s.m,u+=a.m,h+=l.m,c+=o.m;s&&!Rn(o)&&(o.t=s,o.m+=f-c),a&&!zn(l)&&(l.t=a,l.m+=u-h,n=t)}return n}(t,i,t.parent.A||n[0])}function s(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function l(t){t.x*=r[0],t.y=t.depth*r[1]}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(t){return arguments.length?(n=null==(r=t)?l:null,i):n?null:r},i.nodeSize=function(t){return arguments.length?(n=null==(r=t)?null:l,i):n?r:null},nn(i,t)},a.layout.cluster=function(){var t=a.layout.hierarchy().sort(null).value(null),e=Dn,r=[1,1],n=!1;function i(i,o){var s,l=t.call(this,i,o),u=l[0],c=0;on(u,function(t){var r=t.children;r&&r.length?(t.x=function(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}(r),t.y=function(t){return 1+a.max(t,function(t){return t.y})}(r)):(t.x=s?c+=e(t,s):0,t.y=0,s=t)});var f=Nn(u),h=jn(u),p=f.x-e(f,h)/2,d=h.x+e(h,f)/2;return on(u,n?function(t){t.x=(t.x-u.x)*r[0],t.y=(u.y-t.y)*r[1]}:function(t){t.x=(t.x-p)/(d-p)*r[0],t.y=(1-(u.y?t.y/u.y:1))*r[1]}),l}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(t){return arguments.length?(n=null==(r=t),i):n?null:r},i.nodeSize=function(t){return arguments.length?(n=null!=(r=t),i):n?r:null},nn(i,t)},a.layout.treemap=function(){var t,e=a.layout.hierarchy(),r=Math.round,n=[1,1],i=null,o=Un,s=!1,l="squarify",u=.5*(1+Math.sqrt(5));function c(t,e){for(var r,n,i=-1,a=t.length;++i0;)s.push(r=u[i-1]),s.area+=r.area,"squarify"!==l||(n=p(s,v))<=h?(u.pop(),h=n):(s.area-=s.pop().area,d(s,v,a,!1),v=Math.min(a.dx,a.dy),s.length=s.area=0,h=1/0);s.length&&(d(s,v,a,!0),s.length=s.area=0),e.forEach(f)}}function h(t){var e=t.children;if(e&&e.length){var r,n=o(t),i=e.slice(),a=[];for(c(i,n.dx*n.dy/t.value),a.area=0;r=i.pop();)a.push(r),a.area+=r.area,null!=r.z&&(d(a,r.z?n.dx:n.dy,n,!i.length),a.length=a.area=0);e.forEach(h)}}function p(t,e){for(var r,n=t.area,i=0,a=1/0,o=-1,s=t.length;++oi&&(i=r));return e*=e,(n*=n)?Math.max(e*i*u/n,n/(e*a*u)):1/0}function d(t,e,n,i){var a,o=-1,s=t.length,l=n.x,u=n.y,c=e?r(t.area/e):0;if(e==n.dx){for((i||c>n.dy)&&(c=n.dy);++on.dx)&&(c=n.dx);++o1);return t+e*r*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var t=a.random.normal.apply(a,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=a.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,r=0;r2?Xn:Gn,l=n?Yr:Gr;return i=o(t,e,l,r),a=o(e,t,l,Ar),s}function s(t){return i(t)}return s.invert=function(t){return a(t)},s.domain=function(e){return arguments.length?(t=e.map(Number),o()):t},s.range=function(t){return arguments.length?(e=t,o()):e},s.rangeRound=function(t){return s.range(t).interpolate(Br)},s.clamp=function(t){return arguments.length?(n=t,o()):n},s.interpolate=function(t){return arguments.length?(r=t,o()):r},s.ticks=function(e){return ti(t,e)},s.tickFormat=function(e,r){return d3_scale_linearTickFormat(t,e,r)},s.nice=function(e){return $n(t,e),o()},s.copy=function(){return Jn(t,e,r,n)},o()}function Kn(t,e){return a.rebind(t,e,"range","rangeRound","interpolate","clamp")}function $n(t,e){return Yn(t,Wn(Qn(t,e)[2])),Yn(t,Wn(Qn(t,e)[2])),t}function Qn(t,e){null==e&&(e=10);var r=Hn(t),n=r[1]-r[0],i=Math.pow(10,Math.floor(Math.log(n/e)/Math.LN10)),a=e/n*i;return a<=.15?i*=10:a<=.35?i*=5:a<=.75&&(i*=2),r[0]=Math.ceil(r[0]/i)*i,r[1]=Math.floor(r[1]/i)*i+.5*i,r[2]=i,r}function ti(t,e){return a.range.apply(a,Qn(t,e))}function ei(t,e,r,n){function i(t){return(r?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function a(t){return r?Math.pow(e,t):-Math.pow(e,-t)}function o(e){return t(i(e))}return o.invert=function(e){return a(t.invert(e))},o.domain=function(e){return arguments.length?(r=e[0]>=0,t.domain((n=e.map(Number)).map(i)),o):n},o.base=function(r){return arguments.length?(e=+r,t.domain(n.map(i)),o):e},o.nice=function(){var e=Yn(n.map(i),r?Math:ri);return t.domain(e),n=e.map(a),o},o.ticks=function(){var t=Hn(n),o=[],s=t[0],l=t[1],u=Math.floor(i(s)),c=Math.ceil(i(l)),f=e%1?2:e;if(isFinite(c-u)){if(r){for(;u0;h--)o.push(a(u)*h);for(u=0;o[u]l;c--);o=o.slice(u,c)}return o},o.copy=function(){return ei(t.copy(),e,r,n)},Kn(o,t)}a.scale.linear=function(){return Jn([0,1],[0,1],Ar,!1)},a.scale.log=function(){return ei(a.scale.linear().domain([0,1]),10,!0,[1,10])};var ri={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};function ni(t,e,r){var n=ii(e),i=ii(1/e);function a(e){return t(n(e))}return a.invert=function(e){return i(t.invert(e))},a.domain=function(e){return arguments.length?(t.domain((r=e.map(Number)).map(n)),a):r},a.ticks=function(t){return ti(r,t)},a.tickFormat=function(t,e){return d3_scale_linearTickFormat(r,t,e)},a.nice=function(t){return a.domain($n(r,t))},a.exponent=function(o){return arguments.length?(n=ii(e=o),i=ii(1/e),t.domain(r.map(n)),a):e},a.copy=function(){return ni(t.copy(),e,r)},Kn(a,t)}function ii(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ai(t,e){var r,n,i;function o(i){return n[((r.get(i)||("range"===e.t?r.set(i,t.push(i)):NaN))-1)%n.length]}function s(e,r){return a.range(t.length).map(function(t){return e+r*t})}return o.domain=function(n){if(!arguments.length)return t;t=[],r=new A;for(var i,a=-1,s=n.length;++a0?r[n-1]:t[0],nf?0:1;if(u=Ct)return l(u,p)+(s?l(s,1-p):"")+"Z";var d,v,g,y,m,x,b,_,w,T,A,k,M=0,S=0,E=[];if((y=(+o.apply(this,arguments)||0)/2)&&(g=n===vi?Math.sqrt(s*s+u*u):+n.apply(this,arguments),p||(S*=-1),u&&(S=zt(g/u*Math.sin(y))),s&&(M=zt(g/s*Math.sin(y)))),u){m=u*Math.cos(c+S),x=u*Math.sin(c+S),b=u*Math.cos(f-S),_=u*Math.sin(f-S);var L=Math.abs(f-c-2*S)<=Et?0:1;if(S&&_i(m,x,b,_)===p^L){var C=(c+f)/2;m=u*Math.cos(C),x=u*Math.sin(C),b=_=null}}else m=x=0;if(s){w=s*Math.cos(f-M),T=s*Math.sin(f-M),A=s*Math.cos(c+M),k=s*Math.sin(c+M);var P=Math.abs(c-f+2*M)<=Et?0:1;if(M&&_i(w,T,A,k)===1-p^P){var O=(c+f)/2;w=s*Math.cos(O),T=s*Math.sin(O),A=k=null}}else w=T=0;if(h>Mt&&(d=Math.min(Math.abs(u-s)/2,+r.apply(this,arguments)))>.001){v=s0?0:1}function wi(t,e,r,n,i){var a=t[0]-e[0],o=t[1]-e[1],s=(i?n:-n)/Math.sqrt(a*a+o*o),l=s*o,u=-s*a,c=t[0]+l,f=t[1]+u,h=e[0]+l,p=e[1]+u,d=(c+h)/2,v=(f+p)/2,g=h-c,y=p-f,m=g*g+y*y,x=r-n,b=c*p-h*f,_=(y<0?-1:1)*Math.sqrt(Math.max(0,x*x*m-b*b)),w=(b*y-g*_)/m,T=(-b*g-y*_)/m,A=(b*y+g*_)/m,k=(-b*g+y*_)/m,M=w-d,S=T-v,E=A-d,L=k-v;return M*M+S*S>E*E+L*L&&(w=A,T=k),[[w-l,T-u],[w*r/x,T*r/x]]}function Ti(){return!0}function Ai(t){var e=Se,r=Ee,n=Ti,i=Mi,a=i.key,o=.7;function s(a){var s,l=[],u=[],c=-1,f=a.length,h=ve(e),p=ve(r);function d(){l.push("M",i(t(u),o))}for(;++c1&&i.push("H",n[0]),i.join("")},"step-before":Ei,"step-after":Li,basis:Oi,"basis-open":function(t){if(t.length<4)return Mi(t);for(var e,r=[],n=-1,i=t.length,a=[0],o=[0];++n<3;)e=t[n],a.push(e[0]),o.push(e[1]);for(r.push(Ii(Ri,a)+","+Ii(Ri,o)),--n;++n9&&(i=3*e/Math.sqrt(i),o[s]=i*r,o[s+1]=i*n);for(s=-1;++s<=l;)i=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+o[s]*o[s])),a.push([i||0,o[s]*i||0]);return a}(t))}});function Mi(t){return t.length>1?t.join("L"):t+"Z"}function Si(t){return t.join("L")+"Z"}function Ei(t){for(var e=0,r=t.length,n=t[0],i=[n[0],",",n[1]];++e1){s=e[1],a=t[l],l++,n+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(a[0]-s[0])+","+(a[1]-s[1])+","+a[0]+","+a[1];for(var u=2;uEt)+",1 "+e}function l(t,e,r,n){return"Q 0,0 "+n}return a.radius=function(t){return arguments.length?(r=ve(t),a):r},a.source=function(e){return arguments.length?(t=ve(e),a):t},a.target=function(t){return arguments.length?(e=ve(t),a):e},a.startAngle=function(t){return arguments.length?(n=ve(t),a):n},a.endAngle=function(t){return arguments.length?(i=ve(t),a):i},a},a.svg.diagonal=function(){var t=Ui,e=Vi,r=qi;function n(n,i){var a=t.call(this,n,i),o=e.call(this,n,i),s=(a.y+o.y)/2,l=[a,{x:a.x,y:s},{x:o.x,y:s},o];return"M"+(l=l.map(r))[0]+"C"+l[1]+" "+l[2]+" "+l[3]}return n.source=function(e){return arguments.length?(t=ve(e),n):t},n.target=function(t){return arguments.length?(e=ve(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},a.svg.diagonal.radial=function(){var t=a.svg.diagonal(),e=qi,r=t.projection;return t.projection=function(t){return arguments.length?r(function(t){return function(){var e=t.apply(this,arguments),r=e[0],n=e[1]-Pt;return[r*Math.cos(n),r*Math.sin(n)]}}(e=t)):e},t},a.svg.symbol=function(){var t=Yi,e=Gi;function r(r,n){return(Zi.get(t.call(this,r,n))||Wi)(e.call(this,r,n))}return r.type=function(e){return arguments.length?(t=ve(e),r):t},r.size=function(t){return arguments.length?(e=ve(t),r):e},r};var Zi=a.map({circle:Wi,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*Ji)),r=e*Ji;return"M0,"+-e+"L"+r+",0 0,"+e+" "+-r+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Xi),r=e*Xi/2;return"M0,"+r+"L"+e+","+-r+" "+-e+","+-r+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Xi),r=e*Xi/2;return"M0,"+-r+"L"+e+","+r+" "+-e+","+r+"Z"}});a.svg.symbolTypes=Zi.keys();var Xi=Math.sqrt(3),Ji=Math.tan(30*Ot);X.transition=function(t){for(var e,r,n=ta||++na,i=oa(t),a=[],o=ea||{time:Date.now(),ease:Ir,delay:0,duration:250},s=-1,l=this.length;++s0;)u[--h].call(t,o);if(a>=1)return f.event&&f.event.end.call(t,t.__data__,e),--c.count?delete c[n]:delete t[r],1}f||(a=i.time,o=Te(function(t){var e=f.delay;if(o.t=e+a,e<=t)return h(t-e);o.c=h},0,a),f=c[n]={tween:new A,time:a,timer:o,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++c.count)}ra.call=X.call,ra.empty=X.empty,ra.node=X.node,ra.size=X.size,a.transition=function(t,e){return t&&t.transition?ta?t.transition(e):t:a.selection().transition(t)},a.transition.prototype=ra,ra.select=function(t){var e,r,n,i=this.id,a=this.namespace,o=[];t=J(t);for(var s=-1,l=this.length;++srect,.s>rect").attr("width",o[1]-o[0])}function v(t){t.select(".extent").attr("y",s[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",s[1]-s[0])}function g(){var f,g,y=this,m=a.select(a.event.target),x=r.of(y,arguments),b=a.select(y),_=m.datum(),w=!/^(n|s)$/.test(_)&&n,T=!/^(e|w)$/.test(_)&&i,A=m.classed("extent"),k=wt(y),M=a.mouse(y),S=a.select(c(y)).on("keydown.brush",function(){32==a.event.keyCode&&(A||(f=null,M[0]-=o[1],M[1]-=s[1],A=2),j())}).on("keyup.brush",function(){32==a.event.keyCode&&2==A&&(M[0]+=o[1],M[1]+=s[1],A=0,j())});if(a.event.changedTouches?S.on("touchmove.brush",C).on("touchend.brush",O):S.on("mousemove.brush",C).on("mouseup.brush",O),b.interrupt().selectAll("*").interrupt(),A)M[0]=o[0]-M[0],M[1]=s[0]-M[1];else if(_){var E=+/w$/.test(_),L=+/^n/.test(_);g=[o[1-E]-M[0],s[1-L]-M[1]],M[0]=o[E],M[1]=s[L]}else a.event.altKey&&(f=M.slice());function C(){var t=a.mouse(y),e=!1;g&&(t[0]+=g[0],t[1]+=g[1]),A||(a.event.altKey?(f||(f=[(o[0]+o[1])/2,(s[0]+s[1])/2]),M[0]=o[+(t[0]=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},16665:function(t,e,r){"use strict";var n=r(60609).fX,i=r(15181).counterRegex,a=r(47341),o=r(29888),s=o.attr,l=o.name,u=i(l),c={};c[s]={valType:"subplotid",dflt:l,editType:"calc"},t.exports={attr:s,name:l,idRoot:l,idRegex:u,attrRegex:u,attributes:c,layoutAttributes:r(40223),supplyLayoutDefaults:r(4536),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots[l],o=0;o-1,flipY:C.tiling.flip.indexOf("y")>-1,pad:{inner:C.tiling.pad,top:C.marker.pad.t,left:C.marker.pad.l,right:C.marker.pad.r,bottom:C.marker.pad.b}}).descendants(),R=1/0,F=-1/0;z.forEach(function(t){var e=t.depth;e>=C._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(R=Math.min(R,e),F=Math.max(F,e))}),d=d.data(z,c.getPtId),C._maxVisibleLayers=isFinite(F)?F-R+1:0,d.enter().append("g").classed("slice",!0),A(d,p,{},[g,y],b),d.order();var B=null;if(T&&S){var N=c.getPtId(S);d.each(function(t){null===B&&c.getPtId(t)===N&&(B={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})})}var j=function(){return B||{x0:0,x1:g,y0:0,y1:y}},U=d;return T&&(U=U.transition().each("end",function(){var e=n.select(this);c.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),U.each(function(s){var d=c.isHeader(s,C);s._x0=m(s.x0),s._x1=m(s.x1),s._y0=x(s.y0),s._y1=x(s.y1),s._hoverX=m(s.x1-C.marker.pad.r),s._hoverY=x(I?s.y1-C.marker.pad.b/2:s.y0+C.marker.pad.t/2);var v=n.select(this),A=i.ensureSingle(v,"path","surface",function(t){t.style("pointer-events",E?"none":"all")});T?A.transition().attrTween("d",function(t){var e=k(t,p,j(),[g,y]);return function(t){return b(e(t))}}):A.attr("d",b),v.call(f,r,t,e,{styleOne:l,eventDataKeys:u.eventDataKeys,transitionTime:u.CLICK_TRANSITION_TIME,transitionEasing:u.CLICK_TRANSITION_EASING}).call(c.setSliceCursor,t,{isTransitioning:t._transitioning}),A.call(l,s,C,t,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text="":s._text=d?D?"":c.getPtLabel(s)||"":h(s,r,C,e,L)||"";var S=i.ensureSingle(v,"g","slicetext"),z=i.ensureSingle(S,"text","",function(t){t.attr("data-notex",1)}),R=i.ensureUniformFontSize(t,c.determineTextFont(C,s,L.font));z.text(s._text||" ").classed("slicetext",!0).attr("text-anchor",O?"end":P||d?"start":"middle").call(a.font,R).call(o.convertToTspans,t),s.textBB=a.bBox(z.node()),s.transform=_(s,{fontSize:R.size,isHeader:d}),s.transform.fontSize=R.size,T?z.transition().attrTween("transform",function(t){var e=M(t,p,j(),[g,y]);return function(t){return w(e(t))}}):z.attr("transform",w(s))}),B}},16787:function(t,e,r){"use strict";var n=r(93003).list,i=r(40243).getAutoRange,a=r(17984);t.exports=function(t){for(var e=n(t,"x",!0),r=0;r0)){var v=function(t,e,r){for(var n=r.filter(function(r){return e[r].anchor===t._id}),i=0,a=0;a1||v<0||v>1?null:{x:t+l*v,y:e+f*v}}function l(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}e.segmentsIntersect=s,e.segmentDistance=function(t,e,r,n,i,a,o,u){if(s(t,e,r,n,i,a,o,u))return 0;var c=r-t,f=n-e,h=o-i,p=u-a,d=c*c+f*f,v=h*h+p*p,g=Math.min(l(c,f,d,i-t,a-e),l(c,f,d,o-t,u-e),l(h,p,v,t-i,e-a),l(h,p,v,r-i,n-a));return Math.sqrt(g)},e.getTextLocation=function(t,e,r,s){if(t===i&&s===a||(n={},i=t,a=s),n[r])return n[r];var l=t.getPointAtLength(o(r-s/2,e)),u=t.getPointAtLength(o(r+s/2,e)),c=Math.atan((u.y-l.y)/(u.x-l.x)),f=t.getPointAtLength(o(r,e)),h={x:(4*f.x+l.x+u.x)/6,y:(4*f.y+l.y+u.y)/6,theta:c};return n[r]=h,h},e.clearLocationCache=function(){i=null},e.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,u=0,c=t.getTotalLength(),f=c;function h(e){var r=t.getPointAtLength(e);0===e?n=r:e===c&&(i=r);var u=r.xo?r.x-o:0,f=r.yl?r.y-l:0;return Math.sqrt(u*u+f*f)}for(var p=h(u);p;){if((u+=p+r)>f)return;p=h(u)}for(p=h(f);p;){if(u>(f-=p+r))return;p=h(f)}return{min:u,max:f,len:f-u,total:c,isClosed:0===u&&f===c&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},e.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,u=n.iterationLimit||30,c=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},17880:function(t,e,r){"use strict";var n=r(15181),i=r(86431),a=r(69562),o=r(25623),s=r(79444).N,l=r(76802),u=r(92444),c=r(46716);function f(t,e){function r(r,a){return n.coerce(t,e,i.link.colorscales,r,a)}r("label"),r("cmin"),r("cmax"),r("colorscale")}t.exports=function(t,e,r,h){function p(r,a){return n.coerce(t,e,i,r,a)}var d=n.extendDeep(h.hoverlabel,t.hoverlabel),v=t.node,g=u.newContainer(e,"node");function y(t,e){return n.coerce(v,g,i.node,t,e)}y("label"),y("groups"),y("x"),y("y"),y("pad"),y("thickness"),y("line.color"),y("line.width"),y("hoverinfo",t.hoverinfo),l(v,g,y,d),y("hovertemplate");var m=h.colorway;y("color",g.label.map(function(t,e){return a.addOpacity(function(t){return m[t%m.length]}(e),.8)})),y("customdata");var x=t.link||{},b=u.newContainer(e,"link");function _(t,e){return n.coerce(x,b,i.link,t,e)}_("label"),_("arrowlen"),_("source"),_("target"),_("value"),_("line.color"),_("line.width"),_("hoverinfo",t.hoverinfo),l(x,b,_,d),_("hovertemplate");var w,T=o(h.paper_bgcolor).getLuminance()<.333?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)";_("color",n.repeat(T,b.value.length)),_("customdata"),c(x,b,{name:"colorscales",handleItemDefaults:f}),s(e,h,p),p("orientation"),p("valueformat"),p("valuesuffix"),g.x.length&&g.y.length&&(w="freeform"),p("arrangement",w),n.coerceFont(p,"textfont",n.extendFlat({},h.font)),e._length=null}},17888:function(t,e,r){"use strict";var n=r(52237),i=r(35331),a=Object.prototype.toString;t.exports=function(t){if(!n(t))return null;if(i(t)){var e=t.toString;if("function"!=typeof e)return null;if(e===a)return null}try{return""+t}catch(t){return null}}},17896:function(t){"use strict";t.exports={boxmode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},boxgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"},boxgroupgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"}}},17956:function(t,e,r){"use strict";var n=r(46474),i=r(92444);t.exports=function(t,e,r,a,o){a("a")||(a("da"),a("a0")),a("b")||(a("db"),a("b0")),function(t,e,r,a){["aaxis","baxis"].forEach(function(o){var s=o.charAt(0),l=t[o]||{},u=i.newContainer(e,o),c={noTicklabelstep:!0,tickfont:"x",id:s+"axis",letter:s,font:e.font,name:o,data:t[s],calendar:e.calendar,dfltColor:a,bgColor:r.paper_bgcolor,autotypenumbersDflt:r.autotypenumbers,fullLayout:r};n(l,u,c),u._categories=u._categories||[],t[o]||"-"===l.type||(t[o]={type:l.type})})}(t,e,r,o)}},17984:function(t){"use strict";t.exports={name:"rangeslider",containerClassName:"rangeslider-container",bgClassName:"rangeslider-bg",rangePlotClassName:"rangeslider-rangeplot",maskMinClassName:"rangeslider-mask-min",maskMaxClassName:"rangeslider-mask-max",slideBoxClassName:"rangeslider-slidebox",grabberMinClassName:"rangeslider-grabber-min",grabAreaMinClassName:"rangeslider-grabarea-min",handleMinClassName:"rangeslider-handle-min",grabberMaxClassName:"rangeslider-grabber-max",grabAreaMaxClassName:"rangeslider-grabarea-max",handleMaxClassName:"rangeslider-handle-max",maskMinOppAxisClassName:"rangeslider-mask-min-opp-axis",maskMaxOppAxisClassName:"rangeslider-mask-max-opp-axis",maskColor:"rgba(0,0,0,0.4)",maskOppAxisColor:"rgba(0,0,0,0.2)",slideBoxFill:"transparent",slideBoxCursor:"ew-resize",grabAreaFill:"transparent",grabAreaCursor:"col-resize",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}},18008:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"candlestick",basePlotModule:r(29435),categories:["cartesian","svg","showLegend","candlestick","boxLayout"],meta:{},attributes:r(33691),layoutAttributes:r(17896),supplyLayoutDefaults:r(80671).supplyLayoutDefaults,crossTraceCalc:r(23530).crossTraceCalc,supplyDefaults:r(43484),calc:r(17307),plot:r(68343).plot,layerName:"boxlayer",style:r(89743).style,hoverPoints:r(65409).hoverPoints,selectPoints:r(44483)}},18030:function(t,e,r){"use strict";var n=r(15181),i=r(24181),a=r(26761),o=r(22203),s=r(5651),l=r(53125);t.exports=function(t,e,r,u){function c(r,i){return n.coerce(t,e,a,r,i)}if(c("carpet"),t.a&&t.b){if(!i(t,e,c,u,"a","b"))return void(e.visible=!1);c("text"),"constraint"===c("contours.type")?o(t,e,c,u,r,{hasHover:!1}):(s(t,e,c,function(r){return n.coerce2(t,e,a,r)}),l(t,e,c,u,{hasHover:!1}))}else e._defaultColor=r,e._length=null}},18049:function(t){t.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],l=e[6],u=e[7],c=e[8],f=e[9],h=e[10],p=e[11],d=e[12],v=e[13],g=e[14],y=e[15],m=r*s-n*o,x=r*l-i*o,b=r*u-a*o,_=n*l-i*s,w=n*u-a*s,T=i*u-a*l,A=c*v-f*d,k=c*g-h*d,M=c*y-p*d,S=f*g-h*v,E=f*y-p*v,L=h*y-p*g,C=m*L-x*E+b*S+_*M-w*k+T*A;return C?(C=1/C,t[0]=(s*L-l*E+u*S)*C,t[1]=(i*E-n*L-a*S)*C,t[2]=(v*T-g*w+y*_)*C,t[3]=(h*w-f*T-p*_)*C,t[4]=(l*M-o*L-u*k)*C,t[5]=(r*L-i*M+a*k)*C,t[6]=(g*b-d*T-y*x)*C,t[7]=(c*T-h*b+p*x)*C,t[8]=(o*E-s*M+u*A)*C,t[9]=(n*M-r*E-a*A)*C,t[10]=(d*w-v*b+y*m)*C,t[11]=(f*b-c*w-p*m)*C,t[12]=(s*k-o*S-l*A)*C,t[13]=(r*S-n*k+i*A)*C,t[14]=(v*x-d*_-g*m)*C,t[15]=(c*_-f*x+h*m)*C,t):null}},18095:function(t,e,r){"use strict";var n=r(16534),i=r(69562),a=r(88191),o=r(15181),s=r(46982),l=r(70394).resizeText,u=r(74349),c=u.textfont,f=u.insidetextfont,h=u.outsidetextfont,p=r(54791);function d(t,e,r){a.pointStyle(t.selectAll("path"),e,r),v(t,e,r)}function v(t,e,r){t.selectAll("text").each(function(t){var i=n.select(this),s=o.ensureUniformFontSize(r,g(i,t,e,r));a.font(i,s)})}function g(t,e,r,n){var i=n._fullLayout.font,a=r.textfont;if(t.classed("bartext-inside")){var o=_(e,r);a=m(r,e.i,i,o)}else t.classed("bartext-outside")&&(a=x(r,e.i,i));return a}function y(t,e,r){return b(c,t.textfont,e,r)}function m(t,e,r,n){var a=y(t,e,r);return(void 0===t._input.textfont||void 0===t._input.textfont.color||Array.isArray(t.textfont.color)&&void 0===t.textfont.color[e])&&(a={color:i.contrast(n),family:a.family,size:a.size}),b(f,t.insidetextfont,e,a)}function x(t,e,r){var n=y(t,e,r);return b(h,t.outsidetextfont,e,n)}function b(t,e,r,n){e=e||{};var i=p.getValue(e.family,r),a=p.getValue(e.size,r),o=p.getValue(e.color,r);return{family:p.coerceString(t.family,i,n.family),size:p.coerceNumber(t.size,a,n.size),color:p.coerceColor(t.color,o,n.color)}}function _(t,e){return"waterfall"===e.type?e[t.dir].marker.color:t.mcc||t.mc||e.marker.color}t.exports={style:function(t){var e=n.select(t).selectAll("g.barlayer").selectAll("g.trace");l(t,e,"bar");var r=e.size(),i=t._fullLayout;e.style("opacity",function(t){return t[0].trace.opacity}).each(function(t){("stack"===i.barmode&&r>1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr("shape-rendering","crispEdges")}),e.selectAll("g.points").each(function(e){d(n.select(this),e[0].trace,t)}),s.getComponentMethod("errorbars","style")(e)},styleTextPoints:v,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?function(t,e,r){a.selectedPointStyle(t.selectAll("path"),e),function(t,e,r){t.each(function(t){var i,s=n.select(this);if(t.selected){i=o.ensureUniformFontSize(r,g(s,t,e,r));var l=e.selected.textfont&&e.selected.textfont.color;l&&(i.color=l),a.font(s,i)}else a.selectedTextStyle(s,e)})}(t.selectAll("text"),e,r)}(r,i,t):(d(r,i,t),s.getComponentMethod("errorbars","style")(r))},getInsideTextFont:m,getOutsideTextFont:x,getBarColor:_,resizeText:l}},18352:function(t,e,r){"use strict";var n=r(15181),i=r(41993),a=r(31164);t.exports=function(t,e){var r,o,s;function l(t){return n.coerce(o._input,o,a,t)}if("group"===e.scattermode)for(s=0;s=0;f--){var h=t[f];if("scatter"===h.type&&h.xaxis===u.xaxis&&h.yaxis===u.yaxis){h.opacity=void 0;break}}}}}},18435:function(t,e,r){"use strict";var n=r(15181),i=r(26446),a=r(71809),o=r(94573),s=r(78945).BADNUM;function l(t,e,r){var i=e.max-e.min;if(!i)return t.bandwidth?t.bandwidth:0;if(t.bandwidth)return Math.max(t.bandwidth,i/1e4);var a=r.length,o=n.stdev(r,a-1,e.mean);return Math.max(function(t,e,r){return 1.059*Math.min(e,r/1.349)*Math.pow(t,-.2)}(a,o,e.q3-e.q1),i/100)}function u(t,e,r,n){var a,o=t.spanmode,l=t.span||[],u=[e.min,e.max],c=[e.min-2*n,e.max+2*n];function f(n){var i=l[n],a="multicategory"===r.type?r.r2c(i):r.d2c(i,0,t[e.valLetter+"calendar"]);return a===s?c[n]:a}var h={type:"linear",range:a="soft"===o?c:"hard"===o?u:[f(0),f(1)]};return i.setConvert(h),h.cleanRange(),a}t.exports=function(t,e){var r=a(t,e);if(r[0].t.empty)return r;for(var s=t._fullLayout,c=i.getFromId(t,e["h"===e.orientation?"xaxis":"yaxis"]),f=1/0,h=-1/0,p=0,d=0,v=0;v0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*g*Math.abs(n-i))}return v}function L(e,r,n,i){if((i||{}).msUTC&&s(e))return+e;var o=c(e,n||t.calendar);if(o===v){if(!s(e))return v;e=+e;var l=Math.floor(10*a.mod(e+.05,1)),u=Math.round(e-l/10);o=c(new Date(u))+l/10}return o}function C(e,r,n){return u(e,r,n||t.calendar)}function P(e){return t._categories[Math.round(e)]}function O(e){if(S(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push("number"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return v}function I(e){if(t._categoriesMap)return t._categoriesMap[e]}function D(t){var e=I(t);return void 0!==e?e:s(t)?+t:void 0}function z(t){return s(t)?+t:I(t)}function R(t,e,r){return n.round(r+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return s(e)?R(e,t._m,t._b):v},N=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var j="y"===p;B=function(e){if(!s(e))return v;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=j;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,o=0,l=0;lc)){o=a<(u+c)/2?l:l+1;break}o=l+1}var f=t._B[o]||0;return isFinite(f)?R(e,t._m2,f):0},N=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l="log"===t.type?E:f,t.l2c="log"===t.type?M:f,t.l2p=B,t.p2l=N,t.c2p="log"===t.type?function(t,e){return B(E(t,e))}:B,t.p2c="log"===t.type?function(t){return M(N(t))}:N,-1!==["linear","-"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=l,t.c2d=t.c2r=t.l2d=t.l2r=f,t.d2p=t.r2p=function(e){return t.l2p(l(e))},t.p2d=t.p2r=N,t.cleanPos=f):"log"===t.type?(t.d2r=t.d2l=function(t,e){return E(l(t),e)},t.r2d=t.r2c=function(t){return M(l(t))},t.d2c=t.r2l=l,t.c2d=t.l2r=f,t.c2r=E,t.l2d=M,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return M(N(t))},t.r2p=function(e){return t.l2p(l(e))},t.p2r=N,t.cleanPos=f):"date"===t.type?(t.d2r=t.r2d=a.identity,t.d2c=t.r2c=t.d2l=t.r2l=L,t.c2d=t.c2r=t.l2d=t.l2r=C,t.d2p=t.r2p=function(e,r,n){return t.l2p(L(e,0,n))},t.p2d=t.p2r=function(t,e,r){return C(N(t),e,r)},t.cleanPos=function(e){return a.cleanDate(e,v,t.calendar)}):"category"===t.type?(t.d2c=t.d2l=O,t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=D,t.r2c=function(e){var r=z(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=f,t.r2l=z,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return"string"==typeof t&&""!==t?t:f(t)}):"multicategory"===t.type&&(t.r2d=t.c2d=t.l2d=P,t.d2r=t.d2l_noadd=D,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=I,t.l2r=t.c2r=f,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return P(N(t))},t.r2p=t.d2p,t.p2r=N,t.cleanPos=function(t){return Array.isArray(t)||"string"==typeof t&&""!==t?t:f(t)},t.setupMultiCategory=function(n){var i,o,s=t._traceIndices,l=t._matchGroup;if(l&&0===t._categories.length)for(var u in l)if(u!==r){var c=e[w.id2name(u)];s=s.concat(c._traceIndices)}var f=[[0,{}],[0,{}]],d=[];for(i=0;id&&(o[n]=d),o[0]===o[1]){var u=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=u,o[1]+=u}}else a.nestedProperty(t,e).set(i)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=w.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?"_r":"range",o=t.calendar;t.cleanRange(a);var s,l,u=t.r2l(t[a][0],o),c=t.r2l(t[a][1],o),f="y"===p;if(f?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks&&(t._rangebreaks=t.locateBreaks(Math.min(u,c),Math.max(u,c)),t._rangebreaks.length)){for(s=0;sc&&(h=!h),h&&t._rangebreaks.reverse();var d=h?-1:1;for(t._m2=d*t._length/(Math.abs(c-u)-t._lBreaks),t._B.push(-t._m2*(f?c:u)),s=0;si&&(i+=7,oi&&(i+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),i=!1)}i&&u.push({min:t,max:n})}};for(n=0;n0?1:t<0?-1:0},_=Math.sqrt,w=Math.tan;function T(t){return t>1?0:t<-1?a:Math.acos(t)}function A(t){return t>1?o:t<-1?-o:Math.asin(t)}function k(t){return(t=x(t/2))*t}},19005:function(t,e,r){"use strict";t.exports={moduleType:"component",name:"modebar",layoutAttributes:r(58496),supplyLayoutDefaults:r(44535),manage:r(88326)}},19014:function(t,e,r){"use strict";var n=r(70666),i=r(66031),a=r(46982),o=r(88191).dashStyle,s=r(69562),l=r(93441),u=r(51676).makeEventData,c=r(7514),f=c.freeMode,h=c.rectMode,p=c.drawMode,d=c.openMode,v=c.selectMode,g=r(53812),y=r(65552),m=r(96989),x=r(7826).clearOutline,b=r(99603),_=b.handleEllipse,w=b.readPaths,T=r(1414).newShapes,A=r(53373),k=r(74160).activateLastSelection,M=r(15181),S=M.sorterAsc,E=r(23255),L=r(57341),C=r(93003).getFromId,P=r(91371),O=r(357).redrawReglTraces,I=r(37453),D=I.MINSELECT,z=E.filter,R=E.tester,F=r(28229),B=F.p2r,N=F.axValue,j=F.getTransform;function U(t){return void 0!==t.subplot}function V(t,e,r,n,i,a,o){var s,l,u,c,f,h,p,v,g,y=e._hoverdata,x=e._fullLayout.clickmode.indexOf("event")>-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){Y(t,e,a);var _=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1)return!1;if((n+=e.selectedpoints.length)>1)return!1}return 1===n}(s)&&(h=K(_))){for(o&&o.remove(),g=0;g=0})(i)&&i._fullLayout._deactivateShape(i),function(t){return t._fullLayout._activeSelectionIndex>=0}(i)&&i._fullLayout._deactivateSelection(i);var o=i._fullLayout._zoomlayer,s=p(r),l=v(r);if(s||l){var u,c,f=o.selectAll(".select-outline-"+n.id);f&&i._fullLayout._outlining&&(s&&(u=T(f,t)),u&&a.call("_guiRelayout",i,{shapes:u}),l&&!U(t)&&(c=A(f,t)),c&&(i._fullLayout._noEmitSelectedAtStart=!0,a.call("_guiRelayout",i,{selections:c}).then(function(){e&&k(i)})),i._fullLayout._outlining=!1)}n.selection={},n.selection.selectionDefs=t.selectionDefs=[],n.selection.mergedPolygons=t.mergedPolygons=[]}function Z(t){return t._id}function X(t,e,r,n){if(!t.calcdata)return[];var i,a,o,s=[],l=e.map(Z),u=r.map(Z);for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function $(t,e,r){var n,i;for(n=0;n-1&&e;if(!a&&e){var et=ot(t,!0);if(et.length){var nt=et[0].xref,pt=et[0].yref;if(nt&&pt){var dt=ut(et);ct([C(t,nt,"x"),C(t,pt,"y")])(Q,dt)}}t._fullLayout._noEmitSelectedAtStart?t._fullLayout._noEmitSelectedAtStart=!1:tt&&ft(t,Q),h._reselect=!1}if(!a&&h._deselect){var vt=h._deselect;(function(t,e,r){for(var n=0;n=0)A._fullLayout._deactivateShape(A);else if(!x){var r=k.clickmode;L.done(Mt).then(function(){if(L.clear(Mt),2===t){for(bt.remove(),K=0;K-1&&V(e,A,n.xaxes,n.yaxes,n.subplot,n,bt),"event"===r&&ft(A,void 0);l.click(A,e)}).catch(M.error)}},n.doneFn=function(){At.remove(),L.done(Mt).then(function(){L.clear(Mt),!S&&J&&n.selectionDefs&&(J.subtract=xt,n.selectionDefs.push(J),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,Z)),(S||x)&&W(n,S),n.doneFnCompleted&&n.doneFnCompleted(St),b&&ft(A,at)}).catch(M.error)}},clearOutline:x,clearSelectionsCache:W,selectOnClick:V}},19070:function(t,e,r){"use strict";var n=r(15181),i=r(6680),a=r(28418),o=r(52948),s=r(4868),l=r(68478),u=r(54563),c=r(46190),f=r(8377);t.exports=function(t,e,r,h){function p(r,i){return n.coerce(t,e,f,r,i)}p("carpet"),e.xaxis="x",e.yaxis="y";var d=p("a"),v=p("b"),g=Math.min(d.length,v.length);if(g){e._length=g,p("text"),p("texttemplate"),p("hovertext"),p("mode",g>14&16383),type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||c(t,e+8):"VP8L"===p&&d>=9?r=r||f(t,e+8):"VP8X"===p&&d>=10?r=r||h(t,e+8):"EXIF"===p&&(n=s.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return n>0&&(r.orientation=n),r}}}},19260:function(t,e,r){"use strict";var n=r(93441),i=r(46982),a=r(69562),o=r(15181).fillText,s=r(54791).getLineWidth,l=r(26446).hoverLabelText,u=r(78945).BADNUM;function c(t,e,r,i,a){var s,c,f,h,p,d,v,g=t.cd,y=g[0].trace,m=g[0].t,x="closest"===i,b="waterfall"===y.type,_=t.maxHoverDistance,w=t.maxSpikeDistance;"h"===y.orientation?(s=r,c=e,f="y",h="x",p=D,d=O):(s=e,c=r,f="x",h="y",d=D,p=O);var T=y[f+"period"],A=x||T;function k(t){return S(t,-1)}function M(t){return S(t,1)}function S(t,e){var r=t.w;return t[f]+e*r/2}function E(t){return t[f+"End"]-t[f+"Start"]}var L=x?k:T?function(t){return t.p-E(t)/2}:function(t){return Math.min(k(t),t.p-m.bardelta/2)},C=x?M:T?function(t){return t.p+E(t)/2}:function(t){return Math.max(M(t),t.p+m.bardelta/2)};function P(t,e,r){return a.finiteRange&&(r=0),n.inbox(t-s,e-s,r+Math.min(1,Math.abs(e-t)/v)-1)}function O(t){return P(L(t),C(t),_)}function I(t){var e=t[h];if(b){var r=Math.abs(t.rawS)||0;c>0?e+=r:c<0&&(e-=r)}return e}function D(t){var e=c,r=t.b,i=I(t);return n.inbox(r-e,i-e,_+(i-e)/(i-r)-1)}var z=t[f+"a"],R=t[h+"a"];v=Math.abs(z.r2c(z.range[1])-z.r2c(z.range[0]));var F=n.getDistanceFunction(i,p,d,function(t){return(p(t)+d(t))/2});if(n.getClosest(g,F,t),!1!==t.index&&g[t.index].p!==u){A||(L=function(t){return Math.min(k(t),t.p-m.bargroupwidth/2)},C=function(t){return Math.max(M(t),t.p+m.bargroupwidth/2)});var B=g[t.index],N=y.base?B.b+B.s:B.s;t[h+"0"]=t[h+"1"]=R.c2p(B[h],!0),t[h+"LabelVal"]=N;var j=m.extents[m.extents.round(B.p)];t[f+"0"]=z.c2p(x?L(B):j[0],!0),t[f+"1"]=z.c2p(x?C(B):j[1],!0);var U=void 0!==B.orig_p;return t[f+"LabelVal"]=U?B.orig_p:B.p,t.labelLabel=l(z,t[f+"LabelVal"],y[f+"hoverformat"]),t.valueLabel=l(R,t[h+"LabelVal"],y[h+"hoverformat"]),t.baseLabel=l(R,B.b,y[h+"hoverformat"]),t.spikeDistance=(function(t){var e=c,r=t.b,i=I(t);return n.inbox(r-e,i-e,w+(i-e)/(i-r)-1)}(B)+function(t){return P(k(t),M(t),w)}(B))/2,t[f+"Spike"]=z.c2p(B.p,!0),o(B,y,t),t.hovertemplate=y.hovertemplate,t}}function f(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,i=s(t,e);return a.opacity(r)?r:a.opacity(n)&&i?n:void 0}t.exports={hoverPoints:function(t,e,r,n,a){var o=c(t,e,r,n,a);if(o){var s=o.cd,l=s[0].trace,u=s[o.index];return o.color=f(l,u),i.getComponentMethod("errorbars","hoverInfo")(u,l,o),[o]}},hoverOnBars:c,getTraceColor:f}},19372:function(t){"use strict";t.exports=function(){var t=Math.sign;return"function"==typeof t&&1===t(10)&&-1===t(-20)}},19389:function(t,e,r){"use strict";var n=r(25623),i={Greys:[[0,"rgb(0,0,0)"],[1,"rgb(255,255,255)"]],YlGnBu:[[0,"rgb(8,29,88)"],[.125,"rgb(37,52,148)"],[.25,"rgb(34,94,168)"],[.375,"rgb(29,145,192)"],[.5,"rgb(65,182,196)"],[.625,"rgb(127,205,187)"],[.75,"rgb(199,233,180)"],[.875,"rgb(237,248,217)"],[1,"rgb(255,255,217)"]],Greens:[[0,"rgb(0,68,27)"],[.125,"rgb(0,109,44)"],[.25,"rgb(35,139,69)"],[.375,"rgb(65,171,93)"],[.5,"rgb(116,196,118)"],[.625,"rgb(161,217,155)"],[.75,"rgb(199,233,192)"],[.875,"rgb(229,245,224)"],[1,"rgb(247,252,245)"]],YlOrRd:[[0,"rgb(128,0,38)"],[.125,"rgb(189,0,38)"],[.25,"rgb(227,26,28)"],[.375,"rgb(252,78,42)"],[.5,"rgb(253,141,60)"],[.625,"rgb(254,178,76)"],[.75,"rgb(254,217,118)"],[.875,"rgb(255,237,160)"],[1,"rgb(255,255,204)"]],Bluered:[[0,"rgb(0,0,255)"],[1,"rgb(255,0,0)"]],RdBu:[[0,"rgb(5,10,172)"],[.35,"rgb(106,137,247)"],[.5,"rgb(190,190,190)"],[.6,"rgb(220,170,132)"],[.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]],Reds:[[0,"rgb(220,220,220)"],[.2,"rgb(245,195,157)"],[.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]],Blues:[[0,"rgb(5,10,172)"],[.35,"rgb(40,60,190)"],[.5,"rgb(70,100,245)"],[.6,"rgb(90,120,245)"],[.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]],Picnic:[[0,"rgb(0,0,255)"],[.1,"rgb(51,153,255)"],[.2,"rgb(102,204,255)"],[.3,"rgb(153,204,255)"],[.4,"rgb(204,204,255)"],[.5,"rgb(255,255,255)"],[.6,"rgb(255,204,255)"],[.7,"rgb(255,153,255)"],[.8,"rgb(255,102,204)"],[.9,"rgb(255,102,102)"],[1,"rgb(255,0,0)"]],Rainbow:[[0,"rgb(150,0,90)"],[.125,"rgb(0,0,200)"],[.25,"rgb(0,25,255)"],[.375,"rgb(0,152,255)"],[.5,"rgb(44,255,150)"],[.625,"rgb(151,255,0)"],[.75,"rgb(255,234,0)"],[.875,"rgb(255,111,0)"],[1,"rgb(255,0,0)"]],Portland:[[0,"rgb(12,51,131)"],[.25,"rgb(10,136,186)"],[.5,"rgb(242,211,56)"],[.75,"rgb(242,143,56)"],[1,"rgb(217,30,30)"]],Jet:[[0,"rgb(0,0,131)"],[.125,"rgb(0,60,170)"],[.375,"rgb(5,255,255)"],[.625,"rgb(255,255,0)"],[.875,"rgb(250,0,0)"],[1,"rgb(128,0,0)"]],Hot:[[0,"rgb(0,0,0)"],[.3,"rgb(230,0,0)"],[.6,"rgb(255,210,0)"],[1,"rgb(255,255,255)"]],Blackbody:[[0,"rgb(0,0,0)"],[.2,"rgb(230,0,0)"],[.4,"rgb(230,210,0)"],[.7,"rgb(255,255,255)"],[1,"rgb(160,200,255)"]],Earth:[[0,"rgb(0,0,130)"],[.1,"rgb(0,180,180)"],[.2,"rgb(40,210,40)"],[.4,"rgb(230,230,50)"],[.6,"rgb(120,70,20)"],[1,"rgb(255,255,255)"]],Electric:[[0,"rgb(0,0,0)"],[.15,"rgb(30,0,100)"],[.4,"rgb(120,0,100)"],[.6,"rgb(160,90,0)"],[.8,"rgb(230,200,0)"],[1,"rgb(255,250,220)"]],Viridis:[[0,"#440154"],[.06274509803921569,"#48186a"],[.12549019607843137,"#472d7b"],[.18823529411764706,"#424086"],[.25098039215686274,"#3b528b"],[.3137254901960784,"#33638d"],[.3764705882352941,"#2c728e"],[.4392156862745098,"#26828e"],[.5019607843137255,"#21918c"],[.5647058823529412,"#1fa088"],[.6274509803921569,"#28ae80"],[.6901960784313725,"#3fbc73"],[.7529411764705882,"#5ec962"],[.8156862745098039,"#84d44b"],[.8784313725490196,"#addc30"],[.9411764705882353,"#d8e219"],[1,"#fde725"]],Cividis:[[0,"rgb(0,32,76)"],[.058824,"rgb(0,42,102)"],[.117647,"rgb(0,52,110)"],[.176471,"rgb(39,63,108)"],[.235294,"rgb(60,74,107)"],[.294118,"rgb(76,85,107)"],[.352941,"rgb(91,95,109)"],[.411765,"rgb(104,106,112)"],[.470588,"rgb(117,117,117)"],[.529412,"rgb(131,129,120)"],[.588235,"rgb(146,140,120)"],[.647059,"rgb(161,152,118)"],[.705882,"rgb(176,165,114)"],[.764706,"rgb(192,177,109)"],[.823529,"rgb(209,191,102)"],[.882353,"rgb(225,204,92)"],[.941176,"rgb(243,219,79)"],[1,"rgb(255,233,69)"]]},a=i.RdBu;function o(t){var e=0;if(!Array.isArray(t)||t.length<2)return!1;if(!t[0]||!t[t.length-1])return!1;if(0!==+t[0][0]||1!==+t[t.length-1][0])return!1;for(var r=0;r",'""',"''","``","“”","«»"]:("string"==typeof r.ignore&&(r.ignore=[r.ignore]),r.ignore=r.ignore.map(function(t){return 1===t.length&&(t+=t),t}));var i=n.parse(t,{flat:!0,brackets:r.ignore}),a=i[0].split(e);if(r.escape){for(var o=[],s=0;s0?(0,n.A)(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)}):null},e.A=i;var a=i.range},21669:function(t,e,r){"use strict";for(var n=r(28209),i=r(38532).rb,a=r(8357).extendFlat,o=r(76591).colormodel,s=["rgb","rgba","rgba256","hsl","hsla"],l=[],u=[],c=0;c2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(r=parseFloat(e.value[0]),e.value=[r,r+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:n(e.value)&&(r=parseFloat(e.value),e.value=[r,r+1])):(t("contours.value",0),n(e.value)||(Array.isArray(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(r,v),"="===g?h=v.showlines=!0:(h=r("contours.showlines"),d=r("fillcolor",o((t.line||{}).color||l,.5))),h&&(p=r("line.color",d&&s(d)?o(e.fillcolor,1):l),r("line.width",2),r("line.dash")),r("line.smoothing"),i(r,a,p,f)}},22208:function(t,e,r){"use strict";function n(t,e){return te?1:t>=e?0:NaN}r.d(e,{V_:function(){return n},T9:function(){return s},i2:function(){return u},Am:function(){return c},jk:function(){return f},y1:function(){return h},cz:function(){return p}}),1===(i=n).length&&(a=i,i=function(t,e){return n(a(t),e)});var i,a,o=Array.prototype;function s(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n}function l(t){return null===t?NaN:+t}function u(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r}function f(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function h(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=0|Math.max(0,Math.ceil((e-t)/r)),a=new Array(i);++nu||p>c||d>f)return l=i,u=r,c=p,f=d,void(o=0);var v=n.lineString([l,i],t.properties);if(!1===e(v,r,a,d,o))return!1;o++,l=i})&&void 0}}})}function c(t,e){if(!t)throw new Error("geojson is required");l(t,function(t,r,i){if(null!==t.geometry){var a=t.geometry.type,o=t.geometry.coordinates;switch(a){case"LineString":if(!1===e(t,r,i,0,0))return!1;break;case"Polygon":for(var s=0;s0){r=d[n];break}return r}function m(t,e){if(!(t<1||e<1)){for(var r=g(t),n=g(e),i=1,a=0;a_;)r--,r/=y(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,n=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+n+1,u=1+a+1,c=i(new Float32Array(l*u),[l,u]),f=[1/e,0,0,0,1/r,0,0,0,1],h=0;h0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ea&&(this.minValues[e]=a),this.maxValues[e]=10&&a(t,e,s)&&(i=o.get_orientation(t.slice(e+6,e+r))),r>=5&&192<=l&&l<=207&&196!==l&&200!==l&&204!==l){if(t.length-e0&&(u.orientation=i),u}e+=r}}},22886:function(t,e,r){"use strict";var n=r(75671),i=r(46329).findBin,a=r(95663),o=r(74176),s=r(77828),l=r(32443);t.exports=function(t){var e=t._a,r=t._b,u=e.length,c=r.length,f=t.aaxis,h=t.baxis,p=e[0],d=e[u-1],v=r[0],g=r[c-1],y=e[e.length-1]-e[0],m=r[r.length-1]-r[0],x=y*n.RELATIVE_CULL_TOLERANCE,b=m*n.RELATIVE_CULL_TOLERANCE;p-=x,d+=x,v-=b,g+=b,t.isVisible=function(t,e){return t>p&&tv&&ed||eg},t.setScale=function(){var e=t._x,r=t._y,n=a(t._xctrl,t._yctrl,e,r,f.smoothing,h.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=o([t._xctrl,t._yctrl],u,c,f.smoothing,h.smoothing),t.dxydi=s([t._xctrl,t._yctrl],f.smoothing,h.smoothing),t.dxydj=l([t._xctrl,t._yctrl],f.smoothing,h.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),u-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),u-2),n=t[1]-e;return(1-n)*r[e]+n*r[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(i(t,e),u-2)),n=e[r],a=e[r+1];return Math.max(0,Math.min(u-1,r+(t-n)/(a-n)))},t.b2j=function(t){var e=Math.max(0,Math.min(i(t,r),c-2)),n=r[e],a=r[e+1];return Math.max(0,Math.min(c-1,e+(t-n)/(a-n)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(n,i,a){if(!a&&(ne[u-1]|ir[c-1]))return[!1,!1];var o=t.a2i(n),s=t.b2j(i),l=t.evalxy([],o,s);if(a){var f,h,p,d,v=0,g=0,y=[];ne[u-1]?(f=u-2,h=1,v=(n-e[u-1])/(e[u-1]-e[u-2])):h=o-(f=Math.max(0,Math.min(u-2,Math.floor(o)))),ir[c-1]?(p=c-2,d=1,g=(i-r[c-1])/(r[c-1]-r[c-2])):d=s-(p=Math.max(0,Math.min(c-2,Math.floor(s)))),v&&(t.dxydi(y,f,p,h,d),l[0]+=y[0]*v,l[1]+=y[1]*v),g&&(t.dxydj(y,f,p,h,d),l[0]+=y[0]*g,l[1]+=y[1]*g)}return l},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(r.length-2,t));return r[e+1]-r[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=m*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}},22925:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=r(88191),o=r(3071),s=r(11952),l=r(6343).styleOne,u=r(93952),c=r(95304),f=r(96303),h=r(2290).formatSliceLabel,p=!1;t.exports=function(t,e,r,d,v){var g=v.width,y=v.height,m=v.viewX,x=v.viewY,b=v.pathSlice,_=v.toMoveInsideSlice,w=v.strTransform,T=v.hasTransition,A=v.handleSlicesExit,k=v.makeUpdateSliceInterpolator,M=v.makeUpdateTextInterpolator,S=v.prevEntry,E=t._context.staticPlot,L=t._fullLayout,C=e[0].trace,P=-1!==C.textposition.indexOf("left"),O=-1!==C.textposition.indexOf("right"),I=-1!==C.textposition.indexOf("bottom"),D=s(r,[g,y],{flipX:C.tiling.flip.indexOf("x")>-1,flipY:C.tiling.flip.indexOf("y")>-1,orientation:C.tiling.orientation,pad:{inner:C.tiling.pad},maxDepth:C._maxDepth}).descendants(),z=1/0,R=-1/0;D.forEach(function(t){var e=t.depth;e>=C._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(z=Math.min(z,e),R=Math.max(R,e))}),d=d.data(D,c.getPtId),C._maxVisibleLayers=isFinite(R)?R-z+1:0,d.enter().append("g").classed("slice",!0),A(d,p,{},[g,y],b),d.order();var F=null;if(T&&S){var B=c.getPtId(S);d.each(function(t){null===F&&c.getPtId(t)===B&&(F={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})})}var N=function(){return F||{x0:0,x1:g,y0:0,y1:y}},j=d;return T&&(j=j.transition().each("end",function(){var e=n.select(this);c.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),j.each(function(s){s._x0=m(s.x0),s._x1=m(s.x1),s._y0=x(s.y0),s._y1=x(s.y1),s._hoverX=m(s.x1-C.tiling.pad),s._hoverY=x(I?s.y1-C.tiling.pad/2:s.y0+C.tiling.pad/2);var d=n.select(this),v=i.ensureSingle(d,"path","surface",function(t){t.style("pointer-events",E?"none":"all")});T?v.transition().attrTween("d",function(t){var e=k(t,p,N(),[g,y],{orientation:C.tiling.orientation,flipX:C.tiling.flip.indexOf("x")>-1,flipY:C.tiling.flip.indexOf("y")>-1});return function(t){return b(e(t))}}):v.attr("d",b),d.call(f,r,t,e,{styleOne:l,eventDataKeys:u.eventDataKeys,transitionTime:u.CLICK_TRANSITION_TIME,transitionEasing:u.CLICK_TRANSITION_EASING}).call(c.setSliceCursor,t,{isTransitioning:t._transitioning}),v.call(l,s,C,t,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text="":s._text=h(s,r,C,e,L)||"";var A=i.ensureSingle(d,"g","slicetext"),S=i.ensureSingle(A,"text","",function(t){t.attr("data-notex",1)}),D=i.ensureUniformFontSize(t,c.determineTextFont(C,s,L.font));S.text(s._text||" ").classed("slicetext",!0).attr("text-anchor",O?"end":P?"start":"middle").call(a.font,D).call(o.convertToTspans,t),s.textBB=a.bBox(S.node()),s.transform=_(s,{fontSize:D.size}),s.transform.fontSize=D.size,T?S.transition().attrTween("transform",function(t){var e=M(t,p,N(),[g,y]);return function(t){return w(e(t))}}):S.attr("transform",w(s))}),F}},22951:function(t){"use strict";t.exports=function(t,e,r,n,i,a){var o=i[0]*t.dpdx(e),s=i[1]*t.dpdy(r),l=1,u=1;if(a){var c=Math.sqrt(i[0]*i[0]+i[1]*i[1]),f=Math.sqrt(a[0]*a[0]+a[1]*a[1]),h=(i[0]*a[0]+i[1]*a[1])/c/f;u=Math.max(0,h)}var p=180*Math.atan2(s,o)/Math.PI;return p<-90?(p+=180,l=-l):p>90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:u}}},22994:function(t,e,r){"use strict";var n=r(54113),i=r(37565),a=r(29278),o=r(92444).templatedArray;r(85669),t.exports=o("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:i({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",a.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",a.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",a.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",a.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:i({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc",_deprecated:{ref:{valType:"string",editType:"calc"}}})},23068:function(t,e,r){"use strict";var n=r(13625);function i(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*r.g.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*r.g.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function a(t){return"function"==typeof t.getContext&&"width"in t&&"height"in t}function o(){var t=document.createElement("canvas");return t.style.position="absolute",t.style.top=0,t.style.left=0,t}t.exports=function(t){var e;if(t?"string"==typeof t&&(t={container:t}):t={},(t=a(t)||"string"==typeof(e=t).nodeName&&"function"==typeof e.appendChild&&"function"==typeof e.getBoundingClientRect?{container:t}:function(t){return"function"==typeof t.drawArrays||"function"==typeof t.drawElements}(t)?{gl:t}:n(t,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0)).pixelRatio||(t.pixelRatio=r.g.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if("string"==typeof t.container){var s=document.querySelector(t.container);if(!s)throw Error("Element "+t.container+" is not found");t.container=s}a(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=o(),t.container.appendChild(t.canvas),i(t))}else if(!t.canvas){if("undefined"==typeof document)throw Error("Not DOM environment. Use headless-gl.");t.container=document.body||document.documentElement,t.canvas=o(),t.container.appendChild(t.canvas),i(t)}return t.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch(t){}return t.gl}),t.gl}},23120:function(t,e,r){"use strict";var n=r(49369);n.register([r(80213),r(16053),r(16696),r(56786),r(69508),r(34824),r(96858),r(8851),r(32095),r(78290),r(65738),r(24573),r(43030),r(67590),r(82706),r(70685),r(31095),r(41545),r(82339),r(13582),r(22620),r(84136),r(46165),r(82012),r(89049),r(66072),r(87629),r(37133),r(41837),r(42319),r(77497),r(1454),r(48333),r(58219),r(5675),r(3539),r(37537),r(25612),r(13621),r(40937),r(4969),r(72096),r(18599),r(71416),r(91727),r(83157),r(23251),r(65743),r(92548),r(51698),r(29930),r(83699)]),t.exports=n},23251:function(t,e,r){"use strict";t.exports=r(16212)},23255:function(t,e,r){"use strict";var n=r(33240).dot,i=r(78945).BADNUM,a=t.exports={};a.tester=function(t){var e,r=t.slice(),n=r[0][0],a=n,o=r[0][1],s=o;for(r[r.length-1][0]===r[0][0]&&r[r.length-1][1]===r[0][1]||r.push(r[0]),e=1;ea||u===i||us||e&&l(t))}:function(t,e){var l=t[0],u=t[1];if(l===i||la||u===i||us)return!1;var c,f,h,p,d,v=r.length,g=r[0][0],y=r[0][1],m=0;for(c=1;cMath.max(f,g)||u>Math.max(h,y)))if(uc||Math.abs(n(o,h))>i)return!0;return!1},a.filter=function(t,e){var r=[t[0]],n=0,i=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(i+1);for(var u=l+1;u1&&o(t.pop()),{addPt:o,raw:t,filtered:r}}},23276:function(t,e,r){"use strict";var n=r(48246),i=r(31164),a=r(99012),o=a.axisHoverFormat,s=a.descriptionOnlyNumbers,l=r(79335),u=r(30430).T,c=r(37565),f=r(8357).extendFlat,h=r(77546),p=h.COMPARISON_OPS2,d=h.INTERVAL_OPS,v=i.line;t.exports=f({z:n.z,x:n.x,x0:n.x0,dx:n.dx,y:n.y,y0:n.y0,dy:n.dy,xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:i.xperiod0,yperiod0:i.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,text:n.text,hovertext:n.hovertext,transpose:n.transpose,xtype:n.xtype,ytype:n.ytype,xhoverformat:o("x"),yhoverformat:o("y"),zhoverformat:o("z",1),hovertemplate:n.hovertemplate,texttemplate:f({},n.texttemplate,{}),textfont:f({},n.textfont,{}),hoverongaps:n.hoverongaps,connectgaps:f({},n.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:c({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:s("contour label")},operation:{valType:"enumerated",values:[].concat(p).concat(d),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:f({},v.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:u,smoothing:f({},v.smoothing,{}),editType:"plot"}},l("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))},23453:function(t,e,r){"use strict";var n=r(5159),i=r(80924),a=r(66335),o=r(64433),s=r(2524).calcMarkerSize,l=r(71351);t.exports=function(t,e){var r=e._carpetTrace=l(t,e);if(r&&r.visible&&"legendonly"!==r.visible){var u;e.xaxis=r.xaxis,e.yaxis=r.yaxis;var c,f,h=e._length,p=new Array(h),d=!1;for(u=0;u1,b=1-f[t+"gap"],_=1-f[t+"groupgap"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Y=E.marker.size/2,W=0;q+G>=0&&((W=V*(q+G))>M?(H=!0,j=Y,B=W):W>R&&(j=Y,B=M)),W<=M&&(B=M);var Z=0;q-G<=0&&((Z=-V*(q-G))>S?(H=!0,U=Y,N=Z):Z>F&&(U=Y,N=S)),Z<=S&&(N=S)}else B=M,N=S;var X=new Array(u.length);for(l=0;l=0&&"[object Array]"!==i(t)&&"callee"in t&&"[object Function]"===i(t.callee)},s=function(){return a(arguments)}();a.isLegacyArguments=o,t.exports=s?a:o},23814:function(t){"use strict";t.exports={container:"marker",min:"cmin",max:"cmax"}},23850:function(t,e,r){"use strict";var n=r(15181),i=n._,a=r(26446),o=r(89196),s=r(78945).BADNUM;function l(t,e,r,n){return{o:t,h:e,l:r,c:n}}function u(t,e,r,o,l,u){for(var c=l.makeCalcdata(e,"open"),f=l.makeCalcdata(e,"high"),h=l.makeCalcdata(e,"low"),p=l.makeCalcdata(e,"close"),d=Array.isArray(e.text),v=Array.isArray(e.hovertext),g=!0,y=null,m=!!e.xperiodalignment,x=[],b=0;by):g=k>w,y=k;var M=u(w,T,A,k);M.pos=_,M.yc=(w+k)/2,M.i=b,M.dir=g?"increasing":"decreasing",M.x=M.pos,M.y=[A,T],m&&(M.orig_p=r[b]),d&&(M.tx=e.text[b]),v&&(M.htx=e.hovertext[b]),x.push(M)}else x.push({pos:_,empty:!0})}return e._extremes[l._id]=a.findExtremes(l,n.concat(h,f),{padded:!0}),x.length&&(x[0].t={labels:{open:i(t,"open:")+" ",high:i(t,"high:")+" ",low:i(t,"low:")+" ",close:i(t,"close:")+" "}}),x}t.exports={calc:function(t,e){var r=a.getFromId(t,e.xaxis),i=a.getFromId(t,e.yaxis),s=function(t,e,r){var i=r._minDiff;if(!i){var a,s=t._fullData,l=[];for(i=1/0,a=0;a0;)g=f.c2p(w+b*M),b--;for(b=0;void 0===m&&b0;)x=h.c2p(T+b*S),b--;gI[0];if(D||z){var R=v+E/2,F=m+L/2;P+="transform:"+a(R+"px",F+"px")+"scale("+(D?-1:1)+","+(z?-1:1)+")"+a(-R+"px",-F+"px")+";"}}C.attr("style",P);var B=new Promise(function(t){if(c._hasZ)t();else if(c._hasSource)if(c._canvas&&c._canvas.el.width===A&&c._canvas.el.height===k&&c._canvas.source===c.source)t();else{var e=document.createElement("canvas");e.width=A,e.height=k;var r=e.getContext("2d",{willReadFrequently:!0});c._image=c._image||new Image;var n=c._image;n.onload=function(){r.drawImage(n,0,0),c._canvas={el:e,source:c.source},t()},n.setAttribute("src",c.source)}}).then(function(){var t,e;if(c._hasZ)e=N(function(t,e){return _[e][t]}),t=e.toDataURL("image/png");else if(c._hasSource)if(d)t=c.source;else{var r=c._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,A,k).data;e=N(function(t,e){var n=4*(e*A+t);return[r[n],r[n+1],r[n+2],r[n+3]]}),t=e.toDataURL("image/png")}C.attr({"xlink:href":t,height:L,width:E,x:v,y:m})});t._promises.push(B)}function N(t){var e=document.createElement("canvas");e.width=E,e.height=L;var r,n=e.getContext("2d",{willReadFrequently:!0}),a=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-v),0,E)},o=function(t){return i.constrain(Math.round(h.c2p(T+t*S)-m),0,L)},u=s.colormodel[c.colormodel],p=u.colormodel||c.colormodel,d=u.fmt;for(b=0;b0&&(a=!0);for(var l=0;lb[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s),"sync"===e.tickmode&&(e.tickmode="auto")}return r("layer"),e}},24418:function(t,e,r){"use strict";var n=r(23648);t.exports={isSize:function(t){return/^[\d\.]/.test(t)||-1!==t.indexOf("/")||-1!==n.indexOf(t)}}},24438:function(t){t.exports=function(t,e){if("string"!=typeof t)throw new TypeError("must specify type string");if(e=e||{},"undefined"==typeof document&&!e.canvas)return null;var r=e.canvas||document.createElement("canvas");"number"==typeof e.width&&(r.width=e.width),"number"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf("webgl")&&a.push("experimental-"+t);for(var o=0;ol&&(e.isomin=null,e.isomax=null);var u=a("x"),c=a("y"),f=a("z"),h=a("value");u&&u.length&&c&&c.length&&f&&f.length&&h&&h.length?(i.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y","z"],n),a("valuehoverformat"),["x","y","z"].forEach(function(t){a(t+"hoverformat");var e="caps."+t;a(e+".show")&&a(e+".fill");var r="slices."+t;a(r+".show")&&(a(r+".fill"),a(r+".locations"))}),a("spaceframe.show")&&a("spaceframe.fill"),a("surface.show")&&(a("surface.count"),a("surface.fill"),a("surface.pattern")),a("contour.show")&&(a("contour.color"),a("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(t){a(t)}),o(t,e,n,a,{prefix:"",cLetter:"c"}),e._length=null):e.visible=!1}t.exports={supplyDefaults:function(t,e,r,i){s(t,e,0,i,function(r,i){return n.coerce(t,e,a,r,i)})},supplyIsoDefaults:s}},25420:function(t,e,r){"use strict";var n=r(69562),i=function(){};t.exports=function(t){for(var e in t)"function"==typeof t[e]&&(t[e]=i);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var r=document.createElement("div");r.className="no-webgl",r.style.cursor="pointer",r.style.fontSize="24px",r.style.color=n.defaults[0],r.style.position="absolute",r.style.left=r.style.top="0px",r.style.width=r.style.height="100%",r.style["background-color"]=n.lightLine,r.style["z-index"]=30;var a=document.createElement("p");return a.textContent="WebGL is not supported by your browser - visit https://get.webgl.org for more info",a.style.position="relative",a.style.top="50%",a.style.left="50%",a.style.height="30%",a.style.width="50%",a.style.margin="-15% 0 0 -25%",r.appendChild(a),t.container.appendChild(r),t.container.style.background="#FFFFFF",t.container.onclick=function(){window.open("https://get.webgl.org")},!1}},25441:function(t,e,r){"use strict";var n=r(15181),i=r(86877),a=r(37070),o=r(79130).z;function s(t,e){var r,s,l,u,c,f,h,p,d,v,g=e.transform,y=e.transformIndex,m=t.transforms[y].groups,x=o(t.transforms,g);if(!n.isArrayOrTypedArray(m)||0===m.length)return[t];var b=n.filterUnique(m),_=new Array(b.length),w=m.length,T=i.findArrayAttributes(t),A=g.styles||[],k={};for(r=0;r1?"%{group} (%{trace})":"%{group}");var l=t.styles,u=o.styles=[];if(l)for(a=0;a1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=T(t,360),e=T(e,100),r=T(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(n.h,o,l),u=!0,c="hsl"),n.hasOwnProperty("a")&&(a=n.a)),a=w(a),{ok:u,format:n.format||c,r:Math.min(255,Math.max(i.r,0)),g:Math.min(255,Math.max(i.g,0)),b:Math.min(255,Math.max(i.b,0)),a:a};var f,h,p}(i);this._originalInput=i,this._r=o.r,this._g=o.g,this._b=o.b,this._a=o.a,this._roundA=Math.round(100*this._a)/100,this._format=a.format||o.format,this._gradientType=a.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=o.ok}function i(t,e,r){t=T(t,255),e=T(e,255),r=T(r,255);var n,i,a=Math.max(t,e,r),o=Math.min(t,e,r),s=(a+o)/2;if(a==o)n=i=0;else{var l=a-o;switch(i=s>.5?l/(2-a-o):l/(a+o),a){case t:n=(e-r)/l+(e>1)+720)%360;--e;)i.h=(i.h+a)%360,o.push(n(i));return o}function x(t,e){e=e||6;for(var r=n(t).toHsv(),i=r.h,a=r.s,o=r.v,s=[],l=1/e;e--;)s.push(n({h:i,s:a,v:o})),o=(o+l)%1;return s}n.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,e,r,n=this.toRgb();return t=n.r/255,e=n.g/255,r=n.b/255,.2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},setAlpha:function(t){return this._a=w(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=a(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=a(this._r,this._g,this._b),e=Math.round(360*t.h),r=Math.round(100*t.s),n=Math.round(100*t.v);return 1==this._a?"hsv("+e+", "+r+"%, "+n+"%)":"hsva("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHsl:function(){var t=i(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=i(this._r,this._g,this._b),e=Math.round(360*t.h),r=Math.round(100*t.s),n=Math.round(100*t.l);return 1==this._a?"hsl("+e+", "+r+"%, "+n+"%)":"hsla("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHex:function(t){return o(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var a=[M(Math.round(t).toString(16)),M(Math.round(e).toString(16)),M(Math.round(r).toString(16)),M(E(n))];return i&&a[0].charAt(0)==a[0].charAt(1)&&a[1].charAt(0)==a[1].charAt(1)&&a[2].charAt(0)==a[2].charAt(1)&&a[3].charAt(0)==a[3].charAt(1)?a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0):a.join("")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(100*T(this._r,255))+"%",g:Math.round(100*T(this._g,255))+"%",b:Math.round(100*T(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*T(this._r,255))+"%, "+Math.round(100*T(this._g,255))+"%, "+Math.round(100*T(this._b,255))+"%)":"rgba("+Math.round(100*T(this._r,255))+"%, "+Math.round(100*T(this._g,255))+"%, "+Math.round(100*T(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(_[o(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e="#"+s(this._r,this._g,this._b,this._a),r=e,i=this._gradientType?"GradientType = 1, ":"";if(t){var a=n(t);r="#"+s(a._r,a._g,a._b,a._a)}return"progid:DXImageTransform.Microsoft.gradient("+i+"startColorstr="+e+",endColorstr="+r+")"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||"hex"!==t&&"hex6"!==t&&"hex3"!==t&&"hex4"!==t&&"hex8"!==t&&"name"!==t?("rgb"===t&&(r=this.toRgbString()),"prgb"===t&&(r=this.toPercentageRgbString()),"hex"!==t&&"hex6"!==t||(r=this.toHexString()),"hex3"===t&&(r=this.toHexString(!0)),"hex4"===t&&(r=this.toHex8String(!0)),"hex8"===t&&(r=this.toHex8String()),"name"===t&&(r=this.toName()),"hsl"===t&&(r=this.toHslString()),"hsv"===t&&(r=this.toHsvString()),r||this.toHexString()):"name"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return n(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(f,arguments)},brighten:function(){return this._applyModification(h,arguments)},darken:function(){return this._applyModification(p,arguments)},desaturate:function(){return this._applyModification(l,arguments)},saturate:function(){return this._applyModification(u,arguments)},greyscale:function(){return this._applyModification(c,arguments)},spin:function(){return this._applyModification(d,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(m,arguments)},complement:function(){return this._applyCombination(v,arguments)},monochromatic:function(){return this._applyCombination(x,arguments)},splitcomplement:function(){return this._applyCombination(y,arguments)},triad:function(){return this._applyCombination(g,[3])},tetrad:function(){return this._applyCombination(g,[4])}},n.fromRatio=function(e,r){if("object"==t(e)){var i={};for(var a in e)e.hasOwnProperty(a)&&(i[a]="a"===a?e[a]:S(e[a]));e=i}return n(e,r)},n.equals=function(t,e){return!(!t||!e)&&n(t).toRgbString()==n(e).toRgbString()},n.random=function(){return n.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},n.mix=function(t,e,r){r=0===r?0:r||50;var i=n(t).toRgb(),a=n(e).toRgb(),o=r/100;return n({r:(a.r-i.r)*o+i.r,g:(a.g-i.g)*o+i.g,b:(a.b-i.b)*o+i.b,a:(a.a-i.a)*o+i.a})},n.readability=function(t,e){var r=n(t),i=n(e);return(Math.max(r.getLuminance(),i.getLuminance())+.05)/(Math.min(r.getLuminance(),i.getLuminance())+.05)},n.isReadable=function(t,e,r){var i,a,o,s,l,u=n.readability(t,e);switch(a=!1,(o=r,"AA"!==(s=((o=o||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==s&&(s="AA"),"small"!==(l=(o.size||"small").toLowerCase())&&"large"!==l&&(l="small"),i={level:s,size:l}).level+i.size){case"AAsmall":case"AAAlarge":a=u>=4.5;break;case"AAlarge":a=u>=3;break;case"AAAsmall":a=u>=7}return a},n.mostReadable=function(t,e,r){var i,a,o,s,l=null,u=0;a=(r=r||{}).includeFallbackColors,o=r.level,s=r.size;for(var c=0;cu&&(u=i,l=n(e[c]));return n.isReadable(t,l,{level:o,size:s})||!a?l:(r.includeFallbackColors=!1,n.mostReadable(t,["#fff","#000"],r))};var b=n.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},_=n.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(b);function w(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function T(t,e){(function(t){return"string"==typeof t&&-1!=t.indexOf(".")&&1===parseFloat(t)})(t)&&(t="100%");var r=function(t){return"string"==typeof t&&-1!=t.indexOf("%")}(t);return t=Math.min(e,Math.max(0,parseFloat(t))),r&&(t=parseInt(t*e,10)/100),Math.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function A(t){return Math.min(1,Math.max(0,t))}function k(t){return parseInt(t,16)}function M(t){return 1==t.length?"0"+t:""+t}function S(t){return t<=1&&(t=100*t+"%"),t}function E(t){return Math.round(255*parseFloat(t)).toString(16)}function L(t){return k(t)/255}var C,P,O,I=(P="[\\s|\\(]+("+(C="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+C+")[,|\\s]+("+C+")\\s*\\)?",O="[\\s|\\(]+("+C+")[,|\\s]+("+C+")[,|\\s]+("+C+")[,|\\s]+("+C+")\\s*\\)?",{CSS_UNIT:new RegExp(C),rgb:new RegExp("rgb"+P),rgba:new RegExp("rgba"+O),hsl:new RegExp("hsl"+P),hsla:new RegExp("hsla"+O),hsv:new RegExp("hsv"+P),hsva:new RegExp("hsva"+O),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function D(t){return!!I.CSS_UNIT.exec(t)}return n}()},25702:function(t){t.exports=function(t,e){if(t===e){var r=e[1],n=e[2],i=e[3],a=e[6],o=e[7],s=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=a,t[11]=e[14],t[12]=i,t[13]=o,t[14]=s}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}},25722:function(t){"use strict";t.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},25748:function(t,e,r){"use strict";var n=r(93950).gl_streamtube3d,i=n.createTubeMesh,a=r(15181),o=r(53914).parseColorScale,s=r(44236).extractOpts,l=r(38603),u={xaxis:0,yaxis:1,zaxis:2};function c(t,e){this.scene=t,this.uid=e,this.mesh=null,this.data=null}var f=c.prototype;function h(t){var e=t.length;return e>2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function d(t,e){var r=t.fullSceneLayout,i=t.dataScale,c=e._len,f={};function d(t,e){var n=r[e],o=i[u[e]];return a.simpleMap(t,function(t){return n.d2l(t)*o})}if(f.vectors=l(d(e._u,"xaxis"),d(e._v,"yaxis"),d(e._w,"zaxis"),c),!c)return{positions:[],cells:[]};var v=d(e._Xs,"xaxis"),g=d(e._Ys,"yaxis"),y=d(e._Zs,"zaxis");if(f.meshgrid=[v,g,y],f.gridFill=e._gridFill,e._slen)f.startingPositions=l(d(e._startsX,"xaxis"),d(e._startsY,"yaxis"),d(e._startsZ,"zaxis"));else{for(var m=g[0],x=h(v),b=h(y),_=new Array(x.length*b.length),w=0,T=0;T13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},26446:function(t,e,r){"use strict";var n=r(16534),i=r(5159),a=r(37070),o=r(46982),s=r(15181),l=s.strTranslate,u=r(3071),c=r(73396),f=r(69562),h=r(88191),p=r(94257),d=r(12203),v=r(78945),g=v.ONEMAXYEAR,y=v.ONEAVGYEAR,m=v.ONEMINYEAR,x=v.ONEMAXQUARTER,b=v.ONEAVGQUARTER,_=v.ONEMINQUARTER,w=v.ONEMAXMONTH,T=v.ONEAVGMONTH,A=v.ONEMINMONTH,k=v.ONEWEEK,M=v.ONEDAY,S=M/2,E=v.ONEHOUR,L=v.ONEMIN,C=v.ONESEC,P=v.MINUS_SIGN,O=v.BADNUM,I={K:"zeroline"},D={K:"gridline",L:"path"},z={K:"minor-gridline",L:"path"},R={K:"tick",L:"path"},F={K:"tick",L:"text"},B={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},N=r(5126),j=N.MID_SHIFT,U=N.CAP_SHIFT,V=N.LINE_SPACING,H=N.OPPOSITE_SIDE,q=t.exports={};q.setConvert=r(18687);var G=r(50446),Y=r(93003),W=Y.idSort,Z=Y.isLinked;q.id2name=Y.id2name,q.name2id=Y.name2id,q.cleanId=Y.cleanId,q.list=Y.list,q.listIds=Y.listIds,q.getFromId=Y.getFromId,q.getFromTrace=Y.getFromTrace;var X=r(40243);function J(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}q.getAutoRange=X.getAutoRange,q.findExtremes=X.findExtremes,q.coerceRef=function(t,e,r,n,i,a){var o=n.charAt(n.length-1),l=r._fullLayout._subplots[o+"axis"],u=n+"ref",c={};return i||(i=l[0]||("string"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map(function(t){return t+" domain"})),c[u]={valType:"enumerated",values:l.concat(a?"string"==typeof a?[a]:a:[]),dflt:i},s.coerce(t,e,c,u)},q.getRefType=function(t){return void 0===t?t:"paper"===t?"paper":"pixel"===t?"pixel":/( domain)$/.test(t)?"domain":"range"},q.coercePosition=function(t,e,r,n,i,a){var o,l;if("range"!==q.getRefType(n))o=s.ensureNumber,l=r(i,a);else{var u=q.getFromId(e,n);l=r(i,a=u.fraction2r(a)),o=u.cleanPos}t[i]=o(l)},q.cleanPosition=function(t,e,r){return("paper"===r||"pixel"===r?s.ensureNumber:q.getFromId(e,r).cleanPos)(t)},q.redrawComponents=function(t,e){e=e||q.listIds(t);var r=t._fullLayout;function n(n,i,a,s){for(var l=o.getComponentMethod(n,i),u={},c=0;cr&&f2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},q.saveRangeInitial=function(t,e){for(var r=q.list(t,"",!0),n=!1,i=0;i.3*h||c(n)||c(a))){var p=r.dtick/2;t+=t+p.8){var o=Number(r.substr(1));a.exactYears>.8&&o%12==0?t=q.tickIncrement(t,"M6","reverse")+1.5*M:a.exactMonths>.8?t=q.tickIncrement(t,"M1","reverse")+15.5*M:t-=S;var l=q.tickIncrement(t,r);if(l<=n)return l}return t}(m,t,y,u,a)),g=m;g<=c;)g=q.tickIncrement(g,y,!1,a);return{start:e.c2r(m,0,a),end:e.c2r(g,0,a),size:y,_dataSpan:c-u}},q.prepMinorTicks=function(t,e,r){if(!e.minor.dtick){delete t.dtick;var n,a=e.dtick&&i(e._tmin);if(a){var o=q.tickIncrement(e._tmin,e.dtick,!0);n=[e._tmin,.99*o+.01*e._tmin]}else{var l=s.simpleMap(e.range,e.r2l);n=[l[0],.8*l[0]+.2*l[1]]}if(t.range=s.simpleMap(n,e.l2r),t._isMinor=!0,q.prepTicks(t,r),a){var u=i(e.dtick),c=i(t.dtick),f=u?e.dtick:+e.dtick.substring(1),h=c?t.dtick:+t.dtick.substring(1);u&&c?tt(f,h)?f===2*k&&h===2*M&&(t.dtick=k):f===2*k&&h===3*M?t.dtick=k:f!==k||(e._input.minor||{}).nticks?et(f/h,2.5)?t.dtick=f/2:t.dtick=f:t.dtick=M:"M"===String(e.dtick).charAt(0)?c?t.dtick="M1":tt(f,h)?f>=12&&2===h&&(t.dtick="M3"):t.dtick=e.dtick:"L"===String(t.dtick).charAt(0)?"L"===String(e.dtick).charAt(0)?tt(f,h)||(t.dtick=et(f/h,2.5)?e.dtick/2:e.dtick):t.dtick="D1":"D2"===t.dtick&&+e.dtick>1&&(t.dtick=1)}t.range=e.range}void 0===e.minor._tick0Init&&(t.tick0=e.tick0)},q.prepTicks=function(t,e){var r=s.simpleMap(t.range,t.r2l,void 0,void 0,e);if("auto"===t.tickmode||!t.dtick){var n,a=t.nticks;a||("category"===t.type||"multicategory"===t.type?(n=t.tickfont?s.bigFont(t.tickfont.size||12):15,a=t._length/n):(n="y"===t._id.charAt(0)?40:80,a=s.constrain(t._length/n,4,9)+1),"radialaxis"===t._name&&(a*=2)),t.minor&&"array"!==t.minor.tickmode||"array"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,q.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}"period"===t.ticklabelmode&&function(t){var e;function r(){return!(i(t.dtick)||"M"!==t.dtick.charAt(0))}var n=r(),a=q.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=E,o&&!n&&t.dtick=(I?0:1);D--){var z=!D;D?(t._dtickInit=t.dtick,t._tick0Init=t.tick0):(t.minor._dtickInit=t.minor.dtick,t.minor._tick0Init=t.minor.tick0);var R=D?t:s.extendFlat({},t,t.minor);if(z?q.prepMinorTicks(R,t,e):q.prepTicks(R,e),"array"!==R.tickmode)if("sync"!==R.tickmode){var F=J(c),B=F[0],N=F[1],j=i(R.dtick),U="log"===a&&!(j||"L"===R.dtick.charAt(0)),V=q.tickFirst(R,e);if(D){if(t._tmin=V,V=N:W<=N;W=q.tickIncrement(W,Z,f,o)){if(D&&H++,R.rangebreaks&&!f){if(W=p)break}if(C.length>d||W===Y)break;Y=W;var X={value:W};D?(U&&W!==(0|W)&&(X.simpleLabel=!0),l>1&&H%l&&(X.skipLabel=!0),C.push(X)):(X.minor=!0,P.push(X))}}else C=[],v=it(t);else D?(C=[],v=at(t)):(P=[],L=at(t))}if(I&&!("inside"===t.minor.ticks&&"outside"===t.ticks||"outside"===t.minor.ticks&&"inside"===t.ticks)){for(var K=C.map(function(t){return t.value}),$=[],Q=0;Q0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,u=t[o].value,c=Math.abs(u-l),f=r||c,h=0;f>=m?h=c>=m&&c<=g?c:y:r===b&&f>=_?h=c>=_&&c<=x?c:b:f>=A?h=c>=A&&c<=w?c:T:r===k&&f>=k?h=k:f>=M?h=M:r===S&&f>=S?h=S:r===E&&f>=E&&(h=E),h>=c&&(h=c,s=!0);var p=i+h;if(e.rangebreaks&&h>0){for(var d=0,v=0;v<84;v++){var L=(v+.5)/84;e.maskBreaks(i*(1-L)+L*p)!==O&&d++}(h*=d/84)||(t[n].drop=!0),s&&c>k&&(h=c)}(h>0||0===n)&&(t[n].periodX=i+h/2)}}(C,t,t._definedDelta),t.rangebreaks){var ot="y"===t._id.charAt(0),st=1;"auto"===t.tickmode&&(st=t.tickfont?t.tickfont.size:12);var lt=NaN;for(r=C.length-1;r>-1;r--)if(C[r].drop)C.splice(r,1);else{C[r].value=Dt(C[r].value,t);var ut=t.c2p(C[r].value);(ot?lt>ut-st:ltp||ftp&&(ct.periodX=p),ft10||"01-01"!==n.substr(5)?t._tickround="d":t._tickround=+e.substr(1)%12==0?"y":"m";else if(e>=M&&a<=10||e>=15*M)t._tickround="d";else if(e>=L&&a<=16||e>=E)t._tickround="M";else if(e>=C&&a<=19||e>=L)t._tickround="S";else{var o=t.l2r(r+e).replace(/^-/,"").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(i(e)||"L"===e.charAt(0)){var s=t.range.map(t.r2d||Number);i(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),u=Math.floor(Math.log(l)/Math.LN10+.01),c=void 0===t.minexponent?3:t.minexponent;Math.abs(u)>c&&(yt(t.exponentformat)&&!mt(u)?t._tickexponent=3*Math.round((u-1)/3):t._tickexponent=u)}else t._tickround=null}function vt(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||"",fontSize:n.size,font:n.family,fontColor:n.color}}q.autoTicks=function(t,e,r){var n;function a(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if("date"===t.type){t.tick0=s.dateTick0(t.calendar,0);var o=2*e;if(o>y)e/=y,n=a(10),t.dtick="M"+12*pt(e,n,ot);else if(o>T)e/=T,t.dtick="M"+pt(e,1,st);else if(o>M){if(t.dtick=pt(e,M,t._hasDayOfWeekBreaks?[1,2,7,14]:ut),!r){var l=q.getTickFormat(t),u="period"===t.ticklabelmode;u&&(t._rawTick0=t.tick0),/%[uVW]/.test(l)?t.tick0=s.dateTick0(t.calendar,2):t.tick0=s.dateTick0(t.calendar,1),u&&(t._dowTick0=t.tick0)}}else o>E?t.dtick=pt(e,E,st):o>L?t.dtick=pt(e,L,lt):o>C?t.dtick=pt(e,C,lt):(n=a(10),t.dtick=pt(e,n,ot))}else if("log"===t.type){t.tick0=0;var c=s.simpleMap(t.range,t.r2l);if(t._isMinor&&(e*=1.5),e>.7)t.dtick=Math.ceil(e);else if(Math.abs(c[1]-c[0])<1){var f=1.5*Math.abs((c[1]-c[0])/e);e=Math.abs(Math.pow(10,c[1])-Math.pow(10,c[0]))/f,n=a(10),t.dtick="L"+pt(e,n,ot)}else t.dtick=e>.3?"D2":"D1"}else"category"===t.type||"multicategory"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):It(t)?(t.tick0=0,n=1,t.dtick=pt(e,n,ht)):(t.tick0=0,n=a(10),t.dtick=pt(e,n,ot));if(0===t.dtick&&(t.dtick=1),!i(t.dtick)&&"string"!=typeof t.dtick){var h=t.dtick;throw t.dtick=1,"ax.dtick error: "+String(h)}},q.tickIncrement=function(t,e,r,a){var o=r?-1:1;if(i(e))return s.increment(t,o*e);var l=e.charAt(0),u=o*Number(e.substr(1));if("M"===l)return s.incrementMonth(t,u,a);if("L"===l)return Math.log(Math.pow(10,t)+u)/Math.LN10;if("D"===l){var c="D2"===e?ft:ct,f=t+.01*o,h=s.roundUp(s.mod(f,1),c,r);return Math.floor(f)+Math.log(n.round(Math.pow(10,h),1))/Math.LN10}throw"unrecognized dtick "+String(e)},q.tickFirst=function(t,e){var r=t.r2l||Number,a=s.simpleMap(t.range,r,void 0,void 0,e),o=a[1] ")}else t._prevDateHead=l,u+="
    "+l;e.text=u}(t,o,r,u):"log"===c?function(t,e,r,n,a){var o=t.dtick,l=e.x,u=t.tickformat,c="string"==typeof o&&o.charAt(0);if("never"===a&&(a=""),n&&"L"!==c&&(o="L3",c="L"),u||"L"===c)e.text=xt(Math.pow(10,l),t,a,n);else if(i(o)||"D"===c&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;"power"===p||yt(p)&&mt(f)?(e.text=0===f?1:1===f?"10":"10"+(f>1?"":P)+h+"",e.fontSize*=1.25):("e"===p||"E"===p)&&h>2?e.text="1"+p+(f>0?"+":P)+h:(e.text=xt(Math.pow(10,l),t,"","fakehover"),"D1"===o&&"y"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if("D"!==c)throw"unrecognized dtick "+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if("D1"===t.dtick){var d=String(e.text).charAt(0);"0"!==d&&"1"!==d||("y"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,u,v):"category"===c?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=""),e.text=String(r)}(t,o):"multicategory"===c?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?"":String(i[1]),o=void 0===i[0]?"":String(i[0]);r?e.text=o+" - "+a:(e.text=a,e.text2=o)}(t,o,r):It(t)?function(t,e,r,n,i){if("radians"!==t.thetaunit||r)e.text=xt(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text="0";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=xt(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text="π":e.text=o[0]+"π":e.text=["",o[0],"","⁄","",o[1],"","π"].join(""),l&&(e.text=P+e.text)}}}}(t,o,r,u,v):function(t,e,r,n,i){"never"===i?i="":"all"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i="hide"),e.text=xt(e.x,t,i,n)}(t,o,0,u,v),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),t.labelalias&&t.labelalias.hasOwnProperty(o.text)){var g=t.labelalias[o.text];"string"==typeof g&&(o.text=g)}if("boundaries"===t.tickson||t.showdividers){var y=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[y(o.x-.5),y(o.x+t.dtick-.5)]}return o},q.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return q.hoverLabelText(t,n,r)+" - "+q.hoverLabelText(t,i,r);var a="log"===t.type&&n<=0,o=q.tickText(t,t.c2l(a?-n:n),"hover").text;return a?0===n?"0":P+o:o};var gt=["f","p","n","μ","m","","k","M","G","T"];function yt(t){return"SI"===t||"B"===t}function mt(t){return t>14||t<-15}function xt(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||"B",u=e._tickexponent,c=q.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:"none"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:"none"===e.showexponent?e.range.map(e.r2d):[0,t||1]};dt(h),o=(Number(h._tickround)||0)+4,u=h._tickexponent,e.hoverformat&&(c=e.hoverformat)}if(c)return e._numFormat(c)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if("none"===l&&(u=0),(t=Math.abs(t))"+p+"":"B"===l&&9===u?t+="B":yt(l)&&(t+=gt[u/3+5])),a?P+t:t}function bt(t,e){if(t){var r=Object.keys(B).reduce(function(t,r){return-1!==e.indexOf(r)&&B[r].forEach(function(e){t[e]=1}),t},{});Object.keys(t).forEach(function(e){r[e]||(1===e.length?t[e]=0:delete t[e])})}}function _t(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=n(t))}function s(t,e){var r=null===e[0],n=null===e[1],i=a(t,e[0])>=0,o=a(t,e[1])<=0;return(r||i)&&(n||o)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case"date":case"linear":for(e=0;e=0&&i.unshift(i.splice(n,1).shift())}});var o={false:{left:0,right:0}};return s.syncOrAsync(i.map(function(e){return function(){if(e){var n=q.getFromId(t,e);r||(r={}),r.axShifts=o,r.overlayingShiftedAx=a;var i=q.drawOne(t,n,r);return n._shiftPusher&&Ft(n,n._fullDepth||0,o,!0),n._r=n.range.slice(),n._rl=s.simpleMap(n._r,n.r2l),i}}}))},q.drawOne=function(t,e,r){var n,i,l,u=(r=r||{}).axShifts||{},p=r.overlayingShiftedAx||[];e.setScale();var d=t._fullLayout,v=e._id,g=v.charAt(0),y=q.counterLetter(v),m=d._plots[e._mainSubplot];if(m){if(e._shiftPusher=e.autoshift||-1!==p.indexOf(e._id)||-1!==p.indexOf(e.overlaying),e._shiftPusher&"free"===e.anchor){var x=e.linewidth/2||0;"inside"===e.ticks&&(x+=e.ticklen),Ft(e,x,u,!0),Ft(e,e.shift||0,u,!1)}!0===r.skipTitle&&void 0!==e._shift||(e._shift=function(t,e){return t.autoshift?e[t.overlaying][t.side]:t.shift||0}(e,u));var b=m[g+"axislayer"],_=e._mainLinePosition,w=_+=e._shift,T=e._mainMirrorPosition,A=e._vals=q.calcTicks(e),k=[e.mirror,w,T].join("_");for(n=0;n0?r.bottom-c:0,f))));var h=0,p=0;if(e._shiftPusher&&(h=Math.max(f,r.height>0?"l"===l?c-r.left:r.right-c:0),e.title.text!==d._dfltTitle[g]&&(p=(e._titleStandoff||0)+(e._titleScoot||0),"l"===l&&(p+=At(e))),e._fullDepth=Math.max(h,p)),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var v=[0,1],m="number"==typeof e._shift?e._shift:0;if("x"===g){if("b"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?c-r.top:0,f),v.reverse()),r.width>0){var x=r.right-(e._offset+e._length);x>0&&(n.xr=1,n.r=x);var b=e._offset-r.left;b>0&&(n.xl=0,n.l=b)}}else if("l"===l?(e._depth=Math.max(r.height>0?c-r.left:0,f),n[l]=e._depth-m):(e._depth=Math.max(r.height>0?r.right-c:0,f),n[l]=e._depth+m,v.reverse()),r.height>0){var _=r.bottom-(e._offset+e._length);_>0&&(n.yb=0,n.b=_);var w=e._offset-r.top;w>0&&(n.yt=1,n.t=w)}n[y]="free"===e.anchor?e.position:e._anchorAxis.domain[v[0]],e.title.text!==d._dfltTitle[g]&&(n[l]+=At(e)+(e.title.standoff||0)),e.mirror&&"free"!==e.anchor&&((i={x:0,y:0,r:0,l:0,t:0,b:0})[u]=e.linewidth,e.mirror&&!0!==e.mirror&&(i[u]+=f),!0===e.mirror||"ticks"===e.mirror?i[y]=e._anchorAxis.domain[v[1]]:"all"!==e.mirror&&"allticks"!==e.mirror||(i[y]=[e._counterDomainMin,e._counterDomainMax][v[1]]))}lt&&(s=o.getComponentMethod("rangeslider","autoMarginOpts")(t,e)),"string"==typeof e.automargin&&(bt(n,e.automargin),bt(i,e.automargin)),a.autoMargin(t,St(e),n),a.autoMargin(t,Et(e),i),a.autoMargin(t,Lt(e),s)}),s.syncOrAsync(ot)}}function ut(t){var r=v+(t||"tick");return M[r]||(M[r]=function(t,e){var r,n,i,a;return t._selections[e].size()?(r=1/0,n=-1/0,i=1/0,a=-1/0,t._selections[e].each(function(){var t=Mt(this),e=h.bBox(t.node().parentNode);r=Math.min(r,e.top),n=Math.max(n,e.bottom),i=Math.min(i,e.left),a=Math.max(a,e.right)})):(r=0,n=0,i=0,a=0),{top:r,bottom:n,left:i,right:a,height:n-r,width:a-i}}(e,r)),M[r]}},q.getTickSigns=function(t,e){var r=t._id.charAt(0),n={x:"top",y:"right"}[r],i=t.side===n?1:-1,a=[-1,1,i,-i];return"inside"!==(e?(t.minor||{}).ticks:t.ticks)==("x"===r)&&(a=a.map(function(t){return-t})),t.side&&a.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),a},q.makeTransTickFn=function(t){return"x"===t._id.charAt(0)?function(e){return l(t._offset+t.l2p(e.x),0)}:function(e){return l(0,t._offset+t.l2p(e.x))}},q.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||"",r=function(t){return-1!==e.indexOf(t)},n=r("top"),i=r("left"),a=r("right"),o=r("bottom"),s=r("inside"),l=o||i||n||a;if(!l&&!s)return[0,0];var u=t.side,c=l?(t.tickwidth||0)/2:0,f=3,h=t.tickfont?t.tickfont.size:12;return(o||n)&&(c+=h*U,f+=(t.linewidth||0)/2),(i||a)&&(c+=(t.linewidth||0)/2,f+=3),s&&"top"===u&&(f-=h*(1-U)),(i||n)&&(c=-c),"bottom"!==u&&"right"!==u||(f=-f),[l?c:0,s?f:0]}(t),r=e[0],n=e[1];return"x"===t._id.charAt(0)?function(e){return l(r+t._offset+t.l2p(wt(e)),n)}:function(e){return l(n,r+t._offset+t.l2p(wt(e)))}},q.makeTickPath=function(t,e,r,n){n||(n={});var i=n.minor;if(i&&!t.minor)return"";var a=void 0!==n.len?n.len:i?t.minor.ticklen:t.ticklen,o=t._id.charAt(0),s=(t.linewidth||1)/2;return"x"===o?"M0,"+(e+s*r)+"v"+a*r:"M"+(e+s*r)+",0h"+a*r},q.makeLabelFns=function(t,e,r){var n=t.ticklabelposition||"",a=function(t){return-1!==n.indexOf(t)},o=a("top"),l=a("left"),u=a("right"),c=a("bottom")||l||o||u,f=a("inside"),h="inside"===n&&"inside"===t.ticks||!f&&"outside"===t.ticks&&"boundaries"!==t.tickson,p=0,d=0,v=h?t.ticklen:0;if(f?v*=-1:c&&(v=0),h&&(p+=v,r)){var g=s.deg2rad(r);p=v*Math.cos(g)+1,d=v*Math.sin(g)}t.showticklabels&&(h||t.showline)&&(p+=.2*t.tickfont.size);var y,m,x,b,_,w={labelStandoff:p+=(t.linewidth||1)/2*(f?-1:1),labelShift:d},T=0,A=t.side,k=t._id.charAt(0),M=t.tickangle;if("x"===k)b=(_=!f&&"bottom"===A||f&&"top"===A)?1:-1,f&&(b*=-1),y=d*b,m=e+p*b,x=_?1:-.2,90===Math.abs(M)&&(f?x+=j:x=-90===M&&"bottom"===A?U:90===M&&"top"===A?j:.5,T=j/2*(M/90)),w.xFn=function(t){return t.dx+y+T*t.fontSize},w.yFn=function(t){return t.dy+m+t.fontSize*x},w.anchorFn=function(t,e){if(c){if(l)return"end";if(u)return"start"}return i(e)&&0!==e&&180!==e?e*b<0!==f?"end":"start":"middle"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:"top"===t.side!==f?-n:0};else if("y"===k){if(b=(_=!f&&"left"===A||f&&"right"===A)?1:-1,f&&(b*=-1),y=p,m=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&"left"===A||90===M&&"right"===A?U:.5),f){var S=i(M)?+M:0;if(0!==S){var E=s.deg2rad(S);T=Math.abs(Math.sin(E))*U*b,x=0}}w.xFn=function(t){return t.dx+e-(y+t.fontSize*x)*b+T*t.fontSize},w.yFn=function(t){return t.dy+m+t.fontSize*j},w.anchorFn=function(t,e){return i(e)&&90===Math.abs(e)?"middle":_?"end":"start"},w.heightFn=function(e,r,n){return"right"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},q.drawTicks=function(t,e,r){r=r||{};var i=e._id+"tick",a=[].concat(e.minor&&e.minor.ticks?r.vals.filter(function(t){return t.minor&&!t.noTick}):[]).concat(e.ticks?r.vals.filter(function(t){return!t.minor&&!t.noTick}):[]),o=r.layer.selectAll("path."+i).data(a,Tt);o.exit().remove(),o.enter().append("path").classed(i,1).classed("ticks",1).classed("crisp",!1!==r.crisp).each(function(t){return f.stroke(n.select(this),t.minor?e.minor.tickcolor:e.tickcolor)}).style("stroke-width",function(r){return h.crispRound(t,r.minor?e.minor.tickwidth:e.tickwidth,1)+"px"}).attr("d",r.path).style("display",null),Rt(e,[R]),o.attr("transform",r.transFn)},q.drawGrid=function(t,e,r){if(r=r||{},"sync"!==e.tickmode){var i=e._id+"grid",a=e.minor&&e.minor.showgrid,o=a?r.vals.filter(function(t){return t.minor}):[],s=e.showgrid?r.vals.filter(function(t){return!t.minor}):[],l=r.counterAxis;if(l&&q.shouldShowZeroLine(t,e,l))for(var u="array"===e.tickmode,c=0;c=0;y--){var m=y?v:g;if(m){var x=m.selectAll("path."+i).data(y?s:o,Tt);x.exit().remove(),x.enter().append("path").classed(i,1).classed("crisp",!1!==r.crisp),x.attr("transform",r.transFn).attr("d",r.path).each(function(t){return f.stroke(n.select(this),t.minor?e.minor.gridcolor:e.gridcolor||"#ddd")}).style("stroke-dasharray",function(t){return h.dashStyle(t.minor?e.minor.griddash:e.griddash,t.minor?e.minor.gridwidth:e.gridwidth)}).style("stroke-width",function(t){return(t.minor?d:e._gw)+"px"}).style("display",null),"function"==typeof r.path&&x.attr("d",r.path)}}Rt(e,[D,z])}},q.drawZeroLine=function(t,e,r){r=r||r;var n=e._id+"zl",i=q.shouldShowZeroLine(t,e,r.counterAxis),a=r.layer.selectAll("path."+n).data(i?[{x:0,id:e._id}]:[]);a.exit().remove(),a.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",!1!==r.crisp).each(function(){r.layer.selectAll("path").sort(function(t,e){return W(t.id,e.id)})}),a.attr("transform",r.transFn).attr("d",r.path).call(f.stroke,e.zerolinecolor||f.defaultLine).style("stroke-width",h.crispRound(t,e.zerolinewidth,e._gw||1)+"px").style("display",null),Rt(e,[I])},q.drawLabels=function(t,e,r){r=r||{};var a=t._fullLayout,o=e._id,c=o.charAt(0),f=r.cls||o+"tick",p=r.vals.filter(function(t){return t.text}),d=r.labelFns,v=r.secondary?0:e.tickangle,g=(e._prevTickAngles||{})[f],y=r.layer.selectAll("g."+f).data(e.showticklabels?p:[],Tt),m=[];function x(t,a){t.each(function(t){var o=n.select(this),s=o.select(".text-math-group"),c=d.anchorFn(t,a),f=r.transFn.call(o.node(),t)+(i(a)&&0!==+a?" rotate("+a+","+d.xFn(t)+","+(d.yFn(t)-t.fontSize/2)+")":""),p=u.lineCount(o),v=V*t.fontSize,g=d.heightFn(t,i(a)?+a:0,(p-1)*v);if(g&&(f+=l(0,g)),s.empty()){var y=o.select("text");y.attr({transform:f,"text-anchor":c}),y.style("opacity",1),e._adjustTickLabelsOverflow&&e._adjustTickLabelsOverflow()}else{var m=h.bBox(s.node()).width*{end:-.5,start:.5}[c];s.attr("transform",f+l(m,0))}})}y.enter().append("g").classed(f,1).append("text").attr("text-anchor","middle").each(function(e){var r=n.select(this),i=t._promises.length;r.call(u.positionText,d.xFn(e),d.yFn(e)).call(h.font,e.font,e.fontSize,e.fontColor).text(e.text).call(u.convertToTspans,t),t._promises[i]?m.push(t._promises.pop().then(function(){x(r,v)})):x(r,v)}),Rt(e,[F]),y.exit().remove(),r.repositionOnUpdate&&y.each(function(t){n.select(this).select("text").call(u.positionText,d.xFn(t),d.yFn(t))}),e._adjustTickLabelsOverflow=function(){var r=e.ticklabeloverflow;if(r&&"allow"!==r){var i=-1!==r.indexOf("hide"),o="x"===e._id.charAt(0),l=0,u=o?t._fullLayout.width:t._fullLayout.height;if(-1!==r.indexOf("domain")){var c=s.simpleMap(e.range,e.r2l);l=e.l2p(c[0])+e._offset,u=e.l2p(c[1])+e._offset}var f=Math.min(l,u),p=Math.max(l,u),d=e.side,v=1/0,g=-1/0;for(var m in y.each(function(t){var r=n.select(this);if(r.select(".text-math-group").empty()){var a=h.bBox(r.node()),s=0;o?(a.right>p||a.leftp||a.top+(e.tickangle?0:t.fontSize/4)e["_visibleLabelMin_"+r._id]?l.style("display","none"):"tick"!==t.K||i||l.style("display",null)})})})})},x(y,g+1?g:v);var b=null;e._selections&&(e._selections[f]=y);var _=[function(){return m.length&&Promise.all(m)}];e.automargin&&a._redrawFromAutoMarginCount&&90===g?(b=90,_.push(function(){x(y,g)})):_.push(function(){if(x(y,v),p.length&&"x"===c&&!i(v)&&("log"!==e.type||"D"!==String(e.dtick).charAt(0))){b=0;var t,n=0,a=[];if(y.each(function(t){n=Math.max(n,t.fontSize);var r=e.l2p(t.x),i=Mt(this),o=h.bBox(i.node());a.push({top:0,bottom:10,height:10,left:r-o.width/2,right:r+o.width/2+2,width:o.width+2})}),"boundaries"!==e.tickson&&!e.showdividers||r.secondary){var o=p.length,l=Math.abs((p[o-1].x-p[0].x)*e._m)/(o-1),u=e.ticklabelposition||"",f=function(t){return-1!==u.indexOf(t)},d=f("top"),g=f("left"),m=f("right"),_=f("bottom")||g||d||m?(e.tickwidth||0)+6:0,w=l<2.5*n||"multicategory"===e.type||"realaxis"===e._name;for(t=0;t1)for(n=1;n=u&&(m.marker.cluster=d.tree),m.marker&&(m.markerSel.positions=m.markerUnsel.positions=m.marker.positions=_),m.line&&_.length>1&&l.extendFlat(m.line,s.linePositions(t,p,_)),m.text&&(l.extendFlat(m.text,{positions:_},s.textPosition(t,p,m.text,m.marker)),l.extendFlat(m.textSel,{positions:_},s.textPosition(t,p,m.text,m.markerSel)),l.extendFlat(m.textUnsel,{positions:_},s.textPosition(t,p,m.text,m.markerUnsel))),m.fill&&!h.fill2d&&(h.fill2d=!0),m.marker&&!h.scatter2d&&(h.scatter2d=!0),m.line&&!h.line2d&&(h.line2d=!0),m.text&&!h.glText&&(h.glText=!0),h.lineOptions.push(m.line),h.fillOptions.push(m.fill),h.markerOptions.push(m.marker),h.markerSelectedOptions.push(m.markerSel),h.markerUnselectedOptions.push(m.markerUnsel),h.textOptions.push(m.text),h.textSelectedOptions.push(m.textSel),h.textUnselectedOptions.push(m.textUnsel),h.selectBatch.push([]),h.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=g,d.theta=y,d.positions=_,d._scene=h,d.index=h.count,h.count++}}),a(t,e,r)}},t.exports.reglPrecompiled={}},27050:function(t,e,r){"use strict";var n=r(5159),i=r(15181).isArrayOrTypedArray,a=r(78945).BADNUM,o=r(46982),s=r(26446),l=r(3115).getAxisGroup,u=r(35628);function c(t,e,r,o,c){if(o.length){var b,_,w,T;switch(function(t,e){var r,a;for(r=0;rf+u||!n(c))}for(var p=0;p0;u&&(o="array");var c=r("categoryorder",o);"array"===c?(r("categoryarray"),r("ticktext")):(delete t.categoryarray,delete t.ticktext),u||"array"!==c||(e.categoryorder="trace")}}t.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,l,r,i)}var p=s(t,e,{name:"dimensions",handleItemDefaults:c}),d=function(t,e,r,o,s){s("line.shape"),s("line.hovertemplate");var l=s("line.color",o.colorway[0]);if(i(t,"line")&&n.isArrayOrTypedArray(l)){if(l.length)return s("line.colorscale"),a(t,e,o,s,{prefix:"line.",cLetter:"c"}),l.length;e.line.color=r}return 1/0}(t,e,r,f,h);o(e,f,h),Array.isArray(p)&&p.length||(e.visible=!1),u(e,p,"values",d),h("hoveron"),h("hovertemplate"),h("arrangement"),h("bundlecolors"),h("sortpaths"),h("counts");var v={family:f.font.family,size:Math.round(f.font.size),color:f.font.color};n.coerceFont(h,"labelfont",v);var g={family:f.font.family,size:Math.round(f.font.size/1.2),color:f.font.color};n.coerceFont(h,"tickfont",g)}},27199:function(t,e,r){"use strict";var n=r(46982),i=r(98379);t.exports=function(t,e,r){var a,o,s=e._inHover,l=i.isGrouped(e),u=i.isReversed(e),c={},f=[],h=!1,p={},d=0,v=0;function g(t,n,a){if(!1!==e.visible&&(!r||t===e._id))if(""!==n&&i.isGrouped(e))-1===f.indexOf(n)?(f.push(n),h=!0,c[n]=[a]):c[n].push(a);else{var o="~~i"+d;f.push(o),c[o]=[a],d++}}for(a=0;aS&&(M=S)}A[a][0]._groupMinRank=M,A[a][0]._preGroupSort=a}var E=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(A.forEach(function(t,e){t[0]._preGroupSort=e}),A.sort(function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort}),a=0;a0)return function(t){if(!((t=String(t)).length>100)){var a=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(a){var o=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*o;case"days":case"day":case"d":return o*i;case"hours":case"hour":case"hrs":case"hr":case"h":return o*n;case"minutes":case"minute":case"mins":case"min":case"m":return o*r;case"seconds":case"second":case"secs":case"sec":case"s":return o*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return}}}}(t);if("number"===l&&!1===isNaN(t))return o.long?a(s=t,i,"day")||a(s,n,"hour")||a(s,r,"minute")||a(s,e,"second")||s+" ms":function(t){return t>=i?Math.round(t/i)+"d":t>=n?Math.round(t/n)+"h":t>=r?Math.round(t/r)+"m":t>=e?Math.round(t/e)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},28209:function(t,e,r){"use strict";var n=r(37565),i=r(92204);t.exports={type:{valType:"enumerated",values:[],dflt:"scatter",editType:"calc+clearAxisTypes",_noTemplating:!0},visible:{valType:"enumerated",values:[!0,!1,"legendonly"],dflt:!0,editType:"calc"},showlegend:{valType:"boolean",dflt:!0,editType:"style"},legend:{valType:"subplotid",dflt:"legend",editType:"style"},legendgroup:{valType:"string",dflt:"",editType:"style"},legendgrouptitle:{text:{valType:"string",dflt:"",editType:"style"},font:n({editType:"style"}),editType:"style"},legendrank:{valType:"number",dflt:1e3,editType:"style"},legendwidth:{valType:"number",min:0,editType:"style"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"style"},name:{valType:"string",editType:"style"},uid:{valType:"string",editType:"plot",anim:!0},ids:{valType:"data_array",editType:"calc",anim:!0},customdata:{valType:"data_array",editType:"calc"},meta:{valType:"any",arrayOk:!0,editType:"plot"},selectedpoints:{valType:"any",editType:"calc"},hoverinfo:{valType:"flaglist",flags:["x","y","z","text","name"],extras:["all","none","skip"],arrayOk:!0,dflt:"all",editType:"none"},hoverlabel:i.hoverlabel,stream:{token:{valType:"string",noBlank:!0,strict:!0,editType:"calc"},maxpoints:{valType:"number",min:0,max:1e4,dflt:500,editType:"calc"},editType:"calc"},transforms:{_isLinkedToArray:"transform",editType:"calc"},uirevision:{valType:"any",editType:"none"}}},28229:function(t,e,r){"use strict";var n=r(15181).strTranslate;function i(t,e){switch(t.type){case"log":return t.p2d(e);case"date":return t.p2r(e,0,t.calendar);default:return t.p2r(e)}}t.exports={p2r:i,r2p:function(t,e){switch(t.type){case"log":return t.d2p(e);case"date":return t.r2p(e,0,t.calendar);default:return t.r2p(e)}},axValue:function(t){var e="y"===t._id.charAt(0)?1:0;return function(r){return i(t,r[e])}},getTransform:function(t){return n(t.xaxis._offset,t.yaxis._offset)}}},28315:function(t,e,r){"use strict";var n=r(15181),i=r(69562);t.exports=function(t,e,r,a){a("opacity");var o=a("bgcolor"),s=a("bordercolor"),l=i.opacity(s);a("borderpad");var u=a("borderwidth"),c=a("showarrow");if(a("text",c?" ":r._dfltTitle.annotation),a("textangle"),n.coerceFont(a,"font",r.font),a("width"),a("align"),a("height")&&a("valign"),c){var f,h,p=a("arrowside");-1!==p.indexOf("end")&&(f=a("arrowhead"),h=a("arrowsize")),-1!==p.indexOf("start")&&(a("startarrowhead",f),a("startarrowsize",h)),a("arrowcolor",l?e.bordercolor:i.defaultLine),a("arrowwidth",2*(l&&u||1)),a("standoff"),a("startstandoff")}var d=a("hovertext"),v=r.hoverlabel||{};if(d){var g=a("hoverlabel.bgcolor",v.bgcolor||(i.opacity(o)?i.rgb(o):i.defaultLine)),y=a("hoverlabel.bordercolor",v.bordercolor||i.contrast(g));n.coerceFont(a,"hoverlabel.font",{family:v.font.family,size:v.font.size,color:v.font.color||y})}a("captureevents",!!d)}},28369:function(t,e,r){"use strict";t.exports=function(t){for(var e,r=[],o=0,s=0,l=0,u=0,c=null,f=null,h=0,p=0,d=0,v=t.length;d4?(o=g[g.length-4],s=g[g.length-3]):(o=h,s=p),r.push(g)}return r};var n=r(639);function i(t,e,r,n){return["C",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return["C",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}},28398:function(t,e,r){"use strict";var n=r(71959);t.exports=Function.prototype.bind||n},28418:function(t,e,r){"use strict";var n=r(15181);t.exports={hasLines:function(t){return t.visible&&t.mode&&-1!==t.mode.indexOf("lines")},hasMarkers:function(t){return t.visible&&(t.mode&&-1!==t.mode.indexOf("markers")||"splom"===t.type)},hasText:function(t){return t.visible&&t.mode&&-1!==t.mode.indexOf("text")},isBubble:function(t){return n.isPlainObject(t.marker)&&n.isArrayOrTypedArray(t.marker.size)}}},28480: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}}},28600:function(t){"use strict";t.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}},28730:function(t){"use strict";t.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},28821:function(t,e,r){t.exports={create:r(52533),clone:r(50040),copy:r(83680),identity:r(72123),transpose:r(25702),invert:r(18049),adjoint:r(53926),determinant:r(58978),multiply:r(59129),translate:r(72115),scale:r(38011),rotate:r(82734),rotateX:r(72804),rotateY:r(78475),rotateZ:r(28846),fromRotation:r(53063),fromRotationTranslation:r(69480),fromScaling:r(3144),fromTranslation:r(4630),fromXRotation:r(32811),fromYRotation:r(52664),fromZRotation:r(99721),fromQuat:r(84538),frustum:r(42227),perspective:r(69027),perspectiveFromFieldOfView:r(5395),ortho:r(92311),lookAt:r(92983),str:r(86762)}},28845:function(t,e,r){"use strict";var n=r(3658);t.exports=function(t,e,r){var i=t.i;return"x"in t||(t.x=e._x[i]),"y"in t||(t.y=e._y[i]),n(t,e,r)}},28846:function(t){t.exports=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],u=e[4],c=e[5],f=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+u*n,t[1]=o*i+c*n,t[2]=s*i+f*n,t[3]=l*i+h*n,t[4]=u*i-a*n,t[5]=c*i-o*n,t[6]=f*i-s*n,t[7]=h*i-l*n,t}},28905:function(t,e,r){"use strict";var n=r(6537),i=r(76252),a=Function.prototype.bind,o=Function.prototype.call,s=Object.keys,l=Object.prototype.propertyIsEnumerable;t.exports=function(t,e){return function(r,u){var c,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(u),c=s(r),h&&c.sort("function"==typeof h?a.call(h,r):void 0),"function"!=typeof t&&(t=c[t]),o.call(t,c,function(t,n){return l.call(r,t)?o.call(u,f,r[t],t,r,n):e})}}},28967:function(t,e,r){"use strict";t.exports={attributes:r(35734),supplyDefaults:r(27585),calc:r(14994),colorbar:{min:"cmin",max:"cmax"},plot:r(52512),moduleType:"trace",name:"mesh3d",basePlotModule:r(41267),categories:["gl3d","showLegend"],meta:{}}},28996:function(t,e,r){"use strict";var n=r(79647);t.exports=o;var i=96;function a(t,e){var r=n(getComputedStyle(t).getPropertyValue(e));return r[0]*o(r[1],t)}function o(t,e){switch(e=e||document.body,t=(t||"px").trim().toLowerCase(),e!==window&&e!==document||(e=document.body),t){case"%":return e.clientHeight/100;case"ch":case"ex":return function(t,e){var r=document.createElement("div");r.style["font-size"]="128"+t,e.appendChild(r);var n=a(r,"font-size")/128;return e.removeChild(r),n}(t,e);case"em":return a(e,"font-size");case"rem":return a(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return i;case"cm":return i/2.54;case"mm":return i/25.4;case"pt":return i/72;case"pc":return i/6}return 1}},29076:function(t,e,r){"use strict";var n=r(15181).isArrayOrTypedArray;t.exports=function(t,e,r){var i;for(n(t)?t.length>e.length&&(t=t.slice(0,e.length)):t=[],i=0;i1e3){n.warn("Too many contours, clipping at 1000",t);break}return l}},29181:function(t,e,r){"use strict";r.d(e,{A:function(){return o}});var n=r(39913),i=r(18901);function a(t,e,r,n){this.x=t,this.z=e,this.o=r,this.e=n,this.v=!1,this.n=this.p=null}function o(t,e,r,o,l){var u,c,f=[],h=[];if(t.forEach(function(t){if(!((e=t.length-1)<=0)){var e,r,o=t[0],s=t[e];if((0,n.A)(o,s)){if(!o[2]&&!s[2]){for(l.lineStart(),u=0;u=0;--u)l.point((d=p[u])[0],d[1]);else o(g.x,g.p.x,-1,l);g=g.p}p=(g=g.o).z,y=!y}while(!g.v);l.lineEnd()}}}function s(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(var a in i){var o=a.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier");n.addStyleRule(o,i[a])}},29278:function(t,e,r){"use strict";var n=r(90778).counter;t.exports={idRegex:{x:n("x","( domain)?"),y:n("y","( domain)?")},attrRegex:n("[xy]axis"),xAxisMatch:n("xaxis"),yAxisMatch:n("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"}}},29332:function(t,e,r){"use strict";var n=r(55581),i=r(15181),a=i.strTranslate,o=i.strScale,s=r(60609).fX,l=r(60432),u=r(16534),c=r(88191),f=r(3071),h=r(10893),p="mapbox",d=e.constants=r(14617);function v(t){return"string"==typeof t&&(-1!==d.styleValuesMapbox.indexOf(t)||0===t.indexOf("mapbox://"))}e.name=p,e.attr="subplot",e.idRoot=p,e.idRegex=e.attrRegex=i.counterRegex(p),e.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}},e.layoutAttributes=r(75958),e.supplyLayoutDefaults=r(82881),e.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots[p];if(n.version!==d.requiredVersion)throw new Error(d.wrongVersionErrorMsg);var o=function(t,e){var r=t._fullLayout;if(""===t._context.mapboxAccessToken)return"";for(var n=[],a=[],o=!1,s=!1,l=0;l1&&i.warn(d.multipleTokensErrorMsg),n[0]):(a.length&&i.log(["Listed mapbox access token(s)",a.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}(t,a);n.accessToken=o;for(var l=0;lw/2){var T=m.split("|").join("
    ");b.text(T).attr("data-unformatted",T).call(f.convertToTspans,t),_=c.bBox(b.node())}b.attr("transform",a(-3,8-_.height)),x.insert("rect",".static-attribution").attr({x:-_.width-6,y:-_.height-3,width:_.width+6,height:_.height+3,fill:"rgba(255, 255, 255, 0.75)"});var A=1;_.width+6>w&&(A=w/(_.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];x.attr("transform",a(k[0],k[1])+o(A))}},e.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots[p],n=0;n0?os)&&(o+=i*a.FA));for(var h,p=o;i>0?p>s:p0&&o.length>i&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=o.length,u=c,console&&console.warn&&console.warn(u)}return t}function c(){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 f(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=c.bind(n);return i.listener=r,n.wrapFn=i,i}function h(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&&(o=e[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[t];if(void 0===l)return!1;if("function"==typeof l)n(l,this,e);else{var u=l.length,c=d(l,u);for(r=0;r=0;a--)if(r[a]===e||r[a].listener===e){o=r[a].listener,i=a;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 h(this,t,!0)},a.prototype.rawListeners=function(t){return h(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):p.call(t,e)},a.prototype.listenerCount=p,a.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},30140:function(t,e,r){"use strict";var n=r(15181),i=r(26446),a=r(46716),o=r(81403),s=r(53812);function l(t,e,r){function a(r,i){return n.coerce(t,e,o,r,i)}var l=a("path"),u="path"!==a("type",l?"path":"rect");u&&delete e.path,a("opacity"),a("line.color"),a("line.width"),a("line.dash");for(var c=["x","y"],f=0;f<2;f++){var h,p,d,v=c[f],g={_fullLayout:r},y=i.coerceRef(t,e,g,v);if((h=i.getFromId(g,y))._selectionIndices.push(e._index),d=s.rangeToShapePosition(h),p=s.shapePositionToRange(h),u){var m=v+"0",x=v+"1",b=t[m],_=t[x];t[m]=p(t[m],!0),t[x]=p(t[x],!0),i.coercePosition(e,g,a,y,m),i.coercePosition(e,g,a,y,x);var w=e[m],T=e[x];void 0!==w&&void 0!==T&&(e[m]=d(w),e[x]=d(T),t[m]=b,t[x]=_)}}u&&n.noneOrAll(t,e,["x0","x1","y0","y1"])}t.exports=function(t,e){a(t,e,{name:"selections",handleItemDefaults:l});for(var r=e.selections,n=0;n0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}t.exports=function(t){return new M(t)},S.plot=function(t,e,r,n){var i=this;if(n)return i.update(t,e,!0);i._geoCalcData=t,i._fullLayout=e;var a=e[this.id],o=[],s=!1;for(var l in w.layerNameToAdjective)if("frame"!==l&&a["show"+l]){s=!0;break}for(var u=!1,c=0;c0&&o._module.calcGeoJSON(a,e)}if(!r){if(this.updateProjection(t,e))return;this.viewInitial&&this.scope===n.scope||this.saveViewInitial(n)}this.scope=n.scope,this.updateBaseLayers(e,n),this.updateDims(e,n),this.updateFx(e,n),d.generalUpdatePerTraceModule(this.graphDiv,this,t,n);var s=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=s.selectAll(".point"),this.dataPoints.text=s.selectAll("text"),this.dataPaths.line=s.selectAll(".js-line");var l=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=l.selectAll("path"),this._render()},S.updateProjection=function(t,e){var r=this.graphDiv,n=e[this.id],l=e._size,c=n.domain,f=n.projection,h=n.lonaxis,p=n.lataxis,d=h._ax,v=p._ax,y=this.projection=function(t){var e=t.projection,r=e.type,n=w.projNames[r];n="geo"+u.titleCase(n);for(var l=(i[n]||s[n])(),c=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,f=["center","rotate","parallels","clipExtent"],h=function(t){return t?l:[]},p=0;pc*Math.PI/180}return!1},l.getPath=function(){return a().projection(l)},l.getBounds=function(t){return l.getPath().bounds(t)},l.precision(w.precision),t._isSatellite&&l.tilt(e.tilt).distance(e.distance),c&&l.clipAngle(c-w.clipPad),l}(n),m=[[l.l+l.w*c.x[0],l.t+l.h*(1-c.y[1])],[l.l+l.w*c.x[1],l.t+l.h*(1-c.y[0])]],x=n.center||{},b=f.rotation||{},_=h.range||[],T=p.range||[];if(n.fitbounds){d._length=m[1][0]-m[0][0],v._length=m[1][1]-m[0][1],d.range=g(r,d),v.range=g(r,v);var A=(d.range[0]+d.range[1])/2,k=(v.range[0]+v.range[1])/2;if(n._isScoped)x={lon:A,lat:k};else if(n._isClipped){x={lon:A,lat:k},b={lon:A,lat:k,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[A-S,A+S],T=[k-L,k+L]}else x={lon:A,lat:k},b={lon:A,lat:b.lat,roll:b.roll}}y.center([x.lon-b.lon,x.lat-b.lat]).rotate([-b.lon,-b.lat,b.roll]).parallels(f.parallels);var C=E(_,T);y.fitExtent(m,C);var P=this.bounds=y.getBounds(C),O=this.fitScale=y.scale(),I=y.translate();if(n.fitbounds){var D=y.getBounds(E(d.range,v.range)),z=Math.min((P[1][0]-P[0][0])/(D[1][0]-D[0][0]),(P[1][1]-P[0][1])/(D[1][1]-D[0][1]));isFinite(z)?y.scale(z*O):u.warn("Something went wrong during"+this.id+"fitbounds computations.")}else y.scale(f.scale*O);var R=this.midPt=[(P[0][0]+P[1][0])/2,(P[0][1]+P[1][1])/2];if(y.translate([I[0]+(R[0]-I[0]),I[1]+(R[1]-I[1])]).clipExtent(P),n._isAlbersUsa){var F=y([x.lon,x.lat]),B=y.translate();y.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var r=this,i=r.topojson,a=r.layers,o=r.basePaths;function s(t){return"lonaxis"===t||"lataxis"===t}function l(t){return Boolean(w.lineLayers[t])}function u(t){return Boolean(w.fillLayers[t])}var c=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter(function(t){return l(t)||u(t)?e["show"+t]:!s(t)||e[t].showgrid}),p=r.framework.selectAll(".layer").data(c,String);p.exit().each(function(t){delete a[t],delete o[t],n.select(this).remove()}),p.enter().append("g").attr("class",function(t){return"layer "+t}).each(function(t){var e=a[t]=n.select(this);"bg"===t?r.bgRect=e.append("rect").style("pointer-events","all"):s(t)?o[t]=e.append("path").style("fill","none"):"backplot"===t?e.append("g").classed("choroplethlayer",!0):"frontplot"===t?e.append("g").classed("scatterlayer",!0):l(t)?o[t]=e.append("path").style("fill","none").style("stroke-miterlimit",2):u(t)&&(o[t]=e.append("path").style("stroke","none"))}),p.order(),p.each(function(r){var n=o[r],a=w.layerNameToAdjective[r];"frame"===r?n.datum(w.sphereSVG):l(r)||u(r)?n.datum(k(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];"lonaxis"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):"lataxis"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:"linear",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};v.setConvert(l,r);var u=v.calcTicks(l);e.isScoped||"lonaxis"!==t||u.pop();for(var c=u.length,f=new Array(c),h=0;h-1&&b(n.event,i,[r.xaxis],[r.yaxis],r.id,c),s.indexOf("event")>-1&&p.click(i,n.event))})}function f(t){return r.projection.invert([t[0]+r.xaxis._offset,t[1]+r.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,r=e._fullLayout,i="clip"+r._uid+t.id;t.clipDef=r._clips.append("clipPath").attr("id",i),t.clipRect=t.clipDef.append("rect"),t.framework=n.select(t.container).append("g").attr("class","geo "+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:"x",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:"y",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},v.setConvert(t.mockAxis,r)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,"projection.scale":n.scale},e=t._isScoped?{"center.lon":r.lon,"center.lat":r.lat}:t._isClipped?{"projection.rotation.lon":i.lon,"projection.rotation.lat":i.lat}:{"center.lon":r.lon,"center.lat":r.lat,"projection.rotation.lon":i.lon},u.extendFlat(this.viewInitial,e)},S.render=function(t){this._hasMarkerAngles&&t?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()},S._render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?c(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?"none":null}for(t in this.basePaths)this.basePaths[t].attr("d",r);for(t in this.dataPaths)this.dataPaths[t].attr("d",function(t){return r(t.geojson)});for(t in this.dataPoints)this.dataPoints[t].attr("display",i).attr("transform",n)}},30392:function(t,e,r){"use strict";var n,i=r(52237),a=r(84879),o=r(90137),s=r(67141),l=r(36434),u=r(78920),c=Function.prototype.bind,f=Object.defineProperty,h=Object.prototype.hasOwnProperty;n=function(t,e,r){var n,i=a(e)&&o(e.value);return delete(n=s(e)).writable,delete n.value,n.get=function(){return!r.overwriteDefinition&&h.call(this,t)?i:(e.value=c.call(i,r.resolveContext?r.resolveContext(this):this),f(this,t,e),this[t])},n},t.exports=function(t){var e=l(arguments[1]);return i(e.resolveContext)&&o(e.resolveContext),u(t,function(t,r){return n(r,t,e)})}},30430:function(t,e){"use strict";e.T={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"},e.k={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}},30677:function(t,e,r){"use strict";var n=t.exports={},i=r(21057).locationmodeToLayer,a=r(98409).N4;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,"-"),"_",t.resolution.toString(),"m"].join("")},n.getTopojsonPath=function(t,e){return t+e+".json"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},30723:function(t,e,r){"use strict";var n=r(78030),i=r(10017),a=n("RegExp.prototype.exec"),o=r(46169);t.exports=function(t){if(!i(t))throw new o("`regex` must be a RegExp");return function(e){return null!==a(t,e)}}},30764:function(t){"use strict";function e(t,e,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)>=0?(a=o,i=o-1):n=o+1}return a}function r(t,e,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)>0?(a=o,i=o-1):n=o+1}return a}function n(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<0?(a=o,n=o+1):i=o-1}return a}function i(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<=0?(a=o,n=o+1):i=o-1}return a}function a(t,e,r,n,i){for(;n<=i;){var a=n+i>>>1,o=t[a],s=void 0!==r?r(o,e):o-e;if(0===s)return a;s<=0?n=a+1:i=a-1}return-1}function o(t,e,r,n,i,a){return"function"==typeof r?a(t,e,r,void 0===n?0:0|n,void 0===i?t.length-1:0|i):a(t,e,void 0,void 0===r?0:0|r,void 0===n?t.length-1:0|n)}t.exports={ge:function(t,r,n,i,a){return o(t,r,n,i,a,e)},gt:function(t,e,n,i,a){return o(t,e,n,i,a,r)},lt:function(t,e,r,i,a){return o(t,e,r,i,a,n)},le:function(t,e,r,n,a){return o(t,e,r,n,a,i)},eq:function(t,e,r,n,i){return o(t,e,r,n,i,a)}}},30792:function(t,e,r){"use strict";var n=r(15181),i=r(68047);t.exports=function(t,e,r){var a=!1;function o(r,a){return n.coerce(t,e,i,r,a)}for(var s=0;s0,'can only buffer a finite number of bytes > 0, got "'+t+'"'),this._parserInit||u(this),i("buffering %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=o}function f(t,e){n(!this._parserCallback,'there is already a "callback" set!'),n(t>0,'can only skip > 0 bytes, got "'+t+'"'),this._parserInit||u(this),i("skipping %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=s}function h(t,e){n(!this._parserCallback,'There is already a "callback" set!'),n(t>0,'can only pass through > 0 bytes, got "'+t+'"'),this._parserInit||u(this),i("passing through %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=l}function p(t,e,r){this._parserInit||u(this),i("write(%o bytes)",t.length),"function"==typeof e&&(r=e),g(this,t,null,r)}function d(t,e,r){this._parserInit||u(this),i("transform(%o bytes)",t.length),"function"!=typeof e&&(e=this._parserOutput),g(this,t,e,r)}function v(t,e,r,n){if(t._parserBytesLeft-=e.length,i("%o bytes left for stream piece",t._parserBytesLeft),t._parserState===o?(t._parserBuffers.push(e),t._parserBuffered+=e.length):t._parserState===l&&r(e),0!==t._parserBytesLeft)return n;var s=t._parserCallback;if(s&&t._parserState===o&&t._parserBuffers.length>1&&(e=Buffer.concat(t._parserBuffers,t._parserBuffered)),t._parserState!==o&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=a,t._parserBuffers.splice(0),s){var u=[];e&&u.push(e),r&&u.push(r);var c=s.length>u.length;c&&u.push(y(n));var f=s.apply(t,u);if(!c||n===f)return n}}var g=y(function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error("got data but not currently parsing anything")):r.length<=e._parserBytesLeft?function(){return v(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return v(e,a,n,function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0})}});function y(t){return function(){for(var e=t.apply(this,arguments);"function"==typeof e;)e=e();return e}}},31095:function(t,e,r){"use strict";t.exports=r(87336)},31122:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=r(37070),o=r(46982),s=r(90720),l=r(95243),u=r(88191),c=r(69562),f=r(3071),h=r(5809),p=r(95755),d=r(5126),v=d.LINE_SPACING,g=d.FROM_TL,y=d.FROM_BR,m=r(27199),x=r(85747),b=r(98379),_=/^legend[0-9]*$/;function w(t,e){var r,s,f=e||{},h=t._fullLayout,d=P(f),v=f._inHover;if(v?(s=f.layer,r="hover"):(s=h._infolayer,r=d),s){var _;if(r+=h._uid,t._legendMouseDownTime||(t._legendMouseDownTime=0),v){if(!f.entries)return;_=m(f.entries,f)}else{for(var w=(t.calcdata||[]).slice(),M=h.shapes,O=0;O1)}var z=h.hiddenlabels||[];if(!(v||h.showlegend&&_.length))return s.selectAll("."+d).remove(),h._topdefs.select("#"+r).remove(),a.autoMargin(t,d);var R=i.ensureSingle(s,"g",d,function(t){v||t.attr("pointer-events","all")}),F=i.ensureSingleById(h._topdefs,"clipPath",r,function(t){t.append("rect")}),B=i.ensureSingle(R,"rect","bg",function(t){t.attr("shape-rendering","crispEdges")});B.call(c.stroke,f.bordercolor).call(c.fill,f.bgcolor).style("stroke-width",f.borderwidth+"px");var N=i.ensureSingle(R,"g","scrollbox"),j=f.title;if(f._titleWidth=0,f._titleHeight=0,j.text){var U=i.ensureSingle(N,"text",d+"titletext");U.attr("text-anchor","start").call(u.font,j.font).text(j.text),E(U,N,t,f,1)}else N.selectAll("."+d+"titletext").remove();var V=i.ensureSingle(R,"rect","scrollbar",function(t){t.attr(p.scrollBarEnterAttrs).call(c.fill,p.scrollBarColor)}),H=N.selectAll("g.groups").data(_);H.enter().append("g").attr("class","groups"),H.exit().remove();var q=H.selectAll("g.traces").data(i.identity);q.enter().append("g").attr("class","traces"),q.exit().remove(),q.style("opacity",function(t){var e=t[0].trace;return o.traceIs(e,"pie-like")?-1!==z.indexOf(t[0].label)?.5:1:"legendonly"===e.visible?.5:1}).each(function(){n.select(this).call(k,t,f)}).call(x,t,f).each(function(){v||n.select(this).call(S,t,d)}),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout,o=P(i);i||(i=a[o]);var s=a._size,l=b.isVertical(i),c=b.isGrouped(i),f="fraction"===i.entrywidthmode,h=i.borderwidth,d=2*h,v=p.itemGap,g=i.itemwidth+2*v,y=2*(h+v),m=C(i),x=i.y<0||0===i.y&&"top"===m,_=i.y>1||1===i.y&&"bottom"===m,w=i.tracegroupgap,A={};i._maxHeight=Math.max(x||_?a.height/2:s.h,30);var k=0;i._width=0,i._height=0;var M=function(t){var e=0,r=0,n=t.title.side;return n&&(-1!==n.indexOf("left")&&(e=t._titleWidth),-1!==n.indexOf("top")&&(r=t._titleHeight)),[e,r]}(i);if(l)r.each(function(t){var e=t[0].height;u.setTranslate(this,h+M[0],h+M[1]+i._height+e/2+v),i._height+=e,i._width=Math.max(i._width,t[0].width)}),k=g+i._width,i._width+=v+g+d,i._height+=y,c&&(e.each(function(t,e){u.setTranslate(this,0,e*i.tracegroupgap)}),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var S=L(i),E=i.x<0||0===i.x&&"right"===S,O=i.x>1||1===i.x&&"left"===S,I=_||x,D=a.width/2;i._maxWidth=Math.max(E?I&&"left"===S?s.l+s.w:D:O?I&&"right"===S?s.r+s.w:D:s.w,2*g);var z=0,R=0;r.each(function(t){var e=T(t,i,g);z=Math.max(z,e),R+=e}),k=null;var F=0;if(c){var B=0,N=0,j=0;e.each(function(){var t=0,e=0;n.select(this).selectAll("g.traces").each(function(r){var n=T(r,i,g),a=r[0].height;u.setTranslate(this,M[0],M[1]+h+v+a/2+e),e+=a,t=Math.max(t,n),A[r[0].trace.legendgroup]=t});var r=t+v;N>0&&r+h+N>i._maxWidth?(F=Math.max(F,N),N=0,j+=B+w,B=e):B=Math.max(B,e),u.setTranslate(this,N,j),N+=r}),i._width=Math.max(F,N)+h,i._height=j+B+y}else{var U=r.size(),V=R+d+(U-1)*v=i._maxWidth&&(F=Math.max(F,Y),q=0,G+=H,i._height+=H,H=0),u.setTranslate(this,M[0]+h+q,M[1]+h+G+e/2+v),Y=q+r+v,q+=n,H=Math.max(H,e)}),V?(i._width=q+d,i._height=H+y):(i._width=Math.max(F,Y)+d,i._height+=H+y)}}i._width=Math.ceil(Math.max(i._width+M[0],i._titleWidth+2*(h+p.titlePad))),i._height=Math.ceil(Math.max(i._height+M[1],i._titleHeight+2*(h+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var W=t._context.edits,Z=W.legendText||W.legendPosition;r.each(function(t){var e=n.select(this).select("."+o+"toggle"),r=t[0].height,a=t[0].trace.legendgroup,s=T(t,i,g);c&&""!==a&&(s=A[a]);var h=Z?g:k||s;l||f||(h+=v/2),u.setRect(e,0,-r/2,h,r)})}(t,H,q,f)},function(){var e,c,m,x,b=h._size,_=f.borderwidth,w="paper"===f.xref,T="paper"===f.yref;if(!v){var k,M;k=w?b.l+b.w*f.x-g[L(f)]*f._width:h.width*f.x-g[L(f)]*f._width,M=T?b.t+b.h*(1-f.y)-g[C(f)]*f._effHeight:h.height*(1-f.y)-g[C(f)]*f._effHeight;var S=function(t,e,r,n){var i=t._fullLayout,o=i[e],s=L(o),l=C(o),u="paper"===o.xref,c="paper"===o.yref;t._fullLayout._reservedMargin[e]={};var f=o.y<.5?"b":"t",h=o.x<.5?"l":"r",p={r:i.width-r,l:r+o._width,b:i.height-n,t:n+o._effHeight};if(u&&c)return a.autoMargin(t,e,{x:o.x,y:o.y,l:o._width*g[s],r:o._width*y[s],b:o._effHeight*y[l],t:o._effHeight*g[l]});u?t._fullLayout._reservedMargin[e][f]=p[f]:c||"v"===o.orientation?t._fullLayout._reservedMargin[e][h]=p[h]:t._fullLayout._reservedMargin[e][f]=p[f]}(t,d,k,M);if(S)return;if(h.margin.autoexpand){var E=k,P=M;k=w?i.constrain(k,0,h.width-f._width):E,M=T?i.constrain(M,0,h.height-f._effHeight):P,k!==E&&i.log("Constrain "+d+".x to make legend fit inside graph"),M!==P&&i.log("Constrain "+d+".y to make legend fit inside graph")}u.setTranslate(R,k,M)}if(V.on(".drag",null),R.on("wheel",null),v||f._height<=f._maxHeight||t._context.staticPlot){var O=f._effHeight;v&&(O=f._height),B.attr({width:f._width-_,height:O-_,x:_/2,y:_/2}),u.setTranslate(N,0,0),F.select("rect").attr({width:f._width-2*_,height:O-2*_,x:_,y:_}),u.setClipUrl(N,r,t),u.setRect(V,0,0,0,0),delete f._scrollY}else{var I,D,z,j=Math.max(p.scrollBarMinHeight,f._effHeight*f._effHeight/f._height),U=f._effHeight-j-2*p.scrollBarMargin,H=f._height-f._effHeight,q=U/H,G=Math.min(f._scrollY||0,H);B.attr({width:f._width-2*_+p.scrollBarWidth+p.scrollBarMargin,height:f._effHeight-_,x:_/2,y:_/2}),F.select("rect").attr({width:f._width-2*_+p.scrollBarWidth+p.scrollBarMargin,height:f._effHeight-2*_,x:_,y:_+G}),u.setClipUrl(N,r,t),Z(G,j,q),R.on("wheel",function(){Z(G=i.constrain(f._scrollY+n.event.deltaY/U*H,0,H),j,q),0!==G&&G!==H&&n.event.preventDefault()});var Y=n.behavior.drag().on("dragstart",function(){var t=n.event.sourceEvent;I="touchstart"===t.type?t.changedTouches[0].clientY:t.clientY,z=G}).on("drag",function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(D="touchmove"===t.type?t.changedTouches[0].clientY:t.clientY,G=function(t,e,r){var n=(r-e)/q+t;return i.constrain(n,0,H)}(z,I,D),Z(G,j,q))});V.call(Y);var W=n.behavior.drag().on("dragstart",function(){var t=n.event.sourceEvent;"touchstart"===t.type&&(I=t.changedTouches[0].clientY,z=G)}).on("drag",function(){var t=n.event.sourceEvent;"touchmove"===t.type&&(D=t.changedTouches[0].clientY,G=function(t,e,r){var n=(e-r)/q+t;return i.constrain(n,0,H)}(z,I,D),Z(G,j,q))});N.call(W)}function Z(e,r,n){f._scrollY=t._fullLayout[d]._scrollY=e,u.setTranslate(N,0,-e),u.setRect(V,f._width,p.scrollBarMargin+e*n,p.scrollBarWidth,r),F.select("rect").attr("y",_+e)}t._context.edits.legendPosition&&(R.classed("cursor-move",!0),l.init({element:R.node(),gd:t,prepFn:function(){var t=u.getTranslate(R);m=t.x,x=t.y},moveFn:function(t,r){var n=m+t,i=x+r;u.setTranslate(R,n,i),e=l.align(n,f._width,b.l,b.l+b.w,f.xanchor),c=l.align(i+f._height,-f._height,b.t+b.h,b.t,f.yanchor)},doneFn:function(){if(void 0!==e&&void 0!==c){var r={};r[d+".x"]=e,r[d+".y"]=c,o.call("_guiRelayout",t,r)}},clickFn:function(e,r){var n=s.selectAll("g.traces").filter(function(){var t=this.getBoundingClientRect();return r.clientX>=t.left&&r.clientX<=t.right&&r.clientY>=t.top&&r.clientY<=t.bottom});n.size()>0&&A(t,R,n,e,r)}}))}],t)}}function T(t,e,r){var n=t[0],i=n.width,a=e.entrywidthmode,o=n.trace.legendwidth||e.entrywidth;return"fraction"===a?e._maxWidth*o:r+(o||i)}function A(t,e,r,n,i){var a=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a._expandedIndex,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};a._group&&(l.group=a._group),o.traceIs(a,"pie-like")&&(l.label=r.datum()[0].label),!1!==s.triggerHandler(t,"plotly_legendclick",l)&&(1===n?e._clickTimeout=setTimeout(function(){t._fullLayout&&h(r,t,n)},t._context.doubleClickDelay):2===n&&(e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==s.triggerHandler(t,"plotly_legenddoubleclick",l)&&h(r,t,n)))}function k(t,e,r){var n,a,s=P(r),l=t.data()[0][0],c=l.trace,h=o.traceIs(c,"pie-like"),d=!r._inHover&&e._context.edits.legendText&&!h,v=r._maxNameLength;l.groupTitle?(n=l.groupTitle.text,a=l.groupTitle.font):(a=r.font,r.entries?n=l.text:(n=h?l.label:c.name,c._meta&&(n=i.templateString(n,c._meta))));var g=i.ensureSingle(t,"text",s+"text");g.attr("text-anchor","start").call(u.font,a).text(d?M(n,v):n);var y=r.itemwidth+2*p.itemGap;f.positionText(g,y,0),d?g.call(f.makeEditable,{gd:e,text:n}).call(E,t,e,r).on("edit",function(n){this.text(M(n,v)).call(E,t,e,r);var a=l.trace._fullInput||{},s={};if(o.hasTransform(a,"groupby")){var u=o.getTransformIndices(a,"groupby"),f=u[u.length-1],h=i.keyedContainer(a,"transforms["+f+"].styles","target","value.name");h.set(l.trace._group,n),s=h.constructUpdate()}else s.name=n;return a._isShape?o.call("_guiRelayout",e,"shapes["+c.index+"].name",s.name):o.call("_guiRestyle",e,s,c.index)}):E(g,t,e,r)}function M(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||"").length;n>0;n--)t+=" ";return t}function S(t,e,r){var a,o=e._context.doubleClickDelay,s=1,l=i.ensureSingle(t,"rect",r+"toggle",function(t){e._context.staticPlot||t.style("cursor","pointer").attr("pointer-events","all"),t.call(c.fill,"rgba(0,0,0,0)")});e._context.staticPlot||(l.on("mousedown",function(){(a=(new Date).getTime())-e._legendMouseDownTimeo&&(s=Math.max(s-1,1)),A(e,i,t,s,n.event)}}))}function E(t,e,r,n,i){n._inHover&&t.attr("data-notex",!0),f.convertToTspans(t,r,function(){!function(t,e,r,n){var i=t.data()[0][0];if(r._inHover||!i||i.trace.showlegend){var a=t.select("g[class*=math-group]"),o=a.node(),s=P(r);r||(r=e._fullLayout[s]);var l,c,h=r.borderwidth,d=(1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font).size*v;if(o){var g=u.bBox(o);l=g.height,c=g.width,1===n?u.setTranslate(a,h,h+.75*l):u.setTranslate(a,0,.25*l)}else{var y="."+s+(1===n?"title":"")+"text",m=t.select(y),x=f.lineCount(m),b=m.node();if(l=d*x,c=b?u.bBox(b).width:0,1===n)"left"===r.title.side&&(c+=2*p.itemGap),f.positionText(m,h+p.titlePad,h+d);else{var _=2*p.itemGap+r.itemwidth;i.groupTitle&&(_=p.itemGap,c-=r.itemwidth),f.positionText(m,_,-d*((x-1)/2-.3))}}1===n?(r._titleWidth=c,r._titleHeight=l):(i.lineHeight=d,i.height=Math.max(l,16)+3,i.width=c)}else t.remove()}(e,r,n,i)})}function L(t){return i.isRightAnchor(t)?"right":i.isCenterAnchor(t)?"center":"left"}function C(t){return i.isBottomAnchor(t)?"bottom":i.isMiddleAnchor(t)?"middle":"top"}function P(t){return t._id||"legend"}t.exports=function(t,e){if(e)w(t,e);else{var r=t._fullLayout,i=r._legends;r._infolayer.selectAll('[class^="legend"]').each(function(){var t=n.select(this),e=t.attr("class").split(" ")[0];e.match(_)&&-1===i.indexOf(e)&&t.remove()});for(var a=0;a.999&&(i=.999);var a,o,s,l=Math.pow(i,2),u=e.vTotal,c=u,f=u*l/(1-l)/u,h=[];for(h.push(S()),o=t.length-1;o>-1;o--)if(!(s=t[o]).hidden){var p=s.v/c;f+=p,h.push(S())}var d=1/0,v=-1/0;for(o=0;o-1;o--)if(!(s=t[o]).hidden){var k=h[A+=1][0],M=h[A][1];s.TL=[-k,M],s.TR=[k,M],s.BL=_,s.BR=T,s.pxmid=w(s.TR,s.BR),_=s.TL,T=s.TR}}function S(){var t,e={x:t=Math.sqrt(f),y:-t};return[e.x,e.y]}}(e),h.each(function(){var h=n.select(this).selectAll("g.slice").data(e);h.enter().append("g").classed("slice",!0),h.exit().remove(),h.each(function(o,s){if(o.hidden)n.select(this).selectAll("path,g").remove();else{o.pointNumber=o.i,o.curveNumber=y.index;var h=d.cx,m=d.cy,x=n.select(this),w=x.selectAll("path.surface").data([o]);w.enter().append("path").classed("surface",!0).style({"pointer-events":r?"none":"all"}),x.call(v,t,e);var T="M"+(h+o.TR[0])+","+(m+o.TR[1])+_(o.TR,o.BR)+_(o.BR,o.BL)+_(o.BL,o.TL)+"Z";w.attr("d",T),b(t,o,d);var A=p.castOption(y.textposition,o.pts),k=x.selectAll("g.slicetext").data(o.text&&"none"!==A?[0]:[]);k.enter().append("g").classed("slicetext",!0),k.exit().remove(),k.each(function(){var r=a.ensureSingle(n.select(this),"text","",function(t){t.attr("data-notex",1)}),p=a.ensureUniformFontSize(t,g(y,o,c.font));r.text(o.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(i.font,p).call(l.convertToTspans,t);var d,v,x,b=i.bBox(r.node()),_=Math.min(o.BL[1],o.BR[1])+m,w=Math.max(o.TL[1],o.TR[1])+m;v=Math.max(o.TL[0],o.BL[0])+h,x=Math.min(o.TR[0],o.BR[0])+h,(d=u(v,x,_,w,b,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"})).fontSize=p.size,f(y.type,d,c),e[s].transform=d,a.setTransormAndDisplay(r,d)})}});var m=n.select(this).selectAll("g.titletext").data(y.title.text?[0]:[]);m.enter().append("g").classed("titletext",!0),m.exit().remove(),m.each(function(){var e=a.ensureSingle(n.select(this),"text","",function(t){t.attr("data-notex",1)}),r=y.title.text;y._meta&&(r=a.templateString(r,y._meta)),e.text(r).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(i.font,y.title.font).call(l.convertToTspans,t);var u=x(d,c._size);e.attr("transform",s(u.x,u.y)+o(Math.min(1,u.scale))+s(u.tx,u.ty))})})})}},31489:function(t,e,r){"use strict";var n=r(98054),i=r(15181),a=["xaxis","yaxis","zaxis"];function o(){this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[18,18,18],this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["Open Sans","Open Sans","Open Sans"],this.labelSize=[20,20,20],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[30,30,30],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[10,10,10],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!0,!0,!0],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._defaultTickPad=this.tickPad.slice(),this._defaultLabelPad=this.labelPad.slice(),this._defaultLineTickLength=this.lineTickLength.slice()}o.prototype.merge=function(t,e){for(var r=this,o=0;o<3;++o){var s=e[a[o]];s.visible?(r.labels[o]=t._meta?i.templateString(s.title.text,t._meta):s.title.text,"font"in s.title&&(s.title.font.color&&(r.labelColor[o]=n(s.title.font.color)),s.title.font.family&&(r.labelFont[o]=s.title.font.family),s.title.font.size&&(r.labelSize[o]=s.title.font.size)),"showline"in s&&(r.lineEnable[o]=s.showline),"linecolor"in s&&(r.lineColor[o]=n(s.linecolor)),"linewidth"in s&&(r.lineWidth[o]=s.linewidth),"showgrid"in s&&(r.gridEnable[o]=s.showgrid),"gridcolor"in s&&(r.gridColor[o]=n(s.gridcolor)),"gridwidth"in s&&(r.gridWidth[o]=s.gridwidth),"log"===s.type?r.zeroEnable[o]=!1:"zeroline"in s&&(r.zeroEnable[o]=s.zeroline),"zerolinecolor"in s&&(r.zeroLineColor[o]=n(s.zerolinecolor)),"zerolinewidth"in s&&(r.zeroLineWidth[o]=s.zerolinewidth),"ticks"in s&&s.ticks?r.lineTickEnable[o]=!0:r.lineTickEnable[o]=!1,"ticklen"in s&&(r.lineTickLength[o]=r._defaultLineTickLength[o]=s.ticklen),"tickcolor"in s&&(r.lineTickColor[o]=n(s.tickcolor)),"tickwidth"in s&&(r.lineTickWidth[o]=s.tickwidth),"tickangle"in s&&(r.tickAngle[o]="auto"===s.tickangle?-3600:Math.PI*-s.tickangle/180),"showticklabels"in s&&(r.tickEnable[o]=s.showticklabels),"tickfont"in s&&(s.tickfont.color&&(r.tickColor[o]=n(s.tickfont.color)),s.tickfont.family&&(r.tickFont[o]=s.tickfont.family),s.tickfont.size&&(r.tickSize[o]=s.tickfont.size)),"mirror"in s?-1!==["ticks","all","allticks"].indexOf(s.mirror)?(r.lineTickMirror[o]=!0,r.lineMirror[o]=!0):!0===s.mirror?(r.lineTickMirror[o]=!1,r.lineMirror[o]=!0):(r.lineTickMirror[o]=!1,r.lineMirror[o]=!1):r.lineMirror[o]=!1,"showbackground"in s&&!1!==s.showbackground?(r.backgroundEnable[o]=!0,r.backgroundColor[o]=n(s.backgroundcolor)):r.backgroundEnable[o]=!1):(r.tickEnable[o]=!1,r.labelEnable[o]=!1,r.lineEnable[o]=!1,r.lineTickEnable[o]=!1,r.gridEnable[o]=!1,r.zeroEnable[o]=!1,r.backgroundEnable[o]=!1)}},t.exports=function(t,e){var r=new o;return r.merge(t,e),r}},31515:function(t,e,r){"use strict";var n=r(77546),i=r(5159);function a(t,e){var r,a=Array.isArray(e);function o(t){return i(t)?+t:null}return-1!==n.COMPARISON_OPS2.indexOf(t)?r=o(a?e[0]:e):-1!==n.INTERVAL_OPS.indexOf(t)?r=a?[o(e[0]),o(e[1])]:[o(e),o(e)]:-1!==n.SET_OPS.indexOf(t)&&(r=a?e.map(o):[o(e)]),r}function o(t){return function(e){e=a(t,e);var r=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return{start:r,end:n,size:n-r}}}function s(t){return function(e){return{start:e=a(t,e),end:1/0,size:1/0}}}t.exports={"[]":o("[]"),"][":o("]["),">":s(">"),"<":s("<"),"=":s("=")}},31576:function(t,e,r){"use strict";var n=r(16534),i=r(93441),a=r(95243),o=r(71467),s=r(44036).makeDragBox,l=r(29278).DRAGGERSIZE;e.initInteractions=function(t){var r=t._fullLayout;if(t._context.staticPlot)n.select(t).selectAll(".drag").remove();else if(r._has("cartesian")||r._has("splom")){Object.keys(r._plots||{}).sort(function(t,e){if((r._plots[t].mainplot&&!0)===(r._plots[e].mainplot&&!0)){var n=t.split("y"),i=e.split("y");return n[0]===i[0]?Number(n[1]||1)-Number(i[1]||1):Number(n[0]||1)-Number(i[0]||1)}return r._plots[t].mainplot?1:-1}).forEach(function(e){var n=r._plots[e],o=n.xaxis,u=n.yaxis;if(!n.mainplot){var c=s(t,n,o._offset,u._offset,o._length,u._length,"ns","ew");c.onmousemove=function(r){t._fullLayout._rehover=function(){t._fullLayout._hoversubplot===e&&t._fullLayout._plots[e]&&i.hover(t,r,e)},i.hover(t,r,e),t._fullLayout._lasthover=c,t._fullLayout._hoversubplot=e},c.onmouseout=function(e){t._dragging||(t._fullLayout._hoversubplot=null,a.unhover(t,e))},t._context.showAxisDragHandles&&(s(t,n,o._offset-l,u._offset-l,l,l,"n","w"),s(t,n,o._offset+o._length,u._offset-l,l,l,"n","e"),s(t,n,o._offset-l,u._offset+u._length,l,l,"s","w"),s(t,n,o._offset+o._length,u._offset+u._length,l,l,"s","e"))}if(t._context.showAxisDragHandles){if(e===o._mainSubplot){var f=o._mainLinePosition;"top"===o.side&&(f-=l),s(t,n,o._offset+.1*o._length,f,.8*o._length,l,"","ew"),s(t,n,o._offset,f,.1*o._length,l,"","w"),s(t,n,o._offset+.9*o._length,f,.1*o._length,l,"","e")}if(e===u._mainSubplot){var h=u._mainLinePosition;"right"!==u.side&&(h-=l),s(t,n,h,u._offset+.1*u._length,l,.8*u._length,"ns",""),s(t,n,h,u._offset+.9*u._length,l,.1*u._length,"s",""),s(t,n,h,u._offset,l,.1*u._length,"n","")}}});var o=r._hoverlayer.node();o.onmousemove=function(e){e.target=t._fullLayout._lasthover,i.hover(t,e,r._hoversubplot)},o.onclick=function(e){e.target=t._fullLayout._lasthover,i.click(t,e)},o.onmousedown=function(e){t._fullLayout._lasthover.onmousedown(e)},e.updateFx(t)}},e.updateFx=function(t){var e=t._fullLayout,r="pan"===e.dragmode?"move":"crosshair";o(e._draggers,r)}},31593:function(t){"use strict";t.exports=function(t){for(var e={},r=[],n=0,i=0;iv-p?p=v-(d-v):d-v=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync("colorscale",o))}},31790:function(t){"use strict";t.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},31808:function(t,e,r){"use strict";var n=r(41365),i=r(79691),a=Object.create(null);t.exports=function(t){return Object.defineProperties(t,{for:n(function(e){return a[e]?a[e]:a[e]=t(String(e))}),keyFor:n(function(t){var e;for(e in i(t),a)if(a[e]===t)return e})})}},31821:function(t,e,r){"use strict";var n=r(15181).isArrayOrTypedArray,i=r(44236),a=r(51257).wrap;t.exports=function(t,e){var r,o;return i.hasColorscale(e,"line")&&n(e.line.color)?(r=e.line.color,o=i.extractOpts(e.line).colorscale,i.calc(t,e,{vals:r,containerStr:"line",cLetter:"c"})):(r=function(t){for(var e=new Array(t),r=0;r0&&(p=t.dxydi([],i-1,o,0,s),y.push(l[0]+p[0]/3),m.push(l[1]+p[1]/3),d=t.dxydi([],i-1,o,1,s),y.push(f[0]-d[0]/3),m.push(f[1]-d[1]/3)),y.push(f[0]),m.push(f[1]),l=f;else for(i=t.a2i(n),u=Math.floor(Math.max(0,Math.min(C-2,i))),c=i-u,x.length=C,x.crossLength=P,x.xy=function(e){return t.evalxy([],i,e)},x.dxy=function(e,r){return t.dxydj([],u,e,c,r)},a=0;a0&&(v=t.dxydj([],u,a-1,c,0),y.push(l[0]+v[0]/3),m.push(l[1]+v[1]/3),g=t.dxydj([],u,a-1,c,1),y.push(f[0]-g[0]/3),m.push(f[1]-g[1]/3)),y.push(f[0]),m.push(f[1]),l=f;return x.axisLetter=e,x.axis=b,x.crossAxis=k,x.value=n,x.constvar=r,x.index=h,x.x=y,x.y=m,x.smoothing=k.smoothing,x}function D(n){var i,a,o,s,l,u=[],c=[],f={};if(f.length=x.length,f.crossLength=A.length,"b"===e)for(o=Math.max(0,Math.min(P-2,n)),l=Math.min(1,Math.max(0,n-o)),f.xy=function(e){return t.evalxy([],e,n)},f.dxy=function(e,r){return t.dxydi([],e,o,r,l)},i=0;ix.length-1||_.push(i(D(o),{color:b.gridcolor,width:b.gridwidth,dash:b.griddash}));for(h=c;hx.length-1||v<0||v>x.length-1))for(g=x[s],y=x[v],a=0;ax[x.length-1]||w.push(i(I(d),{color:b.minorgridcolor,width:b.minorgridwidth,dash:b.minorgriddash}));b.startline&&T.push(i(D(0),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(D(x.length-1),{color:b.endlinecolor,width:b.endlinewidth}))}else{for(l=5e-15,c=(u=[Math.floor((x[x.length-1]-b.tick0)/b.dtick*(1+l)),Math.ceil((x[0]-b.tick0)/b.dtick/(1+l))].sort(function(t,e){return t-e}))[0],f=u[1],h=c;h<=f;h++)p=b.tick0+b.dtick*h,_.push(i(I(p),{color:b.gridcolor,width:b.gridwidth,dash:b.griddash}));for(h=c-1;hx[x.length-1]||w.push(i(I(d),{color:b.minorgridcolor,width:b.minorgridwidth,dash:b.minorgriddash}));b.startline&&T.push(i(I(x[0]),{color:b.startlinecolor,width:b.startlinewidth})),b.endline&&T.push(i(I(x[x.length-1]),{color:b.endlinecolor,width:b.endlinewidth}))}}},33064:function(t,e,r){"use strict";var n=r(5159),i=r(25623),a=r(28209),o=r(19389),s=r(69562),l=r(28730).DESELECTDIM,u=r(23716),c=r(90778).counter,f=r(82797).modHalf,h=r(80740).isArrayOrTypedArray;function p(t,r){var n=e.valObjectMeta[r.valType];if(r.arrayOk&&h(t))return!0;if(n.validateFunction)return n.validateFunction(t,r);var i={},a=i,o={set:function(t){a=t}};return n.coerceFunction(t,o,i,r),a!==i}e.valObjectMeta={data_array:{coerceFunction:function(t,e,r){h(t)?e.set(t):void 0!==r&&e.set(r)}},enumerated:{coerceFunction:function(t,e,r,n){n.coerceNumber&&(t=+t),-1===n.values.indexOf(t)?e.set(r):e.set(t)},validateFunction:function(t,e){e.coerceNumber&&(t=+t);for(var r=e.values,n=0;ni.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if("string"!=typeof t){var i="number"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorlist:{coerceFunction:function(t,e,r){Array.isArray(t)&&t.length&&t.every(function(t){return i(t).isValid()})?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o.get(t,r))}},angle:{coerceFunction:function(t,e,r){"auto"===t?e.set("auto"):n(t)?e.set(f(+t,360)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||c(r);"string"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||"string"==typeof t&&!!c(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(-1===(n.extras||[]).indexOf(t))if("string"==typeof t){for(var i=t.split("+"),a=0;a"),o.hovertemplate=h.hovertemplate,a}function x(t,e){y.push(t._hovertitle+": "+e)}}},33928:function(t){"use strict";t.exports=function(t,e,r){r("newselection.mode"),r("newselection.line.width")&&(r("newselection.line.color"),r("newselection.line.dash")),r("activeselection.fillcolor"),r("activeselection.opacity")}},34008:function(t,e,r){"use strict";var n=r(10194),i=r(32021),a=r(13616),o=r(46329).sorterAsc,s=r(46982);e.containerArrayMatch=r(14665);var l=e.isAddVal=function(t){return"add"===t||n(t)},u=e.isRemoveVal=function(t){return null===t||"remove"===t};e.applyContainerArrayChanges=function(t,e,r,n,c){var f=e.astr,h=s.getComponentMethod(f,"supplyLayoutDefaults"),p=s.getComponentMethod(f,"draw"),d=s.getComponentMethod(f,"drawOne"),v=n.replot||n.recalc||h===i||p===i,g=t.layout,y=t._fullLayout;if(r[""]){Object.keys(r).length>1&&a.warn("Full array edits are incompatible with other edits",f);var m=r[""][""];if(u(m))e.set(null);else{if(!Array.isArray(m))return a.warn("Unrecognized full array edit value",f,m),!0;e.set(m)}return!v&&(h(g,y),p(t),!0)}var x,b,_,w,T,A,k,M,S=Object.keys(r).map(Number).sort(o),E=e.get(),L=E||[],C=c(y,f).get(),P=[],O=-1,I=L.length;for(x=0;xL.length-(k?0:1))a.warn("index out of range",f,_);else if(void 0!==A)T.length>1&&a.warn("Insertion & removal are incompatible with edits to the same index.",f,_),u(A)?P.push(_):k?("add"===A&&(A={}),L.splice(_,0,A),C&&C.splice(_,0,{})):a.warn("Unrecognized full object edit value",f,_,A),-1===O&&(O=_);else for(b=0;b=0;x--)L.splice(P[x],1),C&&C.splice(P[x],1);if(L.length?E||e.set(L):e.set(null),v)return!1;if(h(g,y),d!==i){var D;if(-1===O)D=S;else{for(I=Math.max(L.length,I),D=[],x=0;x=O);x++)D.push(_);for(x=O;x>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);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 l(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 u(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 c(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 p(t){return t&&t.length?this.write(t):""}e.I=a,a.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?(i>0&&(t.lastNeed=i-1),i):--n=0?(i>0&&(t.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):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)},a.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}},34256:function(t,e,r){"use strict";var n=r(15181),i=r(3071).sanitizeHTML,a=r(26654),o=r(14617);function s(t,e){this.subplot=t,this.uid=t.uid+"-"+e,this.index=e,this.idSource="source-"+this.uid,this.idLayer=o.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var l=s.prototype;function u(t){if(!t.visible)return!1;var e=t.source;if(Array.isArray(e)&&e.length>0){for(var r=0;r0}function c(t){var e={},r={};switch(t.type){case"circle":n.extendFlat(r,{"circle-radius":t.circle.radius,"circle-color":t.color,"circle-opacity":t.opacity});break;case"line":n.extendFlat(r,{"line-width":t.line.width,"line-color":t.color,"line-opacity":t.opacity,"line-dasharray":t.line.dash});break;case"fill":n.extendFlat(r,{"fill-color":t.color,"fill-outline-color":t.fill.outlinecolor,"fill-opacity":t.opacity});break;case"symbol":var i=t.symbol,o=a(i.textposition,i.iconsize);n.extendFlat(e,{"icon-image":i.icon+"-15","icon-size":i.iconsize/10,"text-field":i.text,"text-size":i.textfont.size,"text-anchor":o.anchor,"text-offset":o.offset,"symbol-placement":i.placement}),n.extendFlat(r,{"icon-color":t.color,"text-color":i.textfont.color,"text-opacity":t.opacity});break;case"raster":n.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":t.opacity})}return{layout:e,paint:r}}l.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=u(t)},l.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&"image"===this.sourceType&&"image"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},l.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},l.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup["layout-"+this.index]},l.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]},l.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},l.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,u(t)){var r=function(t){var e,r=t.sourcetype,n=t.source,a={type:r};return"geojson"===r?e="data":"vector"===r?e="string"==typeof n?"url":"tiles":"raster"===r?(e="tiles",a.tileSize=256):"image"===r&&(e="url",a.coordinates=t.coordinates),a[e]=n,t.sourceattribution&&(a.attribution=i(t.sourceattribution)),a}(t);e.addSource(this.idSource,r)}},l.findFollowingMapboxLayerId=function(t){if("traces"===t)for(var e=this.subplot.getMapLayers(),r=0;rr?r:t:te?e:t}},34758:function(t,e,r){"use strict";t.exports={attributes:r(88669),supplyDefaults:r(25834),plot:r(65255),calc:r(74289),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:r(29435),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}},34802:function(t,e,r){"use strict";var n=r(28398),i=r(86692),a=r(11878),o=r(58157);t.exports=o||n.call(a,i)},34820:function(t){"use strict";t.exports=r,t.exports.float32=t.exports.float=r,t.exports.fract32=t.exports.fract=function(t,e){if(t.length){if(t instanceof Float32Array)return new Float32Array(t.length);e instanceof Float32Array||(e=r(t));for(var n=0,i=e.length;n"),l.color=function(t,e){var r=t.marker,i=e.mc||r.color,a=e.mlc||r.line.color,o=e.mlw||r.line.width;return n(i)?i:n(a)&&o?a:void 0}(c,h),[l]}}},35331:function(t,e,r){"use strict";var n=r(52237),i={object:!0,function:!0,undefined:!0};t.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},35352:function(t,e,r){var n=r(43482);t.exports=function(t,e,r){function i(t,e){return{id:r?r.segmentId():-1,start:t,end:e,myFill:{above:null,below:null},otherFill:null}}function a(t,e,n){return{id:r?r.segmentId():-1,start:t,end:e,myFill:{above:n.myFill.above,below:n.myFill.below},otherFill:null}}var o=n.create();function s(t,r){o.insertBefore(t,function(n){return i=t.isStart,a=t.pt,o=r,s=n.isStart,l=n.pt,u=n.other.pt,(0!==(c=e.pointsCompare(a,l))?c:e.pointsSame(o,u)?0:i!==s?i?1:-1:e.pointAboveOrOnLine(o,s?l:u,s?u:l)?1:-1)<0;var i,a,o,s,l,u,c})}function l(t,e){var r=function(t,e){var r=n.node({isStart:!0,pt:t.start,seg:t,primary:e,other:null,status:null});return s(r,t.end),r}(t,e);return function(t,e,r){var i=n.node({isStart:!1,pt:e.end,seg:e,primary:r,other:t,status:null});t.other=i,s(i,t.pt)}(r,t,e),r}function u(t,e){var n=a(e,t.seg.end,t.seg);return function(t,e){r&&r.segmentChop(t.seg,e),t.other.remove(),t.seg.end=e,t.other.pt=e,s(t.other,t.pt)}(t,e),l(n,t.primary)}function c(i,a){var s=n.create();function l(t){return s.findTransition(function(r){var n,i,a,o,s,l;return n=t,i=r.ev,a=n.seg.start,o=n.seg.end,s=i.seg.start,l=i.seg.end,(e.pointsCollinear(a,s,l)?e.pointsCollinear(o,s,l)||e.pointAboveOrOnLine(o,s,l)?1:-1:e.pointAboveOrOnLine(a,s,l)?1:-1)>0})}function c(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,l=a.start,c=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,l,c);if(!1===f){if(!e.pointsCollinear(o,s,l))return!1;if(e.pointsSame(o,c)||e.pointsSame(s,l))return!1;var h=e.pointsSame(o,l),p=e.pointsSame(s,c);if(h&&p)return n;var d=!h&&e.pointBetween(o,l,c),v=!p&&e.pointBetween(s,l,c);if(h)return v?u(n,s):u(t,c),n;d&&(p||(v?u(n,s):u(t,c)),u(n,o))}else 0===f.alongA&&(-1===f.alongB?u(t,l):0===f.alongB?u(t,f.pt):1===f.alongB&&u(t,c)),0===f.alongB&&(-1===f.alongA?u(n,o):0===f.alongA?u(n,f.pt):1===f.alongA&&u(n,s));return!1}for(var f=[];!o.isEmpty();){var h=o.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=l(h),d=p.before?p.before.ev:null,v=p.after?p.after.ev:null;function g(){if(d){var t=c(h,d);if(t)return t}return!!v&&c(h,v)}r&&r.tempStatus(h.seg,!!d&&d.seg,!!v&&v.seg);var y,m,x=g();if(x)t?(m=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below)&&(x.seg.myFill.above=!x.seg.myFill.above):x.seg.otherFill=h.seg.myFill,r&&r.segmentUpdate(x.seg),h.other.remove(),h.remove();if(o.getHead()!==h){r&&r.rewind(h.seg);continue}t?(m=null===h.seg.myFill.below||h.seg.myFill.above!==h.seg.myFill.below,h.seg.myFill.below=v?v.seg.myFill.above:i,h.seg.myFill.above=m?!h.seg.myFill.below:h.seg.myFill.below):null===h.seg.otherFill&&(y=v?h.primary===v.primary?v.seg.otherFill.above:v.seg.myFill.above:h.primary?a:i,h.seg.otherFill={above:y,below:y}),r&&r.status(h.seg,!!d&&d.seg,!!v&&v.seg),h.other.status=p.insert(n.node({ev:h}))}else{var b=h.status;if(null===b)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(s.exists(b.prev)&&s.exists(b.next)&&c(b.prev.ev,b.next.ev),r&&r.statusRemove(b.ev.seg),b.remove(),!h.primary){var _=h.seg.myFill;h.seg.myFill=h.seg.otherFill,h.seg.otherFill=_}f.push(h.seg)}o.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var r,n=t[t.length-1],a=0;a=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},36066:function(t){"use strict";t.exports=Math.floor},36434:function(t,e,r){"use strict";var n=r(42964),i=Array.prototype.forEach,a=Object.create;t.exports=function(t){var e=a(null);return i.call(arguments,function(t){n(t)&&function(t,e){var r;for(r in t)e[r]=t[r]}(Object(t),e)}),e}},36557:function(t,e,r){"use strict";var n=r(16534),i=r(46982),a=r(37070),o=r(15181),s=o.strTranslate,l=r(26446),u=r(69562),c=r(88191),f=r(93441),h=r(3071),p=r(71467),d=r(95243),v=r(92444).arrayEditor,g=r(348);function y(t,e){var r=t._fullLayout.annotations[e]||{},n=l.getFromId(t,r.xref),i=l.getFromId(t,r.yref);n&&n.setScale(),i&&i.setScale(),x(t,r,e,!1,n,i)}function m(t,e,r,n,i){var a=i[r],o=i[r+"ref"],s=-1!==r.indexOf("y"),u="domain"===l.getRefType(o),c=s?n.h:n.w;return t?u?a+(s?-e:e)/t._length:t.p2r(t.r2p(a)+e):a+(s?-e:e)/c}function x(t,e,r,a,y,x){var b,_,w=t._fullLayout,T=t._fullLayout._size,A=t._context.edits;a?(b="annotation-"+a,_=a+".annotations"):(b="annotation",_="annotations");var k=v(t.layout,_,e),M=k.modifyBase,S=k.modifyItem,E=k.getUpdateObj;w._infolayer.selectAll("."+b+'[data-index="'+r+'"]').remove();var L="clip"+w._uid+"_ann"+r;if(e._input&&!1!==e.visible){var C={x:{},y:{}},P=+e.textangle||0,O=w._infolayer.append("g").classed(b,!0).attr("data-index",String(r)).style("opacity",e.opacity),I=O.append("g").classed("annotation-text-g",!0),D=A[e.showarrow?"annotationTail":"annotationPosition"],z=e.captureevents||A.annotationText||D,R=I.append("g").style("pointer-events",z?"all":null).call(p,"pointer").on("click",function(){t._dragging=!1,t.emit("plotly_clickannotation",Y(n.event))});e.hovertext&&R.on("mouseover",function(){var r=e.hoverlabel,n=r.font,i=this.getBoundingClientRect(),a=t.getBoundingClientRect();f.loneHover({x0:i.left-a.left,x1:i.right-a.left,y:(i.top+i.bottom)/2-a.top,text:e.hovertext,color:r.bgcolor,borderColor:r.bordercolor,fontFamily:n.family,fontSize:n.size,fontColor:n.color},{container:w._hoverlayer.node(),outerContainer:w._paper.node(),gd:t})}).on("mouseout",function(){f.loneUnhover(w._hoverlayer.node())});var F=e.borderwidth,B=e.borderpad,N=F+B,j=R.append("rect").attr("class","bg").style("stroke-width",F+"px").call(u.stroke,e.bordercolor).call(u.fill,e.bgcolor),U=e.width||e.height,V=w._topclips.selectAll("#"+L).data(U?[0]:[]);V.enter().append("clipPath").classed("annclip",!0).attr("id",L).append("rect"),V.exit().remove();var H=e.font,q=w._meta?o.templateString(e.text,w._meta):e.text,G=R.append("text").classed("annotation-text",!0).text(q);A.annotationText?G.call(h.makeEditable,{delegate:R,gd:t}).call(W).on("edit",function(r){e.text=r,this.call(W),S("text",r),y&&y.autorange&&M(y._name+".autorange",!0),x&&x.autorange&&M(x._name+".autorange",!0),i.call("_guiRelayout",t,E())}):G.call(W)}else n.selectAll("#"+L).remove();function Y(t){var n={index:r,annotation:e._input,fullAnnotation:e,event:t};return a&&(n.subplotId=a),n}function W(r){return r.call(c.font,H).attr({"text-anchor":{left:"start",right:"end"}[e.align]||"middle"}),h.convertToTspans(r,t,Z),r}function Z(){var r=G.selectAll("a");1===r.size()&&r.text()===G.text()&&R.insert("a",":first-child").attr({"xlink:xlink:href":r.attr("xlink:href"),"xlink:xlink:show":r.attr("xlink:show")}).style({cursor:"pointer"}).node().appendChild(j.node());var n=R.select(".annotation-text-math-group"),f=!n.empty(),v=c.bBox((f?n:G).node()),b=v.width,_=v.height,k=e.width||b,z=e.height||_,B=Math.round(k+2*N),H=Math.round(z+2*N);function q(t,e){return"auto"===e&&(e=t<1/3?"left":t>2/3?"right":"center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var W=!1,Z=["x","y"],X=0;X1)&&(nt===rt?((pt=it.r2fraction(e["a"+et]))<0||pt>1)&&(W=!0):W=!0),J=it._offset+it.r2p(e[et]),Q=.5}else{var dt="domain"===ht;"x"===et?($=e[et],J=dt?it._offset+it._length*$:J=T.l+T.w*$):($=1-e[et],J=dt?it._offset+it._length*$:J=T.t+T.h*$),Q=e.showarrow?.5:$}if(e.showarrow){ft.head=J;var vt=e["a"+et];if(tt=ot*q(.5,e.xanchor)-st*q(.5,e.yanchor),nt===rt){var gt=l.getRefType(nt);"domain"===gt?("y"===et&&(vt=1-vt),ft.tail=it._offset+it._length*vt):"paper"===gt?"y"===et?(vt=1-vt,ft.tail=T.t+T.h*vt):ft.tail=T.l+T.w*vt:ft.tail=it._offset+it.r2p(vt),K=tt}else ft.tail=J+vt,K=tt+vt;ft.text=ft.tail+tt;var yt=w["x"===et?"width":"height"];if("paper"===rt&&(ft.head=o.constrain(ft.head,1,yt-1)),"pixel"===nt){var mt=-Math.max(ft.tail-3,ft.text),xt=Math.min(ft.tail+3,ft.text)-yt;mt>0?(ft.tail+=mt,ft.text+=mt):xt>0&&(ft.tail-=xt,ft.text-=xt)}ft.tail+=ct,ft.head+=ct}else K=tt=lt*q(Q,ut),ft.text=J+tt;ft.text+=ct,tt+=ct,K+=ct,e["_"+et+"padplus"]=lt/2+K,e["_"+et+"padminus"]=lt/2-K,e["_"+et+"size"]=lt,e["_"+et+"shift"]=tt}if(W)R.remove();else{var bt=0,_t=0;if("left"!==e.align&&(bt=(k-b)*("center"===e.align?.5:1)),"top"!==e.valign&&(_t=(z-_)*("middle"===e.valign?.5:1)),f)n.select("svg").attr({x:N+bt-1,y:N+_t}).call(c.setClipUrl,U?L:null,t);else{var wt=N+_t-v.top,Tt=N+bt-v.left;G.call(h.positionText,Tt,wt).call(c.setClipUrl,U?L:null,t)}V.select("rect").call(c.setRect,N,N,k,z),j.call(c.setRect,F/2,F/2,B-F,H-F),R.call(c.setTranslate,Math.round(C.x.text-B/2),Math.round(C.y.text-H/2)),I.attr({transform:"rotate("+P+","+C.x.text+","+C.y.text+")"});var At,kt=function(r,n){O.selectAll(".annotation-arrow-g").remove();var l=C.x.head,f=C.y.head,h=C.x.tail+r,p=C.y.tail+n,v=C.x.text+r,b=C.y.text+n,_=o.rotationXYMatrix(P,v,b),w=o.apply2DTransform(_),k=o.apply2DTransform2(_),L=+j.attr("width"),D=+j.attr("height"),z=v-.5*L,F=z+L,B=b-.5*D,N=B+D,U=[[z,B,z,N],[z,N,F,N],[F,N,F,B],[F,B,z,B]].map(k);if(!U.reduce(function(t,e){return t^!!o.segmentsIntersect(l,f,l+1e6,f+1e6,e[0],e[1],e[2],e[3])},!1)){U.forEach(function(t){var e=o.segmentsIntersect(h,p,l,f,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)});var V=e.arrowwidth,H=e.arrowcolor,q=e.arrowside,G=O.append("g").style({opacity:u.opacity(H)}).classed("annotation-arrow-g",!0),Y=G.append("path").attr("d","M"+h+","+p+"L"+l+","+f).style("stroke-width",V+"px").call(u.stroke,u.rgb(H));if(g(Y,q,e),A.annotationPosition&&Y.node().parentNode&&!a){var W=l,Z=f;if(e.standoff){var X=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));W+=e.standoff*(h-l)/X,Z+=e.standoff*(p-f)/X}var J,K,$=G.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(h-W)+","+(p-Z),transform:s(W,Z)}).style("stroke-width",V+6+"px").call(u.stroke,"rgba(0,0,0,0)").call(u.fill,"rgba(0,0,0,0)");d.init({element:$.node(),gd:t,prepFn:function(){var t=c.getTranslate(R);J=t.x,K=t.y,y&&y.autorange&&M(y._name+".autorange",!0),x&&x.autorange&&M(x._name+".autorange",!0)},moveFn:function(t,r){var n=w(J,K),i=n[0]+t,a=n[1]+r;R.call(c.setTranslate,i,a),S("x",m(y,t,"x",T,e)),S("y",m(x,r,"y",T,e)),e.axref===e.xref&&S("ax",m(y,t,"ax",T,e)),e.ayref===e.yref&&S("ay",m(x,r,"ay",T,e)),G.attr("transform",s(t,r)),I.attr({transform:"rotate("+P+","+i+","+a+")"})},doneFn:function(){i.call("_guiRelayout",t,E());var e=document.querySelector(".js-notes-box-panel");e&&e.redraw(e.selectedObj)}})}}};e.showarrow&&kt(0,0),D&&d.init({element:R.node(),gd:t,prepFn:function(){At=I.attr("transform")},moveFn:function(t,r){var n="pointer";if(e.showarrow)e.axref===e.xref?S("ax",m(y,t,"ax",T,e)):S("ax",e.ax+t),e.ayref===e.yref?S("ay",m(x,r,"ay",T.w,e)):S("ay",e.ay+r),kt(t,r);else{if(a)return;var i,o;if(y)i=m(y,t,"x",T,e);else{var l=e._xsize/T.w,u=e.x+(e._xshift-e.xshift)/T.w-l/2;i=d.align(u+t/T.w,l,0,1,e.xanchor)}if(x)o=m(x,r,"y",T,e);else{var c=e._ysize/T.h,f=e.y-(e._yshift+e.yshift)/T.h-c/2;o=d.align(f-r/T.h,c,0,1,e.yanchor)}S("x",i),S("y",o),y&&x||(n=d.getCursor(y?.5:i,x?.5:o,e.xanchor,e.yanchor))}I.attr({transform:s(t,r)+At}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit("plotly_clickannotation",Y(n))},doneFn:function(){p(R),i.call("_guiRelayout",t,E());var e=document.querySelector(".js-notes-box-panel");e&&e.redraw(e.selectedObj)}})}}}t.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(".annotation").remove();for(var r=0;r=e.width-20?(a["text-anchor"]="start",a.x=5):(a["text-anchor"]="end",a.x=e._paper.attr("width")-7),r.attr(a);var o=r.select(".js-link-to-tool"),s=r.select(".js-link-spacer"),l=r.select(".js-sourcelinks");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text("");var r=e.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(t._context.linkText+" "+String.fromCharCode(187));if(t._context.sendData)r.on("click",function(){_.sendDataToCloud(t)});else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?" - ":"")}},_.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit("plotly_beforeexport");var r=n.select(t).append("div").attr("id","hiddenform").style("display","none"),i=r.append("form").attr({action:e+"/external",method:"post",target:"_blank"});return i.append("input").attr({type:"text",name:"data"}).node().value=_.graphJson(t,!1,"keepdata"),i.node().submit(),r.remove(),t.emit("plotly_afterexport"),!1}};var A=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],k=["year","month","dayMonth","dayMonthYear"];function M(t,e){var r=t._context.locale;r||(r="en-US");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&D.length>1){for(s.getComponentMethod("grid","sizeDefaults")(u,l),o=0;o15&&D.length>15&&0===l.shapes.length&&0===l.images.length,_.linkSubplots(h,l,f,n),_.cleanPlot(h,l,f,n);var N=!(!n._has||!n._has("gl2d")),j=!(!l._has||!l._has("gl2d")),U=!(!n._has||!n._has("cartesian"))||N,V=!(!l._has||!l._has("cartesian"))||j;U&&!V?n._bgLayer.remove():V&&!U&&(l._shouldCreateBgLayer=!0),n._zoomlayer&&!t._dragging&&d({_fullLayout:n}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var f=1-2*s;n=Math.round(f*n),i=Math.round(f*i)}}var h=_.layoutAttributes.width.min,p=_.layoutAttributes.height.min;n1,v=!e.height&&Math.abs(r.height-i)>1;(v||d)&&(d&&(r.width=n),v&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),_.sanitizeMargins(r)},_.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,u=e._basePlotModules,f=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var h in u.length||u.push(f),e._has("cartesian")&&(s.getComponentMethod("grid","contentDefaults")(t,e),f.finalizeSubplots(t,e)),e._subplots)e._subplots[h].sort(c.subplotSort);for(a=0;a1&&(r.l/=y,r.r/=y)}if(p){var m=(r.t+r.b)/p;m>1&&(r.t/=m,r.b/=m)}var x=void 0!==r.xl?r.xl:r.x,b=void 0!==r.xr?r.xr:r.x,w=void 0!==r.yt?r.yt:r.y,T=void 0!==r.yb?r.yb:r.y;d[e]={l:{val:x,size:r.l+g},r:{val:b,size:r.r+g},b:{val:T,size:r.b+g},t:{val:w,size:r.t+g}},v[e]=1}else delete d[e],delete v[e];if(!n._replotting)return _.doAutoMargin(t)}},_.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),P(e);var i=e._size,a=e.margin,l={t:0,b:0,l:0,r:0},u=c.extendFlat({},i),f=a.l,h=a.r,d=a.t,v=a.b,g=e._pushmargin,y=e._pushmarginIds,m=e.minreducedwidth,x=e.minreducedheight;if(!1!==a.autoexpand){for(var b in g)y[b]||delete g[b];var w=t._fullLayout._reservedMargin;for(var T in w)for(var A in w[T]){var k=w[T][A];l[A]=Math.max(l[A],k)}for(var M in g.base={l:{val:0,size:f},r:{val:1,size:h},t:{val:1,size:d},b:{val:0,size:v}},l){var S=0;for(var E in g)"base"!==E&&o(g[E][M].size)&&(S=g[E][M].size>S?g[E][M].size:S);var L=Math.max(0,a[M]-S);l[M]=Math.max(0,l[M]-L)}for(var C in g){var O=g[C].l||{},I=g[C].b||{},D=O.val,z=O.size,R=I.val,F=I.size,B=r-l.r-l.l,N=n-l.t-l.b;for(var j in g){if(o(z)&&g[j].r){var U=g[j].r.val,V=g[j].r.size;if(U>D){var H=(z*U+(V-B)*D)/(U-D),q=(V*(1-D)+(z-B)*(1-U))/(U-D);H+q>f+h&&(f=H,h=q)}}if(o(F)&&g[j].t){var G=g[j].t.val,Y=g[j].t.size;if(G>R){var W=(F*G+(Y-N)*R)/(G-R),Z=(Y*(1-R)+(F-N)*(1-G))/(G-R);W+Z>v+d&&(v=W,d=Z)}}}}}var X=c.constrain(r-a.l-a.r,2,m),J=c.constrain(n-a.t-a.b,2,x),K=Math.max(0,r-X),$=Math.max(0,n-J);if(K){var Q=(f+h)/K;Q>1&&(f/=Q,h/=Q)}if($){var tt=(v+d)/$;tt>1&&(v/=tt,d/=tt)}if(i.l=Math.round(f)+l.l,i.r=Math.round(h)+l.r,i.t=Math.round(d)+l.t,i.b=Math.round(v)+l.b,i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&(_.didMarginChange(u,i)||function(t){if("_redrawFromAutoMarginCount"in t._fullLayout)return!1;var e=p.list(t,"",!0);for(var r in e)if(e[r].autoshift||e[r].shift)return!0;return!1}(t))){"_redrawFromAutoMarginCount"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var et=3*(1+Object.keys(y).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&t._transitionData._interruptCallbacks.push(function(){return s.call("redraw",t)}),t._transitionData._interruptCallbacks.push(function(){t.emit("plotly_transitioninterrupted",[])});var a=0,o=0;function l(){return a++,function(){var e;o++,n||o!==a||(e=i,t._transitionData&&(function(t){if(t)for(;t.length;)t.shift()}(t._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return s.call("redraw",t)}).then(function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit("plotly_transitioned",[])}).then(e)))}}r.runFn(l),setTimeout(l())})}],a=c.syncOrAsync(i,t);return a&&a.then||(a=Promise.resolve()),a.then(function(){return t})}_.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},_.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&_.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l=(t._transitionData||{})._frames;function u(t,e){if("function"==typeof t)return e?"_function_":null;if(c.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach(function(a){if(-1===["_","["].indexOf(a.charAt(0)))if("function"!=typeof t[a]){if("keepdata"===r){if("src"===a.substr(a.length-3))return}else if("keepstream"===r){if("string"==typeof(n=t[a+"src"])&&n.indexOf(":")>0&&!c.isPlainObject(t.stream))return}else if("keepall"!==r&&"string"==typeof(n=t[a+"src"])&&n.indexOf(":")>0)return;i[a]=u(t[a],e)}else e&&(i[a]="_function")}),i}return Array.isArray(t)?t.map(function(t){return u(t,e)}):c.isTypedArray(t)?c.simpleMap(t,c.identity):c.isJSDate(t)?c.ms2DateTimeLocal(+t):t}var f={data:(o||[]).map(function(t){var r=u(t);return e&&delete r.fit,r})};if(!e&&(f.layout=u(s),i)){var h=s._size;f.layout.computed={margin:{b:h.b,l:h.l,r:h.r,t:h.t}}}return l&&(f.frames=u(l)),a&&(f.config=u(t._context,!0)),"object"===n?f:JSON.stringify(f)},_.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}Array.isArray(o)&&o[0]||(o=[{x:h,y:h}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(z(o,u,f),i=0;i1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[u]=255*a;return i}},n.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}},37087:function(t,e,r){"use strict";var n=r(97456),i=r(54324),a=r(94316),o=r(99803),s=r(87486),l=r(2362),u=r(19723),c=r(24418).isSize;t.exports=h;var f=h.cache={};function h(t){if("string"!=typeof t)throw new Error("Font argument must be a string.");if(f[t])return f[t];if(""===t)throw new Error("Cannot parse an empty string.");if(-1!==a.indexOf(t))return f[t]={system:t};for(var e,r={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},h=u(t,/\s+/);e=h.shift();){if(-1!==i.indexOf(e))return["style","variant","weight","stretch"].forEach(function(t){r[t]=e}),f[t]=r;if(-1===s.indexOf(e))if("normal"!==e&&"small-caps"!==e)if(-1===l.indexOf(e)){if(-1===o.indexOf(e)){if(c(e)){var d=u(e,"/");if(r.size=d[0],null!=d[1]?r.lineHeight=p(d[1]):"/"===h[0]&&(h.shift(),r.lineHeight=p(h.shift())),!h.length)throw new Error("Missing required font-family.");return r.family=u(h.join(" "),/\s*,\s*/).map(n),f[t]=r}throw new Error("Unknown or unsupported font token: "+e)}r.weight=e}else r.stretch=e;else r.variant=e;else r.style=e}throw new Error("Missing required font-size.")}function p(t){var e=parseFloat(t);return e.toString()===t?e:t}},37101:function(t,e,r){"use strict";function n(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function i(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function a(){}r.d(e,{GW:function(){return $},Dj:function(){return q}});var o=.7,s=1/o,l="\\s*([+-]?\\d+)\\s*",u="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",c="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",f=/^#([0-9a-f]{3,8})$/,h=new RegExp("^rgb\\(".concat(l,",").concat(l,",").concat(l,"\\)$")),p=new RegExp("^rgb\\(".concat(c,",").concat(c,",").concat(c,"\\)$")),d=new RegExp("^rgba\\(".concat(l,",").concat(l,",").concat(l,",").concat(u,"\\)$")),v=new RegExp("^rgba\\(".concat(c,",").concat(c,",").concat(c,",").concat(u,"\\)$")),g=new RegExp("^hsl\\(".concat(u,",").concat(c,",").concat(c,"\\)$")),y=new RegExp("^hsla\\(".concat(u,",").concat(c,",").concat(c,",").concat(u,"\\)$")),m={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function x(){return this.rgb().formatHex()}function b(){return this.rgb().formatRgb()}function _(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=f.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?w(e):3===r?new k(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?T(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?T(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=h.exec(t))?new k(e[1],e[2],e[3],1):(e=p.exec(t))?new k(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=d.exec(t))?T(e[1],e[2],e[3],e[4]):(e=v.exec(t))?T(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=g.exec(t))?P(e[1],e[2]/100,e[3]/100,1):(e=y.exec(t))?P(e[1],e[2]/100,e[3]/100,e[4]):m.hasOwnProperty(t)?w(m[t]):"transparent"===t?new k(NaN,NaN,NaN,0):null}function w(t){return new k(t>>16&255,t>>8&255,255&t,1)}function T(t,e,r,n){return n<=0&&(t=e=r=NaN),new k(t,e,r,n)}function A(t,e,r,n){return 1===arguments.length?((i=t)instanceof a||(i=_(i)),i?new k((i=i.rgb()).r,i.g,i.b,i.opacity):new k):new k(t,e,r,null==n?1:n);var i}function k(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function M(){return"#".concat(C(this.r)).concat(C(this.g)).concat(C(this.b))}function S(){var t=E(this.opacity);return"".concat(1===t?"rgb(":"rgba(").concat(L(this.r),", ").concat(L(this.g),", ").concat(L(this.b)).concat(1===t?")":", ".concat(t,")"))}function E(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function L(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function C(t){return((t=L(t))<16?"0":"")+t.toString(16)}function P(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new I(t,e,r,n)}function O(t){if(t instanceof I)return new I(t.h,t.s,t.l,t.opacity);if(t instanceof a||(t=_(t)),!t)return new I;if(t instanceof I)return t;var e=(t=t.rgb()).r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),o=Math.max(e,r,n),s=NaN,l=o-i,u=(o+i)/2;return l?(s=e===o?(r-n)/l+6*(r0&&u<1?0:s,new I(s,l,u,t.opacity)}function I(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function D(t){return(t=(t||0)%360)<0?t+360:t}function z(t){return Math.max(0,Math.min(1,t||0))}function R(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}function F(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}n(a,_,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:x,formatHex:x,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return O(this).formatHsl()},formatRgb:b,toString:b}),n(k,A,i(a,{brighter:function(t){return t=null==t?s:Math.pow(s,t),new k(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new k(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},clamp:function(){return new k(L(this.r),L(this.g),L(this.b),E(this.opacity))},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:M,formatHex:M,formatHex8:function(){return"#".concat(C(this.r)).concat(C(this.g)).concat(C(this.b)).concat(C(255*(isNaN(this.opacity)?1:this.opacity)))},formatRgb:S,toString:S})),n(I,function(t,e,r,n){return 1===arguments.length?O(t):new I(t,e,r,null==n?1:n)},i(a,{brighter:function(t){return t=null==t?s:Math.pow(s,t),new I(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new I(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new k(R(t>=240?t-240:t+120,i,n),R(t,i,n),R(t<120?t+240:t-120,i,n),this.opacity)},clamp:function(){return new I(D(this.h),z(this.s),z(this.l),E(this.opacity))},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=E(this.opacity);return"".concat(1===t?"hsl(":"hsla(").concat(D(this.h),", ").concat(100*z(this.s),"%, ").concat(100*z(this.l),"%").concat(1===t?")":", ".concat(t,")"))}}));var B=function(t){return function(){return t}};function N(t,e){var r=e-t;return r?function(t,e){return function(r){return t+r*e}}(t,r):B(isNaN(t)?e:t)}var j=function t(e){var r=function(t){return 1===(t=+t)?N:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):B(isNaN(e)?r:e)}}(e);function n(t,e){var n=r((t=A(t)).r,(e=A(e)).r),i=r(t.g,e.g),a=r(t.b,e.b),o=N(t.opacity,e.opacity);return function(e){return t.r=n(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return n.gamma=t,n}(1);function U(t){return function(e){var r,n,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(r=0;r=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],o=n>0?t[n-1]:2*i-a,s=na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:q(r,n)})),a=Z.lastIndex;return a"),color:_(o,"bgcolor")||l.addOpacity(v.color,1),borderColor:_(o,"bordercolor"),fontFamily:_(o,"font.family"),fontSize:_(o,"font.size"),fontColor:_(o,"font.color"),nameLength:_(o,"namelength"),textAlign:_(o,"align"),idealAlign:n.event.x"),color:_(o,"bgcolor")||i.tinyColorHue,borderColor:_(o,"bordercolor"),fontFamily:_(o,"font.family"),fontSize:_(o,"font.size"),fontColor:_(o,"font.color"),nameLength:_(o,"namelength"),textAlign:_(o,"align"),idealAlign:"left",hovertemplate:o.hovertemplate,hovertemplateLabels:m,eventData:[i.node]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:t});p(w,.85),d(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(n.select(e).call(m,i,a),"skip"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit("plotly_unhover",{event:n.event,points:[i.node]})),s.loneUnhover(r._hoverlayer.node()))},select:function(e,r,i){var a=r.node;a.originalEvent=n.event,t._hoverdata=[a],n.select(e).call(m,r,i),s.click(t,{target:!0})}}})}},37629:function(t,e,r){"use strict";var n=r(82797),i=n.mod,a=n.modHalf,o=Math.PI,s=2*o;function l(t){return Math.abs(t[1]-t[0])>s-1e-14}function u(t,e){return a(e-t,s)}function c(t,e){if(l(e))return!0;var r,n;e[0](n=i(n,s))&&(n+=s);var a=i(t,s),o=a+s;return a>=r&&a<=n||o>=r&&o<=n}function f(t,e,r,n,i,a,u){i=i||0,a=a||0;var c,f,h,p,d,v=l([r,n]);function g(t,e){return[t*Math.cos(e)+i,a-t*Math.sin(e)]}v?(c=0,f=o,h=s):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return f(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return f(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return f(t,e,r,n,i,a,1)}}},37704:function(t,e,r){"use strict";var n=r(15181),i=r(6680),a=r(28418),o=r(52948),s=r(4868),l=r(68478),u=r(54563),c=r(46190),f=r(77423);t.exports=function(t,e,r,h){function p(r,i){return n.coerce(t,e,f,r,i)}var d,v=p("a"),g=p("b"),y=p("c");if(v?(d=v.length,g?(d=Math.min(d,g.length),y&&(d=Math.min(d,y.length))):d=y?Math.min(d,y.length):0):g&&y&&(d=Math.min(g.length,y.length)),d){e._length=d,p("sum"),p("text"),p("hovertext"),"fills"!==e.hoveron&&p("hovertemplate"),p("mode",d1&&(h.variants=f.variants),f.orientation&&(h.orientation=f.orientation),f.exif_location&&f.exif_location.offset+f.exif_location.length<=t.length){var p=a(t,f.exif_location.offset),d=t.slice(f.exif_location.offset+p+4,f.exif_location.offset+f.exif_location.length),v=s.get_orientation(d);v>0&&(h.orientation=v)}return h}}}}}}},38188:function(t,e,r){"use strict";r.d(e,{Tj:function(){return o},$I:function(){return s}});var n="$";function i(){}function a(t,e){var r=new i;if(t instanceof i)t.each(function(t,e){r.set(e,t)});else if(Array.isArray(t)){var n,a=-1,o=t.length;if(null==e)for(;++a=n.length)return null!=t&&r.sort(t),null!=e?e(r):r;for(var u,c,f,h=-1,p=r.length,d=n[i++],v=o(),g=s();++hn.length)return t;var a,o=i[r-1];return null!=e&&r>=n.length?a=t.entries():(a=[],t.each(function(t,e){a.push({key:e,values:s(t,r)})})),null!=o?a.sort(function(t,e){return o(t.key,e.key)}):a}return r={object:function(t){return a(t,0,l,u)},map:function(t){return a(t,0,c,f)},entries:function(t){return s(a(t,0,c,f),0)},key:function(t){return n.push(t),r},sortKeys:function(t){return i[n.length-1]=t,r},sortValues:function(e){return t=e,r},rollup:function(t){return e=t,r}}}function l(){return{}}function u(t,e,r){t[e]=r}function c(){return o()}function f(t,e,r){t.set(e,r)}function h(){}var p=o.prototype;h.prototype=function(t,e){var r=new h;if(t instanceof h)t.each(function(t){r.add(t)});else if(t){var n=-1,i=t.length;if(null==e)for(;++n0){for(var n=[],i=0;i80*n){a=s=t[0],o=l=t[1];for(var x=n;xs&&(s=f),h>l&&(l=h);d=0!==(d=Math.max(s-a,l-o))?32767/d:0}return i(y,m,n,a,o,d,0),m}function r(t,e,r,n,i){var a,o;if(i===M(t,e,r,n)>0)for(a=e;a=e;a-=n)o=T(a,t[a],t[a+1],o);return o&&y(o,o.next)&&(A(o),o=o.next),o}function n(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!y(n,n.next)&&0!==g(n.prev,n,n.next))n=n.next;else{if(A(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function i(t,e,r,u,c,f,p){if(t){!p&&f&&function(t,e,r,n){var i=t;do{0===i.z&&(i.z=h(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,u=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,u*=2}while(o>1)}(i)}(t,u,c,f);for(var d,v,g=t;t.prev!==t.next;)if(d=t.prev,v=t.next,f?o(t,u,c,f):a(t))e.push(d.i/r|0),e.push(t.i/r|0),e.push(v.i/r|0),A(t),t=v.next,g=v.next;else if((t=v)===g){p?1===p?i(t=s(n(t),e,r),e,r,u,c,f,2):2===p&&l(t,e,r,u,c,f):i(n(t),e,r,u,c,f,1);break}}}function a(t){var e=t.prev,r=t,n=t.next;if(g(e,r,n)>=0)return!1;for(var i=e.x,a=r.x,o=n.x,s=e.y,l=r.y,u=n.y,c=ia?i>o?i:o:a>o?a:o,p=s>l?s>u?s:u:l>u?l:u,v=n.next;v!==e;){if(v.x>=c&&v.x<=h&&v.y>=f&&v.y<=p&&d(i,s,a,l,o,u,v.x,v.y)&&g(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function o(t,e,r,n){var i=t.prev,a=t,o=t.next;if(g(i,a,o)>=0)return!1;for(var s=i.x,l=a.x,u=o.x,c=i.y,f=a.y,p=o.y,v=sl?s>u?s:u:l>u?l:u,x=c>f?c>p?c:p:f>p?f:p,b=h(v,y,e,r,n),_=h(m,x,e,r,n),w=t.prevZ,T=t.nextZ;w&&w.z>=b&&T&&T.z<=_;){if(w.x>=v&&w.x<=m&&w.y>=y&&w.y<=x&&w!==i&&w!==o&&d(s,c,l,f,u,p,w.x,w.y)&&g(w.prev,w,w.next)>=0)return!1;if(w=w.prevZ,T.x>=v&&T.x<=m&&T.y>=y&&T.y<=x&&T!==i&&T!==o&&d(s,c,l,f,u,p,T.x,T.y)&&g(T.prev,T,T.next)>=0)return!1;T=T.nextZ}for(;w&&w.z>=b;){if(w.x>=v&&w.x<=m&&w.y>=y&&w.y<=x&&w!==i&&w!==o&&d(s,c,l,f,u,p,w.x,w.y)&&g(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;T&&T.z<=_;){if(T.x>=v&&T.x<=m&&T.y>=y&&T.y<=x&&T!==i&&T!==o&&d(s,c,l,f,u,p,T.x,T.y)&&g(T.prev,T,T.next)>=0)return!1;T=T.nextZ}return!0}function s(t,e,r){var i=t;do{var a=i.prev,o=i.next.next;!y(a,o)&&m(a,i,i.next,o)&&_(a,o)&&_(o,a)&&(e.push(a.i/r|0),e.push(i.i/r|0),e.push(o.i/r|0),A(i),A(i.next),i=t=o),i=i.next}while(i!==t);return n(i)}function l(t,e,r,a,o,s){var l=t;do{for(var u=l.next.next;u!==l.prev;){if(l.i!==u.i&&v(l,u)){var c=w(l,u);return l=n(l,l.next),c=n(c,c.next),i(l,e,r,a,o,s,0),void i(c,e,r,a,o,s,0)}u=u.next}l=l.next}while(l!==t)}function u(t,e){return t.x-e.x}function c(t,e){var r=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o&&(o=s,r=n.x=n.x&&n.x>=c&&i!==n.x&&d(ar.x||n.x===r.x&&f(r,n)))&&(r=n,p=l)),n=n.next}while(n!==u);return r}(t,e);if(!r)return e;var i=w(r,t);return n(i,i.next),n(r,r.next)}function f(t,e){return g(t.prev,t,e.prev)<0&&g(e.next,t,t.next)<0}function h(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function p(t){var e=t,r=t;do{(e.x=(t-o)*(a-s)&&(t-o)*(n-s)>=(r-o)*(e-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function v(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&m(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(_(t,e)&&_(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(g(t.prev,t,e.prev)||g(t,e.prev,e))||y(t,e)&&g(t.prev,t,t.next)>0&&g(e.prev,e,e.next)>0)}function g(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function y(t,e){return t.x===e.x&&t.y===e.y}function m(t,e,r,n){var i=b(g(t,e,r)),a=b(g(t,e,n)),o=b(g(r,n,t)),s=b(g(r,n,e));return i!==a&&o!==s||!(0!==i||!x(t,r,e))||!(0!==a||!x(t,n,e))||!(0!==o||!x(r,t,n))||!(0!==s||!x(r,e,n))}function x(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function b(t){return t>0?1:t<0?-1:0}function _(t,e){return g(t.prev,t,t.next)<0?g(t,e,t.next)>=0&&g(t,t.prev,e)>=0:g(t,e,t.prev)<0||g(t,t.next,e)<0}function w(t,e){var r=new k(t.i,t.x,t.y),n=new k(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function T(t,e,r,n){var i=new k(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function A(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function k(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function M(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}},38793:function(t,e,r){"use strict";var n=r(93441),i=r(15181),a=r(26446),o=r(44236).extractOpts;t.exports=function(t,e,r,s,l){l||(l={});var u,c,f,h,p=l.isContour,d=t.cd[0],v=d.trace,g=t.xa,y=t.ya,m=d.x,x=d.y,b=d.z,_=d.xCenter,w=d.yCenter,T=d.zmask,A=v.zhoverformat,k=m,M=x;if(!1!==t.index){try{f=Math.round(t.index[1]),h=Math.round(t.index[0])}catch(e){return void i.error("Error hovering on heatmap, pointNumber must be [row,col], found:",t.index)}if(f<0||f>=b[0].length||h<0||h>b.length)return}else{if(n.inbox(e-m[0],e-m[m.length-1],0)>0||n.inbox(r-x[0],r-x[x.length-1],0)>0)return;if(p){var S;for(k=[2*m[0]-m[1]],S=1;S")}}t.exports={hoverPoints:function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,u=s.cd[s.index],c=s.trace;if(l.isPtInside(u))return s.xLabelVal=void 0,s.yLabelVal=void 0,i(u,c,l,s),s.hovertemplate=c.hovertemplate,o}},makeHoverPointText:i}},39452:function(t,e,r){var n=r(9915),i=r(18610);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar;var o=n.instance("gregorian");i(a.prototype,{name:"Nanakshahi",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[""].invalidYear);return o.leapYear(e.year()+(e.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidMonth);(t=i.year())<0&&t++;for(var a=i.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),n.calendars.nanakshahi=a},39555:function(t,e,r){var n=r(49149);t.exports=function(t,e,r){if(!t)throw new TypeError("must specify data as first parameter");if(r=0|+(r||0),Array.isArray(t)&&t[0]&&"number"==typeof t[0][0]){var i,a,o,s,l=t[0].length,u=t.length*l;e&&"string"!=typeof e||(e=new(n(e||"float32"))(u+r));var c=e.length-r;if(u!==c)throw new Error("source length "+u+" ("+l+"x"+t.length+") does not match destination length "+c);for(i=0,o=r;ir.deltaY?1.1:1/1.1,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}},!!u&&{passive:!1}),t.glplot.canvas.addEventListener("mousemove",function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit("plotly_relayouting",e)}}),t.staticMode||t.glplot.canvas.addEventListener("webglcontextlost",function(r){e&&e.emit&&e.emit("plotly_webglcontextlost",{event:r,layer:t.id})},!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},T.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,"viewBox","0 0 "+s+" "+l),n.setAttributeNS(null,"width",s),n.setAttributeNS(null,"height",l),b(e),e.glplot.axes.update(e.axesOptions);for(var u=Object.keys(e.traces),c=null,h=e.glplot.selection,v=0;v")):"isosurface"===t.type||"volume"===t.type?(A.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),E.push("value: "+A.valueLabel),h.textLabel&&E.push(h.textLabel),x=E.join("
    ")):x=h.textLabel;var L={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:w._input,fullData:w,curveNumber:w.index,pointNumber:T};d.appendArrayPointValue(L,w,T),t._module.eventData&&(L=w._module.eventData(L,h,w,{},T));var C={points:[L]};if(e.fullSceneLayout.hovermode){var P=[];d.loneHover({trace:w,x:(.5+.5*m[0]/m[3])*s,y:(.5-.5*m[1]/m[3])*l,xLabel:A.xLabel,yLabel:A.yLabel,zLabel:A.zLabel,text:x,name:c.name,color:d.castHoverOption(w,T,"bgcolor")||c.color,borderColor:d.castHoverOption(w,T,"bordercolor"),fontFamily:d.castHoverOption(w,T,"font.family"),fontSize:d.castHoverOption(w,T,"font.size"),fontColor:d.castHoverOption(w,T,"font.color"),nameLength:d.castHoverOption(w,T,"namelength"),textAlign:d.castHoverOption(w,T,"align"),hovertemplate:f.castOption(w,T,"hovertemplate"),hovertemplateLabels:f.extendFlat({},L,A),eventData:[L]},{container:n,gd:r,inOut_bbox:P}),L.bbox=P[0]}h.distance<5&&(h.buttons||_)?r.emit("plotly_click",C):r.emit("plotly_hover",C),this.oldEventData=C}else d.loneUnhover(n),this.oldEventData&&r.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},T.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error("Catastrophic and unrecoverable WebGL error. Context lost.")};requestAnimationFrame(e)};var k=["xaxis","yaxis","zaxis"];function M(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],u=e[o+"calendar"],c=e["_"+o+"length"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(c||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;dy[1][o])y[0][o]=-1,y[1][o]=1;else{var C=y[1][o]-y[0][o];y[0][o]-=C/32,y[1][o]+=C/32}if("reversed"===l.autorange){var P=y[0][o];y[0][o]=y[1][o],y[1][o]=P}}else{var O=l.range;y[0][o]=l.r2l(O[0]),y[1][o]=l.r2l(O[1])}y[0][o]===y[1][o]&&(y[0][o]-=1,y[1][o]+=1),m[o]=y[1][o]-y[0][o],n.glplot.setBounds(o,{min:y[0][o]*p[o],max:y[1][o]*p[o]})}var I=c.aspectmode;if("cube"===I)g=[1,1,1];else if("manual"===I){var D=c.aspectratio;g=[D.x,D.y,D.z]}else{if("auto"!==I&&"data"!==I)throw new Error("scene.js aspectRatio was not one of the enumerated types");var z=[1,1,1];for(o=0;o<3;++o){var R=x[u=(l=c[k[o]]).type];z[o]=Math.pow(R.acc,1/R.count)/p[o]}g="data"===I||Math.max.apply(null,z)/Math.min.apply(null,z)<=4?z:[1,1,1]}c.aspectratio.x=f.aspectratio.x=g[0],c.aspectratio.y=f.aspectratio.y=g[1],c.aspectratio.z=f.aspectratio.z=g[2],n.glplot.setAspectratio(c.aspectratio),n.viewInitial.aspectratio||(n.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),n.viewInitial.aspectmode||(n.viewInitial.aspectmode=c.aspectmode);var F=c.domain||null,B=e._size||null;if(F&&B){var N=n.container.style;N.position="absolute",N.left=B.l+F.x[0]*B.w+"px",N.top=B.t+(1-F.y[1])*B.h+"px",N.width=B.w*(F.x[1]-F.x[0])+"px",N.height=B.h*(F.y[1]-F.y[0])+"px"}n.glplot.redraw()}},T.destroy=function(){var t=this;t.glplot&&(t.camera.mouseListener.enabled=!1,t.container.removeEventListener("wheel",t.camera.wheelListener),t.camera=null,t.glplot.dispose(),t.container.parentNode.removeChild(t.container),t.glplot=null)},T.getCamera=function(){var t,e=this;return e.camera.view.recalcMatrix(e.camera.view.lastT()),{up:{x:(t=e.camera).up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?"orthographic":"perspective"}}},T.setViewport=function(t){var e,r=this,n=t.camera;r.camera.lookAt.apply(this,[[(e=n).eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]),r.glplot.setAspectratio(t.aspectratio),"orthographic"===n.projection.type!==r.camera._ortho&&(r.glplot.redraw(),r.glplot.clearRGBA(),r.glplot.dispose(),r.initializeGLPlot())},T.isCameraChanged=function(t){var e=this.getCamera(),r=f.nestedProperty(t,this.id+".camera").get();function n(t,e,r,n){var i=["up","center","eye"],a=["x","y","z"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var i=!1;if(void 0===r)i=!0;else{for(var a=0;a<3;a++)for(var o=0;o<3;o++)if(!n(e,r,a,o)){i=!0;break}(!r.projection||e.projection&&e.projection.type!==r.projection.type)&&(i=!0)}return i},T.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=f.nestedProperty(t,this.id+".aspectratio").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},T.saveLayout=function(t){var e,r,n,i,a,o,s=this,l=s.fullLayout,u=s.isCameraChanged(t),h=s.isAspectChanged(t),p=u||h;if(p){var d={};u&&(e=s.getCamera(),n=(r=f.nestedProperty(t,s.id+".camera")).get(),d[s.id+".camera"]=n),h&&(i=s.glplot.getAspectratio(),o=(a=f.nestedProperty(t,s.id+".aspectratio")).get(),d[s.id+".aspectratio"]=o),c.call("_storeDirectGUIEdit",t,l._preGUI,d),u&&(r.set(e),f.nestedProperty(l,s.id+".camera").set(e)),h&&(a.set(i),f.nestedProperty(l,s.id+".aspectratio").set(i),s.glplot.redraw())}return p},T.updateFx=function(t,e){var r=this,n=r.camera;if(n)if("orbit"===t)n.mode="orbit",n.keyBindingMode="rotate";else if("turntable"===t){n.up=[0,0,1],n.mode="turntable",n.keyBindingMode="rotate";var i=r.graphDiv,a=i._fullLayout,o=r.fullSceneLayout.camera,s=o.up.x,l=o.up.y,u=o.up.z;if(u/Math.sqrt(s*s+l*l+u*u)<.999){var h=r.id+".camera.up",p={x:0,y:0,z:1},d={};d[h]=p;var v=i.layout;c.call("_storeDirectGUIEdit",v,a._preGUI,d),o.up=p,f.nestedProperty(v,h).set(p)}}else n.keyBindingMode=t;r.fullSceneLayout.hovermode=e},T.toImage=function(t){var e=this;t||(t="png"),e.staticMode&&e.container.appendChild(n),e.glplot.redraw();var r=e.glplot.gl,i=r.drawingBufferWidth,a=r.drawingBufferHeight;r.bindFramebuffer(r.FRAMEBUFFER,null);var o=new Uint8Array(i*a*4);r.readPixels(0,0,i,a,r.RGBA,r.UNSIGNED_BYTE,o),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(o,i,a);var s=document.createElement("canvas");s.width=i,s.height=a;var l,u=s.getContext("2d",{willReadFrequently:!0}),c=u.createImageData(i,a);switch(c.data.set(o),u.putImageData(c,0,0),t){case"jpeg":l=s.toDataURL("image/jpeg");break;case"webp":l=s.toDataURL("image/webp");break;default:l=s.toDataURL("image/png")}return e.staticMode&&e.container.removeChild(n),l},T.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},T.make4thDimension=function(){var t=this,e=t.graphDiv._fullLayout;t._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},p.setConvert(t._mockAxis,e)},t.exports=w},39616:function(t,e,r){"use strict";t.exports=function(t){for(var e=t.axesOptions,r=t.glplot.axesPixels,s=t.fullSceneLayout,l=[[],[],[]],u=0;u<3;++u){var c=s[a[u]];if(c._length=(r[u].hi-r[u].lo)*r[u].pixelsPerDataUnit/t.dataScale[u],Math.abs(c._length)===1/0||isNaN(c._length))l[u]=[];else{c._input_range=c.range.slice(),c.range[0]=r[u].lo/t.dataScale[u],c.range[1]=r[u].hi/t.dataScale[u],c._m=1/(t.dataScale[u]*r[u].pixelsPerDataUnit),c.range[0]===c.range[1]&&(c.range[0]-=1,c.range[1]+=1);var f=c.tickmode;if("auto"===c.tickmode){c.tickmode="linear";var h=c.nticks||i.constrain(c._length/40,4,9);n.autoTicks(c,Math.abs(c.range[1]-c.range[0])/h)}for(var p=n.calcTicks(c,{msUTC:!0}),d=0;d/g," "));l[u]=p,c.tickmode=f}}for(e.ticks=l,u=0;u<3;++u)for(o[u]=.5*(t.glplot.bounds[0][u]+t.glplot.bounds[1][u]),d=0;d<2;++d)e.bounds[d][u]=t.glplot.bounds[d][u];t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;a0?[0]:[]);if(o.enter().append("g").classed(f.containerClassName,!0).style("cursor","pointer"),o.exit().each(function(){n.select(this).selectAll("g."+f.headerGroupClassName).each(a)}).remove(),0!==r.length){var l=o.selectAll("g."+f.headerGroupClassName).data(r,p);l.enter().append("g").classed(f.headerGroupClassName,!0);for(var u=s.ensureSingle(o,"g",f.dropdownButtonGroupClassName,function(t){t.style("pointer-events","all")}),c=0;c0&&((T=E-s(x)-l(b))>L?A/T>C&&(_=x,w=b,C=A/T):A/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=A/E));if(h===v){var P=h-1,O=h+1;if(M)if(0===h)i=[0,1];else{var I=(h>0?f:c).reduce(function(t,e){return Math.max(t,l(e))},0),D=h/(1-Math.min(.5,I/E));i=h>0?[0,D]:[D,0]}else i=S?[Math.max(0,P),Math.max(1,O)]:[P,O]}else M?(_.val>=0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:0,nopad:1})):S&&(_.val-C*s(_)<0&&(_={val:0,nopad:1}),w.val<=0&&(w={val:1,nopad:1})),C=(w.val-_.val-p(e,x.val,b.val))/(E-s(_)-l(w)),i=[_.val-C*s(_),w.val+C*l(w)];return y&&i.reverse(),a.simpleMap(i,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),S=k((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=k(r.vpadplus||r.vpad),L=k(r.vpadminus||r.vpad);if(!T){if(h=1/0,p=-1/0,w)for(n=0;n0&&(h=a),a>p&&a-o&&(h=a),a>p&&a=O;n--)P(n);return{min:d,max:v,opts:r}},concatExtremes:g};var v=3;function g(t,e,r){var n,i,a,o=e._id,s=t._fullData,l=t._fullLayout,u=[],f=[];function h(t,e){for(n=0;n=r&&(u.extrapad||!o)){s=!1;break}i(e,u.val)&&u.pad<=r&&(o||!u.extrapad)&&(t.splice(l,1),l--)}if(s){var c=a&&0===e;t.push({val:e,pad:c?0:r,extrapad:!c&&o})}}function b(t){return i(t)&&Math.abs(t)=e}},40413:function(t,e,r){"use strict";var n=r(11882),i=r(13625),a=r(83998),o=r(79659),s=r(44220),l=r(56895),u=r(39555);function c(t,e){if(!(this instanceof c))return new c(t,e);this.traces=[],this.passes={},this.regl=t,this.scatter=n(t),this.canvas=this.scatter.canvas}function f(t,e,r){return(null!=t.id?t.id:t)<<16|(255&e)<<8|255&r}function h(t,e,r){var n,i,a,o,s=t[e],l=t[r];return s.length>2?(s[0],s[2],n=s[1],i=s[3]):s.length?(n=s[0],i=s[1]):(s.x,n=s.y,s.x,s.width,i=s.y+s.height),l.length>2?(a=l[0],o=l[2],l[1],l[3]):l.length?(a=l[0],o=l[1]):(a=l.x,l.y,o=l.x+l.width,l.y,l.height),[a,n,o,i]}function p(t){if("number"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];var e=l(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}t.exports=c,c.prototype.render=function(){for(var t,e=this,r=[],n=arguments.length;n--;)r[n]=arguments[n];return r.length&&(t=this).update.apply(t,r),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=o(function(){e.draw(),e.dirty=!0,e.planned=null})):(this.draw(),this.dirty=!0,o(function(){e.dirty=!1})),this)},c.prototype.update=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(e.length){for(var n=0;nA))&&(s.lower||!(T0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value: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}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return l.alloc(0);for(var e=l.allocUnsafe(t>>>0),r=this.head,n=0;r;)f(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0===(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=l.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,a=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,a),0===(t-=a)){a===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(a));break}++n}return this.length-=n,e}},{key:c,value:function(t,e){return u(this,i(i({},e),{},{depth:0,customInspect:!1}))}}])&&o(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},40668:function(t){"use strict";function e(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}t.exports=function(t,r){var n,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l="funnel"===s.type,u="h"===s.orientation,c=[];if(!1===r)for(n=0;n0&&void 0!==(n=t[r][e-1])&&(a++,i+=n),e0&&void 0!==(n=t[r-1][e])&&(a++,i+=n),r0&&a0&&i1e-5);return n.log("Smoother converged to",A,"after",k,"iterations"),t}},40937:function(t,e,r){"use strict";t.exports=r(48410)},41093:function(t,e){"use strict";function r(t,e,r){void 0===r&&(r={});var n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=e||{},n.geometry=t,n}function n(t,e,n){if(void 0===n&&(n={}),!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!p(t[0])||!p(t[1]))throw new Error("coordinates must contain numbers");return r({type:"Point",coordinates:t},e,n)}function i(t,e,n){void 0===n&&(n={});for(var i=0,a=t;i=0))throw new Error("precision must be a positive number");var r=Math.pow(10,e||0);return Math.round(t*r)/r},e.radiansToLength=c,e.lengthToRadians=f,e.lengthToDegrees=function(t,e){return h(f(t,e))},e.bearingToAzimuth=function(t){var e=t%360;return e<0&&(e+=360),e},e.radiansToDegrees=h,e.degreesToRadians=function(t){return t%360*Math.PI/180},e.convertLength=function(t,e,r){if(void 0===e&&(e="kilometers"),void 0===r&&(r="kilometers"),!(t>=0))throw new Error("length must be a positive number");return c(f(t,e),r)},e.convertArea=function(t,r,n){if(void 0===r&&(r="meters"),void 0===n&&(n="kilometers"),!(t>=0))throw new Error("area must be a positive number");var i=e.areaFactors[r];if(!i)throw new Error("invalid original units");var a=e.areaFactors[n];if(!a)throw new Error("invalid final units");return t/i*a},e.isNumber=p,e.isObject=function(t){return!!t&&t.constructor===Object},e.validateBBox=function(t){if(!t)throw new Error("bbox is required");if(!Array.isArray(t))throw new Error("bbox must be an Array");if(4!==t.length&&6!==t.length)throw new Error("bbox must be an Array of 4 or 6 numbers");t.forEach(function(t){if(!p(t))throw new Error("bbox must only contain numbers")})},e.validateId=function(t){if(!t)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof t))throw new Error("id must be a number or a string")}},41199:function(t){"use strict";t.exports=function(t){for(var e=t.length,r=new Array(e),n=new Array(e),i=new Array(e),a=new Array(e),o=new Array(e),s=new Array(e),l=0;l0;){e=u[u.length-1];var p=t[e];if(a[e]=0&&s[e].push(o[v])}a[e]=d}else{if(n[e]===r[e]){var g=[],y=[],m=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,g.push(x),y.push(s[x]),m+=s[x].length,o[x]=f.length,x===e){l.length=d;break}}f.push(g);var b=new Array(m);for(d=0;d halfCharStep + halfCharWidth ||\n\t\t\t\t\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\n\n\t\t\t\tuv += charId * charStep;\n\t\t\t\tuv = uv / atlasSize;\n\n\t\t\t\tvec4 color = fontColor;\n\t\t\t\tvec4 mask = texture2D(atlas, uv);\n\n\t\t\t\tfloat maskY = lightness(mask);\n\t\t\t\t// float colorY = lightness(color);\n\t\t\t\tcolor.a *= maskY;\n\t\t\t\tcolor.a *= opacity;\n\n\t\t\t\t// color.a += .1;\n\n\t\t\t\t// antialiasing, see yiq color space y-channel formula\n\t\t\t\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\n\n\t\t\t\tgl_FragColor = color;\n\t\t\t}"});return{regl:t,draw:e,atlas:{}}},T.prototype.update=function(t){var e=this;if("string"==typeof t)t={text:t};else if(!t)return;null!=(t=i(t,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map(function(t){return parseFloat(t)}):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=f(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&("number"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=m(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||t.font||(t.font=T.baseFontSize+"px sans-serif");var r,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach(function(t,r){if("string"==typeof t)try{t=n.parse(t)}catch(e){t=n.parse(T.baseFontSize+"px "+t)}else{var i=t.style,s=t.weight,l=t.stretch,u=t.variant;t=n.parse(n.stringify(t)),i&&(t.style=i),s&&(t.weight=s),l&&(t.stretch=l),u&&(t.variant=u)}var c=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),f=p(t.size),h=Math.round(f[0]*d(f[1]));if(h!==e.fontSize[r]&&(o=!0,e.fontSize[r]=h),!(e.font[r]&&c==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[c],e.font[r]))){var v=t.family.join(", "),g=[t.style];t.style!=t.variant&&g.push(t.variant),t.variant!=t.weight&&g.push(t.weight),_&&t.weight!=t.stretch&&g.push(t.stretch),e.font[r]={baseString:c,family:v,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:y(v,{origin:"top",fontSize:T.baseFontSize,fontStyle:g.join(" ")})},T.fonts[c]=e.font[r]}}),(a||o)&&this.font.forEach(function(r,i){var a=n.stringify({size:e.fontSize[i],family:r.family,stretch:_?r.stretch:void 0,variant:r.variant,weight:r.weight,style:r.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=r.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)}),"string"==typeof t.text&&t.position&&t.position.length>2){for(var s=Array(.5*t.position.length),h=0;h2){for(var w=!t.position[0].length,A=c.mallocFloat(2*this.count),k=0,M=0;k1?e.align[r]:e.align[0]:e.align;if("number"==typeof n)return n;switch(n){case"right":case"end":return-t;case"center":case"centre":case"middle":return.5*-t}return 0})),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,-1*(i+="number"==typeof t?t-n.baseline:-n[t])})),null!=t.color)if(t.color||(t.color="transparent"),"string"!=typeof t.color&&isNaN(t.color)){var q;if("number"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;q=c.mallocUint8(G);for(var Y=(t.color.subarray||t.color.slice).bind(t.color),W=0;W4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var J=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(J);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},T.prototype.destroy=function(){},T.prototype.kerning=!0,T.prototype.position={constant:new Float32Array(2)},T.prototype.translate=null,T.prototype.scale=null,T.prototype.font=null,T.prototype.text="",T.prototype.positionOffset=[0,0],T.prototype.opacity=1,T.prototype.color=new Uint8Array([0,0,0,255]),T.prototype.alignOffset=[0,0],T.maxAtlasSize=1024,T.atlasCanvas=document.createElement("canvas"),T.atlasContext=T.atlasCanvas.getContext("2d",{alpha:!1}),T.baseFontSize=64,T.fonts={},t.exports=T},41499:function(t,e,r){"use strict";var n,i,a,o=r(15181),s=r(69562),l=r(92444),u=r(13516),c=r(60609).KO,f=r(25124),h=r(14736),p=r(16361),d=r(18687),v=r(41548),g=r(50883),y=g.axisNames,m=(n=function(t){return t.slice().reverse().map(function(t){return-t}).concat([0]).concat(t)},i=String,a={},function(t){var e=i?i(t):t;if(e in a)return a[e];var r=n(t);return a[e]=r,r});function x(t,e,r,n){var i=r("bgcolor");n.bgColor=s.combine(i,n.paper_bgcolor);var a,u=c(n.fullData,g.name,n.id),x=n.layoutOut;function b(t,e){return r(a+"."+t,e)}for(var _=0;_e.model.rawColor?1:t.model.rawColor"),L=n.mouse(f)[0];o.loneHover({trace:h,x:b-d.left+v.left,y:_-d.top+v.top,text:E,color:t.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:T,idealAlign:L1&&h.displayInd===f.dimensions.length-1?(i=u.left,a="left"):(i=u.left+u.width,a="right");var v=c.model.count,g=c.model.categoryLabel,y=v/c.parcatsViewModel.model.count,m={countLabel:v,categoryLabel:g,probabilityLabel:y.toFixed(3)},x=[];-1!==c.parcatsViewModel.hoverinfoItems.indexOf("count")&&x.push(["Count:",m.countLabel].join(" ")),-1!==c.parcatsViewModel.hoverinfoItems.indexOf("probability")&&x.push(["P("+m.categoryLabel+"):",m.probabilityLabel].join(" "));var b=x.join("
    ");return{trace:p,x:o*(i-e.left),y:s*(d-e.top),text:b,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:a,hovertemplate:p.hovertemplate,hovertemplateLabels:m,eventData:[{data:p._input,fullData:p,count:v,category:g,probability:y}]}}function L(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf("skip")){if(n.mouse(this)[1]<-1)return;var e,r=t.parcatsViewModel.graphDiv,i=r._fullLayout,a=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron,u=this;"color"===l?(function(t){var e=n.select(t).datum(),r=k(e);w(r),r.each(function(){s.raiseToTop(this)}),n.select(t.parentNode).selectAll("rect.bandrect").filter(function(t){return t.color===e.color}).each(function(){s.raiseToTop(this),n.select(this).attr("stroke","black").attr("stroke-width",1.5)})}(u),S(u,"plotly_hover",n.event)):(function(t){n.select(t.parentNode).selectAll("rect.bandrect").each(function(t){var e=k(t);w(e),e.each(function(){s.raiseToTop(this)})}),n.select(t.parentNode).select("rect.catrect").attr("stroke","black").attr("stroke-width",2.5)}(u),M(u,"plotly_hover",n.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf("none")&&("category"===l?e=E(r,a,u):"color"===l?e=function(t,e,r){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=r.getBoundingClientRect(),u=n.select(r).datum(),f=u.categoryViewModel,h=f.parcatsViewModel,p=h.model.dimensions[f.model.dimensionInd],d=h.trace,v=l.y+l.height/2;h.dimensions.length>1&&p.displayInd===h.dimensions.length-1?(i=l.left,a="left"):(i=l.left+l.width,a="right");var g=f.model.categoryLabel,y=u.parcatsViewModel.model.count,m=0;u.categoryViewModel.bands.forEach(function(t){t.color===u.color&&(m+=t.count)});var x=f.model.count,b=0;h.pathSelection.each(function(t){t.model.color===u.color&&(b+=t.model.count)});var _=m/y,w=m/b,T=m/x,A={countLabel:y,categoryLabel:g,probabilityLabel:_.toFixed(3)},k=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf("count")&&k.push(["Count:",A.countLabel].join(" ")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf("probability")&&(k.push("P(color ∩ "+g+"): "+A.probabilityLabel),k.push("P("+g+" | color): "+w.toFixed(3)),k.push("P(color | "+g+"): "+T.toFixed(3)));var M=k.join("
    "),S=c.mostReadable(u.color,["black","white"]);return{trace:d,x:o*(i-e.left),y:s*(v-e.top),text:M,color:u.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:A,eventData:[{data:d._input,fullData:d,category:g,count:y,probability:_,categorycount:x,colorcount:b,bandcolorcount:m}]}}(r,a,u):"dimension"===l&&(e=function(t,e,r){var i=[];return n.select(r.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){i.push(E(t,e,this))}),i}(r,a,u)),e&&o.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:r}))}}function C(t){var e=t.parcatsViewModel;e.dragDimension||(_(e.pathSelection),T(e.dimensionSelection.selectAll("g.category")),A(e.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(v),-1!==e.hoverinfoItems.indexOf("skip"))||("color"===t.parcatsViewModel.hoveron?S(this,"plotly_unhover",n.event):M(this,"plotly_unhover",n.event))}function P(t){"fixed"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,n.select(this).selectAll("g.category").select("rect.catrect").each(function(e){var r=n.mouse(this)[0],i=n.mouse(this)[1];-2<=r&&r<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map(function(t){return t.displayInd}),e.model.dragY=e.y,s.raiseToTop(this.parentNode),n.select(this.parentNode).selectAll("rect.bandrect").each(function(e){e.yf.y+f.height/2&&(o.model.displayInd=f.model.displayInd,f.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||"freeform"===t.parcatsViewModel.arrangement){a.model.dragX=n.event.x;var h=t.parcatsViewModel.dimensions[r],p=t.parcatsViewModel.dimensions[i];void 0!==h&&a.model.dragXp.x&&(a.model.displayInd=p.model.displayInd,p.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}j(t.parcatsViewModel),N(t.parcatsViewModel),R(t.parcatsViewModel),z(t.parcatsViewModel)}}function I(t){if("fixed"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){n.select(this).selectAll("text").attr("font-weight","normal");var e={},r=D(t.parcatsViewModel),i=t.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),o=t.initialDragDimensionDisplayInds.some(function(t,e){return t!==i[e]});o&&i.forEach(function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e["dimensions["+i+"].displayindex"]=r});var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map(function(t){return t.displayInd});if(s=t.initialDragCategoryDisplayInds.some(function(t,e){return t!==l[e]})){var u=t.model.categories.slice().sort(function(t,e){return t.displayInd-e.displayInd}),c=u.map(function(t){return t.categoryValue}),f=u.map(function(t){return t.categoryLabel});e["dimensions["+t.model.containerInd+"].categoryarray"]=[c],e["dimensions["+t.model.containerInd+"].ticktext"]=[f],e["dimensions["+t.model.containerInd+"].categoryorder"]="array"}}-1===t.parcatsViewModel.hoverinfoItems.indexOf("skip")&&!t.dragHasMoved&&t.potentialClickBand&&("color"===t.parcatsViewModel.hoveron?S(t.potentialClickBand,"plotly_click",n.event.sourceEvent):M(t.potentialClickBand,"plotly_click",n.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd&&(t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null),t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,j(t.parcatsViewModel),N(t.parcatsViewModel),n.transition().duration(300).ease("cubic-in-out").each(function(){R(t.parcatsViewModel,!0),z(t.parcatsViewModel,!0)}).each("end",function(){(o||s)&&a.restyle(t.parcatsViewModel.graphDiv,e,[r])})}}function D(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)c+="C"+u[s]+","+(e[s+1]+n)+" "+l[s]+","+(e[s]+n)+" "+(t[s]+r[s])+","+(e[s]+n),c+="l-"+r[s]+",0 ";return c+"Z"}function N(t){var e=t.dimensions,r=t.model,n=e.map(function(t){return t.categories.map(function(t){return t.y})}),i=t.model.dimensions.map(function(t){return t.categories.map(function(t){return t.displayInd})}),a=t.model.dimensions.map(function(t){return t.displayInd}),o=t.dimensions.map(function(t){return t.model.dimensionInd}),s=e.map(function(t){return t.x}),l=e.map(function(t){return t.width}),u=[];for(var c in r.paths)r.paths.hasOwnProperty(c)&&u.push(r.paths[c]);function f(t){var e=t.categoryInds.map(function(t,e){return i[e][t]});return o.map(function(t){return e[t]})}u.sort(function(e,r){var n=f(e),i=f(r);return"backward"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0});for(var h=new Array(u.length),p=e[0].model.count,d=e[0].categories.map(function(t){return t.height}).reduce(function(t,e){return t+e}),v=0;v0?d*(y.count/p):0;for(var m,x=new Array(n.length),b=0;b1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,u,c=[],f=t.model.maxCats,h=e.categories.length,p=e.count,d=t.height-8*(f-1),v=8*(f-h)/2,g=e.categories.map(function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}});for(g.sort(function(t,e){return t.displayInd-e.displayInd}),u=0;u0?o.count/p*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:v,bands:[],parcatsViewModel:t},v=v+a+8,c.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:c,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}t.exports=function(t,e,r,n){h(r,t,n,e)}},41545:function(t,e,r){"use strict";t.exports=r(29114)},41548:function(t,e,r){"use strict";var n=r(24761),i=r(94257),a=r(79444).u,o=r(15181).extendFlat,s=r(7458).overrideAll,l=s({color:i.color,showline:o({},i.showline,{dflt:!0}),linecolor:i.linecolor,linewidth:i.linewidth,showgrid:o({},i.showgrid,{dflt:!0}),gridcolor:i.gridcolor,gridwidth:i.gridwidth,griddash:i.griddash},"plot","from-root"),u=s({ticklen:i.ticklen,tickwidth:o({},i.tickwidth,{dflt:2}),tickcolor:i.tickcolor,showticklabels:i.showticklabels,labelalias:i.labelalias,showtickprefix:i.showtickprefix,tickprefix:i.tickprefix,showticksuffix:i.showticksuffix,ticksuffix:i.ticksuffix,tickfont:i.tickfont,tickformat:i.tickformat,hoverformat:i.hoverformat,layer:i.layer},"plot","from-root"),c=o({visible:o({},i.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:o({},i.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},l,u),f=o({visible:o({},i.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:i.ticks,editType:"calc"},l,u);t.exports={domain:a({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:n.background},realaxis:c,imaginaryaxis:f,editType:"calc"}},41562:function(t,e,r){"use strict";var n=r(15181),i=r(69562),a=r(46982),o=r(72639),s=r(63457),l=r(88156),u=r(41993),c=r(74349),f=n.coerceFont;function h(t,e,r,i,a,o){var s=!(!1===(o=o||{}).moduleHasSelected),l=!(!1===o.moduleHasUnselected),u=!(!1===o.moduleHasConstrain),c=!(!1===o.moduleHasCliponaxis),h=!(!1===o.moduleHasTextangle),p=!(!1===o.moduleHasInsideanchor),d=!!o.hasPathbar,v=Array.isArray(a)||"auto"===a,g=v||"inside"===a,y=v||"outside"===a;if(g||y){var m=f(i,"textfont",r.font),x=n.extendFlat({},m),b=!(t.textfont&&t.textfont.color);if(b&&delete x.color,f(i,"insidetextfont",x),d){var _=n.extendFlat({},m);b&&delete _.color,f(i,"pathbar.textfont",_)}y&&f(i,"outsidetextfont",m),s&&i("selected.textfont.color"),l&&i("unselected.textfont.color"),u&&i("constraintext"),c&&i("cliponaxis"),h&&i("textangle"),i("texttemplate")}g&&p&&i("insidetextanchor")}t.exports={supplyDefaults:function(t,e,r,u){function f(r,i){return n.coerce(t,e,c,r,i)}if(o(t,e,u,f)){s(t,e,u,f),f("xhoverformat"),f("yhoverformat"),f("orientation",e.x&&!e.y?"h":"v"),f("base"),f("offset"),f("width"),f("text"),f("hovertext"),f("hovertemplate");var p=f("textposition");h(t,0,u,f,p,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),l(t,e,f,r,u);var d=(e.marker.line||{}).color,v=a.getComponentMethod("errorbars","supplyDefaults");v(t,e,d||i.defaultLine,{axis:"y"}),v(t,e,d||i.defaultLine,{axis:"x",inherit:"y"}),n.coerceSelectionMarkerOpacity(e,f)}else e.visible=!1},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,c,t)}if("group"===e.barmode)for(var o=0;o")}function p(t){return t+"°"}}(u,v,t,l[0].t.labels),t.hovertemplate=u.hovertemplate,[t]}}},42591:function(t,e,r){"use strict";var n=r(62284),i=r(93335).IMAGE_URL_PREFIX,a=r(66424).Buffer;e.p=function(t){var e=t.replace(i,""),r=new a(e,"base64");return n(r)}},42699:function(t){"use strict";var e=/^(.*)(\.[^\.\[\]]+|\[\d\])$/,r=/^[^\.\[\]]+$/;t.exports=function(t,n){for(;n;){var i=t.match(e);if(i)t=i[1];else{if(!t.match(r))throw new Error("bad relativeAttr call:"+[t,n]);t=""}if("^"!==n.charAt(0))break;n=n.slice(1)}return t&&"["!==n.charAt(0)?t+"."+n:t+n}},42817:function(t,e,r){"use strict";var n="undefined"!=typeof Symbol&&Symbol,i=r(69651);t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&i()}},42874:function(t,e,r){var n=r(9915),i=r(18610);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}function o(t,e){return t-e*Math.floor(t/e)}function s(t,e){return o(t-1,e)+1}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),!1},formatYear:function(t){t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year();var e=Math.floor(t/400);return t%=400,t+=t<0?400:0,e+"."+Math.floor(t/20)+"."+t%20},forYear:function(t){if((t=t.split(".")).length<3)throw"Invalid Mayan year";for(var e=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";e=20*e+n}return e},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),18},weekOfYear:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),0},daysInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),360},daysInMonth:function(t,e){return this._validate(t,e,this.minDay,n.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate).day()},weekDay:function(t,e,r){return this._validate(t,e,r,n.local.invalidDate),!0},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=o(8+(t-=this.jdEpoch)+340,365);return[Math.floor(e/20)+1,o(e,20)]},_toTzolkin:function(t){return[s(20+(t-=this.jdEpoch),20),s(t+4,13)]},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),n.calendars.mayan=a},42964:function(t,e,r){"use strict";var n=r(65941)();t.exports=function(t){return t!==n&&null!==t}},43016:function(t,e,r){"use strict";r.r(e),r.d(e,{timeDay:function(){return y.A},timeDays:function(){return y._},timeFriday:function(){return m.Sh},timeFridays:function(){return m.tz},timeHour:function(){return v},timeHours:function(){return g},timeInterval:function(){return n.A},timeMillisecond:function(){return a},timeMilliseconds:function(){return o},timeMinute:function(){return h},timeMinutes:function(){return p},timeMonday:function(){return m.By},timeMondays:function(){return m.KP},timeMonth:function(){return b},timeMonths:function(){return _},timeSaturday:function(){return m.kS},timeSaturdays:function(){return m.t$},timeSecond:function(){return u},timeSeconds:function(){return c},timeSunday:function(){return m.fz},timeSundays:function(){return m.se},timeThursday:function(){return m.dt},timeThursdays:function(){return m.Q$},timeTuesday:function(){return m.eQ},timeTuesdays:function(){return m.yW},timeWednesday:function(){return m.l3},timeWednesdays:function(){return m.gf},timeWeek:function(){return m.fz},timeWeeks:function(){return m.se},timeYear:function(){return w.A},timeYears:function(){return w.V},utcDay:function(){return L.A},utcDays:function(){return L.o},utcFriday:function(){return C.a1},utcFridays:function(){return C.Zn},utcHour:function(){return S},utcHours:function(){return E},utcMillisecond:function(){return a},utcMilliseconds:function(){return o},utcMinute:function(){return A},utcMinutes:function(){return k},utcMonday:function(){return C.rt},utcMondays:function(){return C.ON},utcMonth:function(){return O},utcMonths:function(){return I},utcSaturday:function(){return C.c8},utcSaturdays:function(){return C.Xo},utcSecond:function(){return u},utcSeconds:function(){return c},utcSunday:function(){return C.Hl},utcSundays:function(){return C.aZ},utcThursday:function(){return C.pT},utcThursdays:function(){return C.wr},utcTuesday:function(){return C.sr},utcTuesdays:function(){return C.jN},utcWednesday:function(){return C.z2},utcWednesdays:function(){return C.G6},utcWeek:function(){return C.Hl},utcWeeks:function(){return C.aZ},utcYear:function(){return D.A},utcYears:function(){return D.j}});var n=r(15824),i=(0,n.A)(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?(0,n.A)(function(e){e.setTime(Math.floor(e/t)*t)},function(e,r){e.setTime(+e+r*t)},function(e,r){return(r-e)/t}):i:null};var a=i,o=i.range,s=r(21365),l=(0,n.A)(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*s.Tt)},function(t,e){return(e-t)/s.Tt},function(t){return t.getUTCSeconds()}),u=l,c=l.range,f=(0,n.A)(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*s.Tt)},function(t,e){t.setTime(+t+e*s.rR)},function(t,e){return(e-t)/s.rR},function(t){return t.getMinutes()}),h=f,p=f.range,d=(0,n.A)(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*s.Tt-t.getMinutes()*s.rR)},function(t,e){t.setTime(+t+e*s.JJ)},function(t,e){return(e-t)/s.JJ},function(t){return t.getHours()}),v=d,g=d.range,y=r(90059),m=r(12053),x=(0,n.A)(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),b=x,_=x.range,w=r(1864),T=(0,n.A)(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*s.rR)},function(t,e){return(e-t)/s.rR},function(t){return t.getUTCMinutes()}),A=T,k=T.range,M=(0,n.A)(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*s.JJ)},function(t,e){return(e-t)/s.JJ},function(t){return t.getUTCHours()}),S=M,E=M.range,L=r(20361),C=r(29423),P=(0,n.A)(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),O=P,I=P.range,D=r(21662)},43030:function(t,e,r){"use strict";t.exports=r(31149)},43061:function(t,e,r){"use strict";var n=r(31164);t.exports={x:n.x,y:n.y,xy:{valType:"data_array",editType:"calc"},indices:{valType:"data_array",editType:"calc"},xbounds:{valType:"data_array",editType:"calc"},ybounds:{valType:"data_array",editType:"calc"},text:n.text,marker:{color:{valType:"color",arrayOk:!1,editType:"calc"},opacity:{valType:"number",min:0,max:1,dflt:1,arrayOk:!1,editType:"calc"},blend:{valType:"boolean",dflt:null,editType:"calc"},sizemin:{valType:"number",min:.1,max:2,dflt:.5,editType:"calc"},sizemax:{valType:"number",min:.1,dflt:20,editType:"calc"},border:{color:{valType:"color",arrayOk:!1,editType:"calc"},arearatio:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},editType:"calc"},editType:"calc"},transforms:void 0}},43094:function(t,e,r){"use strict";var n,i,a,o,s=r(5763),l=r(16534).round,u="M0,0Z",c=Math.sqrt(2),f=Math.sqrt(3),h=Math.PI,p=Math.cos,d=Math.sin;function v(t){return null===t}function g(t,e,r){if(!(t&&t%360!=0||e))return r;if(a===t&&o===e&&n===r)return i;function l(t,r){var n=p(t),i=d(t),a=r[0],o=r[1]+(e||0);return[a*n-o*i,a*i+o*n]}a=t,o=e,n=r;for(var u=t/180*h,c=0,f=0,v=s(r),g="",y=0;ym.glText.length){var T=_-m.glText.length;for(v=0;vr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t}),m.line2d.update(m.lineOptions)),m.error2d){var k=(m.errorXOptions||[]).concat(m.errorYOptions||[]);m.error2d.update(k)}m.scatter2d&&m.scatter2d.update(m.markerOptions),m.fillOrder=s.repeat(null,_),m.fill2d&&(m.fillOptions=m.fillOptions.map(function(t,e){var n=r[e];if(t&&n&&n[0]&&n[0].trace){var i,a,o=n[0],s=o.trace,l=o.t,u=m.lineOptions[e],c=[];s._ownfill&&c.push(e),s._nexttrace&&c.push(e+1),c.length&&(m.fillOrder[e]=c);var f,h,p=[],d=u&&u.positions||l.positions;if("tozeroy"===s.fill){for(f=0;ff&&isNaN(d[h+1]);)h-=2;0!==d[f+1]&&(p=[d[f],0]),p=p.concat(d.slice(f,h+2)),0!==d[h+1]&&(p=p.concat([d[h],0]))}else if("tozerox"===s.fill){for(f=0;ff&&isNaN(d[h]);)h-=2;0!==d[f]&&(p=[0,d[f+1]]),p=p.concat(d.slice(f,h+2)),0!==d[h]&&(p=p.concat([0,d[h+1]]))}else if("toself"===s.fill||"tonext"===s.fill){for(p=[],i=0,t.splitNull=!0,a=0;a-1;for(v=0;v<_;v++){var L=r[v][0],C=L.trace,P=L.t,O=P.index,I=C._length,D=P.x,z=P.y;if(C.selectedpoints||S||E){if(S||(S=!0),C.selectedpoints){var R=m.selectBatch[O]=s.selIndices2selPoints(C),F={};for(g=0;g0?Math.max(r,a):0}}},43929:function(t,e,r){"use strict";var n=r(59043),i=r(15181),a=r(93003),o=r(40243).findExtremes,s=r(89196),l=r(2524),u=l.calcMarkerSize,c=l.calcAxisExpansion,f=l.setFirstScatter,h=r(80924),p=r(59509),d=r(71796),v=r(78945).BADNUM,g=r(879).TOO_MANY_POINTS;function y(t,e,r){var n=t._extremes[e._id],i=o(e,r._bnds,{padded:!0});n.min=n.min.concat(i.min),n.max=n.max.concat(i.max)}t.exports=function(t,e){var r,o=t._fullLayout,l=e._xA=a.getFromId(t,e.xaxis,"x"),m=e._yA=a.getFromId(t,e.yaxis,"y"),x=o._plots[e.xaxis+e.yaxis],b=e._length,_=b>=g,w=2*b,T={},A=l.makeCalcdata(e,"x"),k=m.makeCalcdata(e,"y"),M=s(e,l,"x",A),S=s(e,m,"y",k),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=A,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=k,e._yStarts=S.starts,e._yEnds=S.ends);var C=new Array(w),P=new Array(b);for(r=0;r1&&i.extendFlat(s.line,p.linePositions(t,r,n)),s.errorX||s.errorY){var l=p.errorBarPositions(t,r,n,a,o);s.errorX&&i.extendFlat(s.errorX,l.x),s.errorY&&i.extendFlat(s.errorY,l.y)}return s.text&&(i.extendFlat(s.text,{positions:n},p.textPosition(t,r,s.text,s.marker)),i.extendFlat(s.textSel,{positions:n},p.textPosition(t,r,s.text,s.markerSel)),i.extendFlat(s.textUnsel,{positions:n},p.textPosition(t,r,s.text,s.markerUnsel))),s}(t,0,e,C,E,L),D=d(t,x);return f(o,e),_?I.marker&&(O=I.marker.sizeAvg||Math.max(I.marker.size,3)):O=u(e,b),c(t,e,l,m,E,L,O),I.errorX&&y(e,l,I.errorX),I.errorY&&y(e,m,I.errorY),I.fill&&!D.fill2d&&(D.fill2d=!0),I.marker&&!D.scatter2d&&(D.scatter2d=!0),I.line&&!D.line2d&&(D.line2d=!0),!I.errorX&&!I.errorY||D.error2d||(D.error2d=!0),I.text&&!D.glText&&(D.glText=!0),I.marker&&(I.marker.snap=b),D.lineOptions.push(I.line),D.errorXOptions.push(I.errorX),D.errorYOptions.push(I.errorY),D.fillOptions.push(I.fill),D.markerOptions.push(I.marker),D.markerSelectedOptions.push(I.markerSel),D.markerUnselectedOptions.push(I.markerUnsel),D.textOptions.push(I.text),D.textSelectedOptions.push(I.textSel),D.textUnselectedOptions.push(I.textUnsel),D.selectBatch.push([]),D.unselectBatch.push([]),T._scene=D,T.index=D.count,T.x=E,T.y=L,T.positions=C,D.count++,[{x:!1,y:!1,t:T,trace:e}]}},44036:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=i.numberFormat,o=r(25623),s=r(21757),l=r(46982),u=i.strTranslate,c=r(3071),f=r(69562),h=r(88191),p=r(93441),d=r(26446),v=r(71467),g=r(95243),y=r(7514),m=y.selectingOrDrawing,x=y.freeMode,b=r(5126).FROM_TL,_=r(91371),w=r(357).redrawReglTraces,T=r(37070),A=r(93003).getFromId,k=r(35640).prepSelect,M=r(35640).clearOutline,S=r(35640).selectOnClick,E=r(44559),L=r(29278),C=L.MINDRAG,P=L.MINZOOM,O=!0;function I(t,e,r,n){var a=i.ensureSingle(t.draglayer,e,r,function(e){e.classed("drag",!0).style({fill:"transparent","stroke-width":0}).attr("data-subplot",t.id)});return a.call(v,n),a.node()}function D(t,e,r,i,a,o,s){var l=I(t,"rect",e,r);return n.select(l).call(h.setRect,i,a,o,s),l}function z(t,e){for(var r=0;r=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append("path").attr("class","zoombox").style({fill:e>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",u(r,n)).attr("d",i+"Z")}function j(t,e,r){return t.append("path").attr("class","zoombox-corners").style({fill:f.background,stroke:f.defaultLine,"stroke-width":1,opacity:0}).attr("transform",u(e,r)).attr("d","M0,0Z")}function U(t,e,r,n,i,a){t.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),V(t,e,i,a)}function V(t,e,r,n){r||(t.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),e.transition().style("opacity",1).duration(200))}function H(t){n.select(t).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function q(t){O&&t.data&&t._context.showTips&&(i.notifier(i._(t,"Double-click to zoom back out"),"long"),O=!1)}function G(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,P)/2);return"M"+(t.l-3.5)+","+(t.t-.5+e)+"h3v"+-e+"h"+e+"v-3h-"+(e+3)+"ZM"+(t.r+3.5)+","+(t.t-.5+e)+"h-3v"+-e+"h"+-e+"v-3h"+(e+3)+"ZM"+(t.r+3.5)+","+(t.b+.5-e)+"h-3v"+e+"h"+-e+"v3h"+(e+3)+"ZM"+(t.l-3.5)+","+(t.b+.5-e)+"h3v"+e+"h"+e+"v3h-"+(e+3)+"Z"}function Y(t,e,r,n,a){for(var o,s,l,u,c=!1,f={},h={},p=(a||{}).xaHash,d=(a||{}).yaHash,v=0;v=0)i._fullLayout._deactivateShape(i);else{var o=i._fullLayout.clickmode;if(H(i),2!==t||yt||qt(),gt)o.indexOf("select")>-1&&S(r,i,J,K,e.id,Pt),o.indexOf("event")>-1&&p.click(i,r,e.id);else if(1===t&&yt){var s=v?I:O,u="s"===v||"w"===y?0:1,f=s._name+".range["+u+"]",h=function(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return"date"===t.type?n:"log"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,a("."+r+"g")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,a("."+String(r)+"g")(n))}(s,u),d="left",g="middle";if(s.fixedrange)return;v?(g="n"===v?"top":"bottom","right"===s.side&&(d="right")):"e"===y&&(d="right"),i._context.showAxisRangeEntryBoxes&&n.select(bt).call(c.makeEditable,{gd:i,immediate:!0,background:i._fullLayout.paper_bgcolor,text:String(h),fill:s.tickfont?s.tickfont.color:"#444",horizontalAlign:d,verticalAlign:g}).on("edit",function(t){var e=s.d2r(t);void 0!==e&&l.call("_guiRelayout",i,f,e)})}}}function Dt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,pt*e+_t)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-_t),o=Math.abs(i-wt);function s(){St="",Tt.r=Tt.l,Tt.t=Tt.b,Lt.attr("d","M0,0Z")}if(Tt.l=Math.min(_t,n),Tt.r=Math.max(_t,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>P||o>P?(St="xy",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,_t>n?Tt.l=_t-a:Tt.r=_t+a),Lt.attr("d",G(Tt))):s();else if(nt.isSubplotConstrained)if(a>P||o>P){St="xy";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),u=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=u*tt,Tt.b=(1-l)*et,Tt.t=(1-u)*et,Lt.attr("d",G(Tt))}else s();else!at||o0){var c;if(nt.isSubplotConstrained||!it&&1===at.length){for(c=0;ce}function f(t,e){return t>=e}e.findBin=function(t,e,r){if(n(e.start))return r?Math.ceil((t-e.start)/e.size-s)-1:Math.floor((t-e.start)/e.size+s);var a,o,h=0,p=e.length,d=0,v=p>1?(e[p-1]-e[0])/(p-1):1;for(o=v>=0?r?l:u:r?f:c,t+=v*s*(r?-1:1)*(v>=0?1:-1);h90&&i.log("Long binary search..."),h-1},e.sorterAsc=function(t,e){return t-e},e.sorterDes=function(t,e){return e-t},e.distinctVals=function(t){var r,n=t.slice();for(n.sort(e.sorterAsc),r=n.length-1;r>-1&&n[r]===o;r--);for(var i,a=n[r]-n[0]||1,s=a/(r||1)/1e4,l=[],u=0;u<=r;u++){var c=n[u],f=c-i;void 0===i?(l.push(c),i=c):f>s&&(a=Math.min(a,f),l.push(c),i=c)}return{vals:l,minDiff:a}},e.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},e.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;i0){var h=i.c2l(c);i._lowerLogErrorBound||(i._lowerLogErrorBound=h),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,h)}}else o[s]=[-l[0]*r,l[1]*r]}return o}t.exports=function(t,e,r){var n=[i(t.x,t.error_x,e[0],r.xaxis),i(t.y,t.error_y,e[1],r.yaxis),i(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;eT?c.push({code:"unused",traceType:m,templateCount:w,dataCount:T}):T>w&&c.push({code:"reused",traceType:m,templateCount:w,dataCount:T})}}else c.push({code:"data"});if(function t(e,r){for(var n in e)if("_"!==n.charAt(0)){var a=e[n],o=v(e,n,r);i(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&c.push({code:"missing",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&g(a)&&t(a,o)}}({data:p,layout:h},""),c.length)return c.map(y)}},46813:function(t){"use strict";t.exports=n;var e=(n.canvas=document.createElement("canvas")).getContext("2d"),r=i([32,126]);function n(t,n){Array.isArray(t)&&(t=t.join(", "));var a,o={},s=16,l=.05;n&&(2===n.length&&"number"==typeof n[0]?a=i(n):Array.isArray(n)?a=n:(n.o?a=i(n.o):n.pairs&&(a=n.pairs),n.fontSize&&(s=n.fontSize),null!=n.threshold&&(l=n.threshold))),a||(a=r),e.font=s+"px "+t;for(var u=0;us*l){var p=(h-f)/s;o[c]=1e3*p}}return o}function i(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i=90||i>90&&a>=450?1:s<=0&&u<=0?0:Math.max(s,u),[i<=180&&a>=180||i>180&&a>=540?-1:o>=0&&l>=0?0:Math.min(o,l),i<=270&&a>=270||i>270&&a>=630?-1:s>=0&&u>=0?0:Math.min(s,u),a>=360?1:o<=0&&l<=0?0:Math.max(o,l),e]}(d),_=b[2]-b[0],w=b[3]-b[1],T=p/h,A=Math.abs(w/_);T>A?(v=h,x=(p-(g=h*A))/i.h/2,y=[s[0],s[1]],m=[f[0]+x,f[1]-x]):(g=p,x=(h-(v=p/A))/i.w/2,y=[s[0]+x,s[1]-x],m=[f[0],f[1]]),r.xLength2=v,r.yLength2=g,r.xDomain2=y,r.yDomain2=m;var k,M=r.xOffset2=i.l+i.w*y[0],S=r.yOffset2=i.t+i.h*(1-m[1]),E=r.radius=v/_,L=r.innerRadius=r.getHole(e)*E,C=r.cx=M-E*b[0],P=r.cy=S+E*b[3],O=r.cxx=C-M,I=r.cyy=P-S,D=a.side;"counterclockwise"===D?(k=D,D="top"):"clockwise"===D&&(k=D,D="bottom"),r.radialAxis=r.mockAxis(t,e,a,{_id:"x",side:D,_trueSide:k,domain:[L/i.w,E/i.w]}),r.angularAxis=r.mockAxis(t,e,o,{side:"right",domain:[0,Math.PI],autorange:!1}),r.doAutoRange(t,e),r.updateAngularAxis(t,e),r.updateRadialAxis(t,e),r.updateRadialAxisTitle(t,e),r.xaxis=r.mockCartesianAxis(t,e,{_id:"x",domain:y}),r.yaxis=r.mockCartesianAxis(t,e,{_id:"y",domain:m});var F=r.pathSubplot();r.clipPaths.forTraces.select("path").attr("d",F).attr("transform",l(O,I)),n.frontplot.attr("transform",l(M,S)).call(c.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.forTraces,r.gd),n.bg.attr("d",F).attr("transform",l(C,P)).call(u.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=o.extendFlat({},r,n);return d(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,a=r._id,s=o.extendFlat({type:"linear"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[a],i=n.radialAxis._rl,o=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*o,t[r[1]]*o]},s.isPtWithinRange="x"!==a||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this,n=r.gd,i=r.radialAxis,a=r.getRadial(e);v(n,i);var o=i.range;a.range=o.slice(),a._input.range=o.slice(),i._rl=[i.r2l(o[0],null,"gregorian"),i.r2l(o[1],null,"gregorian")]},N.updateRadialAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,c=r.innerRadius,f=r.cx,p=r.cy,d=r.getRadial(e),v=z(r.getSector(e)[0],360),g=r.radialAxis,y=c90&&v<=270&&(g.tickangle=180);var x=m?function(t){var e=I(r,C([t.x,0]));return l(e[0]-f,e[1]-p)}:function(t){return l(g.l2p(t.x)+c,0)},b=m?function(t){return O(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(g.r2p(t.x)+c)},_=j(d);if(r.radialTickLayout!==_&&(i["radial-axis"].selectAll(".xtick").remove(),r.radialTickLayout=_),y){g.setScale();var w=0,T=m?(g.tickvals||[]).filter(function(t){return t>=0}).map(function(t){return h.tickText(g,t,!0,!1)}):h.calcTicks(g),A=m?T:h.clipEnds(g,T),k=h.getTickSigns(g)[2];m&&(("top"===g.ticks&&"bottom"===g.side||"bottom"===g.ticks&&"top"===g.side)&&(k=-k),"top"===g.ticks&&"top"===g.side&&(w=-g.ticklen),"bottom"===g.ticks&&"bottom"===g.side&&(w=g.ticklen)),h.drawTicks(n,g,{vals:T,layer:i["radial-axis"],path:h.makeTickPath(g,0,k),transFn:x,crisp:!1}),h.drawGrid(n,g,{vals:A,layer:i["radial-grid"],path:b,transFn:o.noop,crisp:!1}),h.drawLabels(n,g,{vals:T,layer:i["radial-axis"],transFn:x,labelFns:h.makeLabelFns(g,w)})}var M=r.radialAxisAngle=r.vangles?F(U(R(d.angle),r.vangles)):d.angle,S=l(f,p),E=S+s(-M);V(i["radial-axis"],y&&(d.showticklabels||d.ticks),{transform:E}),V(i["radial-grid"],y&&d.showgrid,{transform:m?"":S}),V(i["radial-line"].select("line"),y&&d.showline,{x1:m?-a:c,y1:0,x2:a,y2:0,transform:E}).attr("stroke-width",d.linewidth).call(u.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this,i=n.gd,a=n.radius,o=n.cx,s=n.cy,l=n.getRadial(e),u=n.id+"title",f=0;if(l.title){var h=c.bBox(n.layers["radial-axis"].node()).height,p=l.title.font.size,d=l.side;f="top"===d?p:"counterclockwise"===d?-(h+.4*p):h+.8*p}var v=void 0!==r?r:n.radialAxisAngle,g=R(v),y=Math.cos(g),m=Math.sin(g),b=o+a/2*y+f*m,_=s-a/2*m+f*y;n.layers["radial-axis-title"]=x.draw(i,u,{propContainer:l,propName:n.id+".radialaxis.title",placeholder:D(i,"Click to enter radial axis title"),attributes:{x:b,y:_,"text-anchor":"middle"},transform:{rotate:-v}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,a=r.radius,c=r.innerRadius,f=r.cx,p=r.cy,d=r.getAngular(e),v=r.angularAxis,g=r.isSmith;g||(r.fillViewInitialKey("angularaxis.rotation",d.rotation),v.setGeometry(),v.setScale());var y=g?function(t){var e=I(r,C([0,t.x]));return Math.atan2(e[0]-f,e[1]-p)-Math.PI/2}:function(t){return v.t2g(t.x)};"linear"===v.type&&"radians"===v.thetaunit&&(v.tick0=F(v.tick0),v.dtick=F(v.dtick));var m=function(t){return l(f+a*Math.cos(t),p-a*Math.sin(t))},x=g?function(t){var e=I(r,C([0,t.x]));return l(e[0],e[1])}:function(t){return m(y(t))},b=g?function(t){var e=I(r,C([0,t.x])),n=Math.atan2(e[0]-f,e[1]-p)-Math.PI/2;return l(e[0],e[1])+s(-F(n))}:function(t){var e=y(t);return m(e)+s(-F(e))},_=g?function(t){return P(r,t.x,0,1/0)}:function(t){var e=y(t),r=Math.cos(e),n=Math.sin(e);return"M"+[f+c*r,p-c*n]+"L"+[f+a*r,p-a*n]},w=h.makeLabelFns(v,0).labelStandoff,T={xFn:function(t){var e=y(t);return Math.cos(e)*w},yFn:function(t){var e=y(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=y(t),r=Math.cos(e);return Math.abs(r)<.1?"middle":r>0?"start":"end"},heightFn:function(t,e,r){var n=y(t);return-.5*(1+Math.sin(n))*r}},A=j(d);r.angularTickLayout!==A&&(i["angular-axis"].selectAll("."+v._id+"tick").remove(),r.angularTickLayout=A);var k,S=g?[1/0].concat(v.tickvals||[]).map(function(t){return h.tickText(v,t,!0,!1)}):h.calcTicks(v);if(g&&(S[0].text="∞",S[0].fontSize*=1.75),"linear"===e.gridshape?(k=S.map(y),o.angleDelta(k[0],k[1])<0&&(k=k.slice().reverse())):k=null,r.vangles=k,"category"===v.type&&(S=S.filter(function(t){return o.isAngleInsideSector(y(t),r.sectorInRad)})),v.visible){var E="inside"===v.ticks?-1:1,L=(v.linewidth||1)/2;h.drawTicks(n,v,{vals:S,layer:i["angular-axis"],path:"M"+E*L+",0h"+E*v.ticklen,transFn:b,crisp:!1}),h.drawGrid(n,v,{vals:S,layer:i["angular-grid"],path:_,transFn:o.noop,crisp:!1}),h.drawLabels(n,v,{vals:S,layer:i["angular-axis"],repositionOnUpdate:!0,transFn:x,labelFns:T})}V(i["angular-line"].select("path"),d.showline,{d:r.pathSubplot(),transform:l(f,p)}).attr("stroke-width",d.linewidth).call(u.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,r,s=this,u=s.isSmith,c=s.gd,f=s.layers,h=t._zoomlayer,p=S.MINZOOM,d=S.OFFEDGE,v=s.radius,x=s.innerRadius,T=s.cx,A=s.cy,k=s.cxx,M=s.cyy,L=s.sectorInRad,C=s.vangles,P=s.radialAxis,O=E.clampTiny,I=E.findXYatLength,D=E.findEnclosingVertexAngles,z=S.cornerHalfWidth,R=S.cornerLen/2,F=g.makeDragger(f,"path","maindrag",!1===t.dragmode?"none":"crosshair");n.select(F).attr("d",s.pathSubplot()).attr("transform",l(T,A)),F.onmousemove=function(t){m.hover(c,t,s.id),c._fullLayout._lasthover=F,c._fullLayout._hoversubplot=s.id},F.onmouseout=function(t){c._dragging||y.unhover(c,t)};var B,N,j,U,V,H,q,G,Y,W={element:F,gd:c,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function Z(t,e){return Math.sqrt(t*t+e*e)}function X(t,e){return Z(t-k,e-M)}function J(t,e){return Math.atan2(M-e,t-k)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function $(t,e){if(0===t)return s.pathSector(2*z);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,v)),o=a-z,l=a+z;return"M"+K(o,n)+"A"+[o,o]+" 0,0,0 "+K(o,i)+"L"+K(l,i)+"A"+[l,l]+" 0,0,1 "+K(l,n)+"Z"}function Q(t,e,r){if(0===t)return s.pathSector(2*z);var n,i,a=K(t,e),o=K(t,r),l=O((a[0]+o[0])/2),u=O((a[1]+o[1])/2);if(l&&u){var c=u/l,f=-1/c,h=I(z,c,l,u);n=I(R,f,h[0][0],h[0][1]),i=I(R,f,h[1][0],h[1][1])}else{var p,d;u?(p=R,d=z):(p=z,d=R),n=[[l-p,u-d],[l+p,u-d]],i=[[l-p,u+d],[l+p,u+d]]}return"M"+n.join("L")+"L"+i.reverse().join("L")+"Z"}function tt(t,e){return e=Math.max(Math.min(e,v),x),tp?(t-1&&1===t&&_(e,c,[s.xaxis],[s.yaxis],s.id,W),r.indexOf("event")>-1&&m.click(c,e,s.id)}W.prepFn=function(t,n,a){var l=c._fullLayout.dragmode,f=F.getBoundingClientRect();c._fullLayout._calcInverseTransform(c);var p=c._fullLayout._invTransform;e=c._fullLayout._invScaleX,r=c._fullLayout._invScaleY;var d=o.apply3DTransform(p)(n-f.left,a-f.top);if(B=d[0],N=d[1],C){var y=E.findPolygonOffset(v,L[0],L[1],C);B+=k+y[0],N+=M+y[1]}switch(l){case"zoom":W.clickFn=st,u||(W.moveFn=C?it:rt,W.doneFn=at,function(){j=null,U=null,V=s.pathSubplot(),H=!1;var t=c._fullLayout[s.id];q=i(t.bgcolor).getLuminance(),(G=g.makeZoombox(h,q,T,A,V)).attr("fill-rule","evenodd"),Y=g.makeCorners(h,T,A),w(c)}());break;case"select":case"lasso":b(t,n,a,W,l)}},y.init(W)},N.updateRadialDrag=function(t,e,r){var i=this,u=i.gd,c=i.layers,f=i.radius,h=i.innerRadius,p=i.cx,d=i.cy,v=i.radialAxis,m=S.radialDragBoxSize,x=m/2;if(v.visible){var b,_,T,M=R(i.radialAxisAngle),E=v._rl,L=E[0],C=E[1],P=E[r],O=.75*(E[1]-E[0])/(1-i.getHole(e))/f;r?(b=p+(f+x)*Math.cos(M),_=d-(f+x)*Math.sin(M),T="radialdrag"):(b=p+(h-x)*Math.cos(M),_=d-(h-x)*Math.sin(M),T="radialdrag-inner");var I,D,z,B=g.makeRectDragger(c,T,"crosshair",-x,-x,m,m),N={element:B,gd:u};!1===t.dragmode&&(N.dragmode=!1),V(n.select(B),v.visible&&h0==(r?z>L:z=0&&f("surfacecolor",p||d);for(var v=["x","y","z"],g=0;g<3;++g){var y="projection."+v[g];f(y+".show")&&(f(y+".opacity"),f(y+".scale"))}var m=n.getComponentMethod("errorbars","supplyDefaults");m(t,e,p||d||r,{axis:"z"}),m(t,e,p||d||r,{axis:"y",inherit:"z"}),m(t,e,p||d||r,{axis:"x",inherit:"z"})}else e.visible=!1}},47718:function(t){t.exports=function(t){var e=0,r=0,n=0,i=0;return t.map(function(t){var a=(t=t.slice())[0],o=a.toUpperCase();if(a!=o)switch(t[0]=o,a){case"a":t[6]+=n,t[7]+=i;break;case"v":t[1]+=i;break;case"h":t[1]+=n;break;default:for(var s=1;s-1?i(r):r}},47755:function(t){"use strict";t.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"◄",right:"►",up:"▲",down:"▼"}}},47912:function(t){"use strict";t.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},47936:function(t,e,r){"use strict";var n=r(46982),i=r(15181).isArrayOrTypedArray;t.exports=function(t,e,r,a,o,s){var l,u,c,f=[],h=n.traceIs(t,"contour"),p=n.traceIs(t,"histogram"),d=n.traceIs(t,"gl2d");if(i(e)&&e.length>1&&!p&&"category"!==s.type){var v=e.length;if(!(v<=o))return h?e.slice(0,o):e.slice(0,o+1);if(h||d)f=e.slice(0,o);else if(1===o)f=[e[0]-.5,e[0]+.5];else{for(f=[1.5*e[0]-.5*e[1]],c=1;c/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var u,c="string"==typeof(u=i)&&u.match(n.latexCheck);t.latex=c;var f,h,p=c?"":T(t.calcdata.cells.prefix,e,r)||"",d=c?"":T(t.calcdata.cells.suffix,e,r)||"",v=c?null:T(t.calcdata.cells.format,e,r)||null,g=p+(v?a(v)(t.value):t.value)+d;if(t.wrappingNeeded=!t.wrapped&&!l&&!c&&(f=w(g)),t.cellHeightMayIncrease=s||c||t.mayHaveMarkup||(void 0===f?w(g):f),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var y=(" "===n.wrapSplitCharacter?g.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===u.length&&(u[0]===i.length-1?u.unshift(u[0]-1):u.push(u[0]+1)),u[0]%2&&u.reverse(),e.each(function(t,e){t.page=u[e],t.scrollY=l}),e.attr("transform",function(t){var e=z(t.rowBlocks,t.page)-t.scrollY;return c(0,e)}),t&&(C(t,r,e,u,n.prevPages,n,0),C(t,r,e,u,n.prevPages,n,1),x(r,t))}}function L(t,e,r,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter(function(t){return s.key===t.key}),u=r||s.scrollbarState.dragMultiplier,c=s.scrollY;s.scrollY=void 0===a?s.scrollY+u*i.event.dy:a;var f=l.selectAll("."+n.cn.yColumn).selectAll("."+n.cn.columnBlock).filter(k);return E(t,f,l),s.scrollY===c}}function C(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var a=r.filter(function(t,e){return e===o&&n[e]!==i[e]});b(t,e,a,r),i[o]=n[o]}))}function P(t,e,r,a){return function(){var o=i.select(e.parentNode);o.each(function(t){var e=t.fragments;o.selectAll("tspan.line").each(function(t,r){e[r].width=this.getComputedTextLength()});var r,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],u=0,c=t.column.columnWidth-2*n.cellPad;for(t.value="";s.length;)u+(i=(r=s.shift()).width+a)>c&&(t.value+=l.join(n.wrapSpacer)+n.lineBreaker,l=[],u=0),l.push(r.text),u+=i;u&&(t.value+=l.join(n.wrapSpacer)),t.wrapped=!0}),o.selectAll("tspan.line").remove(),_(o.select("."+n.cn.cellText),r,t,a),i.select(e.parentNode.parentNode).call(D)}}function O(t,e,r,a,o){return function(){if(!o.settledY){var s=i.select(e.parentNode),l=B(o),u=o.key-l.firstRowIndex,f=l.rows[u].rowHeight,h=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*n.cellPad:f,p=Math.max(h,f);p-l.rows[u].rowHeight&&(l.rows[u].rowHeight=p,t.selectAll("."+n.cn.columnCell).call(D),E(null,t.filter(k),0),x(r,a,!0)),s.attr("transform",function(){var t=this,e=t.parentNode.getBoundingClientRect(),r=i.select(t.parentNode).select("."+n.cn.cellRect).node().getBoundingClientRect(),a=t.transform.baseVal.consolidate(),s=r.top-e.top+(a?a.matrix.f:n.cellPad);return c(I(o,i.select(t.parentNode).select("."+n.cn.cellTextHolder).node().getBoundingClientRect().width),s)}),o.settledY=!0}}}function I(t,e){switch(t.align){case"left":default:return n.cellPad;case"right":return t.column.columnWidth-(e||0)-n.cellPad;case"center":return(t.column.columnWidth-(e||0))/2}}function D(t){t.attr("transform",function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce(function(t,e){return t+R(e,1/0)},0),r=R(B(t),t.key);return c(0,r+e)}).selectAll("."+n.cn.cellRect).attr("height",function(t){return(e=B(t),r=t.key,e.rows[r-e.firstRowIndex]).rowHeight;var e,r})}function z(t,e){for(var r=0,n=e-1;n>=0;n--)r+=F(t[n]);return r}function R(t,e){for(var r=0,n=0;n","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:c({},s.textfont,{}),editType:"calc"},text:s.text,textinfo:l.textinfo,texttemplate:i({editType:"plot"},{keys:u.eventDataKeys.concat(["label","value"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:u.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:c({},s.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:s.sort,root:l.root,domain:o({name:"treemap",trace:!0,editType:"calc"})}},48563:function(t,e,r){"use strict";var n=r(5159),i=r(15181),a=r(69562),o=r(44236),s=r(78945).BADNUM,l=r(93024).makeBlank;t.exports=function(t){var e=t[0].trace,r=!0===e.visible&&0!==e._length,u=e._opts={heatmap:{layout:{visibility:"none"},paint:{}},geojson:l()};if(!r)return u;var c,f=[],h=e.z,p=e.radius,d=i.isArrayOrTypedArray(h)&&h.length,v=i.isArrayOrTypedArray(p);for(c=0;c0?+p[c]:0),f.push({type:"Feature",geometry:{type:"Point",coordinates:y},properties:m})}}var b=o.extractOpts(e),_=b.reversescale?o.flipScale(b.colorscale):b.colorscale,w=_[0][1],T=["interpolate",["linear"],["heatmap-density"],0,a.opacity(w)<1?w:a.addOpacity(w,0)];for(c=1;c<_.length;c++)T.push(_[c][0],_[c][1]);var A=["interpolate",["linear"],["get","z"],b.min,0,b.max,1];return i.extendFlat(u.heatmap.paint,{"heatmap-weight":d?A:1/(b.max-b.min),"heatmap-color":T,"heatmap-radius":v?{type:"identity",property:"r"}:e.radius,"heatmap-opacity":e.opacity}),u.geojson={type:"FeatureCollection",features:f},u.heatmap.layout.visibility="visible",u}},48648:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"scatterpolargl",basePlotModule:r(16665),categories:["gl","regl","polar","symbols","showLegend","scatter-like"],attributes:r(98963),supplyDefaults:r(8180),colorbar:r(23814),formatLabels:r(15379),calc:r(84755),hoverPoints:r(53726).hoverPoints,selectPoints:r(75828),meta:{}}},48771:function(t,e,r){"use strict";var n,i,a,o=r(41365),s=r(79691),l=r(62019).Symbol,u=r(43499),c=r(90907),f=r(31808),h=Object.create,p=Object.defineProperties,d=Object.defineProperty;if("function"==typeof l)try{String(l()),a=!0}catch(t){}else l=null;i=function(t){if(this instanceof i)throw new TypeError("Symbol is not a constructor");return n(t)},t.exports=n=function t(e){var r;if(this instanceof t)throw new TypeError("Symbol is not a constructor");return a?l(e):(r=h(i.prototype),e=void 0===e?"":String(e),p(r,{__description__:o("",e),__name__:o("",u(e))}))},c(n),f(n),p(i.prototype,{constructor:o(n),toString:o("",function(){return this.__name__})}),p(n.prototype,{toString:o(function(){return"Symbol ("+s(this).__description__+")"}),valueOf:o(function(){return s(this)})}),d(n.prototype,n.toPrimitive,o("",function(){var t=s(this);return"symbol"==typeof t?t:t.toString()})),d(n.prototype,n.toStringTag,o("c","Symbol")),d(i.prototype,n.toStringTag,o("c",n.prototype[n.toStringTag])),d(i.prototype,n.toPrimitive,o("c",n.prototype[n.toPrimitive]))},48846:function(t,e,r){"use strict";var n=r(15181),i=r(28418),a=r(52948),o=r(4868),s=r(54563),l=r(46190),u=r(71337);t.exports=function(t,e,r,c){function f(r,i){return n.coerce(t,e,u,r,i)}var h,p=f("locations");if(p&&p.length){var d,v=f("geojson");("string"==typeof v&&""!==v||n.isPlainObject(v))&&(d="geojson-id"),"geojson-id"===f("locationmode",d)&&f("featureidkey"),h=p.length}else{var g=f("lon")||[],y=f("lat")||[];h=Math.min(g.length,y.length)}h?(e._length=h,f("text"),f("hovertext"),f("hovertemplate"),f("mode"),i.hasLines(e)&&(o(t,e,r,c,f),f("connectgaps")),i.hasMarkers(e)&&a(t,e,r,c,f,{gradient:!0}),i.hasText(e)&&(f("texttemplate"),s(t,e,c,f)),f("fill"),"none"!==e.fill&&l(t,e,r,f),n.coerceSelectionMarkerOpacity(e,f)):e.visible=!1}},48928:function(t,e,r){"use strict";var n=r(619),i=r(15181).fillText;t.exports=function(t,e,r,a){var o=n(t,e,r,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index){var l=1-s.y0/t.ya._length,u=t.xa._length,c=u*l/2,f=u-c;return s.x0=Math.max(Math.min(s.x0,f),c),s.x1=Math.max(Math.min(s.x1,f),c),o}var h=s.cd[s.index];s.a=h.a,s.b=h.b,s.xLabelVal=void 0,s.yLabelVal=void 0;var p=s.trace,d=p._carpet,v=p._module.formatLabels(h,p);s.yLabel=v.yLabel,delete s.text;var g=[];if(!p.hovertemplate){var y=(h.hi||p.hoverinfo).split("+");-1!==y.indexOf("all")&&(y=["a","b","text"]),-1!==y.indexOf("a")&&m(d.aaxis,h.a),-1!==y.indexOf("b")&&m(d.baxis,h.b),g.push("y: "+s.yLabel),-1!==y.indexOf("text")&&i(h,p,g),s.extraText=g.join("
    ")}return o}function m(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,""):t._hovertitle,g.push(r+": "+e.toFixed(3)+t.labelsuffix)}}},49061:function(t,e,r){"use strict";var n=r(38532).rb,i=r(38532).ay,a=r(71337),o=r(31164),s=r(75958),l=r(28209),u=r(79335),c=r(8357).extendFlat,f=r(7458).overrideAll,h=r(75958),p=a.line,d=a.marker;t.exports=f({lon:a.lon,lat:a.lat,cluster:{enabled:{valType:"boolean"},maxzoom:c({},h.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:c({},d.opacity,{dflt:1})},mode:c({},o.mode,{dflt:"markers"}),text:c({},o.text,{}),texttemplate:i({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:c({},o.hovertext,{}),line:{color:p.color,width:p.width},connectgaps:o.connectgaps,marker:c({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:d.opacity,size:d.size,sizeref:d.sizeref,sizemin:d.sizemin,sizemode:d.sizemode},u("marker")),fill:a.fill,fillcolor:o.fillcolor,textfont:s.layers.symbol.textfont,textposition:s.layers.symbol.textposition,below:{valType:"string"},selected:{marker:o.selected.marker},unselected:{marker:o.unselected.marker},hoverinfo:c({},l.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:n()},"calc","nested")},49149:function(t){t.exports=function(t){switch(t){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}},49188:function(t){"use strict";var e=Object.prototype.toString,r=e.call(function(){return arguments}());t.exports=function(t){return e.call(t)===r}},49210:function(t,e,r){"use strict";var n=r(46982),i=r(15181);t.exports=function(t,e,r,a){var o=r("x"),s=r("y"),l=i.minRowLength(o),u=i.minRowLength(s);l&&u?(e._length=Math.min(l,u),n.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y"],a),(r("z")||r("marker.color"))&&r("histfunc"),r("histnorm"),r("autobinx"),r("autobiny")):e.visible=!1}},49241:function(t,e,r){"use strict";var n=r(15181),i=r(77042),a=r(63457),o=r(52270);function s(t,e,r,n){r(n+".line.color"),r(n+".line.width",e.line.width),r(n+".line.dash",e.line.dash)}t.exports=function(t,e,r,l){function u(r,i){return n.coerce(t,e,o,r,i)}i(t,e,u,l)?(a(t,e,l,u,{x:!0}),u("xhoverformat"),u("yhoverformat"),u("line.width"),u("line.dash"),s(0,e,u,"increasing"),s(0,e,u,"decreasing"),u("text"),u("hovertext"),u("tickwidth"),l._requestRangeslider[e.xaxis]=!0):e.visible=!1}},49367:function(t,e,r){"use strict";var n=r(21073),i=r(36562),a=r(46169),o=r(94693);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new a("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new a("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new a("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new a("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new a("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new a("`loose`, if provided, must be a boolean");var s=arguments.length>3?arguments[3]:null,l=arguments.length>4?arguments[4]:null,u=arguments.length>5?arguments[5]:null,c=arguments.length>6&&arguments[6],f=!!o&&o(t,e);if(n)n(t,e,{configurable:null===u&&f?f.configurable:!u,enumerable:null===s&&f?f.enumerable:!s,value:r,writable:null===l&&f?f.writable:!l});else{if(!c&&(s||l||u))throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},49369:function(t,e,r){"use strict";t.exports=r(88890)},49397:function(t){"use strict";t.exports=function(t,e,r,n,i){t.lon=e.lon,t.lat=e.lat,t.location=e.loc?e.loc:null;var a=n[i];return a.fIn&&a.fIn.properties&&(t.properties=a.fIn.properties),t}},49513:function(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49746:function(t,e,r){"use strict";var n=r(15181),i=r(46716),a=r(12261),o=r(28418),s=r(52948),l=r(8113),u=r(62623).isOpenSymbol;function c(t,e){function r(r,i){return n.coerce(t,e,a.dimensions,r,i)}r("label");var i=r("values");i&&i.length?r("visible"):e.visible=!1,r("axis.type"),r("axis.matches")}t.exports=function(t,e,r,f){function h(r,i){return n.coerce(t,e,a,r,i)}var p=i(t,e,{name:"dimensions",handleItemDefaults:c}),d=h("diagonal.visible"),v=h("showupperhalf"),g=h("showlowerhalf");if(l(e,p,"values")&&(d||v||g)){h("text"),h("hovertext"),h("hovertemplate"),h("xhoverformat"),h("yhoverformat"),s(t,e,r,f,h,{noAngleRef:!0,noStandOff:!0});var y=u(e.marker.symbol),m=o.isBubble(e);h("marker.line.width",y||m?1:0),function(t,e,r,n){var i,a,o=e.dimensions,s=o.length,l=e.showupperhalf,u=e.showlowerhalf,c=e.diagonal.visible,f=new Array(s),h=new Array(s);for(i=0;ia&&l||i1)for(var r=1;r2*o}(i,e))return"date";var g="strict"!==r.autotypenumbers;return function(t,e){for(var r=t.length,n=f(r),i=0,o=0,s={},c=0;c2*i}(i,g)?"category":function(t,e){for(var r=t.length,n=0;n0&&P<0&&(P+=360);var O,I,D,z=(C+P)/2;if(!p){var R=d?f.projRotate:[z,0,0];O=r("projection.rotation.lon",R[0]),r("projection.rotation.lat",R[1]),r("projection.rotation.roll",R[2]),r("showcoastlines",!d&&x)&&(r("coastlinecolor"),r("coastlinewidth")),r("showocean",!!x&&void 0)&&r("oceancolor")}p?(I=-96.6,D=38.7):(I=d?z:O,D=(L[0]+L[1])/2),r("center.lon",I),r("center.lat",D),v&&(r("projection.tilt"),r("projection.distance")),g&&r("projection.parallels",f.projParallels||[0,60]),r("projection.scale"),r("showland",!!x&&void 0)&&r("landcolor"),r("showlakes",!!x&&void 0)&&r("lakecolor"),r("showrivers",!!x&&void 0)&&(r("rivercolor"),r("riverwidth")),r("showcountries",d&&"usa"!==c&&x)&&(r("countrycolor"),r("countrywidth")),("usa"===c||"north america"===c&&50===u)&&(r("showsubunits",x),r("subunitcolor"),r("subunitwidth")),d||r("showframe",x)&&(r("framecolor"),r("framewidth")),r("bgcolor"),r("fitbounds")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):y?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}t.exports=function(t,e,r){i(t,e,r,{type:"geo",attributes:s,handleDefaults:u,fullData:r,partition:"y"})}},50772:function(t,e,r){"use strict";var n=r(25722),i=r(87758),a=r(60220);t.exports=function(t){var e,s,l=[],u=1;if("string"==typeof t)if(n[t])l=n[t].slice(),s="rgb";else if("transparent"===t)u=0,s="rgb",l=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var c=t.slice(1);u=1,(p=c.length)<=4?(l=[parseInt(c[0]+c[0],16),parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16)],4===p&&(u=parseInt(c[3]+c[3],16)/255)):(l=[parseInt(c[0]+c[1],16),parseInt(c[2]+c[3],16),parseInt(c[4]+c[5],16)],8===p&&(u=parseInt(c[6]+c[7],16)/255)),l[0]||(l[0]=0),l[1]||(l[1]=0),l[2]||(l[2]=0),s="rgb"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(t)){var f=e[1],h="rgb"===f;s=c=f.replace(/a$/,"");var p="cmyk"===c?4:"gray"===c?1:3;l=e[2].trim().split(/\s*,\s*/).map(function(t,e){if(/%$/.test(t))return e===p?parseFloat(t)/100:"rgb"===c?255*parseFloat(t)/100:parseFloat(t);if("h"===c[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)}),f===c&&l.push(1),u=h||void 0===l[p]?1:l[p],l=l.slice(0,p)}else t.length>10&&/[0-9](?:\s|\/)/.test(t)&&(l=t.match(/([0-9]+)/g).map(function(t){return parseFloat(t)}),s=t.match(/([a-z])/gi).join("").toLowerCase());else if(isNaN(t))if(i(t)){var d=a(t.r,t.red,t.R,null);null!==d?(s="rgb",l=[d,a(t.g,t.green,t.G),a(t.b,t.blue,t.B)]):(s="hsl",l=[a(t.h,t.hue,t.H),a(t.s,t.saturation,t.S),a(t.l,t.lightness,t.L,t.b,t.brightness)]),u=a(t.a,t.alpha,t.opacity,1),null!=t.opacity&&(u/=100)}else(Array.isArray(t)||r.g.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(t))&&(l=[t[0],t[1],t[2]],s="rgb",u=4===t.length?t[3]:1);else s="rgb",l=[t>>>16,(65280&t)>>>8,255&t];return{space:s,values:l,alpha:u}};var o={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}},50780:function(t,e,r){"use strict";var n=r(83998),i=r(91300),a=r(94521),o=r(13625),s=r(18610),l=r(39555),u=r(34820),c=u.float32,f=u.fract32;t.exports=function(t,e){if("function"==typeof t?(e||(e={}),e.regl=t):e=t,e.length&&(e.positions=e),!(t=e.regl).hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");var r,u,p,d,v,g,y=t._gl,m={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},x=[];return d=t.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),u=t.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),p=t.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),v=t.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),g=t.buffer({usage:"static",type:"float",data:h}),T(e),r=t({vert:"\n\t\tprecision highp float;\n\n\t\tattribute vec2 position, positionFract;\n\t\tattribute vec4 error;\n\t\tattribute vec4 color;\n\n\t\tattribute vec2 direction, lineOffset, capOffset;\n\n\t\tuniform vec4 viewport;\n\t\tuniform float lineWidth, capSize;\n\t\tuniform vec2 scale, scaleFract, translate, translateFract;\n\n\t\tvarying vec4 fragColor;\n\n\t\tvoid main() {\n\t\t\tfragColor = color / 255.;\n\n\t\t\tvec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;\n\n\t\t\tvec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;\n\n\t\t\tvec2 position = position + dxy;\n\n\t\t\tvec2 pos = (position + translate) * scale\n\t\t\t\t+ (positionFract + translateFract) * scale\n\t\t\t\t+ (position + translate) * scaleFract\n\t\t\t\t+ (positionFract + translateFract) * scaleFract;\n\n\t\t\tpos += pixelOffset / viewport.zw;\n\n\t\t\tgl_Position = vec4(pos * 2. - 1., 0, 1);\n\t\t}\n\t\t",frag:"\n\t\tprecision highp float;\n\n\t\tvarying vec4 fragColor;\n\n\t\tuniform float opacity;\n\n\t\tvoid main() {\n\t\t\tgl_FragColor = fragColor;\n\t\t\tgl_FragColor.a *= opacity;\n\t\t}\n\t\t",uniforms:{range:t.prop("range"),lineWidth:t.prop("lineWidth"),capSize:t.prop("capSize"),opacity:t.prop("opacity"),scale:t.prop("scale"),translate:t.prop("translate"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{color:{buffer:d,offset:function(t,e){return 4*e.offset},divisor:1},position:{buffer:u,offset:function(t,e){return 8*e.offset},divisor:1},positionFract:{buffer:p,offset:function(t,e){return 8*e.offset},divisor:1},error:{buffer:v,offset:function(t,e){return 16*e.offset},divisor:1},direction:{buffer:g,stride:24,offset:0},lineOffset:{buffer:g,stride:24,offset:8},capOffset:{buffer:g,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop("viewport")},viewport:t.prop("viewport"),stencil:!1,instances:t.prop("count"),count:h.length}),s(b,{update:T,draw:_,destroy:A,regl:t,gl:y,canvas:y.canvas,groups:x}),b;function b(t){t?T(t):null===t&&A(),_()}function _(e){if("number"==typeof e)return w(e);e&&!Array.isArray(e)&&(e=[e]),t._refresh(),x.forEach(function(t,r){t&&(e&&(e[r]?t.draw=!0:t.draw=!1),t.draw?w(r):t.draw=!0)})}function w(t){"number"==typeof t&&(t=x[t]),null!=t&&t&&t.count&&t.color&&t.opacity&&t.positions&&t.positions.length>1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],r(t),t.after&&t.after(t))}function T(t){if(t){null!=t.length?"number"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var e=0,r=0;if(b.groups=x=t.map(function(t,u){var c=x[u];return t?("function"==typeof t?t={after:t}:"number"==typeof t[0]&&(t={positions:t}),t=o(t,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),c||(x[u]=c={id:u,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=s({},m,t)),a(c,t,[{lineWidth:function(t){return.5*+t},capSize:function(t){return.5*+t},opacity:parseFloat,errors:function(t){return t=l(t),r+=t.length,t},positions:function(t,r){return t=l(t,"float64"),r.count=Math.floor(t.length/2),r.bounds=n(t,2),r.offset=e,e+=r.count,t}},{color:function(t,e){var r=e.count;if(t||(t="transparent"),!Array.isArray(t)||"number"==typeof t[0]){var n=t;t=Array(r);for(var a=0;a>>=e))<<3,(e|=r=(15<(t>>>=r))<<2)|(r=(3<(t>>>=r))<<1)|t>>>r>>1}function l(){function t(t){t:{for(var e=16;268435456>=e;e*=16)if(t<=e){t=e;break t}t=0}return 0<(e=r[s(t)>>2]).length?e.pop():new ArrayBuffer(t)}function e(t){r[s(t.byteLength)>>2].push(t)}var r=o(8,function(){return[]});return{alloc:t,free:e,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){e(t.buffer)}}}function u(t){return!!t&&"object"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&"number"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||$(t.data))}function c(t,e,r,n,i,a){for(var o=0;o(i=s)&&(i=n.buffer.byteLength,5123===f?i>>=1:5125===f&&(i>>=2)),n.vertCount=i,i=o,0>o&&(i=4,1===(o=n.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),n.primType=i}function o(t){n.elementsCount--,delete s[t.id],t.buffer.destroy(),t.buffer=null}var s={},l=0,c={uint8:5121,uint16:5123};e.oes_element_index_uint&&(c.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var f=[];return{create:function(t,e){function s(t){if(t)if("number"==typeof t)l(t),f.primType=4,f.vertCount=0|t,f.type=5121;else{var e=null,r=35044,n=-1,i=-1,o=0,h=0;Array.isArray(t)||$(t)||u(t)?e=t:("data"in t&&(e=t.data),"usage"in t&&(r=nt[t.usage]),"primitive"in t&&(n=st[t.primitive]),"count"in t&&(i=0|t.count),"type"in t&&(h=c[t.type]),"length"in t?o=0|t.length:(o=i,5123===h||5122===h?o*=2:5125!==h&&5124!==h||(o*=4))),a(f,e,r,n,i,o,h)}else l(),f.primType=4,f.vertCount=0,f.type=5121;return s}var l=r.create(null,34963,!0),f=new i(l._buffer);return n.elementsCount++,s(t),s._reglType="elements",s._elements=f,s.subdata=function(t,e){return l.subdata(t,e),s},s.destroy=function(){o(f)},s},createStream:function(t){var e=f.pop();return e||(e=new i(r.create(null,34963,!0,!1)._buffer)),a(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){f.push(t)},getElements:function(t){return"function"==typeof t&&t._elements instanceof i?t._elements:null},clear:function(){Q(s).forEach(o)}}}function y(t){for(var e=J.allocType(5123,t.length),r=0;r>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;e[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15>=i,r.height>>=i,p(r,n[i]),t.mipmask|=1<e;++e)t.images[e]=null;return t}function C(t){for(var e=t.images,r=0;re){for(var r=0;r=--this.refCount&&F(this)}}),o.profile&&(a.getTotalTextureSize=function(){var t=0;return Object.keys(ut).forEach(function(e){t+=ut[e].stats.size}),t}),{create2D:function(e,r){function n(t,e){var r=i.texInfo;P.call(r);var a=L();return"number"==typeof t?M(a,0|t,"number"==typeof e?0|e:0|t):t?(O(r,t),S(a,t)):M(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,l(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,z(i),E(a,3553),I(r,3553),R(),C(a),o.profile&&(i.stats.size=k(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=X[i.internalformat],n.type=K[i.type],n.mag=rt[r.magFilter],n.min=nt[r.minFilter],n.wrapS=it[r.wrapS],n.wrapT=it[r.wrapT],n}var i=new D(3553);return ut[i.id]=i,a.textureCount++,n(e,r),n.subimage=function(t,e,r,a){e|=0,r|=0,a|=0;var o=v();return l(o,i),o.width=0,o.height=0,p(o,t),o.width=o.width||(i.width>>a)-e,o.height=o.height||(i.height>>a)-r,z(i),d(o,3553,e,r,a),R(),g(o),n},n.resize=function(e,r){var a=0|e,s=0|r||a;if(a===i.width&&s===i.height)return n;n.width=i.width=a,n.height=i.height=s,z(i);for(var l=0;i.mipmask>>l;++l){var u=a>>l,c=s>>l;if(!u||!c)break;t.texImage2D(3553,l,i.format,u,c,0,i.format,i.type,null)}return R(),o.profile&&(i.stats.size=k(i.internalformat,i.type,a,s,!1,!1)),n},n._reglType="texture2d",n._texture=i,o.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(e,r,n,i,s,u){function f(t,e,r,n,i,a){var s,u=h.texInfo;for(P.call(u),s=0;6>s;++s)y[s]=L();if("number"!=typeof t&&t){if("object"==typeof t)if(e)S(y[0],t),S(y[1],e),S(y[2],r),S(y[3],n),S(y[4],i),S(y[5],a);else if(O(u,t),c(h,t),"faces"in t)for(t=t.faces,s=0;6>s;++s)l(y[s],h),S(y[s],t[s]);else for(s=0;6>s;++s)S(y[s],t)}else for(t=0|t||1,s=0;6>s;++s)M(y[s],t,t);for(l(h,y[0]),h.mipmask=u.genMipmaps?(y[0].width<<1)-1:y[0].mipmask,h.internalformat=y[0].internalformat,f.width=y[0].width,f.height=y[0].height,z(h),s=0;6>s;++s)E(y[s],34069+s);for(I(u,34067),R(),o.profile&&(h.stats.size=k(h.internalformat,h.type,f.width,f.height,u.genMipmaps,!0)),f.format=X[h.internalformat],f.type=K[h.type],f.mag=rt[u.magFilter],f.min=nt[u.minFilter],f.wrapS=it[u.wrapS],f.wrapT=it[u.wrapT],s=0;6>s;++s)C(y[s]);return f}var h=new D(34067);ut[h.id]=h,a.cubeCount++;var y=Array(6);return f(e,r,n,i,s,u),f.subimage=function(t,e,r,n,i){r|=0,n|=0,i|=0;var a=v();return l(a,h),a.width=0,a.height=0,p(a,e),a.width=a.width||(h.width>>i)-r,a.height=a.height||(h.height>>i)-n,z(h),d(a,34069+t,r,n,i),R(),g(a),f},f.resize=function(e){if((e|=0)!==h.width){f.width=h.width=e,f.height=h.height=e,z(h);for(var r=0;6>r;++r)for(var n=0;h.mipmask>>n;++n)t.texImage2D(34069+r,n,h.format,e>>n,e>>n,0,h.format,h.type,null);return R(),o.profile&&(h.stats.size=k(h.internalformat,h.type,f.width,f.height,!1,!0)),f}},f._reglType="textureCube",f._texture=h,o.profile&&(f.stats=h.stats),f.destroy=function(){h.decRef()},f},clear:function(){for(var e=0;er;++r)if(e.mipmask&1<>r,e.height>>r,0,e.internalformat,e.type,null);else for(var n=0;6>n;++n)t.texImage2D(34069+n,r,e.internalformat,e.width>>r,e.height>>r,0,e.internalformat,e.type,null);I(e.texInfo,e.target)})},refresh:function(){for(var e=0;ei;++i){for(u=0;ut;++t)r[t].resize(n);return e.width=e.height=n,e},_reglType:"framebufferCube",destroy:function(){r.forEach(function(t){t.destroy()})}})},clear:function(){Q(A).forEach(g)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,Q(A).forEach(function(e){e.framebuffer=t.createFramebuffer(),y(e)})}})}function E(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function L(t,e,r,n,i,a,o){function s(){this.id=++f,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var t=e.oes_vertex_array_object;this.vao=t?t.createVertexArrayOES():null,h[this.id]=this,this.buffers=[]}var l=r.maxAttributes,c=Array(l);for(r=0;r=h.byteLength?l.subdata(h):(l.destroy(),r.buffers[s]=null)),r.buffers[s]||(l=r.buffers[s]=i.create(c,34962,!1,!0)),f.buffer=i.getBuffer(l),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1,t[s]=1):i.getBuffer(c)?(f.buffer=i.getBuffer(c),f.size=0|f.buffer.dimension,f.normalized=!1,f.type=f.buffer.dtype,f.offset=0,f.stride=0,f.divisor=0,f.state=1):i.getBuffer(c.buffer)?(f.buffer=i.getBuffer(c.buffer),f.size=0|(+c.size||f.buffer.dimension),f.normalized=!!c.normalized||!1,f.type="type"in c?rt[c.type]:f.buffer.dtype,f.offset=0|(c.offset||0),f.stride=0|(c.stride||0),f.divisor=0|(c.divisor||0),f.state=1):"x"in c&&(f.x=+c.x||0,f.y=+c.y||0,f.z=+c.z||0,f.w=+c.w||0,f.state=2)}for(l=0;lt&&(t=e.stats.uniformsCount)}),t},r.getMaxAttributesCount=function(){var t=0;return h.forEach(function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)}),t}),{clear:function(){var e=t.deleteShader.bind(t);Q(u).forEach(e),u={},Q(c).forEach(e),c={},h.forEach(function(e){t.deleteProgram(e.program)}),h.length=0,f={},r.shaderCount=0},program:function(e,n,i,a){var o=f[n];o||(o=f[n]={});var p=o[e];if(p&&(p.refCount++,!a))return p;var d=new s(n,e);return r.shaderCount++,l(d,i,a),p||(o[e]=d),h.push(d),G(d,{destroy:function(){if(d.refCount--,0>=d.refCount){t.deleteProgram(d.program);var e=h.indexOf(d);h.splice(e,1),r.shaderCount--}0>=o[d.vertId].refCount&&(t.deleteShader(c[d.vertId]),delete c[d.vertId],delete f[d.fragId][d.vertId]),Object.keys(f[d.fragId]).length||(t.deleteShader(u[d.fragId]),delete u[d.fragId],delete f[d.fragId])}})},restore:function(){u={},c={};for(var t=0;t>>e|t<<32-e}function I(t,e){var r=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(r>>16)<<16|65535&r}function D(t){return Array.prototype.slice.call(t)}function z(t){return D(t).join("")}function R(t){function e(){var t=[],e=[];return G(function(){t.push.apply(t,D(arguments))},{def:function(){var r="v"+i++;return e.push(r),0>>4&15)+"0123456789abcdef".charAt(15&e);return r}(function(t){for(var e=Array(t.length>>2),r=0;r>5]|=(255&t.charCodeAt(r/8))<<24-r%32;var n,i,a,o,s,l,u,c,f,h,p,d=8*t.length;for(t=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],r=Array(64),e[d>>5]|=128<<24-d%32,e[15+(d+64>>9<<4)]=d,c=0;cf;f++){var v;16>f?r[f]=e[f+c]:(h=f,p=I(p=O(p=r[f-2],17)^O(p,19)^p>>>10,r[f-7]),v=O(v=r[f-15],7)^O(v,18)^v>>>3,r[h]=I(I(p,v),r[f-16])),h=I(I(I(I(u,h=O(h=o,6)^O(h,11)^O(h,25)),o&s^~o&l),Mt[f]),r[f]),p=I(u=O(u=d,2)^O(u,13)^O(u,22),d&n^d&i^n&i),u=l,l=s,s=o,o=I(a,h),a=i,i=n,n=d,d=I(h,p)}t[0]=I(d,t[0]),t[1]=I(n,t[1]),t[2]=I(i,t[2]),t[3]=I(a,t[3]),t[4]=I(o,t[4]),t[5]=I(s,t[5]),t[6]=I(l,t[6]),t[7]=I(u,t[7])}for(e="",r=0;r<32*t.length;r+=8)e+=String.fromCharCode(t[r>>5]>>>24-r%32&255);return e}(function(t){for(var e,r,n="",i=-1;++i=e&&56320<=r&&57343>=r&&(e=65536+((1023&e)<<10)+(1023&r),i++),127>=e?n+=String.fromCharCode(e):2047>=e?n+=String.fromCharCode(192|e>>>6&31,128|63&e):65535>=e?n+=String.fromCharCode(224|e>>>12&15,128|e>>>6&63,128|63&e):2097151>=e&&(n+=String.fromCharCode(240|e>>>18&7,128|e>>>12&63,128|e>>>6&63,128|63&e));return n}(r))),n[e])?n[e].apply(null,o):(r=Function.apply(null,a.concat(r)),n&&(n[e]=r),r.apply(null,o))}}}function F(t){return Array.isArray(t)||$(t)||u(t)}function B(t){return t.sort(function(t,e){return"viewport"===t?-1:"viewport"===e?1:t"+e+"?"+i+".constant["+e+"]:0;"}).join(""),"}}else{","if(",s,"(",i,".buffer)){",c,"=",a,".createStream(",34962,",",i,".buffer);","}else{",c,"=",a,".getBuffer(",i,".buffer);","}",f,'="type" in ',i,"?",o.glTypes,"[",i,".type]:",c,".dtype;",l.normalized,"=!!",i,".normalized;"),n("size"),n("offset"),n("stride"),n("divisor"),r("}}"),r.exit("if(",l.isStream,"){",a,".destroyStream(",c,");","}"),l})}),o}function M(t,e,n,i,a){function s(t){var e=u[t];e&&(h[t]=e)}var l=function(t,e){if("string"==typeof(r=t.static).frag&&"string"==typeof r.vert){if(0>1)",s],");")}function e(){r(l,".drawArraysInstancedANGLE(",[d,v,g,s],");")}p&&"null"!==p?m?t():(r("if(",p,"){"),t(),r("}else{"),e(),r("}")):e()}function o(){function t(){r(c+".drawElements("+[d,g,y,v+"<<(("+y+"-5121)>>1)"]+");")}function e(){r(c+".drawArrays("+[d,v,g]+");")}p&&"null"!==p?m?t():(r("if(",p,"){"),t(),r("}else{"),e(),r("}")):e()}var s,l,u=t.shared,c=u.gl,f=u.draw,h=n.draw,p=function(){var i=h.elements,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a),h.elementsActive&&a("if("+i+")"+c+".bindBuffer(34963,"+i+".buffer.buffer);")):(i=a.def(),a(i,"=",f,".","elements",";","if(",i,"){",c,".bindBuffer(",34963,",",i,".buffer.buffer);}","else if(",u.vao,".currentVAO){",i,"=",t.shared.elements+".getElements("+u.vao,".currentVAO.elements);",et?"":"if("+i+")"+c+".bindBuffer(34963,"+i+".buffer.buffer);","}")),i}(),d=i("primitive"),v=i("offset"),g=function(){var i=h.count,a=e;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(t,a)):i=a.def(f,".","count"),i}();if("number"==typeof g){if(0===g)return}else r("if(",g,"){"),r.exit("}");Q&&(s=i("instances"),l=t.instancing);var y=p+".type",m=h.elements&&j(h.elements)&&!h.vaoActive;Q&&("number"!=typeof s||0<=s)?"string"==typeof s?(r("if(",s,">0){"),a(),r("}else if(",s,"<0){"),o(),r("}")):a():o()}function H(t,e,r,n,i){return i=(e=_()).proc("body",i),Q&&(e.instancing=i.def(e.shared.extensions,".angle_instanced_arrays")),t(e,i,r,n),e.compile().body}function q(t,e,r,n){P(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,".setVAO(",r.drawVAO.append(t,e),");"):e(t.shared.vao,".setVAO(",t.shared.vao,".targetVAO);"):(e(t.shared.vao,".setVAO(null);"),I(t,e,r,n.attributes,function(){return!0})),D(t,e,r,n.uniforms,function(){return!0},!1),z(t,e,e,r)}function Y(t,e,r,n){function i(){return!0}t.batchId="a1",P(t,e),I(t,e,r,n.attributes,i),D(t,e,r,n.uniforms,i,!1),z(t,e,e,r)}function Z(t,e,r,n){function i(t){return t.contextDep&&o||t.propDep}function a(t){return!i(t)}P(t,e);var o=r.contextDep,s=e.def(),l=e.def();t.shared.props=l,t.batchId=s;var u=t.scope(),c=t.scope();e(u.entry,"for(",s,"=0;",s,"<","a1",";++",s,"){",l,"=","a0","[",s,"];",c,"}",u.exit),r.needsContext&&S(t,c,r.context),r.needsFramebuffer&&E(t,c,r.framebuffer),C(t,c,r.state,i),r.profile&&i(r.profile)&&O(t,c,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?c(t.shared.vao,".setVAO(",r.drawVAO.append(t,c),");"):u(t.shared.vao,".setVAO(",r.drawVAO.append(t,u),");"):u(t.shared.vao,".setVAO(",t.shared.vao,".targetVAO);"):(u(t.shared.vao,".setVAO(null);"),I(t,u,r,n.attributes,a),I(t,c,r,n.attributes,i)),D(t,u,r,n.uniforms,a,!1),D(t,c,r,n.uniforms,i,!0),z(t,u,c,r)):(e=t.global.def("{}"),n=r.shader.progVar.append(t,c),l=c.def(n,".id"),u=c.def(e,"[",l,"]"),c(t.shared.gl,".useProgram(",n,".program);","if(!",u,"){",u,"=",e,"[",l,"]=",t.link(function(e){return H(Y,t,r,e,2)}),"(",n,");}",u,".call(this,a0[",s,"],",s,");"))}function X(t,r){function n(e){var n=r.shader[e];n&&(n=n.append(t,i),isNaN(n)?i.set(a.shader,"."+e,n):i.set(a.shader,"."+e,t.link(n,{stable:!0})))}var i=t.proc("scope",3);t.batchId="a2";var a=t.shared,o=a.current;if(S(t,i,r.context),r.framebuffer&&r.framebuffer.append(t,i),B(Object.keys(r.state)).forEach(function(e){var n=r.state[e],o=n.append(t,i);m(o)?o.forEach(function(r,n){isNaN(r)?i.set(t.next[e],"["+n+"]",r):i.set(t.next[e],"["+n+"]",t.link(r,{stable:!0}))}):j(n)?i.set(a.next,"."+e,t.link(o,{stable:!0})):i.set(a.next,"."+e,o)}),O(t,i,r,!0,!0),["elements","offset","count","instances","primitive"].forEach(function(e){var n=r.draw[e];n&&(n=n.append(t,i),isNaN(n)?i.set(a.draw,"."+e,n):i.set(a.draw,"."+e,t.link(n),{stable:!0}))}),Object.keys(r.uniforms).forEach(function(n){var o=r.uniforms[n].append(t,i);Array.isArray(o)&&(o="["+o.map(function(e){return isNaN(e)?e:t.link(e,{stable:!0})})+"]"),i.set(a.uniforms,"["+t.link(e.id(n),{stable:!0})+"]",o)}),Object.keys(r.attributes).forEach(function(e){var n=r.attributes[e].append(t,i),a=t.scopeAttrib(e);Object.keys(new K).forEach(function(t){i.set(a,"."+t,n[t])})}),r.scopeVAO){var s=r.scopeVAO.append(t,i);isNaN(s)?i.set(a.vao,".targetVAO",s):i.set(a.vao,".targetVAO",t.link(s,{stable:!0}))}n("vert"),n("frag"),0=--this.refCount&&o(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var t=0;return Object.keys(c).forEach(function(e){t+=c[e].stats.size}),t}),{create:function(e,r){function o(e,r){var n=0,a=0,c=32854;if("object"==typeof e&&e?("shape"in e?(n=0|(a=e.shape)[0],a=0|a[1]):("radius"in e&&(n=a=0|e.radius),"width"in e&&(n=0|e.width),"height"in e&&(a=0|e.height)),"format"in e&&(c=s[e.format])):"number"==typeof e?(n=0|e,a="number"==typeof r?0|r:n):e||(n=a=1),n!==u.width||a!==u.height||c!==u.format)return o.width=u.width=n,o.height=u.height=a,u.format=c,t.bindRenderbuffer(36161,u.renderbuffer),t.renderbufferStorage(36161,c,n,a),i.profile&&(u.stats.size=wt[u.format]*u.width*u.height),o.format=l[u.format],o}var u=new a(t.createRenderbuffer());return c[u.id]=u,n.renderbufferCount++,o(e,r),o.resize=function(e,r){var n=0|e,a=0|r||n;return n===u.width&&a===u.height||(o.width=u.width=n,o.height=u.height=a,t.bindRenderbuffer(36161,u.renderbuffer),t.renderbufferStorage(36161,u.format,n,a),i.profile&&(u.stats.size=wt[u.format]*u.width*u.height)),o},o._reglType="renderbuffer",o._renderbuffer=u,i.profile&&(o.stats=u.stats),o.destroy=function(){u.decRef()},o},clear:function(){Q(c).forEach(o)},restore:function(){Q(c).forEach(function(e){e.renderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(36161,e.renderbuffer),t.renderbufferStorage(36161,e.format,e.width,e.height)}),t.bindRenderbuffer(36161,null)}}},At=[];At[6408]=4,At[6407]=3;var kt=[];kt[5121]=1,kt[5126]=4,kt[36193]=2;var Mt=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],St=["x","y","z","w"],Et="blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "),Lt={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},Ct={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Pt={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Ot={cw:2304,ccw:2305},It=new N(!1,!1,!1,function(){});return function(t){function e(){if(0===J.length)T&&T.update(),et=null;else{et=Z.next(e),f();for(var t=J.length-1;0<=t;--t){var r=J[t];r&&r(O,null,0)}d.flush(),T&&T.update()}}function r(){!et&&0=J.length&&n()}}}}function c(){var t=V.viewport,e=V.scissor_box;t[0]=t[1]=e[0]=e[1]=0,O.viewportWidth=O.framebufferWidth=O.drawingBufferWidth=t[2]=e[2]=d.drawingBufferWidth,O.viewportHeight=O.framebufferHeight=O.drawingBufferHeight=t[3]=e[3]=d.drawingBufferHeight}function f(){O.tick+=1,O.time=p(),c(),U.procs.poll()}function h(){B.refresh(),c(),U.procs.refresh(),T&&T.update()}function p(){return(X()-A)/1e3}if(!(t=a(t)))return null;var d=t.gl,y=d.getContextAttributes();d.isContextLost();var m=function(t,e){function r(e){var r;e=e.toLowerCase();try{r=n[e]=t.getExtension(e)}catch(t){}return!!r}for(var n={},i=0;ie;++e)rt(G({framebuffer:t.framebuffer.faces[e]},t),l);else rt(t,l);else l(0,t)},prop:W.define.bind(null,1),context:W.define.bind(null,2),this:W.define.bind(null,3),draw:s({}),buffer:function(t){return D.create(t,34962,!1,!1)},elements:function(t){return z.create(t,!1)},texture:B.create2D,cube:B.createCube,renderbuffer:N.create,framebuffer:j.create,framebufferCube:j.createCube,vao:R.createVAO,attributes:y,frame:u,on:function(t,e){var r;switch(t){case"frame":return u(e);case"lost":r=$;break;case"restore":r=Q;break;case"destroy":r=tt}return r.push(e),{cancel:function(){for(var t=0;tMath.abs(s)?(u.boxEnd[1]=u.boxStart[1]+Math.abs(a)*_*(s>=0?1:-1),u.boxEnd[1]l[3]&&(u.boxEnd[1]=l[3],u.boxEnd[0]=u.boxStart[0]+(l[3]-u.boxStart[1])/Math.abs(_))):(u.boxEnd[0]=u.boxStart[0]+Math.abs(s)/_*(a>=0?1:-1),u.boxEnd[0]l[2]&&(u.boxEnd[0]=l[2],u.boxEnd[1]=u.boxStart[1]+(l[2]-u.boxStart[0])*Math.abs(_)))}}else u.boxEnabled?(a=u.boxStart[0]!==u.boxEnd[0],s=u.boxStart[1]!==u.boxEnd[1],a||s?(a&&(g(0,u.boxStart[0],u.boxEnd[0]),t.xaxis.autorange=!1),s&&(g(1,u.boxStart[1],u.boxEnd[1]),t.yaxis.autorange=!1),t.relayoutCallback()):t.glplot.setDirty(),u.boxEnabled=!1,u.boxInited=!1):u.boxInited&&(u.boxInited=!1);break;case"pan":u.boxEnabled=!1,u.boxInited=!1,e?(u.panning||(u.dragStart[0]=n,u.dragStart[1]=i),Math.abs(u.dragStart[0]-n)=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(e,r){e>=t&&(this.__redo__[r]=++e)},this),this.__redo__.push(t)):f(this,"__redo__",l("c",[t])))}),_onDelete:l(function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach(function(e,r){e>t&&(this.__redo__[r]=--e)},this)))}),_onClear:l(function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0})}))),f(n.prototype,c.iterator,l(function(){return this}))},51239:function(t,e,r){"use strict";var n=r(16534);t.exports=function(t){n.select(t).selectAll(".im image").style("opacity",function(t){return t[0].trace.opacity})}},51257:function(t,e,r){"use strict";var n=r(94963);function i(t){return[t]}t.exports={keyFun:function(t){return t.key},repeat:i,descend:n,wrap:i,unwrap:function(t){return t[0]}}},51311:function(t,e,r){"use strict";r.d(e,{A:function(){return s},x:function(){return o}});var n=r(18901),i=r(32279),a=r(76610);function o(t,e){return[(0,n.gn)(e)*(0,n.F8)(t),(0,n.F8)(e)]}function s(){return(0,a.A)(o).scale(249.5).clipAngle(90+n.Ni)}o.invert=(0,i.I)(n.qR)},51326:function(t,e,r){"use strict";var n=r(15181),i=r(37070),a=r(86877),o=r(45728).dfltConfig,s=n.isPlainObject,l=Array.isArray,u=n.isArrayOrTypedArray;function c(t,e,r,i,a,o){o=o||[];for(var f=Object.keys(t),h=0;hx.length&&i.push(p("unused",a,y.concat(x.length)));var k,M,S,E,L,C=x.length,P=Array.isArray(A);if(P&&(C=Math.min(C,A.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(p("unused",a,y.concat(M,x[M].length)));var O=x[M].length;for(k=0;k<(P?Math.min(O,A[M].length):O);k++)S=P?A[M][k]:A,E=m[M][k],L=x[M][k],n.validate(E,S)?L!==E&&L!==+E&&i.push(p("dynamic",a,y.concat(M,k),E,L)):i.push(p("value",a,y.concat(M,k),E))}else i.push(p("array",a,y.concat(M),m[M]));else for(M=0;M1&&h.push(p("object","layout"))),i.supplyDefaults(d);for(var v=d._fullData,g=r.length,y=0;y0,function(t){c||(c=t),t&&h.forEach(l),a||(h.forEach(l),f(c))})});return e.reduce(u)}},51676:function(t,e,r){"use strict";var n=r(15181);e.getSubplot=function(t){return t.subplot||t.xaxis+t.yaxis||t.geo},e.isTraceInSubplots=function(t,r){if("splom"===t.type){for(var n=t.xaxes||[],i=t.yaxes||[],a=0;a=0&&r.index=2&&n<=6},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{century:o[Math.floor((i.year()-1)/100)+1]||""}},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year()+(i.year()<0?1:0),e=i.month(),(r=i.day())+(e>1?16:0)+(e>2?32*(e-2):0)+400*(t-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var o={20:"Fruitbat",21:"Anchovy"};n.calendars.discworld=a},51698:function(t,e,r){"use strict";t.exports=r(25441)},51958:function(t,e){"use strict";e.isLeftAnchor=function(t){return"left"===t.xanchor||"auto"===t.xanchor&&t.x<=1/3},e.isCenterAnchor=function(t){return"center"===t.xanchor||"auto"===t.xanchor&&t.x>1/3&&t.x<2/3},e.isRightAnchor=function(t){return"right"===t.xanchor||"auto"===t.xanchor&&t.x>=2/3},e.isTopAnchor=function(t){return"top"===t.yanchor||"auto"===t.yanchor&&t.y>=2/3},e.isMiddleAnchor=function(t){return"middle"===t.yanchor||"auto"===t.yanchor&&t.y>1/3&&t.y<2/3},e.isBottomAnchor=function(t){return"bottom"===t.yanchor||"auto"===t.yanchor&&t.y<=1/3}},52003:function(t,e,r){"use strict";var n=r(15181);function i(t){return n.extendFlat({},t,{edgepaths:n.extendDeep([],t.edgepaths),paths:n.extendDeep([],t.paths),starts:n.extendDeep([],t.starts)})}t.exports=function(t,e){var r,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case"=":case"<":return t;case">":for(1!==t.length&&n.warn("Contour data invalid for the specified inequality operation."),a=t[0],r=0;r=e-.5)return!1;return!0}h.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return Array.isArray(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var n,f=t.x.length,h=c(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!g(t.i,f)||!g(t.j,f)||!g(t.k,f))return;n=c(v(t.i),v(t.j),v(t.k))}else n=0===t.alphahull?o(h):t.alphahull>0?a(t.alphahull,h):function(t,e){for(var r=["x","y","z"].indexOf(t),n=[],a=e.length,o=0;o0?(g="v",y=x>0?Math.min(_,b):Math.min(b)):x>0?(g="h",y=Math.min(_)):y=0;if(y){e._length=y;var S=r("orientation",g);e._hasPreCompStats?"v"===S&&0===x?(r("x0",0),r("dx",1)):"h"===S&&0===m&&(r("y0",0),r("dy",1)):"v"===S&&0===x?r("x0"):"h"===S&&0===m&&r("y0"),i.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y"],a)}else e.visible=!1}function f(t,e,r,i){var a=i.prefix,o=n.coerce2(t,e,u,"marker.outliercolor"),s=r("marker.line.outliercolor"),l="outliers";e._hasPreCompStats?l="all":(o||s)&&(l="suspectedoutliers");var c=r(a+"points",l);c?(r("jitter","all"===c?.3:0),r("pointpos","all"===c?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.angle"),r("marker.color",e.line.color),r("marker.line.color"),r("marker.line.width"),"suspectedoutliers"===c&&(r("marker.line.outliercolor",e.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text"),r("hovertext")):delete e.marker;var f=r("hoveron");"all"!==f&&-1===f.indexOf("points")||r("hovertemplate"),n.coerceSelectionMarkerOpacity(e,r)}t.exports={supplyDefaults:function(t,e,r,i){function s(r,i){return n.coerce(t,e,u,r,i)}if(c(t,e,s,i),!1!==e.visible){o(t,e,i,s),s("xhoverformat"),s("yhoverformat");var l=e._hasPreCompStats;l&&(s("lowerfence"),s("upperfence")),s("line.color",(t.marker||{}).color||r),s("line.width"),s("fillcolor",a.addOpacity(e.line.color,.5));var h=!1;if(l){var p=s("mean"),d=s("sd");p&&p.length&&(h=!0,d&&d.length&&(h="sd"))}s("boxmean",h),s("whiskerwidth"),s("width"),s("quartilemethod");var v=!1;if(l){var g=s("notchspan");g&&g.length&&(v=!0)}else n.validate(t.notchwidth,u.notchwidth)&&(v=!0);s("notched",v)&&s("notchwidth"),f(t,e,s,{prefix:"box"})}},crossTraceDefaults:function(t,e){var r,i;function a(t){return n.coerce(i._input,i,u,t)}for(var o=0;o=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],u=l,f=a;i*fe){h=r;break}}if(a=c,isNaN(a)&&(a=isNaN(f)||isNaN(h)?isNaN(f)?h:f:e-u[f][1]t[1]+r||e=.9*t[1]+.1*t[0]?"n":e<=.9*t[0]+.1*t[1]?"s":"ns"}(d,e);v&&(o.interval=l[a],o.intervalPix=d,o.region=v)}}if(t.ordinal&&!o.region){var g=t.unitTickvals,m=t.unitToPaddedPx.invert(e);for(r=0;r=x[0]&&m<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[r-a.grabPoint,r+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(r)].sort(s),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),b(t.parentNode)}function T(t,e){var r=_(e,e.height-i.mouse(t)[1]-2*n.verticalPadding),a="crosshair";r.clickableOrdinalRange?a="pointer":r.region&&(a=r.region+"-resize"),i.select(document.body).style("cursor",a)}function A(t){t.on("mousemove",function(t){i.event.preventDefault(),t.parent.inBrushDrag||T(this,t)}).on("mouseleave",function(t){t.parent.inBrushDrag||m()}).call(i.behavior.drag().on("dragstart",function(t){!function(t,e){i.event.sourceEvent.stopPropagation();var r=e.height-i.mouse(t)[1]-2*n.verticalPadding,a=e.unitToPaddedPx.invert(r),o=e.brush,s=_(e,r),l=s.interval,u=o.svgBrush;if(u.wasDragged=!1,u.grabbingBar="ns"===s.region,u.grabbingBar){var c=l.map(e.unitToPaddedPx);u.grabPoint=r-c[0]-n.verticalPadding,u.barLength=c[1]-c[0]}u.clickableOrdinalRange=s.clickableOrdinalRange,u.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(u.stayingIntervals=u.stayingIntervals.filter(function(t){return t[0]!==l[0]&&t[1]!==l[1]})),u.startExtent=s.region?l["s"===s.region?1:0]:a,e.parent.inBrushDrag=!0,u.brushStartCallback()}(this,t)}).on("drag",function(t){w(this,t)}).on("dragend",function(t){!function(t,e){var r=e.brush,n=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,i.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,m(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),b(t.parentNode),void a.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);var s=function(){n.set(n.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(u?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),u?b(t.parentNode,s):(s(),b(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}(this,t)}))}function k(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}t.exports={makeBrush:function(t,e,r,n,i,a){var o,l=function(){var t,e,r=[];return{set:function(n){1===(r=n.map(function(t){return t.slice().sort(s)}).sort(k)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=S(r),e=r.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return l.set(r),{filter:l,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:(o=i,function(t){var e=t.brush,r=function(t){return t.svgBrush.extent.map(function(t){return t.slice()})}(e),n=r.slice();e.filter.set(n),o()}),brushEndCallback:a}}},ensureAxisBrush:function(t,e,r){var i=t.selectAll("."+n.cn.axisBrush).data(o,a);i.enter().append("g").classed(n.cn.axisBrush,!0),function(t,e,r){var i=r._context.staticPlot,a=t.selectAll(".background").data(o);a.enter().append("rect").classed("background",!0).call(d).call(v).style("pointer-events",i?"none":"auto").attr("transform",l(0,n.verticalPadding)),a.call(A).attr("height",function(t){return t.height-n.verticalPadding});var s=t.selectAll(".highlight-shadow").data(o);s.enter().append("line").classed("highlight-shadow",!0).attr("x",-n.bar.width/2).attr("stroke-width",n.bar.width+n.bar.strokeWidth).attr("stroke",e).attr("opacity",n.bar.strokeOpacity).attr("stroke-linecap","butt"),s.attr("y1",function(t){return t.height}).call(x);var u=t.selectAll(".highlight").data(o);u.enter().append("line").classed("highlight",!0).attr("x",-n.bar.width/2).attr("stroke-width",n.bar.width-n.bar.strokeWidth).attr("stroke",n.bar.fillColor).attr("opacity",n.bar.fillOpacity).attr("stroke-linecap","butt"),u.attr("y1",function(t){return t.height}).call(x)}(i,e,r)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map(function(t){return t.sort(s)}),t=e.multiselect?S(t.sort(k)):[t[0]]):t=[t.sort(s)],e.tickvals){var r=e.tickvals.slice().sort(s);if(!(t=t.map(function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e}).filter(function(t){return t})).length)return}return t.length>1?t:t[0]}}},53063:function(t){t.exports=function(t,e,r){var n,i,a,o=r[0],s=r[1],l=r[2],u=Math.sqrt(o*o+s*s+l*l);return Math.abs(u)<1e-6?null:(o*=u=1/u,s*=u,l*=u,n=Math.sin(e),a=1-(i=Math.cos(e)),t[0]=o*o*a+i,t[1]=s*o*a+l*n,t[2]=l*o*a-s*n,t[3]=0,t[4]=o*s*a-l*n,t[5]=s*s*a+i,t[6]=l*s*a+o*n,t[7]=0,t[8]=o*l*a+s*n,t[9]=s*l*a-o*n,t[10]=l*l*a+i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}},53125:function(t,e,r){"use strict";var n=r(32832),i=r(56852);t.exports=function(t,e,r,a,o){var s,l=r("contours.coloring"),u="";"fill"===l&&(s=r("contours.showlines")),!1!==s&&("lines"!==l&&(u=r("line.color","#000")),r("line.width",.5),r("line.dash")),"none"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,n(t,e,a,r,{prefix:"",cLetter:"z"})),r("line.smoothing"),i(r,a,u,o)}},53128:function(t,e,r){"use strict";var n=r(15181).isArray1D;t.exports=function(t,e,r){var i=r("x"),a=i&&i.length,o=r("y"),s=o&&o.length;if(!a&&!s)return!1;if(e._cheater=!i,a&&!n(i)||s&&!n(o))e._length=null;else{var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),e.a&&e.a.length&&(l=Math.min(l,e.a.length)),e.b&&e.b.length&&(l=Math.min(l,e.b.length)),e._length=l}return!0}},53188:function(t){"use strict";t.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}},53373:function(t,e,r){"use strict";var n=r(7514).selectMode,i=r(7826).clearOutline,a=r(99603),o=a.readPaths,s=a.writePaths,l=a.fixDatesForPaths;t.exports=function(t,e){if(t.length){var r=t[0][0];if(r){var a=r.getAttribute("d"),u=e.gd,c=u._fullLayout.newselection,f=e.plotinfo,h=f.xaxis,p=f.yaxis,d=e.isActiveSelection,v=e.dragmode,g=(u.layout||{}).selections||[];if(!n(v)&&void 0!==d){var y=u._fullLayout._activeSelectionIndex;if(y0)-(t<0)},e.abs=function(t){var e=t>>31;return(t^e)-e},e.min=function(t,e){return e^(t^e)&-(t65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},e.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},e.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},e.countTrailingZeros=r,e.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,1+(t|=t>>>16)},e.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},e.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var n=new Array(256);!function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|n[t>>>16&255]<<8|n[t>>>24&255]},e.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},e.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},e.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},e.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},e.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>r(t)+1}},53812:function(t,e,r){"use strict";var n=r(65552),i=r(15181),a=r(26446);e.rangeToShapePosition=function(t){return"log"===t.type?t.r2d:function(t){return t}},e.shapePositionToRange=function(t){return"log"===t.type?t.d2r:function(t){return t}},e.decodeDate=function(t){return function(e){return e.replace&&(e=e.replace("_"," ")),t(e)}},e.encodeDate=function(t){return function(e){return t(e).replace(" ","_")}},e.extractPathCoords=function(t,e,r){var a=[];return t.match(n.segmentRE).forEach(function(t){var o=e[t.charAt(0)].drawn;if(void 0!==o){var s=t.substr(1).match(n.paramRE);if(s&&!(s.lengthp&&(t="X"),t});return a>p&&(d=d.replace(/[\s,]*X.*/,""),i.log("Ignoring extra params in segment "+t)),c+d})}(r,s,u);if("pixel"===r.xsizemode){var b=s(r.xanchor);c=b+r.x0,f=b+r.x1}else c=s(r.x0),f=s(r.x1);if("pixel"===r.ysizemode){var _=u(r.yanchor);h=_-r.y0,p=_-r.y1}else h=u(r.y0),p=u(r.y1);if("line"===d)return"M"+c+","+h+"L"+f+","+p;if("rect"===d)return"M"+c+","+h+"H"+f+"V"+p+"H"+c+"Z";var w=(c+f)/2,T=(h+p)/2,A=Math.abs(w-c),k=Math.abs(T-h),M="A"+A+","+k,S=w+A+","+T;return"M"+S+M+" 0 1,1 "+w+","+(T-k)+M+" 0 0,1 "+S+"Z"}},53851:function(t,e,r){"use strict";var n=r(52382);t.exports={moduleType:"component",name:n.name,layoutAttributes:r(62466),supplyLayoutDefaults:r(26741),draw:r(53853)}},53852:function(t,e,r){"use strict";var n=r(3438).bc,i=r(3438).bb;function a(t,e){if(t.length<4+e)return null;var r=i(t,e);return t.length>4&15,i=15&t[4],a=t[5]>>4&15,o=n(t,6),l=8,u=0;ue.width||t.width===e.width&&t.height>e.height?t:e}),i=r.reduce(function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e}),n.width>i.height||n.width===i.height&&n.height>i.width?n:i),s=1;e.transforms.forEach(function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if("imir"===t.type&&(s=0===t.value?r[s]:e[s=e[s=r[s]]]),"irot"===t.type)for(var n=0;n0&&(s=s.transition().duration(e.transition.duration).ease(e.transition.easing)),s.attr("transform",l(o-.5*f.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+f.stepInset+(r.inputAreaLength-2*f.stepInset)*Math.min(1,Math.max(0,e))}function L(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-f.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*f.stepInset-2*r.inputAreaStart)))}function C(t,e,r){var n=r._dims,i=s.ensureSingle(t,"rect",f.railTouchRectClass,function(n){n.call(k,e,t,r).style("pointer-events","all")});i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,f.tickOffset+r.ticklen+n.labelHeight)}).call(a.fill,r.bgcolor).attr("opacity",0),o.setTranslate(i,0,n.currentValueTotalHeight)}function P(t,e){var r=e._dims,n=r.inputAreaLength-2*f.railInset,i=s.ensureSingle(t,"rect",f.railRectClass);i.attr({width:n,height:f.railWidth,rx:f.railRadius,ry:f.railRadius,"shape-rendering":"crispEdges"}).call(a.stroke,e.bordercolor).call(a.fill,e.bgcolor).style("stroke-width",e.borderwidth+"px"),o.setTranslate(i,f.railInset,.5*(r.inputAreaWidth-f.railWidth)+r.currentValueTotalHeight)}t.exports=function(t){var e=t._context.staticPlot,r=t._fullLayout,a=function(t,e){for(var r=t[f.name],n=[],i=0;i0?[0]:[]);function l(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),i.autoMargin(t,g(e))}if(s.enter().append("g").classed(f.containerClassName,!0).style("cursor",e?null:"ew-resize"),s.exit().each(function(){n.select(this).selectAll("g."+f.groupClassName).each(l)}).remove(),0!==a.length){var u=s.selectAll("g."+f.groupClassName).data(a,y);u.enter().append("g").classed(f.groupClassName,!0),u.exit().each(l).remove();for(var c=0;c-1;s--){var l=a[s];if("Version/"===l.substr(0,8)){var u=l.substr(8).split(".")[0];if(n(u)&&(u=+u),u>=13)return!0}}return r}},54113:function(t){"use strict";t.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]},54129:function(t,e,r){"use strict";var n=r(62839),i=r(21073),a=r(76056),o=r(80515);t.exports=function(t){var e=a(arguments),r=t.length-(arguments.length-1);return n(e,1+(r>0?r:0),!0)},i?i(t.exports,"apply",{value:o}):t.exports.apply=o},54174:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"icicle",basePlotModule:r(47199),categories:[],animatable:!0,attributes:r(55077),layoutAttributes:r(86320),supplyDefaults:r(59378),supplyLayoutDefaults:r(61511),calc:r(54745)._,crossTraceCalc:r(54745).t,plot:r(47103),style:r(6343).style,colorbar:r(23814),meta:{}}},54222:function(t){"use strict";t.exports={cellPad:8,columnExtentOffset:10,columnTitleOffset:28,emptyHeaderHeight:16,latexCheck:/^\$.*\$$/,goldenRatio:1.618,lineBreaker:"
    ",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}},54249:function(t,e,r){"use strict";var n=r(5159),i=r(15181),a=r(78945).BADNUM;t.exports=function(t,e,r,o){var s,l,u,c,f,h;function p(t){if(n(t))return+t}if(e&&e.transpose){for(s=0,f=0;f0?e+S+E:e,bottom:r=r>0?r+S+E:r,left:a=a>0?a+S+E:a,right:i=i>0?i+S+E:i}}(s),d=function(t,e){var i=(0,n.T9)(t.nodes,function(t){return t.column}),s=o-r,c=l-a,f=s/(s+e.right+e.left),h=c/(c+e.top+e.bottom);return r=r*f+e.left,o=0==e.right?o:o*f,a=a*h+e.top,l*=h,t.nodes.forEach(function(t){t.x0=r+t.column*((o-r-u)/i),t.x1=t.x0+u}),h}(s,p);f*=d,s.links.forEach(function(t){t.width=t.value*f}),h.forEach(function(t){var e=t.length;t.forEach(function(t,r){t.depth==h.length-1&&1==e||0==t.depth&&1==e?(t.y0=l/2-t.value*f,t.y1=t.y0+t.value*f):t.partOfCycle?0==D(t,i)?(t.y0=l/2+r,t.y1=t.y0+t.value*f):"top"==t.circularLinkType?(t.y0=a+r,t.y1=t.y0+t.value*f):(t.y0=l-t.value*f-r,t.y1=t.y0+t.value*f):0==p.top||0==p.bottom?(t.y0=(l-a)/e*r,t.y1=t.y0+t.value*f):(t.y0=(l-a)/2-e/2+r,t.y1=t.y0+t.value*f)})})})(f),g();for(var p=1,d=c;d>0;--d)v(p*=.99,f),g();function v(t,e){var r=h.length;h.forEach(function(i){var a=i.length,o=i[0].depth;i.forEach(function(i){var s;if(i.sourceLinks.length||i.targetLinks.length)if(i.partOfCycle&&D(i,e)>0);else if(0==o&&1==a)s=i.y1-i.y0,i.y0=l/2-s/2,i.y1=l/2+s/2;else if(o==r-1&&1==a)s=i.y1-i.y0,i.y0=l/2-s/2,i.y1=l/2+s/2;else{var u=(0,n.i2)(i.sourceLinks,_),c=(0,n.i2)(i.targetLinks,b),f=((u&&c?(u+c)/2:u||c)-x(i))*t;i.y0+=f,i.y1+=f}})})}function g(){h.forEach(function(e){var r,n,i,o=a,s=e.length;for(e.sort(y),i=0;i0&&(r.y0+=n,r.y1+=n),o=r.y1+t;if((n=o-t-l)>0)for(o=r.y0-=n,r.y1-=n,i=s-2;i>=0;--i)(n=(r=e[i]).y1+t-o)>0&&(r.y0-=n,r.y1-=n),o=r.y0})}}(f,O,c),B(f);for(var p=0;p<4;p++)X(f,l,c),J(f,0,c),W(f,a,l,c),X(f,l,c),J(f,0,c);return function(t,e,r){var i=t.nodes,a=t.links,o=!1,s=!1;if(a.forEach(function(t){"top"==t.circularLinkType?o=!0:"bottom"==t.circularLinkType&&(s=!0)}),0==o||0==s){var l=(0,n.jk)(i,function(t){return t.y0}),u=(r-e)/((0,n.T9)(i,function(t){return t.y1})-l);i.forEach(function(t){var e=(t.y1-t.y0)*u;t.y0=(t.y0-l)*u,t.y1=t.y0+e}),a.forEach(function(t){t.y0=(t.y0-l)*u,t.y1=(t.y1-l)*u,t.width=t.width*u})}}(f,a,l),F(f,I,l,c),f}function B(t){t.nodes.forEach(function(t){t.sourceLinks.sort(g),t.targetLinks.sort(v)}),t.nodes.forEach(function(t){var e=t.y0,r=e,n=t.y1,i=n;t.sourceLinks.forEach(function(t){t.circular?(t.y0=n-t.width/2,n-=t.width):(t.y0=e+t.width/2,e+=t.width)}),t.targetLinks.forEach(function(t){t.circular?(t.y1=i-t.width/2,i-=t.width):(t.y1=r+t.width/2,r+=t.width)})})}return R.nodeId=function(t){return arguments.length?(c="function"==typeof t?t:p(t),R):c},R.nodeAlign=function(t){return arguments.length?(h="function"==typeof t?t:p(t),R):h},R.nodeWidth=function(t){return arguments.length?(u=+t,R):u},R.nodePadding=function(e){return arguments.length?(t=+e,R):t},R.nodes=function(t){return arguments.length?(M="function"==typeof t?t:p(t),R):M},R.links=function(t){return arguments.length?(C="function"==typeof t?t:p(t),R):C},R.size=function(t){return arguments.length?(r=a=0,o=+t[0],l=+t[1],R):[o-r,l-a]},R.extent=function(t){return arguments.length?(r=+t[0][0],o=+t[1][0],a=+t[0][1],l=+t[1][1],R):[[r,a],[o,l]]},R.iterations=function(t){return arguments.length?(O=+t,R):O},R.circularLinkGap=function(t){return arguments.length?(I=+t,R):I},R.nodePaddingRatio=function(t){return arguments.length?(e=+t,R):e},R.sortNodes=function(t){return arguments.length?(z=t,R):z},R.update=function(t){return P(t,c),B(t),t.links.forEach(function(t){t.circular&&(t.circularLinkType=t.y0+t.y1e.source.column)}function D(t,e){var r=0;t.sourceLinks.forEach(function(t){r=t.circular&&!Q(t,e)?r+1:r});var n=0;return t.targetLinks.forEach(function(t){n=t.circular&&!Q(t,e)?n+1:n}),r+n}function z(t){var e=t.source.sourceLinks,r=0;e.forEach(function(t){r=t.circular?r+1:r});var n=t.target.targetLinks,i=0;return n.forEach(function(t){i=t.circular?i+1:i}),!(r>1||i>1)}function R(t,e,r){return t.sort(B),t.forEach(function(n,i){var a=0;if(Q(n,r)&&z(n))n.circularPathData.verticalBuffer=a+n.width/2;else{for(var o=0;oa?s:a}n.circularPathData.verticalBuffer=a+n.width/2}}),t}function F(t,e,r,i){var o=(0,n.jk)(t.links,function(t){return t.source.y0});t.links.forEach(function(t){t.circular&&(t.circularPathData={})}),R(t.links.filter(function(t){return"top"==t.circularLinkType}),e,i),R(t.links.filter(function(t){return"bottom"==t.circularLinkType}),e,i),t.links.forEach(function(n){if(n.circular){if(n.circularPathData.arcRadius=n.width+E,n.circularPathData.leftNodeBuffer=5,n.circularPathData.rightNodeBuffer=5,n.circularPathData.sourceWidth=n.source.x1-n.source.x0,n.circularPathData.sourceX=n.source.x0+n.circularPathData.sourceWidth,n.circularPathData.targetX=n.target.x0,n.circularPathData.sourceY=n.y0,n.circularPathData.targetY=n.y1,Q(n,i)&&z(n))n.circularPathData.leftSmallArcRadius=E+n.width/2,n.circularPathData.leftLargeArcRadius=E+n.width/2,n.circularPathData.rightSmallArcRadius=E+n.width/2,n.circularPathData.rightLargeArcRadius=E+n.width/2,"bottom"==n.circularLinkType?(n.circularPathData.verticalFullExtent=n.source.y1+S+n.circularPathData.verticalBuffer,n.circularPathData.verticalLeftInnerExtent=n.circularPathData.verticalFullExtent-n.circularPathData.leftLargeArcRadius,n.circularPathData.verticalRightInnerExtent=n.circularPathData.verticalFullExtent-n.circularPathData.rightLargeArcRadius):(n.circularPathData.verticalFullExtent=n.source.y0-S-n.circularPathData.verticalBuffer,n.circularPathData.verticalLeftInnerExtent=n.circularPathData.verticalFullExtent+n.circularPathData.leftLargeArcRadius,n.circularPathData.verticalRightInnerExtent=n.circularPathData.verticalFullExtent+n.circularPathData.rightLargeArcRadius);else{var s=n.source.column,l=n.circularLinkType,u=t.links.filter(function(t){return t.source.column==s&&t.circularLinkType==l});"bottom"==n.circularLinkType?u.sort(j):u.sort(N);var c=0;u.forEach(function(t,r){t.circularLinkID==n.circularLinkID&&(n.circularPathData.leftSmallArcRadius=E+n.width/2+c,n.circularPathData.leftLargeArcRadius=E+n.width/2+r*e+c),c+=t.width}),s=n.target.column,u=t.links.filter(function(t){return t.target.column==s&&t.circularLinkType==l}),"bottom"==n.circularLinkType?u.sort(V):u.sort(U),c=0,u.forEach(function(t,r){t.circularLinkID==n.circularLinkID&&(n.circularPathData.rightSmallArcRadius=E+n.width/2+c,n.circularPathData.rightLargeArcRadius=E+n.width/2+r*e+c),c+=t.width}),"bottom"==n.circularLinkType?(n.circularPathData.verticalFullExtent=Math.max(r,n.source.y1,n.target.y1)+S+n.circularPathData.verticalBuffer,n.circularPathData.verticalLeftInnerExtent=n.circularPathData.verticalFullExtent-n.circularPathData.leftLargeArcRadius,n.circularPathData.verticalRightInnerExtent=n.circularPathData.verticalFullExtent-n.circularPathData.rightLargeArcRadius):(n.circularPathData.verticalFullExtent=o-S-n.circularPathData.verticalBuffer,n.circularPathData.verticalLeftInnerExtent=n.circularPathData.verticalFullExtent+n.circularPathData.leftLargeArcRadius,n.circularPathData.verticalRightInnerExtent=n.circularPathData.verticalFullExtent+n.circularPathData.rightLargeArcRadius)}n.circularPathData.leftInnerExtent=n.circularPathData.sourceX+n.circularPathData.leftNodeBuffer,n.circularPathData.rightInnerExtent=n.circularPathData.targetX-n.circularPathData.rightNodeBuffer,n.circularPathData.leftFullExtent=n.circularPathData.sourceX+n.circularPathData.leftLargeArcRadius+n.circularPathData.leftNodeBuffer,n.circularPathData.rightFullExtent=n.circularPathData.targetX-n.circularPathData.rightLargeArcRadius-n.circularPathData.rightNodeBuffer}if(n.circular)n.path=function(t){return"top"==t.circularLinkType?"M"+t.circularPathData.sourceX+" "+t.circularPathData.sourceY+" L"+t.circularPathData.leftInnerExtent+" "+t.circularPathData.sourceY+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftSmallArcRadius+" 0 0 0 "+t.circularPathData.leftFullExtent+" "+(t.circularPathData.sourceY-t.circularPathData.leftSmallArcRadius)+" L"+t.circularPathData.leftFullExtent+" "+t.circularPathData.verticalLeftInnerExtent+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftLargeArcRadius+" 0 0 0 "+t.circularPathData.leftInnerExtent+" "+t.circularPathData.verticalFullExtent+" L"+t.circularPathData.rightInnerExtent+" "+t.circularPathData.verticalFullExtent+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightLargeArcRadius+" 0 0 0 "+t.circularPathData.rightFullExtent+" "+t.circularPathData.verticalRightInnerExtent+" L"+t.circularPathData.rightFullExtent+" "+(t.circularPathData.targetY-t.circularPathData.rightSmallArcRadius)+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightSmallArcRadius+" 0 0 0 "+t.circularPathData.rightInnerExtent+" "+t.circularPathData.targetY+" L"+t.circularPathData.targetX+" "+t.circularPathData.targetY:"M"+t.circularPathData.sourceX+" "+t.circularPathData.sourceY+" L"+t.circularPathData.leftInnerExtent+" "+t.circularPathData.sourceY+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftSmallArcRadius+" 0 0 1 "+t.circularPathData.leftFullExtent+" "+(t.circularPathData.sourceY+t.circularPathData.leftSmallArcRadius)+" L"+t.circularPathData.leftFullExtent+" "+t.circularPathData.verticalLeftInnerExtent+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftLargeArcRadius+" 0 0 1 "+t.circularPathData.leftInnerExtent+" "+t.circularPathData.verticalFullExtent+" L"+t.circularPathData.rightInnerExtent+" "+t.circularPathData.verticalFullExtent+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightLargeArcRadius+" 0 0 1 "+t.circularPathData.rightFullExtent+" "+t.circularPathData.verticalRightInnerExtent+" L"+t.circularPathData.rightFullExtent+" "+(t.circularPathData.targetY+t.circularPathData.rightSmallArcRadius)+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightSmallArcRadius+" 0 0 1 "+t.circularPathData.rightInnerExtent+" "+t.circularPathData.targetY+" L"+t.circularPathData.targetX+" "+t.circularPathData.targetY}(n);else{var f=(0,a.pq)().source(function(t){return[t.source.x0+(t.source.x1-t.source.x0),t.y0]}).target(function(t){return[t.target.x0,t.y1]});n.path=f(n)}})}function B(t,e){return H(t)==H(e)?"bottom"==t.circularLinkType?j(t,e):N(t,e):H(e)-H(t)}function N(t,e){return t.y0-e.y0}function j(t,e){return e.y0-t.y0}function U(t,e){return t.y1-e.y1}function V(t,e){return e.y1-t.y1}function H(t){return t.target.column-t.source.column}function q(t){return t.target.x0-t.source.x1}function G(t,e){var r=O(t),n=q(e)/Math.tan(r);return"up"==$(t)?t.y1+n:t.y1-n}function Y(t,e){var r=O(t),n=q(e)/Math.tan(r);return"up"==$(t)?t.y1-n:t.y1+n}function W(t,e,r,n){t.links.forEach(function(i){if(!i.circular&&i.target.column-i.source.column>1){var a=i.source.column+1,o=i.target.column-1,s=1,l=o-a+1;for(s=1;a<=o;a++,s++)t.nodes.forEach(function(o){if(o.column==a){var u,c=s/(l+1),f=Math.pow(1-c,3),h=3*c*Math.pow(1-c,2),p=3*Math.pow(c,2)*(1-c),d=Math.pow(c,3),v=f*i.y0+h*i.y0+p*i.y1+d*i.y1,g=v-i.width/2,y=v+i.width/2;g>o.y0&&ga.y0&&i.y0a.y0&&i.y1a.y1)&&Z(t,u,e,r)})):(y>o.y0&&yo.y1)&&(u=y-o.y0+10,o=Z(o,u,e,r),t.nodes.forEach(function(t){M(t,n)!=M(o,n)&&t.column==o.column&&t.y0o.y1&&Z(t,u,e,r)}))}})}})}function Z(t,e,r,n){return t.y0+e>=r&&t.y1+e<=n&&(t.y0=t.y0+e,t.y1=t.y1+e,t.targetLinks.forEach(function(t){t.y1=t.y1+e}),t.sourceLinks.forEach(function(t){t.y0=t.y0+e})),t}function X(t,e,r,n){t.nodes.forEach(function(i){n&&i.y+(i.y1-i.y0)>e&&(i.y=i.y-(i.y+(i.y1-i.y0)-e));var a=t.links.filter(function(t){return M(t.source,r)==M(i,r)}),o=a.length;o>1&&a.sort(function(t,e){if(!t.circular&&!e.circular){if(t.target.column==e.target.column)return t.y1-e.y1;if(!K(t,e))return t.y1-e.y1;if(t.target.column>e.target.column){var r=Y(e,t);return t.y1-r}if(e.target.column>t.target.column)return Y(t,e)-e.y1}return t.circular&&!e.circular?"top"==t.circularLinkType?-1:1:e.circular&&!t.circular?"top"==e.circularLinkType?1:-1:t.circular&&e.circular?t.circularLinkType===e.circularLinkType&&"top"==t.circularLinkType?t.target.column===e.target.column?t.target.y1-e.target.y1:e.target.column-t.target.column:t.circularLinkType===e.circularLinkType&&"bottom"==t.circularLinkType?t.target.column===e.target.column?e.target.y1-t.target.y1:t.target.column-e.target.column:"top"==t.circularLinkType?-1:1:void 0});var s=i.y0;a.forEach(function(t){t.y0=s+t.width/2,s+=t.width}),a.forEach(function(t,e){if("bottom"==t.circularLinkType){for(var r=e+1,n=0;r1&&n.sort(function(t,e){if(!t.circular&&!e.circular){if(t.source.column==e.source.column)return t.y0-e.y0;if(!K(t,e))return t.y0-e.y0;if(e.source.column0?"up":"down"}function Q(t,e){return M(t.source,e)==M(t.target,e)}},54563:function(t,e,r){"use strict";var n=r(15181);t.exports=function(t,e,r,i,a){a=a||{},i("textposition"),n.coerceFont(i,"textfont",a.font||r.font),a.noSelect||(i("selected.textfont.color"),i("unselected.textfont.color"))}},54605:function(t,e,r){"use strict";var n=r(37070);e.name="funnelarea",e.plot=function(t,r,i,a){n.plotBasePlot(e.name,t,r,i,a)},e.clean=function(t,r,i,a){n.cleanBasePlot(e.name,t,r,i,a)}},54660:function(t,e,r){"use strict";var n=r(22994),i=r(37565),a=r(31164).line,o=r(30430).T,s=r(8357).extendFlat,l=r(92444).templatedArray,u=(r(85669),r(28209)),c=r(38532).LF,f=r(12367);t.exports=l("shape",{visible:s({},u.visible,{editType:"calc+arraydraw"}),showlegend:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},legend:s({},u.legend,{editType:"calc+arraydraw"}),legendgroup:s({},u.legendgroup,{editType:"calc+arraydraw"}),legendgrouptitle:{text:s({},u.legendgrouptitle.text,{editType:"calc+arraydraw"}),font:i({editType:"calc+arraydraw"}),editType:"calc+arraydraw"},legendrank:s({},u.legendrank,{editType:"calc+arraydraw"}),legendwidth:s({},u.legendwidth,{editType:"calc+arraydraw"}),type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},xref:s({},n.xref,{}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},yref:s({},n.yref,{}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:s({},a.color,{editType:"arraydraw"}),width:s({},a.width,{editType:"calc+arraydraw"}),dash:s({},o,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},label:{text:{valType:"string",dflt:"",editType:"arraydraw"},texttemplate:c({},{keys:Object.keys(f)}),font:i({editType:"calc+arraydraw",colorEditType:"arraydraw"}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"],editType:"arraydraw"},textangle:{valType:"angle",dflt:"auto",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],editType:"calc+arraydraw"},padding:{valType:"number",dflt:3,min:0,editType:"arraydraw"},editType:"arraydraw"},editType:"arraydraw"})},54707:function(t,e,r){"use strict";var n=r(19260).hoverPoints,i=r(26446).hoverLabelText;t.exports=function(t,e,r,a,o){var s=n(t,e,r,a,o);if(s){var l=(t=s[0]).cd[t.index],u=t.cd[0].trace;if(!u.cumulative.enabled){var c="h"===u.orientation?"y":"x";t[c+"Label"]=i(t[c+"a"],[l.ph0,l.ph1],u[c+"hoverformat"])}return s}}},54718:function(t,e,r){"use strict";function n(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}r.d(e,{GP:function(){return h},OE:function(){return v}});var i,a=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function o(t){if(!(e=a.exec(t)))throw new Error("invalid format: "+t);var e;return new s({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function s(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function l(t,e){var r=n(t,e);if(!r)return t+"";var i=r[0],a=r[1];return a<0?"0."+new Array(-a).join("0")+i:i.length>a+1?i.slice(0,a+1)+"."+i.slice(a+1):i+new Array(a-i.length+2).join("0")}o.prototype=s.prototype,s.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var u={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return l(100*t,e)},r:l,s:function(t,e){var r=n(t,e);if(!r)return t+"";var a=r[0],o=r[1],s=o-(i=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join("0"):s>0?a.slice(0,s)+"."+a.slice(s):"0."+new Array(1-s).join("0")+n(t,Math.max(0,e+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var f,h,p=Array.prototype.map,d=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function v(t){var e,r,a=void 0===t.grouping||void 0===t.thousands?c:(e=p.call(t.grouping,Number),r=t.thousands+"",function(t,n){for(var i=t.length,a=[],o=0,s=e[0],l=0;i>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),a.push(t.substring(i-=s,i+s)),!((l+=s+1)>n));)s=e[o=(o+1)%e.length];return a.reverse().join(r)}),s=void 0===t.currency?"":t.currency[0]+"",l=void 0===t.currency?"":t.currency[1]+"",f=void 0===t.decimal?".":t.decimal+"",h=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(p.call(t.numerals,String)),v=void 0===t.percent?"%":t.percent+"",g=void 0===t.minus?"-":t.minus+"",y=void 0===t.nan?"NaN":t.nan+"";function m(t){var e=(t=o(t)).fill,r=t.align,n=t.sign,c=t.symbol,p=t.zero,m=t.width,x=t.comma,b=t.precision,_=t.trim,w=t.type;"n"===w?(x=!0,w="g"):u[w]||(void 0===b&&(b=12),_=!0,w="g"),(p||"0"===e&&"="===r)&&(p=!0,e="0",r="=");var T="$"===c?s:"#"===c&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",A="$"===c?l:/[%p]/.test(w)?v:"",k=u[w],M=/[defgprs%]/.test(w);function S(t){var o,s,l,u=T,c=A;if("c"===w)c=k(t)+c,t="";else{var v=(t=+t)<0||1/t<0;if(t=isNaN(t)?y:k(Math.abs(t),b),_&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),v&&0===+t&&"+"!==n&&(v=!1),u=(v?"("===n?n:g:"-"===n||"("===n?"":n)+u,c=("s"===w?d[8+i/3]:"")+c+(v&&"("===n?")":""),M)for(o=-1,s=t.length;++o(l=t.charCodeAt(o))||l>57){c=(46===l?f+t.slice(o+1):t.slice(o))+c,t=t.slice(0,o);break}}x&&!p&&(t=a(t,1/0));var S=u.length+t.length+c.length,E=S>1)+u+t+c+E.slice(S);break;default:t=E+u+t+c}return h(t)}return b=void 0===b?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+""},S}return{format:m,formatPrefix:function(t,e){var r,i=m(((t=o(t)).type="f",t)),a=3*Math.max(-8,Math.min(8,Math.floor((r=e,((r=n(Math.abs(r)))?r[1]:NaN)/3)))),s=Math.pow(10,-a),l=d[8+a/3];return function(t){return i(s*t)+l}}}}f=v({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),h=f.format,f.formatPrefix},54745:function(t,e,r){"use strict";var n=r(60512);e._=function(t,e){return n.calc(t,e)},e.t=function(t){return n._runCrossTraceCalc("icicle",t)}},54791:function(t,e,r){"use strict";var n=r(5159),i=r(25623),a=r(15181).isArrayOrTypedArray;e.coerceString=function(t,e,r){if("string"==typeof e){if(e||!t.noBlank)return e}else if(("number"==typeof e||!0===e)&&!t.strict)return String(e);return void 0!==r?r:t.dflt},e.coerceNumber=function(t,e,r){if(n(e)){e=+e;var i=t.min,a=t.max;if(!(void 0!==i&&ea))return e}return void 0!==r?r:t.dflt},e.coerceColor=function(t,e,r){return i(e).isValid()?e:void 0!==r?r:t.dflt},e.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},e.getValue=function(t,e){var r;return Array.isArray(t)?e0?1:0}function r(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function n(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function i(t,e){return e*t.radius}t.exports={smith:r,reactanceArc:function(t,e,a,o){var s=n(t,r([a,e])),l=s[0],u=s[1],c=n(t,r([o,e])),f=c[0],h=c[1];if(0===e)return["M"+l+","+u,"L"+f+","+h].join(" ");var p=i(t,1/Math.abs(e));return["M"+l+","+u,"A"+p+","+p+" 0 0,"+(e<0?1:0)+" "+f+","+h].join(" ")},resistanceArc:function(t,a,o,s){var l=i(t,1/(a+1)),u=n(t,r([a,o])),c=u[0],f=u[1],h=n(t,r([a,s])),p=h[0],d=h[1];if(e(o)!==e(s)){var v=n(t,r([a,0]));return["M"+c+","+f,"A"+l+","+l+" 0 0,"+(00?"white":"black",c.lineWidth=Math.abs(p)),c.translate(.5*r,.5*f),c.scale(g,g),function(){if(null!=n)return n;var t=document.createElement("canvas").getContext("2d");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return n=!1;var e=new Path2D("M0,0h1v1h-1v-1Z");t.fillStyle="black",t.fill(e);var r=t.getImageData(0,0,1,1);return n=r&&r.data&&255===r.data[3]}()){var y=new Path2D(t);c.fill(y),p&&c.stroke(y)}else{var m=a(t);o(c,m),c.fill(),p&&c.stroke()}return c.setTransform(1,0,0,1,0,0),l(c,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*h})}},55070:function(t){"use strict";t.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}},55077:function(t,e,r){"use strict";var n=r(38532).rb,i=r(38532).ay,a=r(79335),o=r(79444).u,s=r(62736),l=r(75408),u=r(48519),c=r(93952),f=r(8357).extendFlat,h=r(30430).k;t.exports={labels:l.labels,parents:l.parents,values:l.values,branchvalues:l.branchvalues,count:l.count,level:l.level,maxdepth:l.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:u.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:f({colors:l.marker.colors,line:l.marker.line,pattern:h,editType:"calc"},a("marker",{colorAttr:"colors",anim:!1})),leaf:l.leaf,pathbar:u.pathbar,text:s.text,textinfo:l.textinfo,texttemplate:i({editType:"plot"},{keys:c.eventDataKeys.concat(["label","value"])}),hovertext:s.hovertext,hoverinfo:l.hoverinfo,hovertemplate:n({},{keys:c.eventDataKeys}),textfont:s.textfont,insidetextfont:s.insidetextfont,outsidetextfont:u.outsidetextfont,textposition:u.textposition,sort:s.sort,root:l.root,domain:o({name:"icicle",trace:!0,editType:"calc"})}},55217:function(t){"use strict";t.exports=function(t,e,r){if(0===t.length)return"";var n,i=[],a=r?3:1;for(n=0;n.999&&(g="turntable"):g="turntable")}else g="turntable";r("dragmode",g),r("hovermode",n.getDfltFromLayout("hovermode"))}t.exports=function(t,e,r){var i=e._basePlotModules.length>1;o(t,e,r,{type:c,attributes:l,handleDefaults:f,fullLayout:e,font:e.font,fullData:r,getDfltFromLayout:function(e){if(!i)return n.validate(t[e],l[e])?t[e]:void 0},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}},55270:function(t,e,r){"use strict";r.d(e,{A:function(){return i}});var n=r(77371);function i(){var t,e=[];return{point:function(e,r,n){t.push([e,r,n])},lineStart:function(){e.push(t=[])},lineEnd:n.A,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}},55380:function(t,e,r){"use strict";var n=r(58261),i=Math.abs,a=Math.floor;t.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?n(t)*a(i(t)):t}},55482:function(t,e,r){"use strict";var n=r(16534);t.exports=function(t){n.select(t).selectAll(".hm image").style("opacity",function(t){return t.trace.opacity})}},55581:function(t){t.exports=function(){"use strict";var t,e,r;function n(n,i){if(t)if(e){var a="var sharedChunk = {}; ("+t+")(sharedChunk); ("+e+")(sharedChunk);",o={};t(o),(r=i(o)).workerUrl=window.URL.createObjectURL(new Blob([a],{type:"text/javascript"}))}else e=i;else t=i}return n(0,function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r="1.10.1",n=i;function i(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}i.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},i.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},i.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},i.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},i.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var a=o;function o(t,e){this.x=t,this.y=e}function s(t,e,r,i){var a=new n(t,e,r,i);return function(t){return a.solve(t)}}o.prototype={clone:function(){return new o(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},o.convert=function(t){return t instanceof o?t:Array.isArray(t)?new o(t[0],t[1]):t};var l=s(.25,.1,.25,1);function u(t,e,r){return Math.min(r,Math.max(e,t))}function c(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function f(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function v(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function g(t,e){t.forEach(function(t){e[t]&&(e[t]=e[t].bind(e))})}function y(t,e){return-1!==t.indexOf(e,t.length-e.length)}function m(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function x(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function b(t){return Array.isArray(t)?t.map(b):"object"==typeof t&&t?m(t,b):t}var _={};function w(t){_[t]||("undefined"!=typeof console&&console.warn(t),_[t]=!0)}function T(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function A(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),""}),e["max-age"]){var r=parseInt(e["max-age"],10);isNaN(r)?delete e["max-age"]:e["max-age"]=r}return e}var S=null;function E(t){if(null==S){var e=t.navigator?t.navigator.userAgent:null;S=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return S}function L(t){try{var e=self[t];return e.setItem("_mapbox_test_",1),e.removeItem("_mapbox_test_"),!0}catch(t){return!1}}var C,P,O,I,D=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),z=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,R=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,F={now:D,frame:function(t){var e=z(t);return{cancel:function(){return R(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement("canvas"),n=r.getContext("2d");if(!n)throw new Error("failed to create canvas 2d context");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return C||(C=self.document.createElement("a")),C.href=t,C.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==P&&(P=self.matchMedia("(prefers-reduced-motion: reduce)")),P.matches)}},B={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf("https://api.mapbox.cn")?"https://events.mapbox.cn/events/v2":0===this.API_URL.indexOf("https://api.mapbox.com")?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},N={supported:!1,testSupport:function(t){!j&&I&&(U?V(t):O=t)}},j=!1,U=!1;function V(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,I),t.isContextLost())return;N.supported=!0}catch(t){}t.deleteTexture(e),j=!0}self.document&&((I=self.document.createElement("img")).onload=function(){O&&V(O),O=null,U=!0},I.onerror=function(){j=!0,O=null},I.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");var H="01";var q=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function G(t){return 0===t.indexOf("mapbox:")}q.prototype._createSkuToken=function(){var t=function(){for(var t="",e=0;e<10;e++)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",H,t].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},q.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},q.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},q.prototype.normalizeStyleURL=function(t,e){if(!G(t))return t;var r=X(t);return r.path="/styles/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeGlyphsURL=function(t,e){if(!G(t))return t;var r=X(t);return r.path="/fonts/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeSourceURL=function(t,e){if(!G(t))return t;var r=X(t);return r.path="/v4/"+r.authority+".json",r.params.push("secure"),this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeSpriteURL=function(t,e,r,n){var i=X(t);return G(t)?(i.path="/styles/v1"+i.path+"/sprite"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=""+e+r,J(i))},q.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!G(t))return t;var r=X(t),n=F.devicePixelRatio>=2||512===e?"@2x":"",i=N.supported?".webp":"$1";r.path=r.path.replace(/(\.(png|jpg)\d*)(?=$)/,""+n+i),r.path=r.path.replace(/^.+\/v4\//,"/"),r.path="/v4"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){w("Unable to write to LocalStorage")}},Q.prototype.processRequests=function(t){},Q.prototype.postEvent=function(t,e,n,i){var a=this;if(B.EVENTS_URL){var o=X(B.EVENTS_URL);o.params.push("access_token="+(i||B.ACCESS_TOKEN||""));var s={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:r,skuId:H,userId:this.anonId},l=e?f(s,e):s,u={url:J(o),headers:{"Content-Type":"text/plain"},body:JSON.stringify([l])};this.pendingRequest=At(u,function(t){a.pendingRequest=null,n(t),a.saveEventData(),a.processRequests(i)})}},Q.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var tt,et,rt=function(t){function e(){t.call(this,"map.load"),this.success={},this.skuToken=""}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(B.EVENTS_URL&&n||B.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return G(t)||W(t)}))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),v(this.anonId)||(this.anonId=d()),this.postEvent(i,{skuToken:this.skuToken},function(t){t||n&&(e.success[n]=!0)},t))}},e}(Q),nt=function(t){function e(e){t.call(this,"appUserTurnstile"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){B.EVENTS_URL&&B.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return G(t)||W(t)})&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=$(B.ACCESS_TOKEN),n=r?r.u:B.ACCESS_TOKEN,i=n!==this.eventData.tokenU;v(this.anonId)||(this.anonId=d(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{"enabled.telemetry":!1},function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)},t)}},e}(Q),it=new nt,at=it.postTurnstileEvent.bind(it),ot=new rt,st=ot.postMapLoadEvent.bind(ot),lt="mapbox-tiles",ut=500,ct=50;function ft(){self.caches&&!tt&&(tt=self.caches.open(lt))}function ht(t,e,r){if(ft(),tt){var n={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach(function(t,e){return n.headers.set(e,t)});var i=M(e.headers.get("Cache-Control")||"");i["no-store"]||(i["max-age"]&&n.headers.set("Expires",new Date(r+1e3*i["max-age"]).toUTCString()),new Date(n.headers.get("Expires")).getTime()-r<42e4||function(t,e){if(void 0===et)try{new Response(new ReadableStream),et=!0}catch(t){et=!1}et?e(t.body):t.blob().then(e)}(e,function(e){var r=new self.Response(e,n);ft(),tt&&tt.then(function(e){return e.put(pt(t.url),r)}).catch(function(t){return w(t.message)})}))}}function pt(t){var e=t.indexOf("?");return e<0?t:t.slice(0,e)}function dt(t,e){if(ft(),!tt)return e(null);var r=pt(t.url);tt.then(function(t){t.match(r).then(function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get("Expires")||0),r=M(t.headers.get("Cache-Control")||"");return e>Date.now()&&!r["no-cache"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)}).catch(e)}).catch(e)}var vt,gt=1/0;function yt(){return null==vt&&(vt=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof self.createImageBitmap),vt}var mt={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};"function"==typeof Object.freeze&&Object.freeze(mt);var xt=function(t){function e(e,r,n){401===r&&W(n)&&(e+=": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+": "+this.message+" ("+this.status+"): "+this.url},e}(Error),bt=k()?function(){return self.worker&&self.worker.referrer}:function(){return("blob:"===self.location.protocol?self.parent:self).location.href};function _t(t,e){var r,n=new self.AbortController,i=new self.Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,referrer:bt(),signal:n.signal}),a=!1,o=!1,s=(r=i.url).indexOf("sku=")>0&&W(r);"json"===t.type&&i.headers.set("Accept","application/json");var l=function(r,n,a){if(!o){if(r&&"SecurityError"!==r.message&&w(r),n&&a)return u(n);var l=Date.now();self.fetch(i).then(function(r){if(r.ok){var n=s?r.clone():null;return u(r,n,l)}return e(new xt(r.statusText,r.status,t.url))}).catch(function(t){20!==t.code&&e(new Error(t.message))})}},u=function(r,n,s){("arrayBuffer"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text()).then(function(t){o||(n&&s&&ht(i,n,s),a=!0,e(null,t,r.headers.get("Cache-Control"),r.headers.get("Expires")))}).catch(function(t){o||e(new Error(t.message))})};return s?dt(i,l):l(null,null),{cancel:function(){o=!0,a||n.abort()}}}var wt=function(t,e){if(r=t.url,!(/^file:/.test(r)||/^file:/.test(bt())&&!/^\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty("signal"))return _t(t,e);if(k()&&self.worker&&self.worker.actor){return self.worker.actor.send("getResource",t,e,void 0,!0)}}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||"GET",t.url,!0),"arrayBuffer"===t.type&&(r.responseType="arraybuffer"),t.headers)r.setRequestHeader(n,t.headers[n]);return"json"===t.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if("json"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader("Cache-Control"),r.getResponseHeader("Expires"))}else e(new xt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},Tt=function(t,e){return wt(f(t,{type:"arrayBuffer"}),e)},At=function(t,e){return wt(f(t,{method:"POST"}),e)};function kt(t){var e=self.document.createElement("a");return e.href=t,e.protocol===self.document.location.protocol&&e.host===self.document.location.host}var Mt,St;Mt=[],St=0;var Et=function(t,e){if(N.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),St>=B.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return Mt.push(r),r}St++;var n=!1,i=function(){if(!n)for(n=!0,St--;Mt.length&&St0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},It.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Dt={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},expression_name:{type:"enum",values:{let:{group:"Variable binding"},var:{group:"Variable binding"},literal:{group:"Types"},array:{group:"Types"},at:{group:"Lookup"},in:{group:"Lookup"},"index-of":{group:"Lookup"},slice:{group:"Lookup"},case:{group:"Decision"},match:{group:"Decision"},coalesce:{group:"Decision"},step:{group:"Ramps, scales, curves"},interpolate:{group:"Ramps, scales, curves"},"interpolate-hcl":{group:"Ramps, scales, curves"},"interpolate-lab":{group:"Ramps, scales, curves"},ln2:{group:"Math"},pi:{group:"Math"},e:{group:"Math"},typeof:{group:"Types"},string:{group:"Types"},number:{group:"Types"},boolean:{group:"Types"},object:{group:"Types"},collator:{group:"Types"},format:{group:"Types"},image:{group:"Types"},"number-format":{group:"Types"},"to-string":{group:"Types"},"to-number":{group:"Types"},"to-boolean":{group:"Types"},"to-rgba":{group:"Color"},"to-color":{group:"Types"},rgb:{group:"Color"},rgba:{group:"Color"},get:{group:"Lookup"},has:{group:"Lookup"},length:{group:"Lookup"},properties:{group:"Feature data"},"feature-state":{group:"Feature data"},"geometry-type":{group:"Feature data"},id:{group:"Feature data"},zoom:{group:"Zoom"},"heatmap-density":{group:"Heatmap"},"line-progress":{group:"Feature data"},accumulated:{group:"Feature data"},"+":{group:"Math"},"*":{group:"Math"},"-":{group:"Math"},"/":{group:"Math"},"%":{group:"Math"},"^":{group:"Math"},sqrt:{group:"Math"},log10:{group:"Math"},ln:{group:"Math"},log2:{group:"Math"},sin:{group:"Math"},cos:{group:"Math"},tan:{group:"Math"},asin:{group:"Math"},acos:{group:"Math"},atan:{group:"Math"},min:{group:"Math"},max:{group:"Math"},round:{group:"Math"},abs:{group:"Math"},ceil:{group:"Math"},floor:{group:"Math"},distance:{group:"Math"},"==":{group:"Decision"},"!=":{group:"Decision"},">":{group:"Decision"},"<":{group:"Decision"},">=":{group:"Decision"},"<=":{group:"Decision"},all:{group:"Decision"},any:{group:"Decision"},"!":{group:"Decision"},within:{group:"Decision"},"is-supported-script":{group:"String"},upcase:{group:"String"},downcase:{group:"String"},concat:{group:"String"},"resolved-locale":{group:"String"}}},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}},zt=function(t,e,r,n){this.message=(t?t+": ":"")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Rt(t){var e=t.key,r=t.value;return r?[new zt(e,r,"constants have been deprecated as of v8")]:[]}function Ft(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n":"value"===t.itemType.kind?"array":"array<"+e+">"}return t.kind}var te=[Vt,Ht,qt,Gt,Yt,Jt,Wt,$t(Zt),Kt];function ee(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!ee(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if("value"===t.kind)for(var r=0,n=te;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return"%"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return"%"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,"").toLowerCase();if(i in r)return r[i].slice();if("#"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf("("),u=i.indexOf(")");if(-1!==l&&u+1===i.length){var c=i.substr(0,l),f=i.substr(l+1,u-(l+1)).split(","),h=1;switch(c){case"rgba":if(4!==f.length)return null;h=o(f.pop());case"rgb":return 3!==f.length?null:[a(f[0]),a(f[1]),a(f[2]),h];case"hsla":if(4!==f.length)return null;h=o(f.pop());case"hsl":if(3!==f.length)return null;var p=(parseFloat(f[0])%360+360)%360/360,d=o(f[1]),v=o(f[2]),g=v<=.5?v*(d+1):v+d-v*d,y=2*v-g;return[n(255*s(y,g,p+1/3)),n(255*s(y,g,p)),n(255*s(y,g,p-1/3)),h];default:return null}}return null}}catch(t){}}),ae=ie.parseCSSColor,oe=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};oe.parse=function(t){if(t){if(t instanceof oe)return t;if("string"==typeof t){var e=ae(t);if(e)return new oe(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},oe.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return"rgba("+Math.round(e)+","+Math.round(r)+","+Math.round(n)+","+i+")"},oe.prototype.toArray=function(){var t=this,e=t.r,r=t.g,n=t.b,i=t.a;return 0===i?[0,0,0,0]:[255*e/i,255*r/i,255*n/i,i]},oe.black=new oe(0,0,0,1),oe.white=new oe(1,1,1,1),oe.transparent=new oe(0,0,0,0),oe.red=new oe(1,0,0,1);var se=function(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};se.prototype.compare=function(t,e){return this.collator.compare(t,e)},se.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var le=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ue=function(t){this.sections=t};ue.fromString=function(t){return new ue([new le(t,null,null,null,null)])},ue.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some(function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length})},ue.factory=function(t){return t instanceof ue?t:ue.fromString(t)},ue.prototype.toString=function(){return 0===this.sections.length?"":this.sections.map(function(t){return t.text}).join("")},ue.prototype.serialize=function(){for(var t=["format"],e=0,r=this.sections;e=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255?void 0===n||"number"==typeof n&&n>=0&&n<=1?null:"Invalid rgba value ["+[t,e,r,n].join(", ")+"]: 'a' must be between 0 and 1.":"Invalid rgba value ["+("number"==typeof n?[t,e,r,n]:[t,e,r]).join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}function he(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof oe)return!0;if(t instanceof se)return!0;if(t instanceof ue)return!0;if(t instanceof ce)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if("string"!=typeof s||!(s in ye)||"object"===s)return e.error('The item type argument of "array" must be one of string, number, boolean',1);a=ye[s],n++}else a=Zt;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);o=t[2],n++}r=$t(a,o)}else r=ye[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map(function(t){return t.serialize()}))};var xe=function(t){this.type=Jt,this.sections=t};xe.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&"object"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o["font-scale"]&&!(s=e.parse(o["font-scale"],1,Ht)))return null;var l=null;if(o["text-font"]&&!(l=e.parse(o["text-font"],1,$t(qt))))return null;var u=null;if(o["text-color"]&&!(u=e.parse(o["text-color"],1,Yt)))return null;var c=n[n.length-1];c.scale=s,c.font=l,c.textColor=u}else{var f=e.parse(t[a],1,Zt);if(!f)return null;var h=f.type.kind;if("string"!==h&&"value"!==h&&"null"!==h&&"resolvedImage"!==h)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,n.push({content:f,scale:null,font:null,textColor:null})}}return new xe(n)},xe.prototype.evaluate=function(t){return new ue(this.sections.map(function(e){var r=e.content.evaluate(t);return pe(r)===Kt?new le("",r,null,null,null):new le(de(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)}))},xe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},be.prototype.eachChild=function(t){t(this.input)},be.prototype.outputDefined=function(){return!1},be.prototype.serialize=function(){return["image",this.input.serialize()]};var _e={"to-boolean":Gt,"to-color":Yt,"to-number":Ht,"to-string":qt},we=function(t,e){this.type=t,this.args=e};we.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[0];if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");for(var n=_e[r],i=[],a=1;a4?"Invalid rbga value "+JSON.stringify(e)+": expected an array containing either three or four numeric values.":fe(e[0],e[1],e[2],e[3])))return new oe(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ge(r||"Could not parse color from value '"+("string"==typeof e?e:String(JSON.stringify(e)))+"'")}if("number"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2]||t[1]<=e[1]||t[3]>=e[3])}function Ce(t,e){var r,n=(180+t[0])/360,i=(r=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360),a=Math.pow(2,e.z);return[Math.round(n*a*Se),Math.round(i*a*Se)]}function Pe(t,e,r){var n=t[0]-e[0],i=t[1]-e[1],a=t[0]-r[0],o=t[1]-r[1];return n*o-a*i===0&&n*a<=0&&i*o<=0}function Oe(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function Ie(t,e){for(var r=!1,n=0,i=e.length;n0&&f<0||c<0&&f>0}function Re(t,e,r,n){var i,a,o=[e[0]-t[0],e[1]-t[1]];return 0!==(i=[n[0]-r[0],n[1]-r[1]],a=o,i[0]*a[1]-i[1]*a[0])&&!(!ze(t,e,r,n)||!ze(r,n,t,e))}function Fe(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}Ee(e,t)}function He(t,e,r,n){for(var i=Math.pow(2,n.z)*Se,a=[n.x*Se,n.y*Se],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild(function(t){r&&!Ze(t,e)&&(r=!1)}),r}Ge.parse=function(t,e){if(2!==t.length)return e.error("'within' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(he(t[1])){var r=t[1];if("FeatureCollection"===r.type)for(var n=0;ne))throw new ge("Input is not a number.");o=s-1}return 0}Je.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},Je.prototype._parse=function(t,e){function r(t,e,r){return"assert"===r?new me(e,[t]):"coerce"===r?new we(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var n=t[0];if("string"!=typeof n)return this.error("Expression name must be a string, but found "+typeof n+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if("string"!==o.kind&&"number"!==o.kind&&"boolean"!==o.kind&&"object"!==o.kind&&"array"!==o.kind||"value"!==s.kind)if("color"!==o.kind&&"formatted"!==o.kind&&"resolvedImage"!==o.kind||"value"!==s.kind&&"string"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||"coerce");else a=r(a,o,e.typeAnnotation||"assert")}if(!(a instanceof ve)&&"resolvedImage"!==a.type.kind&&Ke(a)){var l=new Ae;try{a=new ve(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression "'+n+'". If you wanted a literal array, use ["literal", [...]].',0)}return void 0===t?this.error("'undefined' value invalid. Use null instead."):"object"==typeof t?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof t+" instead.")},Je.prototype.concat=function(t,e,r){var n="number"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Je(this.registry,n,e||null,i,this.errors)},Je.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=""+this.key+e.map(function(t){return"["+t+"]"}).join("");this.errors.push(new jt(n,t))},Je.prototype.checkSubtype=function(t,e){var r=ee(t,e);return r&&this.error(r),r};var Qe=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',l);var c=e.parse(s,u,i);if(!c)return null;i=i||c.type,n.push([o,c])}return new Qe(i,r,n)},Qe.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[$e(e,n)].evaluate(t)},Qe.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var er=Object.freeze({__proto__:null,number:tr,color:function(t,e,r){return new oe(tr(t.r,e.r,r),tr(t.g,e.g,r),tr(t.b,e.b,r),tr(t.a,e.a,r))},array:function(t,e,r){return t.map(function(t,n){return tr(t,e[n],r)})}}),rr=.95047,nr=1.08883,ir=4/29,ar=6/29,or=3*ar*ar,sr=ar*ar*ar,lr=Math.PI/180,ur=180/Math.PI;function cr(t){return t>sr?Math.pow(t,1/3):t/or+ir}function fr(t){return t>ar?t*t*t:or*(t-ir)}function hr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function pr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function dr(t){var e=pr(t.r),r=pr(t.g),n=pr(t.b),i=cr((.4124564*e+.3575761*r+.1804375*n)/rr),a=cr((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-cr((.0193339*e+.119192*r+.9503041*n)/nr)),alpha:t.a}}function vr(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*fr(e),r=rr*fr(r),n=nr*fr(n),new oe(hr(3.2404542*r-1.5371385*e-.4985314*n),hr(-.969266*r+1.8760108*e+.041556*n),hr(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function gr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var yr={forward:dr,reverse:vr,interpolate:function(t,e,r){return{l:tr(t.l,e.l,r),a:tr(t.a,e.a,r),b:tr(t.b,e.b,r),alpha:tr(t.alpha,e.alpha,r)}}},mr={forward:function(t){var e=dr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*ur;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*lr,r=t.c;return vr({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:gr(t.h,e.h,r),c:tr(t.c,e.c,r),l:tr(t.l,e.l,r),alpha:tr(t.alpha,e.alpha,r)}}},xr=Object.freeze({__proto__:null,lab:yr,hcl:mr}),br=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1}))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);n={name:"cubic-bezier",controlPoints:s}}if(t.length-1<4)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(!(i=e.parse(i,2,Ht)))return null;var l=[],u=null;"interpolate-hcl"===r||"interpolate-lab"===r?u=Yt:e.expectedType&&"value"!==e.expectedType.kind&&(u=e.expectedType);for(var c=0;c=f)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',p);var v=e.parse(h,d,u);if(!v)return null;u=u||v.type,l.push([f,v])}return"number"===u.kind||"color"===u.kind||"array"===u.kind&&"number"===u.itemType.kind&&"number"==typeof u.N?new br(u,r,n,i,l):e.error("Type "+Qt(u)+" is not interpolatable.")},br.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=$e(e,n),o=e[a],s=e[a+1],l=br.interpolationFactor(this.interpolation,n,o,s),u=r[a].evaluate(t),c=r[a+1].evaluate(t);return"interpolate"===this.operator?er[this.type.kind.toLowerCase()](u,c,l):"interpolate-hcl"===this.operator?mr.reverse(mr.interpolate(mr.forward(u),mr.forward(c),l)):yr.reverse(yr.interpolate(yr.forward(u),yr.forward(c),l))},br.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ge("Array index out of bounds: "+e+" > "+(r.length-1)+".");if(e!==Math.floor(e))throw new ge("Array index must be an integer, but found "+e+" instead.");return r[e]},Ar.prototype.eachChild=function(t){t(this.index),t(this.input)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var kr=function(t,e){this.type=Gt,this.needle=t,this.haystack=e};kr.parse=function(t,e){if(3!==t.length)return e.error("Expected 2 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Zt),n=e.parse(t[2],2,Zt);return r&&n?re(r.type,[Gt,qt,Ht,Vt,Zt])?new kr(r,n):e.error("Expected first argument to be of type boolean, string, number or null, but found "+Qt(r.type)+" instead"):null},kr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!ne(e,["boolean","string","number","null"]))throw new ge("Expected first argument to be of type boolean, string, number or null, but found "+Qt(pe(e))+" instead.");if(!ne(r,["string","array"]))throw new ge("Expected second argument to be of type array or string, but found "+Qt(pe(r))+" instead.");return r.indexOf(e)>=0},kr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},kr.prototype.outputDefined=function(){return!0},kr.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var Mr=function(t,e,r){this.type=Ht,this.needle=t,this.haystack=e,this.fromIndex=r};Mr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Zt),n=e.parse(t[2],2,Zt);if(!r||!n)return null;if(!re(r.type,[Gt,qt,Ht,Vt,Zt]))return e.error("Expected first argument to be of type boolean, string, number or null, but found "+Qt(r.type)+" instead");if(4===t.length){var i=e.parse(t[3],3,Ht);return i?new Mr(r,n,i):null}return new Mr(r,n)},Mr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!ne(e,["boolean","string","number","null"]))throw new ge("Expected first argument to be of type boolean, string, number or null, but found "+Qt(pe(e))+" instead.");if(!ne(r,["string","array"]))throw new ge("Expected second argument to be of type array or string, but found "+Qt(pe(r))+" instead.");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},Mr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var Sr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};Sr.parse=function(t,e){if(t.length<5)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if(t.length%2!=1)return e.error("Expected an even number of arguments.");var r,n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return u.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if("number"==typeof h&&Math.floor(h)!==h)return u.error("Numeric branch labels must be integer values.");if(r){if(u.checkSubtype(r,pe(h)))return null}else r=pe(h);if(void 0!==i[String(h)])return u.error("Branch labels must be unique.");i[String(h)]=a.length}var p=e.parse(l,o,n);if(!p)return null;n=n||p.type,a.push(p)}var d=e.parse(t[1],1,Zt);if(!d)return null;var v=e.parse(t[t.length-1],t.length-1,n);return v?"value"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new Sr(r,n,d,i,a,v):null},Sr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(pe(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},Sr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},Sr.prototype.outputDefined=function(){return this.outputs.every(function(t){return t.outputDefined()})&&this.otherwise.outputDefined()},Sr.prototype.serialize=function(){for(var t=this,e=["match",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Zt),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!re(r.type,[$t(Zt),qt,Zt]))return e.error("Expected first argument to be of type array or string, but found "+Qt(r.type)+" instead");if(4===t.length){var i=e.parse(t[3],3,Ht);return i?new Lr(r.type,r,n,i):null}return new Lr(r.type,r,n)},Lr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!ne(e,["string","array"]))throw new ge("Expected first argument to be of type array or string, but found "+Qt(pe(e))+" instead.");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},Lr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},Lr.prototype.outputDefined=function(){return!1},Lr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};var Ir=Or("==",function(t,e,r){return e===r},Pr),Dr=Or("!=",function(t,e,r){return e!==r},function(t,e,r,n){return!Pr(0,e,r,n)}),zr=Or("<",function(t,e,r){return e",function(t,e,r){return e>r},function(t,e,r,n){return n.compare(e,r)>0}),Fr=Or("<=",function(t,e,r){return e<=r},function(t,e,r,n){return n.compare(e,r)<=0}),Br=Or(">=",function(t,e,r){return e>=r},function(t,e,r,n){return n.compare(e,r)>=0}),Nr=function(t,e,r,n,i){this.type=qt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};Nr.parse=function(t,e){if(3!==t.length)return e.error("Expected two arguments.");var r=e.parse(t[1],1,Ht);if(!r)return null;var n=t[2];if("object"!=typeof n||Array.isArray(n))return e.error("NumberFormat options argument must be an object.");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,qt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,qt)))return null;var o=null;if(n["min-fraction-digits"]&&!(o=e.parse(n["min-fraction-digits"],1,Ht)))return null;var s=null;return n["max-fraction-digits"]&&!(s=e.parse(n["max-fraction-digits"],1,Ht))?null:new Nr(r,i,a,o,s)},Nr.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Nr.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},Nr.prototype.outputDefined=function(){return!1},Nr.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]};var jr=function(t){this.type=Ht,this.input=t};jr.parse=function(t,e){if(2!==t.length)return e.error("Expected 1 argument, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error("Expected argument of type string or array, but found "+Qt(r.type)+" instead."):new jr(r):null},jr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ge("Expected value to be of type string or array, but found "+Qt(pe(e))+" instead.")},jr.prototype.eachChild=function(t){t(this.input)},jr.prototype.outputDefined=function(){return!1},jr.prototype.serialize=function(){var t=["length"];return this.eachChild(function(e){t.push(e.serialize())}),t};var Ur={"==":Ir,"!=":Dr,">":Rr,"<":zr,">=":Br,"<=":Fr,array:me,at:Ar,boolean:me,case:Er,coalesce:wr,collator:Me,format:xe,image:be,in:kr,"index-of":Mr,interpolate:br,"interpolate-hcl":br,"interpolate-lab":br,length:jr,let:Tr,literal:ve,match:Sr,number:me,"number-format":Nr,object:me,slice:Lr,step:Qe,string:me,"to-boolean":we,"to-color":we,"to-number":we,"to-string":we,var:Xe,within:Ge};function Vr(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=fe(r,n,i,o);if(s)throw new ge(s);return new oe(r/255*o,n/255*o,i/255*o,o)}function Hr(t,e){return t in e}function qr(t,e){var r=e[t];return void 0===r?null:r}function Gr(t){return{type:t}}function Yr(t){return{result:"success",value:t}}function Wr(t){return{result:"error",value:t}}function Zr(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Xr(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Jr(t){return!!t.expression&&t.expression.interpolated}function Kr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function $r(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function Qr(t){return t}function tn(t,e){var r,n,i,a="color"===e.type,o=t.stops&&"object"==typeof t.stops[0][0],s=o||void 0!==t.property,l=o||!s,u=t.type||(Jr(e)?"exponential":"interval");if(a&&((t=Ft({},t)).stops&&(t.stops=t.stops.map(function(t){return[t[0],oe.parse(t[1])]})),t.default?t.default=oe.parse(t.default):t.default=oe.parse(e.default)),t.colorSpace&&"rgb"!==t.colorSpace&&!xr[t.colorSpace])throw new Error("Unknown color space: "+t.colorSpace);if("exponential"===u)r=an;else if("interval"===u)r=nn;else if("categorical"===u){r=rn,n=Object.create(null);for(var c=0,f=t.stops;c=t.stops[n-1][0])return t.stops[n-1][1];var i=$e(t.stops.map(function(t){return t[0]}),r);return t.stops[i][1]}function an(t,e,r){var n=void 0!==t.base?t.base:1;if("number"!==Kr(r))return en(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=$e(t.stops.map(function(t){return t[0]}),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],u=er[e.type]||Qr;if(t.colorSpace&&"rgb"!==t.colorSpace){var c=xr[t.colorSpace];u=function(t,e){return c.reverse(c.interpolate(c.forward(t),c.forward(e),o))}}return"function"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return u(r,n,o)}}:u(s,l,o)}function on(t,e,r){return"color"===e.type?r=oe.parse(r):"formatted"===e.type?r=ue.fromString(r.toString()):"resolvedImage"===e.type?r=ce.fromString(r.toString()):Kr(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0),en(r,t.default,e.default)}ke.register(Ur,{error:[{kind:"error"},[qt],function(t,e){var r=e[0];throw new ge(r.evaluate(t))}],typeof:[qt,[Zt],function(t,e){return Qt(pe(e[0].evaluate(t)))}],"to-rgba":[$t(Ht,4),[Yt],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Yt,[Ht,Ht,Ht],Vr],rgba:[Yt,[Ht,Ht,Ht,Ht],Vr],has:{type:Gt,overloads:[[[qt],function(t,e){return Hr(e[0].evaluate(t),t.properties())}],[[qt,Wt],function(t,e){var r=e[0],n=e[1];return Hr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Zt,overloads:[[[qt],function(t,e){return qr(e[0].evaluate(t),t.properties())}],[[qt,Wt],function(t,e){var r=e[0],n=e[1];return qr(r.evaluate(t),n.evaluate(t))}]]},"feature-state":[Zt,[qt],function(t,e){return qr(e[0].evaluate(t),t.featureState||{})}],properties:[Wt,[],function(t){return t.properties()}],"geometry-type":[qt,[],function(t){return t.geometryType()}],id:[Zt,[],function(t){return t.id()}],zoom:[Ht,[],function(t){return t.globals.zoom}],"heatmap-density":[Ht,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[Ht,[],function(t){return t.globals.lineProgress||0}],accumulated:[Zt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[Ht,Gr(Ht),function(t,e){for(var r=0,n=0,i=e;n":[Gt,[qt,Zt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],"filter-id->":[Gt,[Zt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],"filter-<=":[Gt,[qt,Zt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],"filter-id-<=":[Gt,[Zt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],"filter->=":[Gt,[qt,Zt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],"filter-id->=":[Gt,[Zt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],"filter-has":[Gt,[Zt],function(t,e){return e[0].value in t.properties()}],"filter-has-id":[Gt,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[Gt,[$t(qt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[Gt,[$t(Zt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],"filter-in-small":[Gt,[qt,$t(Zt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],"filter-in-large":[Gt,[qt,$t(Zt)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:Gt,overloads:[[[Gt,Gt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Gr(Gt),function(t,e){for(var r=0,n=e;r0&&"string"==typeof t[0]&&t[0]in Ur}function un(t,e){var r=new Je(Ur,[],e?function(t){var e={color:Yt,string:qt,number:Ht,enum:qt,boolean:Gt,formatted:Jt,resolvedImage:Kt};return"array"===t.type?$t(e[t.value]||Zt,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return n?Yr(new sn(n,e)):Wr(r.errors)}sn.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},sn.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||"number"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ge("Expected value to be one of "+Object.keys(this._enumValues).map(function(t){return JSON.stringify(t)}).join(", ")+", but found "+JSON.stringify(o)+" instead.");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}};var cn=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!We(e.expression)};cn.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},cn.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var fn=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!We(e.expression),this.interpolationType=n};function hn(t,e){if("error"===(t=un(t,e)).result)return t;var r=t.value.expression,n=Ye(r);if(!n&&!Zr(e))return Wr([new jt("","data expressions not supported")]);var i=Ze(r,["zoom"]);if(!i&&!Xr(e))return Wr([new jt("","zoom expressions not supported")]);var a=dn(r);if(!a&&!i)return Wr([new jt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(a instanceof jt)return Wr([a]);if(a instanceof br&&!Jr(e))return Wr([new jt("",'"interpolate" expressions cannot be used with this property')]);if(!a)return Yr(new cn(n?"constant":"source",t.value));var o=a instanceof br?a.interpolation:void 0;return Yr(new fn(n?"camera":"composite",t.value,a.labels,o))}fn.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},fn.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)},fn.prototype.interpolationFactor=function(t,e,r){return this.interpolationType?br.interpolationFactor(this.interpolationType,t,e,r):0};var pn=function(t,e){this._parameters=t,this._specification=e,Ft(this,tn(this._parameters,this._specification))};function dn(t){var e=null;if(t instanceof Tr)e=dn(t.result);else if(t instanceof wr)for(var r=0,n=t.args;rn.maximum?[new zt(e,r,r+" is greater than the maximum value "+n.maximum)]:[]}function mn(t){var e,r,n,i=t.valueSpec,a=Bt(t.value.type),o={},s="categorical"!==a&&void 0===t.value.property,l=!s,u="array"===Kr(t.value.stops)&&"array"===Kr(t.value.stops[0])&&"object"===Kr(t.value.stops[0][0]),c=vn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===a)return[new zt(t.key,t.value,'identity function may not have a "stops" property')];var e=[],r=t.value;return e=e.concat(gn({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),"array"===Kr(r)&&0===r.length&&e.push(new zt(t.key,r,"array must have at least one stop")),e},default:function(t){return Vn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===a&&s&&c.push(new zt(t.key,t.value,'missing required property "property"')),"identity"===a||t.value.stops||c.push(new zt(t.key,t.value,'missing required property "stops"')),"exponential"===a&&t.valueSpec.expression&&!Jr(t.valueSpec)&&c.push(new zt(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!Zr(t.valueSpec)?c.push(new zt(t.key,t.value,"property functions not supported")):s&&!Xr(t.valueSpec)&&c.push(new zt(t.key,t.value,"zoom functions not supported"))),"categorical"!==a&&!u||void 0!==t.value.property||c.push(new zt(t.key,t.value,'"property" property is required')),c;function f(t){var e=[],a=t.value,s=t.key;if("array"!==Kr(a))return[new zt(s,a,"array expected, "+Kr(a)+" found")];if(2!==a.length)return[new zt(s,a,"array length 2 expected, length "+a.length+" found")];if(u){if("object"!==Kr(a[0]))return[new zt(s,a,"object expected, "+Kr(a[0])+" found")];if(void 0===a[0].zoom)return[new zt(s,a,"object stop key must have zoom")];if(void 0===a[0].value)return[new zt(s,a,"object stop key must have value")];if(n&&n>Bt(a[0].zoom))return[new zt(s,a[0].zoom,"stop zoom values must appear in ascending order")];Bt(a[0].zoom)!==n&&(n=Bt(a[0].zoom),r=void 0,o={}),e=e.concat(vn({key:s+"[0]",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:yn,value:h}}))}else e=e.concat(h({key:s+"[0]",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return ln(Nt(a[1]))?e.concat([new zt(s+"[1]",a[1],"expressions are not allowed in function stops.")]):e.concat(Vn({key:s+"[1]",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Kr(t.value),l=Bt(t.value),u=null!==t.value?t.value:n;if(e){if(s!==e)return[new zt(t.key,u,s+" stop domain type must match previous stop domain type "+e)]}else e=s;if("number"!==s&&"string"!==s&&"boolean"!==s)return[new zt(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==s&&"categorical"!==a){var c="number expected, "+s+" found";return Zr(i)&&void 0===a&&(c+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new zt(t.key,u,c)]}return"categorical"!==a||"number"!==s||isFinite(l)&&Math.floor(l)===l?"categorical"!==a&&"number"===s&&void 0!==r&&l=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(var e=0,r=t.slice(1);ee?1:0}function kn(t){if(!Array.isArray(t))return!1;if("within"===t[0])return!0;for(var e=1;e"===r||"<="===r||">="===r?Sn(t[1],t[2],r):"any"===r?(e=t.slice(1),["any"].concat(e.map(Mn))):"all"===r?["all"].concat(t.slice(1).map(Mn)):"none"===r?["all"].concat(t.slice(1).map(Mn).map(Cn)):"in"===r?En(t[1],t.slice(2)):"!in"===r?Cn(En(t[1],t.slice(2))):"has"===r?Ln(t[1]):"!has"===r?Cn(Ln(t[1])):"within"!==r||t}function Sn(t,e,r){switch(t){case"$type":return["filter-type-"+r,e];case"$id":return["filter-id-"+r,e];default:return["filter-"+r,t,e]}}function En(t,e){if(0===e.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(function(t){return typeof t!=typeof e[0]})?["filter-in-large",t,["literal",e.sort(An)]]:["filter-in-small",t,["literal",e]]}}function Ln(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function Cn(t){return["!",t]}function Pn(t){return _n(Nt(t.value))?xn(Ft({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):On(t)}function On(t){var e=t.value,r=t.key;if("array"!==Kr(e))return[new zt(r,e,"array expected, "+Kr(e)+" found")];var n,i=t.styleSpec,a=[];if(e.length<1)return[new zt(r,e,"filter array must have at least 1 element")];switch(a=a.concat(bn({key:r+"[0]",value:e[0],valueSpec:i.filter_operator,style:t.style,styleSpec:t.styleSpec})),Bt(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&"$type"===Bt(e[1])&&a.push(new zt(r,e,'"$type" cannot be use with operator "'+e[0]+'"'));case"==":case"!=":3!==e.length&&a.push(new zt(r,e,'filter array for operator "'+e[0]+'" must have 3 elements'));case"in":case"!in":e.length>=2&&"string"!==(n=Kr(e[1]))&&a.push(new zt(r+"[1]",e[1],"string expected, "+n+" found"));for(var o=2;o=c[p+0]&&n>=c[p+1])?(o[h]=!0,a.push(u[h])):o[h]=!1}}},ti.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),f=this._convertToCellCoord(n),h=l;h<=c;h++)for(var p=u;p<=f;p++){var d=this.d*p+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(p),this._convertFromCellCoord(h+1),this._convertFromCellCoord(p+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},ti.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},ti.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},ti.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=Qn+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[c];u[c]=ni[l].shallow.indexOf(c)>=0?f:li(f,e)}t instanceof Error&&(u.message=t.message)}if(u.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==l&&(u.$name=l),u}throw new Error("can't serialize object of type "+typeof t)}function ui(t){if(null==t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||oi(t)||si(t)||ArrayBuffer.isView(t)||t instanceof ei)return t;if(Array.isArray(t))return t.map(ui);if("object"==typeof t){var e=t.$name||"Object",r=ni[e].klass;if(!r)throw new Error("can't deserialize unregistered class "+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:ui(s)}}return n}throw new Error("can't deserialize object of type "+typeof t)}var ci=function(){this.first=!0};ci.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},"Arabic Supplement":function(t){return t>=1872&&t<=1919},"Arabic Extended-A":function(t){return t>=2208&&t<=2303},"Hangul Jamo":function(t){return t>=4352&&t<=4607},"Unified Canadian Aboriginal Syllabics":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(t){return t>=6320&&t<=6399},"General Punctuation":function(t){return t>=8192&&t<=8303},"Letterlike Symbols":function(t){return t>=8448&&t<=8527},"Number Forms":function(t){return t>=8528&&t<=8591},"Miscellaneous Technical":function(t){return t>=8960&&t<=9215},"Control Pictures":function(t){return t>=9216&&t<=9279},"Optical Character Recognition":function(t){return t>=9280&&t<=9311},"Enclosed Alphanumerics":function(t){return t>=9312&&t<=9471},"Geometric Shapes":function(t){return t>=9632&&t<=9727},"Miscellaneous Symbols":function(t){return t>=9728&&t<=9983},"Miscellaneous Symbols and Arrows":function(t){return t>=11008&&t<=11263},"CJK Radicals Supplement":function(t){return t>=11904&&t<=12031},"Kangxi Radicals":function(t){return t>=12032&&t<=12255},"Ideographic Description Characters":function(t){return t>=12272&&t<=12287},"CJK Symbols and Punctuation":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},"Hangul Compatibility Jamo":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},"Bopomofo Extended":function(t){return t>=12704&&t<=12735},"CJK Strokes":function(t){return t>=12736&&t<=12783},"Katakana Phonetic Extensions":function(t){return t>=12784&&t<=12799},"Enclosed CJK Letters and Months":function(t){return t>=12800&&t<=13055},"CJK Compatibility":function(t){return t>=13056&&t<=13311},"CJK Unified Ideographs Extension A":function(t){return t>=13312&&t<=19903},"Yijing Hexagram Symbols":function(t){return t>=19904&&t<=19967},"CJK Unified Ideographs":function(t){return t>=19968&&t<=40959},"Yi Syllables":function(t){return t>=40960&&t<=42127},"Yi Radicals":function(t){return t>=42128&&t<=42191},"Hangul Jamo Extended-A":function(t){return t>=43360&&t<=43391},"Hangul Syllables":function(t){return t>=44032&&t<=55215},"Hangul Jamo Extended-B":function(t){return t>=55216&&t<=55295},"Private Use Area":function(t){return t>=57344&&t<=63743},"CJK Compatibility Ideographs":function(t){return t>=63744&&t<=64255},"Arabic Presentation Forms-A":function(t){return t>=64336&&t<=65023},"Vertical Forms":function(t){return t>=65040&&t<=65055},"CJK Compatibility Forms":function(t){return t>=65072&&t<=65103},"Small Form Variants":function(t){return t>=65104&&t<=65135},"Arabic Presentation Forms-B":function(t){return t>=65136&&t<=65279},"Halfwidth and Fullwidth Forms":function(t){return t>=65280&&t<=65519}};function hi(t){for(var e=0,r=t;e=65097&&t<=65103)||fi["CJK Compatibility Ideographs"](t)||fi["CJK Compatibility"](t)||fi["CJK Radicals Supplement"](t)||fi["CJK Strokes"](t)||!(!fi["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||fi["CJK Unified Ideographs Extension A"](t)||fi["CJK Unified Ideographs"](t)||fi["Enclosed CJK Letters and Months"](t)||fi["Hangul Compatibility Jamo"](t)||fi["Hangul Jamo Extended-A"](t)||fi["Hangul Jamo Extended-B"](t)||fi["Hangul Jamo"](t)||fi["Hangul Syllables"](t)||fi.Hiragana(t)||fi["Ideographic Description Characters"](t)||fi.Kanbun(t)||fi["Kangxi Radicals"](t)||fi["Katakana Phonetic Extensions"](t)||fi.Katakana(t)&&12540!==t||!(!fi["Halfwidth and Fullwidth Forms"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!fi["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||fi["Unified Canadian Aboriginal Syllabics"](t)||fi["Unified Canadian Aboriginal Syllabics Extended"](t)||fi["Vertical Forms"](t)||fi["Yijing Hexagram Symbols"](t)||fi["Yi Syllables"](t)||fi["Yi Radicals"](t))))}function gi(t){return!(vi(t)||function(t){return!!(fi["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||fi["General Punctuation"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||fi["Letterlike Symbols"](t)||fi["Number Forms"](t)||fi["Miscellaneous Technical"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||fi["Control Pictures"](t)&&9251!==t||fi["Optical Character Recognition"](t)||fi["Enclosed Alphanumerics"](t)||fi["Geometric Shapes"](t)||fi["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||fi["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||fi["CJK Symbols and Punctuation"](t)||fi.Katakana(t)||fi["Private Use Area"](t)||fi["CJK Compatibility Forms"](t)||fi["Small Form Variants"](t)||fi["Halfwidth and Fullwidth Forms"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function yi(t){return fi.Arabic(t)||fi["Arabic Supplement"](t)||fi["Arabic Extended-A"](t)||fi["Arabic Presentation Forms-A"](t)||fi["Arabic Presentation Forms-B"](t)}function mi(t){return t>=1424&&t<=2303||fi["Arabic Presentation Forms-A"](t)||fi["Arabic Presentation Forms-B"](t)}function xi(t,e){return!(!e&&mi(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||fi.Khmer(t))}function bi(t){for(var e=0,r=t;e-1&&(Mi=Ai),ki&&ki(t)};function Li(){Ci.fire(new Pt("pluginStateChange",{pluginStatus:Mi,pluginURL:Si}))}var Ci=new It,Pi=function(){return Mi},Oi=function(){if(Mi!==_i||!Si)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");Mi=wi,Li(),Si&&Tt({url:Si},function(t){t?Ei(t):(Mi=Ti,Li())})},Ii={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return Mi===Ti||null!=Ii.applyArabicShaping},isLoading:function(){return Mi===wi},setState:function(t){Mi=t.pluginStatus,Si=t.pluginURL},isParsed:function(){return null!=Ii.applyArabicShaping&&null!=Ii.processBidirectionalText&&null!=Ii.processStyledBidirectionalText},getPluginURL:function(){return Si}},Di=function(){Ii.isLoading()||Ii.isLoaded()||"deferred"!==Pi()||Oi()},zi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new ci,this.transition={})};zi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var Ri=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if($r(t))return new pn(t,e);if(ln(t)){var r=hn(t,e);if("error"===r.result)throw new Error(r.value.map(function(t){return t.key+": "+t.message}).join(", "));return r.value}var n=t;return"string"==typeof t&&"color"===e.type&&(n=oe.parse(t)),{kind:"constant",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};Ri.prototype.isDataDriven=function(){return"source"===this.expression.kind||"composite"===this.expression.kind},Ri.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var Fi=function(t){this.property=t,this.value=new Ri(t,void 0)};Fi.prototype.transitioned=function(t,e){return new Ni(this.property,this.value,e,f({},t.transition,this.transition),t.now)},Fi.prototype.untransitioned=function(){return new Ni(this.property,this.value,null,{},0)};var Bi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};Bi.prototype.getValue=function(t){return b(this._values[t].value.value)},Bi.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Fi(this._values[t].property)),this._values[t].value=new Ri(this._values[t].property,null===e?void 0:b(e))},Bi.prototype.getTransition=function(t){return b(this._values[t].transition)},Bi.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Fi(this._values[t].property)),this._values[t].transition=b(e)||void 0},Bi.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var ji=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};ji.prototype.possiblyEvaluate=function(t,e,r){for(var n=new Hi(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Gi),Wi=function(t){this.specification=t};Wi.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if("constant"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new zi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new zi(Math.floor(e.zoom),e)),t.expression.evaluate(new zi(Math.floor(e.zoom+1),e)),e)}},Wi.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Wi.prototype.interpolate=function(t){return t};var Zi=function(t){this.specification=t};Zi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Zi.prototype.interpolate=function(){return!1};var Xi=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new Ri(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new Fi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};ii("DataDrivenProperty",Gi),ii("DataConstantProperty",qi),ii("CrossFadedDataDrivenProperty",Yi),ii("CrossFadedProperty",Wi),ii("ColorRampProperty",Zi);var Ji="-transition",Ki=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},"custom"!==e.type&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,"background"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new Ui(r.layout)),r.paint)){for(var n in this._transitionablePaint=new Bi(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Hi(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return"visibility"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n="layers."+this.id+".layout."+t;if(this._validate(Jn,n,t,e,r))return}"visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return y(t,Ji)?this._transitionablePaint.getTransition(t.slice(0,-11)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n="layers."+this.id+".paint."+t;if(this._validate(Xn,n,t,e,r))return!1}if(y(t,Ji))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;var i=this._transitionablePaint._values[t],a="cross-faded-data-driven"===i.property.specification["property-type"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||"none"===this.visibility},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),x(t,function(t,e){return!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)})},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&Kn(this,t.call(Wn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Dt,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof Vi&&Zr(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return!0}return!1},e}(It),$i={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Qi=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},ta=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function ea(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map(function(t){var i,a=(i=t.type,$i[i].BYTES_PER_ELEMENT),o=r=ra(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}}),size:ra(r,Math.max(n,e)),alignment:e}}function ra(t,e){return Math.ceil(t/e)*e}ta.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},ta.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},ta.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},ta.prototype.clear=function(){this.length=0},ta.prototype.resize=function(t){this.reserve(t),this.length=t},ta.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},ta.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(ta);na.prototype.bytesPerElement=4,ii("StructArrayLayout2i4",na);var ia=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(ta);ia.prototype.bytesPerElement=8,ii("StructArrayLayout4i8",ia);var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(ta);aa.prototype.bytesPerElement=12,ii("StructArrayLayout2i4i12",aa);var oa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(ta);oa.prototype.bytesPerElement=8,ii("StructArrayLayout2i4ub8",oa);var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,u){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l,u)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,u,c){var f=9*t,h=18*t;return this.uint16[f+0]=e,this.uint16[f+1]=r,this.uint16[f+2]=n,this.uint16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.uint8[h+16]=u,this.uint8[h+17]=c,t},e}(ta);sa.prototype.bytesPerElement=18,ii("StructArrayLayout8ui2ub18",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,u,c,f){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,n,i,a,o,s,l,u,c,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,u,c,f,h){var p=12*t;return this.int16[p+0]=e,this.int16[p+1]=r,this.int16[p+2]=n,this.int16[p+3]=i,this.uint16[p+4]=a,this.uint16[p+5]=o,this.uint16[p+6]=s,this.uint16[p+7]=l,this.int16[p+8]=u,this.int16[p+9]=c,this.int16[p+10]=f,this.int16[p+11]=h,t},e}(ta);la.prototype.bytesPerElement=24,ii("StructArrayLayout4i4ui4i24",la);var ua=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(ta);ua.prototype.bytesPerElement=12,ii("StructArrayLayout3f12",ua);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(ta);ca.prototype.bytesPerElement=4,ii("StructArrayLayout1ul4",ca);var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,u){var c=10*t,f=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=n,this.int16[c+3]=i,this.int16[c+4]=a,this.int16[c+5]=o,this.uint32[f+3]=s,this.uint16[c+8]=l,this.uint16[c+9]=u,t},e}(ta);fa.prototype.bytesPerElement=20,ii("StructArrayLayout6i1ul2ui20",fa);var ha=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(ta);ha.prototype.bytesPerElement=12,ii("StructArrayLayout2i2i2i12",ha);var pa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(ta);pa.prototype.bytesPerElement=16,ii("StructArrayLayout2f1f2i16",pa);var da=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(ta);da.prototype.bytesPerElement=12,ii("StructArrayLayout2ub2f12",da);var va=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(ta);va.prototype.bytesPerElement=6,ii("StructArrayLayout3ui6",va);var ga=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g){var y=this.length;return this.resize(y+1),this.emplace(y,t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g,y){var m=24*t,x=12*t,b=48*t;return this.int16[m+0]=e,this.int16[m+1]=r,this.uint16[m+2]=n,this.uint16[m+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[m+10]=l,this.uint16[m+11]=u,this.uint16[m+12]=c,this.float32[x+7]=f,this.float32[x+8]=h,this.uint8[b+36]=p,this.uint8[b+37]=d,this.uint8[b+38]=v,this.uint32[x+10]=g,this.int16[m+22]=y,t},e}(ta);ga.prototype.bytesPerElement=48,ii("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ga);var ya=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x,b,_,w,T,A,k,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x,b,_,w,T,A,k,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x,b,_,w,T,A,k,M,S,E){var L=34*t,C=17*t;return this.int16[L+0]=e,this.int16[L+1]=r,this.int16[L+2]=n,this.int16[L+3]=i,this.int16[L+4]=a,this.int16[L+5]=o,this.int16[L+6]=s,this.int16[L+7]=l,this.uint16[L+8]=u,this.uint16[L+9]=c,this.uint16[L+10]=f,this.uint16[L+11]=h,this.uint16[L+12]=p,this.uint16[L+13]=d,this.uint16[L+14]=v,this.uint16[L+15]=g,this.uint16[L+16]=y,this.uint16[L+17]=m,this.uint16[L+18]=x,this.uint16[L+19]=b,this.uint16[L+20]=_,this.uint16[L+21]=w,this.uint16[L+22]=T,this.uint32[C+12]=A,this.float32[C+13]=k,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(ta);ya.prototype.bytesPerElement=68,ii("StructArrayLayout8i15ui1ul4f68",ya);var ma=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(ta);ma.prototype.bytesPerElement=4,ii("StructArrayLayout1f4",ma);var xa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(ta);xa.prototype.bytesPerElement=6,ii("StructArrayLayout3i6",xa);var ba=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(ta);ba.prototype.bytesPerElement=8,ii("StructArrayLayout1ul2ui8",ba);var _a=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(ta);_a.prototype.bytesPerElement=4,ii("StructArrayLayout2ui4",_a);var wa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(ta);wa.prototype.bytesPerElement=2,ii("StructArrayLayout1ui2",wa);var Ta=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(ta);Ta.prototype.bytesPerElement=8,ii("StructArrayLayout2f8",Ta);var Aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(ta);Aa.prototype.bytesPerElement=16,ii("StructArrayLayout4f16",Aa);var ka=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new a(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Qi);ka.prototype.size=20;var Ma=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ka(this,t)},e}(fa);ii("CollisionBoxArray",Ma);var Sa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Qi);Sa.prototype.size=48;var Ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new Sa(this,t)},e}(ga);ii("PlacedSymbolArray",Ea);var La=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Qi);La.prototype.size=68;var Ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new La(this,t)},e}(ya);ii("SymbolInstanceArray",Ca);var Pa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(ma);ii("GlyphOffsetArray",Pa);var Oa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(xa);ii("SymbolLineVertexArray",Oa);var Ia=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Qi);Ia.prototype.size=8;var Da=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new Ia(this,t)},e}(ba);ii("FeatureIndexArray",Da);var za=ea([{name:"a_pos",components:2,type:"Int16"}],4).members,Ra=function(t){void 0===t&&(t=[]),this.segments=t};function Fa(t,e){return 256*(t=u(Math.floor(t),0,255))+u(Math.floor(e),0,255)}Ra.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>Ra.MAX_VERTEX_ARRAY_LENGTH&&w("Max vertices per segment is "+Ra.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+t),(!i||i.vertexLength+t>Ra.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},Ra.prototype.get=function(){return this.segments},Ra.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+(((a>>>16)+58964&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}}),ja=e(function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}}),Ua=Na,Va=Na,Ha=ja;Ua.murmur3=Va,Ua.murmur2=Ha;var qa=function(){this.ids=[],this.positions=[],this.indexed=!1};qa.prototype.add=function(t,e,r,n){this.ids.push(Ya(t)),this.positions.push(e,r,n)},qa.prototype.getPositions=function(t){for(var e=Ya(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},qa.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Wa(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}},qa.deserialize=function(t){var e=new qa;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e};var Ga=Math.pow(2,53)-1;function Ya(t){var e=+t;return!isNaN(e)&&e<=Ga?e:Ua(String(t))}function Wa(t,e,r,n){for(;r>1],a=r-1,o=n+1;;){do{a++}while(t[a]i);if(a>=o)break;Za(t,a,o),Za(e,3*a,3*o),Za(e,3*a+1,3*o+1),Za(e,3*a+2,3*o+2)}o-ryo.max||o.yyo.max)&&(w("Geometry exceeds allowed extent, reduce your vector tile buffer size"),o.x=u(o.x,yo.min,yo.max),o.y=u(o.y,yo.min,yo.max))}return r}function xo(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var bo=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new na,this.indexArray=new va,this.segments=new Ra,this.programConfigurations=new fo(za,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};function _o(t,e){for(var r=0;r1){if(ko(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function Lo(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function Co(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function Po(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=T(t,e,r[0]);return a!==T(t,e,r[1])||a!==T(t,e,r[2])||a!==T(t,e,r[3])}function Oo(t,e,r){var n=e.paint.get(t).value;return"constant"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function Io(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Do(t,e,r,n,i){if(!e[0]&&!e[1])return t;var o=a.convert(e)._mult(i);"viewport"===r&&o._rotate(-n);for(var s=[],l=0;l=vo||c<0||c>=vo)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;xo(this.layoutVertexArray,u,c,-1,-1),xo(this.layoutVertexArray,u,c,1,-1),xo(this.layoutVertexArray,u,c,1,1),xo(this.layoutVertexArray,u,c,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),f.vertexLength+=4,f.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},ii("CircleBucket",bo,{omit:["layers"]});var zo=new Xi({"circle-sort-key":new Gi(Dt.layout_circle["circle-sort-key"])}),Ro={paint:new Xi({"circle-radius":new Gi(Dt.paint_circle["circle-radius"]),"circle-color":new Gi(Dt.paint_circle["circle-color"]),"circle-blur":new Gi(Dt.paint_circle["circle-blur"]),"circle-opacity":new Gi(Dt.paint_circle["circle-opacity"]),"circle-translate":new qi(Dt.paint_circle["circle-translate"]),"circle-translate-anchor":new qi(Dt.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new qi(Dt.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new qi(Dt.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new Gi(Dt.paint_circle["circle-stroke-width"]),"circle-stroke-color":new Gi(Dt.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new Gi(Dt.paint_circle["circle-stroke-opacity"])}),layout:zo},Fo="undefined"!=typeof Float32Array?Float32Array:Array;function Bo(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function No(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],u=e[6],c=e[7],f=e[8],h=e[9],p=e[10],d=e[11],v=e[12],g=e[13],y=e[14],m=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*v,t[1]=x*i+b*l+_*h+w*g,t[2]=x*a+b*u+_*p+w*y,t[3]=x*o+b*c+_*d+w*m,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*v,t[5]=x*i+b*l+_*h+w*g,t[6]=x*a+b*u+_*p+w*y,t[7]=x*o+b*c+_*d+w*m,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*v,t[9]=x*i+b*l+_*h+w*g,t[10]=x*a+b*u+_*p+w*y,t[11]=x*o+b*c+_*d+w*m,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*v,t[13]=x*i+b*l+_*h+w*g,t[14]=x*a+b*u+_*p+w*y,t[15]=x*o+b*c+_*d+w*m,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var jo=No;var Uo,Vo=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};function Ho(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}Uo=new Fo(3),Fo!=Float32Array&&(Uo[0]=0,Uo[1]=0,Uo[2]=0),function(){var t=new Fo(4);Fo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0)}();var qo=function(t){var e=t[0],r=t[1];return e*e+r*r},Go=(function(){var t=new Fo(2);Fo!=Float32Array&&(t[0]=0,t[1]=0)}(),function(t){function e(e){t.call(this,e,Ro)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new bo(t)},e.prototype.queryRadius=function(t){var e=t;return Oo("circle-radius",this,e)+Oo("circle-stroke-width",this,e)+Io(this.paint.get("circle-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=Do(t,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),a.angle,o),u=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),c="map"===this.paint.get("circle-pitch-alignment"),f=c?l:function(t,e){return t.map(function(t){return Yo(t,e)})}(l,s),h=c?u*o:u,p=0,d=n;pt.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError("out of range source coordinates for image copy");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError("out of range destination coordinates for image copy");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);u=0!==(u=Math.max(a-n,o-i))?1/u:0}return cs(h,p,r,n,i,u),p}function ls(t,e,r,n,i){var a,o;if(i===Os(t,e,r,n)>0)for(a=e;a=e;a-=n)o=Ls(a,t[a],t[a+1],o);return o&&Ts(o,o.next)&&(Cs(o),o=o.next),o}function us(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!Ts(n,n.next)&&0!==ws(n.prev,n,n.next))n=n.next;else{if(Cs(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function cs(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=ms(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,u=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,u*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,u=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?hs(t,n,i,a):fs(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),Cs(t),t=l.next,u=l.next;else if((t=l)===u){o?1===o?cs(t=ps(us(t),e,r),e,r,n,i,a,2):2===o&&ds(t,e,r,n,i,a):cs(us(t),e,r,n,i,a,1);break}}}function fs(t){var e=t.prev,r=t,n=t.next;if(ws(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(bs(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&ws(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function hs(t,e,r,n){var i=t.prev,a=t,o=t.next;if(ws(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,c=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,f=ms(s,l,e,r,n),h=ms(u,c,e,r,n),p=t.prevZ,d=t.nextZ;p&&p.z>=f&&d&&d.z<=h;){if(p!==t.prev&&p!==t.next&&bs(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&ws(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&bs(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&ws(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&bs(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&ws(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&bs(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&ws(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function ps(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!Ts(i,a)&&As(i,n,n.next,a)&&Ss(i,a)&&Ss(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),Cs(n),Cs(n.next),n=t=a),n=n.next}while(n!==t);return us(n)}function ds(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&_s(o,s)){var l=Es(o,s);return o=us(o,o.next),l=us(l,l.next),cs(o,e,r,n,i,a),void cs(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function vs(t,e){return t.x-e.x}function gs(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=c&&i!==n.x&&bs(ar.x||n.x===r.x&&ys(r,n)))&&(r=n,h=l)),n=n.next}while(n!==u);return r}(t,e)){var r=Es(e,t);us(e,e.next),us(r,r.next)}}function ys(t,e){return ws(t.prev,t,e.prev)<0&&ws(e.next,t,t.next)<0}function ms(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function xs(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function _s(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&As(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(Ss(t,e)&&Ss(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(ws(t.prev,t,e.prev)||ws(t,e.prev,e))||Ts(t,e)&&ws(t.prev,t,t.next)>0&&ws(e.prev,e,e.next)>0)}function ws(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Ts(t,e){return t.x===e.x&&t.y===e.y}function As(t,e,r,n){var i=Ms(ws(t,e,r)),a=Ms(ws(t,e,n)),o=Ms(ws(r,n,t)),s=Ms(ws(r,n,e));return i!==a&&o!==s||!(0!==i||!ks(t,r,e))||!(0!==a||!ks(t,n,e))||!(0!==o||!ks(r,t,n))||!(0!==s||!ks(r,e,n))}function ks(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function Ms(t){return t>0?1:t<0?-1:0}function Ss(t,e){return ws(t.prev,t,t.next)<0?ws(t,e,t.next)>=0&&ws(t,t.prev,e)>=0:ws(t,e,t.prev)<0||ws(t,t.next,e)<0}function Es(t,e){var r=new Ps(t.i,t.x,t.y),n=new Ps(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function Ls(t,e,r,n){var i=new Ps(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Cs(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Ps(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Os(t,e,r,n){for(var i=0,a=e,o=r-n;ar;){if(n-r>600){var a=n-r+1,o=e-r+1,s=Math.log(a),l=.5*Math.exp(2*s/3),u=.5*Math.sqrt(s*l*(a-l)/a)*(o-a/2<0?-1:1);Ds(t,e,Math.max(r,Math.floor(e-o*l/a+u)),Math.min(n,Math.floor(e+(a-o)*l/a+u)),i)}var c=t[e],f=r,h=n;for(zs(t,r,e),i(t[n],c)>0&&zs(t,r,n);f0;)h--}0===i(t[r],c)?zs(t,r,h):zs(t,++h,n),h<=e&&(r=h+1),e<=h&&(n=h-1)}}function zs(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function Rs(t,e){return te?1:0}function Fs(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},as.default=os;var Us=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new na,this.indexArray=new va,this.indexArray2=new _a,this.programConfigurations=new fo(is,t.layers,t.zoom),this.segments=new Ra,this.segments2=new Ra,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};Us.prototype.populate=function(t,e,r){this.hasPattern=Ns("fill",this.layers,e);for(var n=this.layers[0].layout.get("fill-sort-key"),i=[],a=0,o=t;a>3}if(i--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new a(o,s));else{if(7!==n)throw new Error("unknown command "+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},Ws.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,u=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())u&&(u=a);else if(7!==r)throw new Error("unknown command "+r)}return[o,l,s,u]},Ws.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),u=Ws.types[this.type];function c(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}function Qs(t,e,r){if(3===t){var n=new Js(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Ks.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Ys(this._pbf,e,this.extent,this._keys,this._values)};var tl={VectorTile:function(t,e){this.layers=t.readFields(Qs,{},e)},VectorTileFeature:Ys,VectorTileLayer:Js},el=tl.VectorTileFeature.types,rl=Math.pow(2,13);function nl(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*rl)+o,i*rl*2,a*rl*2,Math.round(s))}var il=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new aa,this.indexArray=new va,this.programConfigurations=new fo(Gs,t.layers,t.zoom),this.segments=new Ra,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};function al(t,e){return t.x===e.x&&(t.x<0||t.x>vo)||t.y===e.y&&(t.y<0||t.y>vo)}function ol(t){return t.every(function(t){return t.x<0})||t.every(function(t){return t.x>vo})||t.every(function(t){return t.y<0})||t.every(function(t){return t.y>vo})}il.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=Ns("fill-extrusion",this.layers,e);for(var n=0,i=t;n=1){var m=d[g-1];if(!al(y,m)){f.vertexLength+4>Ra.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=y.sub(m)._perp()._unit(),b=m.dist(y);v+b>32768&&(v=0),nl(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,v),nl(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,v),v+=b,nl(this.layoutVertexArray,m.x,m.y,x.x,x.y,0,0,v),nl(this.layoutVertexArray,m.x,m.y,x.x,x.y,0,1,v);var _=f.vertexLength;this.indexArray.emplaceBack(_,_+2,_+1),this.indexArray.emplaceBack(_+1,_+2,_+3),f.vertexLength+=4,f.primitiveLength+=2}}}}if(f.vertexLength+l>Ra.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),"Polygon"===el[t.type]){for(var w=[],T=[],A=f.vertexLength,k=0,M=s;k=2&&t[l-1].equals(t[l-2]);)l--;for(var u=0;u0;if(T&&y>u){var k=c.dist(p);if(k>2*f){var M=c.sub(c.sub(p)._mult(f/k)._round());this.updateDistance(p,M),this.addCurrentVertex(M,v,0,0,h),p=M}}var S=p&&d,E=S?r:s?"butt":n;if(S&&"round"===E&&(_i&&(E="bevel"),"bevel"===E&&(_>2&&(E="flipbevel"),_100)m=g.mult(-1);else{var L=_*v.add(g).mag()/v.sub(g).mag();m._perp()._mult(L*(A?-1:1))}this.addCurrentVertex(c,m,0,0,h),this.addCurrentVertex(c,m.mult(-1),0,0,h)}else if("bevel"===E||"fakeround"===E){var C=-Math.sqrt(_*_-1),P=A?C:0,O=A?0:C;if(p&&this.addCurrentVertex(c,v,P,O,h),"fakeround"===E)for(var I=Math.round(180*w/Math.PI/20),D=1;D2*f){var j=c.add(d.sub(c)._mult(f/N)._round());this.updateDistance(c,j),this.addCurrentVertex(j,g,0,0,h),c=j}}}}},vl.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,u=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,u,a,!0,-n,i),this.distance>dl/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},vl.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,u=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&u)<<2,u>>6);var c=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,c),o.primitiveLength++),i?this.e2=c:this.e1=c},vl.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(dl-1):this.distance},vl.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},ii("LineBucket",vl,{omit:["layers","patternFeatures"]});var gl=new Xi({"line-cap":new qi(Dt.layout_line["line-cap"]),"line-join":new Gi(Dt.layout_line["line-join"]),"line-miter-limit":new qi(Dt.layout_line["line-miter-limit"]),"line-round-limit":new qi(Dt.layout_line["line-round-limit"]),"line-sort-key":new Gi(Dt.layout_line["line-sort-key"])}),yl={paint:new Xi({"line-opacity":new Gi(Dt.paint_line["line-opacity"]),"line-color":new Gi(Dt.paint_line["line-color"]),"line-translate":new qi(Dt.paint_line["line-translate"]),"line-translate-anchor":new qi(Dt.paint_line["line-translate-anchor"]),"line-width":new Gi(Dt.paint_line["line-width"]),"line-gap-width":new Gi(Dt.paint_line["line-gap-width"]),"line-offset":new Gi(Dt.paint_line["line-offset"]),"line-blur":new Gi(Dt.paint_line["line-blur"]),"line-dasharray":new Wi(Dt.paint_line["line-dasharray"]),"line-pattern":new Yi(Dt.paint_line["line-pattern"]),"line-gradient":new Zi(Dt.paint_line["line-gradient"])}),layout:gl},ml=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new zi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=f({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Gi),xl=new ml(yl.paint.properties["line-width"].specification);xl.useIntegerZoom=!0;var bl=function(t){function e(e){t.call(this,e,yl)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){"line-gradient"===t&&this._updateGradient()},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values["line-gradient"].value.expression;this.gradient=ts(t,"lineProgress"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values["line-floorwidth"]=xl.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)},e.prototype.createBucket=function(t){return new vl(t)},e.prototype.queryRadius=function(t){var e=t,r=_l(Oo("line-width",this,e),Oo("line-gap-width",this,e)),n=Oo("line-offset",this,e);return r/2+Math.abs(n)+Io(this.paint.get("line-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,o,s){var l=Do(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),o.angle,s),u=s/2*_l(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),c=this.paint.get("line-offset").evaluate(e,r);return c&&(n=function(t,e){for(var r=[],n=new a(0,0),i=0;i=3)for(var a=0;a0?e+2*t:t}var wl=ea([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Tl=ea([{name:"a_projected_pos",components:3,type:"Float32"}],4),Al=(ea([{name:"a_fade_opacity",components:1,type:"Uint32"}],4),ea([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}])),kl=(ea([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]),ea([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4)),Ml=ea([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Sl(t,e,r){return t.sections.forEach(function(t){t.text=function(t,e,r){var n=e.layout.get("text-transform").evaluate(r,{});return"uppercase"===n?t=t.toLocaleUpperCase():"lowercase"===n&&(t=t.toLocaleLowerCase()),Ii.applyArabicShaping&&(t=Ii.applyArabicShaping(t)),t}(t.text,e,r)}),t}ea([{name:"triangle",components:3,type:"Uint16"}]),ea([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),ea([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),ea([{type:"Float32",name:"offsetX"}]),ea([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);var El={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"};var Ll=24,Cl=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,c=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=256*a+t[e+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=256*o+t[e+f],f+=h,c-=8);if(0===a)a=1-u;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=u}return(p?-1:1)*o*Math.pow(2,a-n)},Pl=function(t,e,r,n,i,a){var o,s,l,u=8*a-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,u-=8);t[r+p-d]|=128*v},Ol=Il;function Il(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}Il.Varint=0,Il.Fixed64=1,Il.Bytes=2,Il.Fixed32=5;var Dl=4294967296,zl=1/Dl,Rl="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function Fl(t){return t.type===Il.Bytes?t.readVarint()+t.pos:t.pos+1}function Bl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Nl(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function jl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function Kl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}Il.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Xl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Kl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Xl(this.buf,this.pos)+Xl(this.buf,this.pos+4)*Dl;return this.pos+=8,t},readSFixed64:function(){var t=Xl(this.buf,this.pos)+Kl(this.buf,this.pos+4)*Dl;return this.pos+=8,t},readFloat:function(){var t=Cl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Cl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(n=(112&(i=a[r.pos++]))>>4,i<128)return Bl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<3,i<128)return Bl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<10,i<128)return Bl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<17,i<128)return Bl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<24,i<128)return Bl(t,n,e);if(n|=(1&(i=a[r.pos++]))<<31,i<128)return Bl(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Rl?function(t,e,r){return Rl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n="",i=e;i239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(a=t[i+1]))&&(u=(31&l)<<6|63&a)<=127&&(u=null):3===c?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((u=(15&l)<<12|(63&a)<<6|63&o)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((u=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==Il.Bytes)return t.push(this.readVarint(e));var r=Fl(this);for(t=t||[];this.pos127;);else if(e===Il.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Il.Fixed32)this.pos+=4;else{if(e!==Il.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))))}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&Nl(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),Pl(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),Pl(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&Nl(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,Il.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,jl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Ul,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,ql,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Vl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Hl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Gl,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Yl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Wl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Zl,e)},writeBytesField:function(t,e){this.writeTag(t,Il.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,Il.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,Il.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,Il.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,Il.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,Il.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,Il.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,Il.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,Il.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,Il.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function $l(t,e,r){1===t&&r.readMessage(Ql,e)}function Ql(t,e,r){if(3===t){var n=r.readMessage(tu,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,u=n.top,c=n.advance;e.push({id:i,bitmap:new Ko({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:u,advance:c}})}}function tu(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function eu(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var p=o[h];if(!(f.w>p.w||f.h>p.h)){if(f.x=p.x,f.y=p.y,l=Math.max(l,f.y+f.h),s=Math.max(s,f.x+f.w),f.w===p.w&&f.h===p.h){var d=o.pop();h0&&B>k&&(k=B)}else{var N=r[S.fontStack],j=N&&N[L];if(j&&j.rect)O=j.rect,P=j.metrics;else{var U=e[S.fontStack],V=U&&U[L];if(!V)continue;P=V.metrics}C=(_-S.scale)*Ll}z?(t.verticalizable=!0,A.push({glyph:L,imageName:I,x:h,y:p+C,vertical:z,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:O}),h+=D*S.scale+u):(A.push({glyph:L,imageName:I,x:h,y:p+C,vertical:z,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:P,rect:O}),h+=P.advance*S.scale+u)}if(0!==A.length){var H=h-u;d=Math.max(H,d),xu(A,0,A.length-1,g,k)}h=0;var q=a*_+k;T.lineOffset=Math.max(k,w),p+=q,v=Math.max(q,v),++y}else p+=a,++y}var G=p-ou,Y=mu(o),W=Y.horizontalAlign,Z=Y.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var u=(e-r)*i,c=0;c=a!==o?-s*n-ou:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&cu[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},lu.prototype.substring=function(t,e){var r=new lu;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},lu.prototype.toString=function(){return this.text},lu.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce(function(e,r){return Math.max(e,t.sections[r].scale)},0)},lu.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(su.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var cu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},fu={};function hu(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*Ll/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function pu(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,c=0,f=0;f-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],u=0;sn;)u-=l.shift().angleDelta;if(u>i)return!1;o++,s+=f.dist(h)}return!0}function Eu(t){for(var e=0,r=0;ru){var d=(u-l)/p,v=tr(f.x,h.x,d),g=tr(f.y,h.y,d),y=new _u(v,g,h.angleTo(f),c);return y._round(),!o||Su(t,y,s,o,e)?y:void 0}l+=p}}function Ou(t,e,r,n,i,a,o,s,l){var u=Lu(n,a,o),c=Cu(n,i),f=c*o,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-f=0&&b=0&&_=0&&h+u<=c){var w=new _u(b,_,m,d);w._round(),n&&!Su(t,w,a,n,i)||p.push(w)}}f+=y}return s||p.length||o||(p=Iu(t,f/2,r,n,i,a,o,!0,l)),p}function Du(t,e,r,n,i){for(var o=[],s=0;s=n&&h.x>=n||(f.x>=n?f=new a(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round():h.x>=n&&(h=new a(n,f.y+(h.y-f.y)*((n-f.x)/(h.x-f.x)))._round()),f.y>=i&&h.y>=i||(f.y>=i?f=new a(f.x+(h.x-f.x)*((i-f.y)/(h.y-f.y)),i)._round():h.y>=i&&(h=new a(f.x+(h.x-f.x)*((i-f.y)/(h.y-f.y)),i)._round()),u&&f.equals(u[u.length-1])||(u=[f],o.push(u)),u.push(h)))))}return o}function zu(t,e,r,n){var i=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,u=o.paddedRect.h-2,c=t.right-t.left,f=t.bottom-t.top,h=o.stretchX||[[0,l]],p=o.stretchY||[[0,u]],d=function(t,e){return t+e[1]-e[0]},v=h.reduce(d,0),g=p.reduce(d,0),y=l-v,m=u-g,x=0,b=v,_=0,w=g,T=0,A=y,k=0,M=m;if(o.content&&n){var S=o.content;x=Ru(h,0,S[0]),_=Ru(p,0,S[1]),b=Ru(h,S[0],S[2]),w=Ru(p,S[1],S[3]),T=S[0]-x,k=S[1]-_,A=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,i,l,u){var h=Bu(n.stretch-x,b,c,t.left),p=Nu(n.fixed-T,A,n.stretch,v),d=Bu(i.stretch-_,w,f,t.top),y=Nu(i.fixed-k,M,i.stretch,g),m=Bu(l.stretch-x,b,c,t.left),S=Nu(l.fixed-T,A,l.stretch,v),E=Bu(u.stretch-_,w,f,t.top),L=Nu(u.fixed-k,M,u.stretch,g),C=new a(h,d),P=new a(m,d),O=new a(m,E),I=new a(h,E),D=new a(p/s,y/s),z=new a(S/s,L/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),N=[B,-F,F,B];C._matMult(N),P._matMult(N),I._matMult(N),O._matMult(N)}var j=n.stretch+n.fixed,U=l.stretch+l.fixed,V=i.stretch+i.fixed,H=u.stretch+u.fixed;return{tl:C,tr:P,bl:I,br:O,tex:{x:o.paddedRect.x+1+j,y:o.paddedRect.y+1+V,w:U-j,h:H-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:D,pixelOffsetBR:z,minFontScaleX:A/s/c,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=Fu(h,y,v),C=Fu(p,m,g),P=0;P0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var v=o.top*s-l,g=o.bottom*s+l,y=o.left*s-l,m=o.right*s+l,x=o.collisionPadding;if(x&&(y-=x[0]*s,v-=x[1]*s,m+=x[2]*s,g+=x[3]*s),c){var b=new a(y,v),_=new a(m,v),w=new a(y,g),T=new a(m,g),A=c*Math.PI/180;b._rotate(A),_._rotate(A),w._rotate(A),T._rotate(A),y=Math.min(b.x,_.x,w.x,T.x),m=Math.max(b.x,_.x,w.x,T.x),v=Math.min(b.y,_.y,w.y,T.y),g=Math.max(b.y,_.y,w.y,T.y)}t.emplaceBack(e.x,e.y,y,v,m,g,r,n,i)}this.boxEndIndex=t.length},Uu=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=Vu),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function Vu(t,e){return te?1:0}function Hu(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,i=1/0,o=-1/0,s=-1/0,l=t[0],u=0;uo)&&(o=c.x),(!u||c.y>s)&&(s=c.y)}var f=o-n,h=s-i,p=Math.min(f,h),d=p/2,v=new Uu([],qu);if(0===p)return new a(n,i);for(var g=n;gm.d||!m.d)&&(m=b,r&&console.log("found best %d after %d probes",Math.round(1e4*b.d)/1e4,x)),b.max-m.d<=e||(d=b.h/2,v.push(new Gu(b.p.x-d,b.p.y-d,d,t)),v.push(new Gu(b.p.x+d,b.p.y-d,d,t)),v.push(new Gu(b.p.x-d,b.p.y+d,d,t)),v.push(new Gu(b.p.x+d,b.p.y+d,d,t)),x+=4)}return r&&(console.log("num probes: "+x),console.log("best distance: "+m.d)),m.p}function qu(t,e){return e.max-t.max}function Gu(t,e,r,n){this.p=new a(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=c.y>t.y&&t.x<(c.x-u.x)*(t.y-u.y)/(c.y-u.y)+u.x&&(r=!r),n=Math.min(n,Eo(t,u,c))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}Uu.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},Uu.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},Uu.prototype.peek=function(){return this.data[0]},Uu.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},Uu.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var Yu=Number.POSITIVE_INFINITY;function Wu(t,e){return e[1]!==Yu?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case"top-right":case"top-left":case"top":i=r-7;break;case"bottom-right":case"bottom-left":case"bottom":i=7-r}switch(t){case"top-right":case"bottom-right":case"right":n=-e;break;case"top-left":case"bottom-left":case"left":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case"top-right":case"top-left":n=i-7;break;case"bottom-right":case"bottom-left":n=7-i;break;case"bottom":n=7-e;break;case"top":n=e-7}switch(t){case"top-right":case"bottom-right":r=-i;break;case"top-left":case"bottom-left":r=i;break;case"left":r=e;break;case"right":r=-e}return[r,n]}(t,e[0])}function Zu(t){switch(t){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}var Xu=255,Ju=Xu*wu;function Ku(t,e,r,n,i,o,s,l,u,c,f,h,p,d,v){var g=function(t,e,r,n,i,o,s,l){for(var u=n.layout.get("text-rotate").evaluate(o,{})*Math.PI/180,c=[],f=0,h=e.positionedLines;fJu&&w(t.layerIds[0]+': Value for "text-size" is >= '+Xu+'. Reduce your "text-size".'):"composite"===y.kind&&((m=[wu*d.compositeTextSizes[0].evaluate(s,{},v),wu*d.compositeTextSizes[1].evaluate(s,{},v)])[0]>Ju||m[1]>Ju)&&w(t.layerIds[0]+': Value for "text-size" is >= '+Xu+'. Reduce your "text-size".'),t.addSymbols(t.text,g,m,l,o,s,c,e,u.lineStartIndex,u.lineLength,p,v);for(var x=0,b=f;x=0;o--)if(n.dist(a[o])0)&&("constant"!==a.value.kind||a.value.value.length>0),u="constant"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,c=i.get("symbol-sort-key");if(this.features=[],l||u){for(var f=e.iconDependencies,h=e.glyphDependencies,p=e.availableImages,d=new zi(this.zoom),v=0,g=t;v=0;for(var I=0,D=A.sections;I=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},sc.prototype.hasIconData=function(){return this.icon.segments.get().length>0},sc.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},sc.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},sc.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},sc.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)}),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},ii("SymbolBucket",sc,{omit:["layers","collisionBoxArray","features","compareText"]}),sc.MAX_GLYPHS=65535,sc.addDynamicAttributes=nc;var lc=new Xi({"symbol-placement":new qi(Dt.layout_symbol["symbol-placement"]),"symbol-spacing":new qi(Dt.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new qi(Dt.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Gi(Dt.layout_symbol["symbol-sort-key"]),"symbol-z-order":new qi(Dt.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new qi(Dt.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new qi(Dt.layout_symbol["icon-ignore-placement"]),"icon-optional":new qi(Dt.layout_symbol["icon-optional"]),"icon-rotation-alignment":new qi(Dt.layout_symbol["icon-rotation-alignment"]),"icon-size":new Gi(Dt.layout_symbol["icon-size"]),"icon-text-fit":new qi(Dt.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new qi(Dt.layout_symbol["icon-text-fit-padding"]),"icon-image":new Gi(Dt.layout_symbol["icon-image"]),"icon-rotate":new Gi(Dt.layout_symbol["icon-rotate"]),"icon-padding":new qi(Dt.layout_symbol["icon-padding"]),"icon-keep-upright":new qi(Dt.layout_symbol["icon-keep-upright"]),"icon-offset":new Gi(Dt.layout_symbol["icon-offset"]),"icon-anchor":new Gi(Dt.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new qi(Dt.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new qi(Dt.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new qi(Dt.layout_symbol["text-rotation-alignment"]),"text-field":new Gi(Dt.layout_symbol["text-field"]),"text-font":new Gi(Dt.layout_symbol["text-font"]),"text-size":new Gi(Dt.layout_symbol["text-size"]),"text-max-width":new Gi(Dt.layout_symbol["text-max-width"]),"text-line-height":new qi(Dt.layout_symbol["text-line-height"]),"text-letter-spacing":new Gi(Dt.layout_symbol["text-letter-spacing"]),"text-justify":new Gi(Dt.layout_symbol["text-justify"]),"text-radial-offset":new Gi(Dt.layout_symbol["text-radial-offset"]),"text-variable-anchor":new qi(Dt.layout_symbol["text-variable-anchor"]),"text-anchor":new Gi(Dt.layout_symbol["text-anchor"]),"text-max-angle":new qi(Dt.layout_symbol["text-max-angle"]),"text-writing-mode":new qi(Dt.layout_symbol["text-writing-mode"]),"text-rotate":new Gi(Dt.layout_symbol["text-rotate"]),"text-padding":new qi(Dt.layout_symbol["text-padding"]),"text-keep-upright":new qi(Dt.layout_symbol["text-keep-upright"]),"text-transform":new Gi(Dt.layout_symbol["text-transform"]),"text-offset":new Gi(Dt.layout_symbol["text-offset"]),"text-allow-overlap":new qi(Dt.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new qi(Dt.layout_symbol["text-ignore-placement"]),"text-optional":new qi(Dt.layout_symbol["text-optional"])}),uc={paint:new Xi({"icon-opacity":new Gi(Dt.paint_symbol["icon-opacity"]),"icon-color":new Gi(Dt.paint_symbol["icon-color"]),"icon-halo-color":new Gi(Dt.paint_symbol["icon-halo-color"]),"icon-halo-width":new Gi(Dt.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Gi(Dt.paint_symbol["icon-halo-blur"]),"icon-translate":new qi(Dt.paint_symbol["icon-translate"]),"icon-translate-anchor":new qi(Dt.paint_symbol["icon-translate-anchor"]),"text-opacity":new Gi(Dt.paint_symbol["text-opacity"]),"text-color":new Gi(Dt.paint_symbol["text-color"],{runtimeType:Yt,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),"text-halo-color":new Gi(Dt.paint_symbol["text-halo-color"]),"text-halo-width":new Gi(Dt.paint_symbol["text-halo-width"]),"text-halo-blur":new Gi(Dt.paint_symbol["text-halo-blur"]),"text-translate":new qi(Dt.paint_symbol["text-translate"]),"text-translate-anchor":new qi(Dt.paint_symbol["text-translate-anchor"])}),layout:lc},cc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Vt,this.defaultValue=t};cc.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},cc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},cc.prototype.outputDefined=function(){return!1},cc.prototype.serialize=function(){return null},ii("FormatSectionOverride",cc,{omit:["defaultValue"]});var fc=function(t){function e(e){t.call(this,e,uc)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),"auto"===this.layout.get("icon-rotation-alignment")&&("point"!==this.layout.get("symbol-placement")?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),"auto"===this.layout.get("text-rotation-alignment")&&("point"!==this.layout.get("symbol-placement")?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){var n=this.layout.get("text-writing-mode");if(n){for(var i=[],a=0,o=n;a",targetMapId:n,sourceMapId:a.mapId})}}},kc.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(""===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else k()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},kc.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},kc.prototype.processTask=function(t,e){var r=this;if(""===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(ui(e.error)):n(null,ui(e.data)))}else{var i=!1,a=E(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:"",sourceMapId:r.mapId,error:e?li(e):null,data:li(n,a)},a)}:function(t){i=!0},s=null,l=ui(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var u=e.type.split(".");s=this.parent.getWorkerSource(e.sourceMapId,u[0],l.source)[u[1]](l,o)}else o(new Error("Could not find function "+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},kc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};var Sc=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};Sc.prototype.setNorthEast=function(t){return this._ne=t instanceof Lc?new Lc(t.lng,t.lat):Lc.convert(t),this},Sc.prototype.setSouthWest=function(t){return this._sw=t instanceof Lc?new Lc(t.lng,t.lat):Lc.convert(t),this},Sc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Lc)e=t,r=t;else{if(!(t instanceof Sc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(Sc.convert(a))}var o=t;return this.extend(Lc.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Lc(e.lng,e.lat),this._ne=new Lc(r.lng,r.lat)),this},Sc.prototype.getCenter=function(){return new Lc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Sc.prototype.getSouthWest=function(){return this._sw},Sc.prototype.getNorthEast=function(){return this._ne},Sc.prototype.getNorthWest=function(){return new Lc(this.getWest(),this.getNorth())},Sc.prototype.getSouthEast=function(){return new Lc(this.getEast(),this.getSouth())},Sc.prototype.getWest=function(){return this._sw.lng},Sc.prototype.getSouth=function(){return this._sw.lat},Sc.prototype.getEast=function(){return this._ne.lng},Sc.prototype.getNorth=function(){return this._ne.lat},Sc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Sc.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},Sc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Sc.prototype.contains=function(t){var e=Lc.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},Sc.convert=function(t){return!t||t instanceof Sc?t:new Sc(t)};var Ec=6371008.8,Lc=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid LngLat object: ("+t+", "+e+")");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};Lc.prototype.wrap=function(){return new Lc(c(this.lng,-180,180),this.lat)},Lc.prototype.toArray=function(){return[this.lng,this.lat]},Lc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},Lc.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return Ec*Math.acos(Math.min(i,1))},Lc.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Sc(new Lc(this.lng-r,this.lat-e),new Lc(this.lng+r,this.lat+e))},Lc.convert=function(t){if(t instanceof Lc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Lc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new Lc(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var Cc=2*Math.PI*Ec;function Pc(t){return Cc*Math.cos(t*Math.PI/180)}function Oc(t){return(180+t)/360}function Ic(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Dc(t,e){return t/Pc(e)}function zc(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var Rc=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};Rc.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Lc.convert(t);return new Rc(Oc(r.lng),Ic(r.lat),Dc(e,r.lat))},Rc.prototype.toLngLat=function(){return new Lc(360*this.x-180,zc(this.y))},Rc.prototype.toAltitude=function(){return t=this.z,e=this.y,t*Pc(zc(e));var t,e},Rc.prototype.meterInMercatorCoordinateUnits=function(){return 1/Cc*(t=zc(this.y),1/Math.cos(t*Math.PI/180));var t};var Fc=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=jc(0,t,t,e,r)};Fc.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Fc.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=Mc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=Mc(256*(r+1),256*(n+1),i),a[0]+","+a[1]+","+o[0]+","+o[1]),l=function(t,e,r){for(var n,i="",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new Nc(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Nc(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},Nc.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?jc(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):jc(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},Nc.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},Nc.prototype.children=function(t){if(this.overscaledZ>=t)return[new Nc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new Nc(e,this.wrap,e,r,n),new Nc(e,this.wrap,e,r+1,n),new Nc(e,this.wrap,e,r,n+1),new Nc(e,this.wrap,e,r+1,n+1)]},Nc.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(e+1)*this.stride+(t+1)},Uc.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},Uc.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Uc.prototype.getPixels=function(){return new $o({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Uc.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,u=a;u=0&&c[3]>=0&&s.insert(o,c[0],c[1],c[2],c[3])}},Yc.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new tl.VectorTile(new Ol(this.rawTileData)).layers,this.sourceLayerCoder=new Vc(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},Yc.prototype.query=function(t,e,r,n){var i=this;this.loadVTLayers();for(var o=t.params||{},s=vo/t.tileSize/t.scale,l=Tn(o.filter),u=t.queryGeometry,c=t.queryPadding*s,f=Zc(u),h=this.grid.query(f.minX-c,f.minY-c,f.maxX+c,f.maxY+c),p=Zc(t.cameraQueryGeometry),d=0,v=this.grid3D.query(p.minX-c,p.minY-c,p.maxX+c,p.maxY+c,function(e,r,n,i){return function(t,e,r,n,i){for(var o=0,s=t;o=l.x&&i>=l.y)return!0}var u=[new a(e,r),new a(e,i),new a(n,i),new a(n,r)];if(t.length>2)for(var c=0,f=u;c=0)return!0;return!1}(a,f)){var h=this.sourceLayerCoder.decode(r),p=this.vtLayers[h].feature(n);if(i.filter(new zi(this.tileID.overscaledZ),p))for(var d=this.getId(p,h),v=0;vn)i=!1;else if(e)if(this.expirationTimect&&(t.getActor().send("enforceCacheSizeLimit",ut),gt=0)},t.clamp=u,t.clearTileCache=function(t){var e=self.caches.delete(lt);t&&e.catch(t).then(function(){return t()})},t.clipLine=Du,t.clone=function(t){var e=new Fo(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=b,t.clone$2=function(t){var e=new Fo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=Ml,t.config=B,t.create=function(){var t=new Fo(16);return Fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new Fo(9);return Fo!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new Fo(4);return Fo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=un,t.createLayout=ea,t.createStyleLayer=function(t){return"custom"===t.type?new gc(t):new yc[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=tr,t.offscreenCanvasSupported=yt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),u=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*u,t[15]=1,t},t.parseGlyphPBF=function(t){return new Ol(t).readFields($l,[])},t.pbf=Ol,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=vo/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,u=t.layers[0]._unevaluatedLayout._values,c={};if("composite"===t.textSizeData.kind){var f=t.textSizeData,h=f.minZoom,p=f.maxZoom;c.compositeTextSizes=[u["text-size"].possiblyEvaluate(new zi(h),o),u["text-size"].possiblyEvaluate(new zi(p),o)]}if("composite"===t.iconSizeData.kind){var d=t.iconSizeData,v=d.minZoom,g=d.maxZoom;c.compositeIconSizes=[u["icon-size"].possiblyEvaluate(new zi(v),o),u["icon-size"].possiblyEvaluate(new zi(g),o)]}c.layoutTextSize=u["text-size"].possiblyEvaluate(new zi(t.zoom+1),o),c.layoutIconSize=u["icon-size"].possiblyEvaluate(new zi(t.zoom+1),o),c.textMaxSize=u["text-size"].possiblyEvaluate(new zi(18));for(var y=l.get("text-line-height")*Ll,m="map"===l.get("text-rotation-alignment")&&"point"!==l.get("symbol-placement"),x=l.get("text-keep-upright"),b=l.get("text-size"),_=function(){var a=A[T],s=l.get("text-font").evaluate(a,{},o).join(","),u=b.evaluate(a,{},o),f=c.layoutTextSize.evaluate(a,{},o),h=c.layoutIconSize.evaluate(a,{},o),p={horizontal:{},vertical:void 0},d=a.text,v=[0,0];if(d){var g=d.toString(),_=l.get("text-letter-spacing").evaluate(a,{},o)*Ll,k=function(t){for(var e=0,r=t;e=vo||f.y<0||f.y>=vo||function(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x,b,_,T,A,k){var M,S,E,L,C,P=t.addToLineVertexArray(e,r),O=0,I=0,D=0,z=0,R=-1,F=-1,B={},N=Ua(""),j=0,U=0;if(void 0===s._unevaluatedLayout.getValue("text-radial-offset")?(j=(M=s.layout.get("text-offset").evaluate(b,{},A).map(function(t){return t*Ll}))[0],U=M[1]):(j=s.layout.get("text-radial-offset").evaluate(b,{},A)*Ll,U=Yu),t.allowVerticalPlacement&&n.vertical){var V=s.layout.get("text-rotate").evaluate(b,{},A)+90,H=n.vertical;L=new ju(l,e,u,c,f,H,h,p,d,V),o&&(C=new ju(l,e,u,c,f,o,g,y,d,V))}if(i){var q=s.layout.get("icon-rotate").evaluate(b,{}),G="none"!==s.layout.get("icon-text-fit"),Y=zu(i,q,T,G),W=o?zu(o,q,T,G):void 0;E=new ju(l,e,u,c,f,i,g,y,!1,q),O=4*Y.length;var Z=t.iconSizeData,X=null;"source"===Z.kind?(X=[wu*s.layout.get("icon-size").evaluate(b,{})])[0]>Ju&&w(t.layerIds[0]+': Value for "icon-size" is >= '+Xu+'. Reduce your "icon-size".'):"composite"===Z.kind&&((X=[wu*_.compositeIconSizes[0].evaluate(b,{},A),wu*_.compositeIconSizes[1].evaluate(b,{},A)])[0]>Ju||X[1]>Ju)&&w(t.layerIds[0]+': Value for "icon-size" is >= '+Xu+'. Reduce your "icon-size".'),t.addSymbols(t.icon,Y,X,x,m,b,!1,e,P.lineStartIndex,P.lineLength,-1,A),R=t.icon.placedSymbolArray.length-1,W&&(I=4*W.length,t.addSymbols(t.icon,W,X,x,m,b,au.vertical,e,P.lineStartIndex,P.lineLength,-1,A),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=Ua(K.text);var $=s.layout.get("text-rotate").evaluate(b,{},A);S=new ju(l,e,u,c,f,K,h,p,d,$)}var Q=1===K.positionedLines.length;if(D+=Ku(t,e,K,a,s,d,b,v,P,n.vertical?au.horizontal:au.horizontalOnly,Q?Object.keys(n.horizontal):[J],B,R,_,A),Q)break}n.vertical&&(z+=Ku(t,e,n.vertical,a,s,d,b,v,P,au.vertical,["vertical"],B,F,_,A));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=L?L.boxStartIndex:t.collisionBoxArray.length,nt=L?L.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,st=C?C.boxEndIndex:t.collisionBoxArray.length,lt=-1,ut=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ut(S,lt),lt=ut(L,lt),lt=ut(E,lt);var ct=(lt=ut(C,lt))>-1?1:0;ct&&(lt*=k/Ll),t.glyphOffsetArray.length>=sc.MAX_GLYPHS&&w("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey),t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,N,tt,et,rt,nt,it,at,ot,st,u,D,z,O,I,ct,0,h,j,U,lt)}(t,f,s,r,n,i,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,m,T,M,l,b,A,S,d,e,a,u,c,o)};if("line"===E)for(var O=0,I=Du(e.geometry,0,0,vo,vo);O1){var U=Pu(j,k,r.vertical||v,n,g,x);U&&P(j,U)}}else if("Polygon"===e.type)for(var V=0,H=Fs(e.geometry,0);V=E.maxzoom||"none"!==E.visibility&&(o(S,this.zoom,n),(v[E.id]=E.createBucket({index:c.bucketLayerIDs.length,layers:S,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:b,sourceID:this.source})).populate(_,g,this.tileID.canonical),c.bucketLayerIDs.push(S.map(function(t){return t.id})))}}}var L=t.mapObject(g.glyphDependencies,function(t){return Object.keys(t).map(Number)});Object.keys(L).length?a.send("getGlyphs",{uid:this.uid,stacks:L},function(t,e){f||(f=t,h=e,O.call(l))}):h={};var C=Object.keys(g.iconDependencies);C.length?a.send("getImages",{icons:C,source:this.source,tileID:this.tileID,type:"icons"},function(t,e){f||(f=t,p=e,O.call(l))}):p={};var P=Object.keys(g.patternDependencies);function O(){if(f)return s(f);if(h&&p&&d){var e=new i(h),r=new t.ImageAtlas(p,d);for(var a in v){var l=v[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,h,e.positions,p,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(g,this.tileID.canonical,r.patternPositions))}this.status="done",s(null,{buckets:t.values(v).filter(function(t){return!t.isEmpty()}),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}P.length?a.send("getImages",{icons:P,source:this.source,tileID:this.tileID,type:"patterns"},function(t,e){f||(f=t,d=e,O.call(l))}):d={},O.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,function(e,a){if(delete n.loading[i],e||!a)return s.status="done",n.loaded[i]=s,r(e);var l=a.rawData,u={};a.expires&&(u.expires=a.expires),a.cacheControl&&(u.cacheControl=a.cacheControl);var c={};if(o){var f=o.finish();f&&(c.resourceTiming=JSON.parse(JSON.stringify(f)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,u,c))}),n.loaded=n.loaded||{},n.loaded[i]=s})},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};"parsing"===o.status?o.reloadCallback=s:"done"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var u=t.window.ImageBitmap,c=function(){this.loaded={}};c.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=u&&a instanceof u?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},c.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},c.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=function t(e,r){var n,i=e&&e.type;if("FeatureCollection"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,v=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,"id"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};v.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r>31}function P(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;D(t,e,o,n,i,a%2),I(t,e,r,n,o-1,a+1),I(t,e,r,o+1,i,a+1)}}function D(t,e,r,n,i,a){for(;i>n;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(o-u)/o)*(s-o/2<0?-1:1);D(t,e,r,Math.max(n,Math.floor(r-s*u/o+c)),Math.min(i,Math.floor(r+(o-s)*u/o+c)),a)}var f=e[2*r+a],h=n,p=i;for(z(t,e,n,r),e[2*i+a]>f&&z(t,e,n,i);hf;)p--}e[2*n+a]===f?z(t,e,n,p):z(t,e,++p,i),p<=r&&(n=p+1),r<=p&&(i=p-1)}}function z(t,e,r,n){R(t,r,n),R(e,2*r,2*n),R(e,2*r+1,2*n+1)}function R(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function F(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}_.fromVectorTileJs=w,_.fromGeojsonVt=T,_.GeoJSONWrapper=A;var B=function(t){return t[0]},N=function(t){return t[1]},j=function(t,e,r,n,i){void 0===e&&(e=B),void 0===r&&(r=N),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&c.push(t[d]);else{var v=Math.floor((p+h)/2);s=e[2*v],l=e[2*v+1],s>=r&&s<=i&&l>=n&&l<=a&&c.push(t[v]);var g=(f+1)%2;(0===f?r<=s:n<=l)&&(u.push(p),u.push(v-1),u.push(g)),(0===f?i>=s:a>=l)&&(u.push(v+1),u.push(h),u.push(g))}}return c}(this.ids,this.coords,t,e,r,n,this.nodeSize)},j.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var u=o.pop(),c=o.pop(),f=o.pop();if(c-f<=a)for(var h=f;h<=c;h++)F(e[2*h],e[2*h+1],r,n)<=l&&s.push(t[h]);else{var p=Math.floor((f+c)/2),d=e[2*p],v=e[2*p+1];F(d,v,r,n)<=l&&s.push(t[p]);var g=(u+1)%2;(0===u?r-i<=d:n-i<=v)&&(o.push(f),o.push(p-1),o.push(g)),(0===u?r+i>=d:n+i>=v)&&(o.push(p+1),o.push(c),o.push(g))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var U={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},V=function(t){this.options=X(Object.create(U),t),this.trees=new Array(this.options.maxZoom+1)};function H(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function q(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:W(n),y:Z(i),zoom:1/0,index:e,parentId:-1}}function G(t){return{type:"Feature",id:t.id,properties:Y(t),geometry:{type:"Point",coordinates:[(n=t.x,360*(n-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,n}function Y(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+"k":e>=1e3?Math.round(e/100)/10+"k":e;return X(X({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function W(t){return t/360+.5}function Z(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function X(t,e){for(var r in e)t[r]=e[r];return t}function J(t){return t.x}function K(t){return t.y}function $(t,e,r,n){for(var i,a=n,o=r-e>>1,s=r-e,l=t[e],u=t[e+1],c=t[r],f=t[r+1],h=e+3;ha)i=h,a=p;else if(p===a){var d=Math.abs(h-o);dn&&(i-e>3&&$(t,e,i,n),t[i+2]=a,r-i>3&&$(t,i,r,n))}function Q(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function tt(t,e,r,n){var i={id:void 0===t?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if("Point"===r||"MultiPoint"===r||"LineString"===r)et(t,e);else if("Polygon"===r||"MultiLineString"===r)for(var n=0;n0&&(o+=n?(i*u-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(u-a,2))),i=l,a=u}var c=e.length-3;e[2]=1,$(e,0,c,r),e[c+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function at(t,e,r,n){for(var i=0;i1?1:r}function lt(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],u=0;u=r&&d=n)){var v=[];if("Point"===h||"MultiPoint"===h)ut(f,v,r,n,i);else if("LineString"===h)ct(f,v,r,n,i,!1,s.lineMetrics);else if("MultiLineString"===h)ht(f,v,r,n,i,!1);else if("Polygon"===h)ht(f,v,r,n,i,!0);else if("MultiPolygon"===h)for(var g=0;g=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function ct(t,e,r,n,i,a,o){for(var s,l,u=ft(t),c=0===i?dt:vt,f=t.start,h=0;hr&&(l=c(u,p,d,g,y,r),o&&(u.start=f+s*l)):m>n?x=r&&(l=c(u,p,d,g,y,r),b=!0),x>n&&m<=n&&(l=c(u,p,d,g,y,n),b=!0),!a&&b&&(o&&(u.end=f+s*l),e.push(u),u=ft(t)),o&&(f+=s)}var _=t.length-3;p=t[_],d=t[_+1],v=t[_+2],(m=0===i?p:d)>=r&&m<=n&&pt(u,p,d,v),_=u.length-3,a&&_>=3&&(u[_]!==u[0]||u[_+1]!==u[1])&&pt(u,u[0],u[1],u[2]),u.length&&e.push(u)}function ft(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ht(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=c),f>o.maxY&&(o.maxY=f)}return o}function _t(t,e,r,n){var i=e.geometry,a=e.type,o=[];if("Point"===a||"MultiPoint"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");var n=function(t,e){var r=[];if("FeatureCollection"===t.type)for(var n=0;n=n;u--){var c=+Date.now();s=this._cluster(s,u),this.trees[u]=new j(s,J,K,a,Float32Array),r&&console.log("z%d: %d clusters in %dms",u,s.length,+Date.now()-c)}return r&&console.timeEnd("total time"),this},V.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],u=[],c=0,f=l.range(W(r),Z(a),W(i),Z(n));c1?this._map(u,!0):null,g=(l<<5)+(e+1)+this.points.length,y=0,m=f;y>5},V.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},V.prototype._map=function(t,e){if(t.numPoints)return e?X({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?X({},n):n},Tt.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},Tt.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,u=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var c=1<1&&console.time("creation"),h=this.tiles[f]=bt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),u)){u>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,r,n,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd("creation"));var p="z"+e;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(h.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time("clipping");var v,g,y,m,x,b,_=.5*l.buffer/l.extent,w=.5-_,T=.5+_,A=1+_;v=g=y=m=null,x=lt(t,c,r-_,r+T,0,h.minX,h.maxX,l),b=lt(t,c,r+w,r+A,0,h.minX,h.maxX,l),t=null,x&&(v=lt(x,c,n-_,n+T,1,h.minY,h.maxY,l),g=lt(x,c,n+w,n+A,1,h.minY,h.maxY,l),x=null),b&&(y=lt(b,c,n-_,n+T,1,h.minY,h.maxY,l),m=lt(b,c,n+w,n+A,1,h.minY,h.maxY,l),b=null),u>1&&console.timeEnd("clipping"),s.push(v||[],e+1,2*r,2*n),s.push(g||[],e+1,2*r,2*n+1),s.push(y||[],e+1,2*r+1,2*n),s.push(m||[],e+1,2*r+1,2*n+1)}}},Tt.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log("drilling down to z%d-%d-%d",t,e,r);for(var l,u=t,c=e,f=r;!l&&u>0;)u--,c=Math.floor(c/2),f=Math.floor(f/2),l=this.tiles[At(u,c,f)];return l&&l.source?(a>1&&console.log("found parent tile z%d-%d-%d",u,c,f),a>1&&console.time("drilling down"),this.splitTile(l.source,u,c,f,t,e,r),a>1&&console.timeEnd("drilling down"),this.tiles[s]?mt(this.tiles[s],i):null):null};var Mt=function(e){function r(t,r,n,i){e.call(this,t,r,n,kt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&"Idle"!==this._state?this._state="NeedsLoadData":(this._state="Coalescing",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,function(a,o){if(a||!o)return r(a);if("object"!=typeof o)return r(new Error("Input data given to '"+n.source+"' is not a valid GeoJSON object."));f(o,!0);try{e._geoJSONIndex=n.cluster?new V(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),u=0,c=l;u=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e=0?1.2:1))}function y(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error("glyphs > 65535 not supported"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var c=Math.abs(u-l.left),f=Math.abs(u-l.right),h=Math.min(c,f),p=void 0,d=i/r*(n+1);if(l.isDash){var v=n-Math.abs(d);p=Math.sqrt(h*h+v*v)}else p=n-Math.sqrt(h*h+d*d);this.data[o+u]=Math.max(0,Math.min(255,p+128))}},A.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],u=0;u1&&(l=t[++s]);var c=Math.abs(u-l.left),f=Math.abs(u-l.right),h=Math.min(c,f),p=l.isDash?h:-h;this.data[o+u]=Math.max(0,Math.min(255,p+128))}},A.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce("LineAtlas out of space"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event("data",n))}})},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:"source",sourceDataType:"content"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event("data",n))}}),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;"string"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+".loadData",n,function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+".coalesce",{source:n.source},null),e(t))})},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?"reloadTile":"loadTile";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,"reloadTile"===i),r(null))})},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),O=t.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),I=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event("dataloading",{dataType:"source"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())})},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,function(){e.texture=null}),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event("data",{dataType:"source",sourceDataType:"metadata"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+r.start(0)+" and "+r.end(0)+"-second mark."))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];"loaded"!==i.state&&(i.state="loaded",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(I),z=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?Array.isArray(n.coordinates)&&4===n.coordinates.length&&!n.coordinates.some(function(t){return!Array.isArray(t)||2!==t.length||t.some(function(t){return"number"!=typeof t})})||this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "coordinates"'))),n.animate&&"boolean"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'optional "animate" property must be a boolean value'))),n.canvas?"string"==typeof n.canvas||n.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "canvas"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];"loaded"!==a.state&&(a.state="loaded",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},j.prototype.has=function(t){return t.wrapped().key in this.data},j.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},j.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},j.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},j.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},j.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},j.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},j.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)}):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter(function(t){return n._source.hasTile(t)}))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(Dt(this._source.type)){for(var u={},c={},f=0,h=Object.keys(l);fthis._source.maxzoom){var g=d.children(this._source.maxzoom)[0],y=this.getTile(g);if(y&&y.hasData()){n[g.key]=g;continue}}else{var m=d.children(this._source.maxzoom);if(n[m[0].key]&&n[m[1].key]&&n[m[2].key]&&n[m[3].key])continue}for(var x=v.wasRequested(),b=d.overscaledZ-1;b>=a;--b){var _=d.scaledTo(b);if(i[_.key])break;if(i[_.key]=!0,!(v=this.getTile(_))&&x&&(v=this._addTile(_)),v&&(n[_.key]=_,x=v.wasRequested(),v.hasData()))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0||(e.hasData()&&"reloading"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map(function(t){return o.pointCoordinate(t)}),u=s.map(function(t){return o.pointCoordinate(t)}),c=this.getIds(),f=1/0,h=1/0,p=-1/0,d=-1/0,v=0,g=u;v=0&&y[1].y+g>=0){var m=l.map(function(t){return s.getTilePoint(t)}),x=u.map(function(t){return s.getTilePoint(t)});a.push({tile:n,tileID:s,queryGeometry:m,cameraQueryGeometry:x,scale:v})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||"_geojsonTileLayer",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||"_geojsonTileLayer",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||"_geojsonTileLayer",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,"reloading");this._cache.filter(function(r){return!r.hasDependency(t,e)})},r}(t.Evented);function It(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Dt(t){return"raster"===t||"image"===t||"video"===t}function zt(){return new t.window.Worker(ea.workerUrl)}Ot.maxOverzooming=10,Ot.maxUnderzooming=3;var Rt="mapboxgl_preloaded_worker_pool",Ft=function(){this.active={}};Ft.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Qt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ae(e,r,n,i,a,o,s,l){var u=i?e.textSizeData:e.iconSizeData,c=t.evaluateSizeForZoom(u,n.transform.zoom),f=[256/n.width*2+1,256/n.height*2+1],h=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var p=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,v=n.transform.width/n.transform.height,g=!1,y=0;yMath.abs(n.x-r.x)*i?{useVertical:!0}:(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function le(e,r,n,i,a,o,s,l,u,c,f,h,p,d){var v,g=r/24,y=e.lineOffsetX*g,m=e.lineOffsetY*g;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,b=e.lineStartIndex,_=e.lineStartIndex+e.lineLength,w=oe(g,l,y,m,n,f,h,e,u,o,p);if(!w)return{notEnoughRoom:!0};var T=re(w.first.point,s).point,A=re(w.last.point,s).point;if(i&&!n){var k=se(e.writingMode,T,A,d);if(k)return k}v=[w.first];for(var M=e.glyphStartIndex+1;M0?C.point:ue(h,L,S,1,a),O=se(e.writingMode,S,P,d);if(O)return O}var I=ce(g*l.getoffsetX(e.glyphStartIndex),y,m,n,f,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,u,o,p);if(!I)return{notEnoughRoom:!0};v=[I]}for(var D=0,z=v;D0?1:-1,v=0;i&&(d*=-1,v=Math.PI),d<0&&(v+=Math.PI);for(var g=d>0?l+s:l+s+1,y=a,m=a,x=0,b=0,_=Math.abs(p),w=[];x+b<=_;){if((g+=d)=u)return null;if(m=y,w.push(y),void 0===(y=h[g])){var T=new t.Point(c.getx(g),c.gety(g)),A=re(T,f);if(A.signedDistanceFromCamera>0)y=h[g]=A.point;else{var k=g-d;y=ue(0===x?o:new t.Point(c.getx(k),c.gety(k)),T,m,_-x+1,f)}}x+=b,b=m.dist(y)}var M=(_-x)/b,S=y.sub(m),E=S.mult(M)._add(m);E._add(S._unit()._perp()._mult(n*d));var L=v+Math.atan2(y.y-m.y,y.x-m.x);return w.push(E),{point:E,angle:L,path:w}}Qt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Qt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Qt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Qt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Qt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Qt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Qt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var u=[],c={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,u,c,i),n?u.length>0:u},Qt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Qt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Qt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Qt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,u=this.boxCells[i];if(null!==u)for(var c=this.bboxes,f=0,h=u;f=c[d+0]&&n>=c[d+1]&&(!s||s(this.boxKeys[p]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[p],x1:c[d],y1:c[d+1],x2:c[d+2],y2:c[d+3]})}}}var v=this.circleCells[i];if(null!==v)for(var g=this.circles,y=0,m=v;yo*o+s*s},Qt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var u=(o-i)/2,c=Math.abs(e-(i+u));if(c>u+r)return!1;if(l<=s||c<=u)return!0;var f=l-s,h=c-u;return f*f+h*h<=r*r};var fe=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function he(t,e){for(var r=0;r=1;P--)C.push(E.path[P]);for(var O=1;O0){for(var R=C[0].clone(),F=C[0].clone(),B=1;B=k.x&&F.x<=M.x&&R.y>=k.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],k.x,k.y,M.x,M.y)}for(var N=0,j=z;N=this.screenRightBoundary||nthis.screenBottomBoundary},ve.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0?(this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(v=this.prevPlacement.variableOffsets[f.crossTileID].anchor),this.variableOffsets[f.crossTileID]={textOffset:g,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:v},this.markUsedJustification(h,t,f,p),h.allowVerticalPlacement&&(this.markUsedOrientation(h,p,f),this.placedOrientations[f.crossTileID]=p),{shift:y,placedGlyphBoxes:m}):void 0},ke.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,u=a.textLabelPlaneMatrix,c=a.labelToScreenMatrix,f=a.textPixelRatio,h=a.holdingForFade,p=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,v=a.collisionGroup,g=s.get("text-optional"),y=s.get("icon-optional"),m=s.get("text-allow-overlap"),x=s.get("icon-allow-overlap"),b="map"===s.get("text-rotation-alignment"),_="map"===s.get("text-pitch-alignment"),w="none"!==s.get("icon-text-fit"),T="viewport-y"===s.get("symbol-z-order"),A=m&&(x||!o.hasIconData()||y),k=x&&(m||!o.hasTextData()||g);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p);var M=function(e,a){if(!r[e.crossTileID])if(h)i.placements[e.crossTileID]=new xe(!1,!1,!1);else{var p,T=!1,M=!1,S=!0,E=null,L={box:null,offscreen:null},C={box:null,offscreen:null},P=null,O=null,I=0,D=0,z=0;a.textFeatureIndex?I=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(I=e.featureIndex),a.verticalTextFeatureIndex&&(D=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(N=N.filter(function(t){return t!==j.anchor})).unshift(j.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,u=e.textBoxScale,c=w&&!x?r:null,h={box:[],offscreen:!1},p=m?2*N.length:N.length,d=0;d=N.length,A=i.attemptAnchorPlacement(g,t,a,s,u,b,_,f,l,v,y,e,o,n,c);if(A&&(h=A.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=A.shift;break}}return h};B(function(){return U(R,a.iconBox,t.WritingMode.horizontal)},function(){var r=a.verticalTextBox,n=L&&L.box&&L.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}}),L&&(T=L.box,S=L.offscreen);var V=F(L&&L.box);if(!T&&i.prevPlacement){var H=i.prevPlacement.variableOffsets[e.crossTileID];H&&(i.variableOffsets[e.crossTileID]=H,i.markUsedJustification(o,H.anchor,e,V))}}else{var q=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,m,f,l,v.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B(function(){return q(R,t.WritingMode.horizontal)},function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?q(r,t.WritingMode.vertical):{box:null,offscreen:null}}),F(L&&L.box&&L.box.length)}}if(T=(p=L)&&p.box&&p.box.length>0,S=p&&p.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),Y=t.evaluateSizeForFeature(o.textSizeData,d,G),W=s.get("text-padding"),Z=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(m,G,o.lineVertexArray,o.glyphOffsetArray,Y,l,u,c,n,_,v.predicate,Z,W),T=m||P.circles.length>0&&!P.collisionDetected,S=S&&P.offscreen}if(a.iconFeatureIndex&&(z=a.iconFeatureIndex),a.iconBox){var X=function(t){var e=w&&E?Ae(t,E.x,E.y,b,_,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,f,l,v.predicate)};M=C&&C.box&&C.box.length&&a.verticalIconBox?(O=X(a.verticalIconBox)).box.length>0:(O=X(a.iconBox)).box.length>0,S=S&&O.offscreen}var J=g||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=y||0===e.numIconVertices;if(J||K?K?J||(M=M&&T):T=M&&T:M=T=M&&T,T&&p&&p.box&&(C&&C.box&&D?i.collisionIndex.insertCollisionBox(p.box,s.get("text-ignore-placement"),o.bucketInstanceId,D,v.ID):i.collisionIndex.insertCollisionBox(p.box,s.get("text-ignore-placement"),o.bucketInstanceId,I,v.ID)),M&&O&&i.collisionIndex.insertCollisionBox(O.box,s.get("icon-ignore-placement"),o.bucketInstanceId,z,v.ID),P&&(T&&i.collisionIndex.insertCollisionCircles(P.circles,s.get("text-ignore-placement"),o.bucketInstanceId,I,v.ID),n)){var $=o.bucketInstanceId,Q=i.collisionCircleArrays[$];void 0===Q&&(Q=i.collisionCircleArrays[$]=new be);for(var tt=0;tt=0;--E){var L=S[E];M(o.symbolInstances.get(L),o.collisionArrays[L])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(u).crossTileID=a>=0&&u!==a?0:n.crossTileID)}},ke.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,b=i.placedOrientations[a.crossTileID],_=b===t.WritingMode.vertical,w=b===t.WritingMode.horizontal||b===t.WritingMode.horizontalOnly;if(m){var T=De(y.text),A=_?ze:T;d(e.text,s,A);var k=w?ze:T;d(e.text,l,k);var M=y.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach(function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||_?1:0)}),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,b);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,"left",a,E),i.markUsedOrientation(e,E,a))}if(x){var L=De(y.icon),C=!(h&&a.verticalPlacedIconSymbolIndex&&_);if(a.placedIconSymbolIndex>=0){var P=C?L:ze;d(e.icon,a.numIconVertices,P),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=y.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var O=C?ze:L;d(e.icon,a.numVerticalIconVertices,O),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=y.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var I=e.collisionArrays[n];if(I){var D=new t.Point(0,0);if(I.textBox||I.verticalTextBox){var z=!0;if(u){var R=i.variableOffsets[v];R?(D=Te(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),c&&D._rotate(f?i.transform.angle:-i.transform.angle)):z=!1}I.textBox&&Me(e.textCollisionBox.collisionVertexArray,y.text.placed,!z||_,D.x,D.y),I.verticalTextBox&&Me(e.textCollisionBox.collisionVertexArray,y.text.placed,!z||w,D.x,D.y)}var F=Boolean(!w&&I.verticalIconBox);I.iconBox&&Me(e.iconCollisionBox.collisionVertexArray,y.icon.placed,F,h?D.x:0,h?D.y:0),I.verticalIconBox&&Me(e.iconCollisionBox.collisionVertexArray,y.icon.placed,!F,h?D.x:0,h?D.y:0)}}},g=0;gt},ke.prototype.setStale=function(){this.stale=!0};var Se=Math.pow(2,25),Ee=Math.pow(2,24),Le=Math.pow(2,17),Ce=Math.pow(2,16),Pe=Math.pow(2,9),Oe=Math.pow(2,8),Ie=Math.pow(2,1);function De(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*Se+e*Ee+r*Le+e*Ce+r*Pe+e*Oe+r*Ie+e}var ze=0,Re=function(t){this._sortAcrossTiles="viewport-y"!==t.layout.get("symbol-z-order")&&void 0!==t.layout.get("symbol-sort-key").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Re.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if("symbol"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Re(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Fe.prototype.commit=function(t){return this.placement.commit(t),this.placement};var Be=512/t.EXTENT/2,Ne=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var u=o[t.scaledTo(Number(a)).key];u&&u.findMatches(e.symbolInstances,t,i)}}for(var c=0;c1?"@2x":"",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,".json"),t.ResourceType.SpriteJSON),function(t,e){l=null,o||(o=t,i=e,c())}),u=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,".png"),t.ResourceType.SpriteImage),function(t,e){u=null,o||(o=t,a=e,c())});function c(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],u=l.width,c=l.height,f=l.x,h=l.y,p=l.sdf,d=l.pixelRatio,v=l.stretchX,g=l.stretchY,y=l.content,m=new t.RGBAImage({width:u,height:c});t.RGBAImage.copy(e,m,{x:f,y:h},{x:0,y:0},{width:u,height:c}),r[s]={data:m,pixelRatio:d,sdf:p,stretchX:v,stretchY:g,content:y}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),u&&(u.cancel(),u=null)}}}(e,this.map._requestManager,function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast("setImages",r._availableImages),r.fire(new t.Event("data",{dataType:"style"}))})},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();("geojson"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer "'+n+'" does not exist on source "'+i.id+'" as specified by style layer "'+e.id+'"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error("Unimplemented: "+i.map(function(t){return t.command}).join(", ")+".");return n.forEach(function(t){"setTransition"!==t.command&&r[t.command].apply(r,t.args)}),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event("data",{dataType:"style"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event("data",{dataType:"style"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error("There is already a source with this ID");if(!r.type)throw new Error("The type property must be defined, but the only the following properties were given: "+Object.keys(r).join(", ")+".");if(!(["vector","raster","geojson","video","image"].indexOf(r.type)>=0&&this._validate(t.validateStyle.source,"sources."+e,r,null,n))){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ot(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}}),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error("There is no source with this ID");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source "'+e+'" cannot be removed while layer "'+r+'" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id "'+i+'" already exists on this map')));else{var a;if("custom"===e.type){if(He(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if("object"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,"layers."+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&"custom"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]="clear":(this._updatedSources[a.source]="reload",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.'))):(this._order.splice(i,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be moved.")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be removed.")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot have zoom extent.")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(t.validateStyle.filter,"layers."+i.id+".filter",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i)))}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be filtered.")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style.")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;"geojson"===o&&i?this.fire(new t.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+n+"' does not exist in the map's style.")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o="vector"===a?e.sourceLayer:void 0;"vector"!==a||o?r&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.ErrorEvent(new Error("A feature id is requred to remove its specific state property."))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+n+"' does not exist in the map's style.")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if("vector"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+r+"' does not exist in the map's style.")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,function(t){return t.serialize()}),layers:this._serializeLayers(this._order)},function(t){return void 0!==t})},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&"raster"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return"fill-extrusion"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var v=this._order[d];if(r(v))for(var g=i.length-1;g>=0;g--){var y=i[g].feature;if(n[y.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),nr=_r("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),ir=_r("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}"),ar=_r("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}"),or=_r("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),sr=_r("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),lr=_r("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),ur=_r("varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),cr=_r("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),fr=_r("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hr=_r("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),pr=_r("uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),dr=_r("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define MAX_LINE_DISTANCE 32767.0\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),vr=_r("uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),gr=_r("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}"),yr=_r("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),mr=_r("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}"),xr=_r("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}"),br=_r("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}");function _r(t,e){var r=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,n={};return{fragmentSource:t=t.replace(r,function(t,e,r,i,a){return n[a]=!0,"define"===e?"\n#ifndef HAS_UNIFORM_u_"+a+"\nvarying "+r+" "+i+" "+a+";\n#else\nuniform "+r+" "+i+" u_"+a+";\n#endif\n":"\n#ifdef HAS_UNIFORM_u_"+a+"\n "+r+" "+i+" "+a+" = u_"+a+";\n#endif\n"}),vertexSource:e=e.replace(r,function(t,e,r,i,a){var o="float"===i?"vec2":"vec4",s=a.match(/color/)?"color":o;return n[a]?"define"===e?"\n#ifndef HAS_UNIFORM_u_"+a+"\nuniform lowp float u_"+a+"_t;\nattribute "+r+" "+o+" a_"+a+";\nvarying "+r+" "+i+" "+a+";\n#else\nuniform "+r+" "+i+" u_"+a+";\n#endif\n":"vec4"===s?"\n#ifndef HAS_UNIFORM_u_"+a+"\n "+a+" = a_"+a+";\n#else\n "+r+" "+i+" "+a+" = u_"+a+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+a+"\n "+a+" = unpack_mix_"+s+"(a_"+a+", u_"+a+"_t);\n#else\n "+r+" "+i+" "+a+" = u_"+a+";\n#endif\n":"define"===e?"\n#ifndef HAS_UNIFORM_u_"+a+"\nuniform lowp float u_"+a+"_t;\nattribute "+r+" "+o+" a_"+a+";\n#else\nuniform "+r+" "+i+" u_"+a+";\n#endif\n":"vec4"===s?"\n#ifndef HAS_UNIFORM_u_"+a+"\n "+r+" "+i+" "+a+" = a_"+a+";\n#else\n "+r+" "+i+" "+a+" = u_"+a+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+a+"\n "+r+" "+i+" "+a+" = unpack_mix_"+s+"(a_"+a+", u_"+a+"_t);\n#else\n "+r+" "+i+" "+a+" = u_"+a+";\n#endif\n"})}}var wr=Object.freeze({__proto__:null,prelude:Xe,background:Je,backgroundPattern:Ke,circle:$e,clippingMask:Qe,heatmap:tr,heatmapTexture:er,collisionBox:rr,collisionCircle:nr,debug:ir,fill:ar,fillOutline:or,fillOutlinePattern:sr,fillPattern:lr,fillExtrusion:ur,fillExtrusionPattern:cr,hillshadePrepare:fr,hillshade:hr,line:pr,lineGradient:dr,linePattern:vr,lineSDF:gr,raster:yr,symbolIcon:mr,symbolSDF:xr,symbolTextAndIcon:br}),Tr=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};Tr.prototype.bind=function(t,e,r,n,i,a,o,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==n.length,u=0;!l&&u>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}Ar.prototype.draw=function(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v){var g,y=t.gl;if(!this.failedToCreate){for(var m in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[m].set(o[m]);p&&p.setUniforms(t,this.binderUniforms,f,{zoom:h});for(var x=(g={},g[y.LINES]=2,g[y.TRIANGLES]=3,g[y.LINE_STRIP]=1,g)[e],b=0,_=c.get();b<_.length;b+=1){var w=_[b],T=w.vaos||(w.vaos={});(T[s]||(T[s]=new Tr)).bind(t,this,l,p?p.getPaintVertexBuffers():[],u,w.vertexOffset,d,v),y.drawElements(e,w.primitiveLength*x,y.UNSIGNED_SHORT,w.primitiveOffset*x*2)}}};var Mr=function(e,r,n,i){var a=r.style.light,o=a.properties.get("position"),s=[o.x,o.y,o.z],l=t.create$1();"viewport"===a.properties.get("anchor")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var u=a.properties.get("color");return{u_matrix:e,u_lightpos:s,u_lightintensity:a.properties.get("intensity"),u_lightcolor:[u.r,u.g,u.b],u_vertical_gradient:+n,u_opacity:i}},Sr=function(e,r,n,i,a,o,s){return t.extend(Mr(e,r,n,i),kr(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8})},Er=function(t){return{u_matrix:t}},Lr=function(e,r,n,i){return t.extend(Er(e),kr(n,r,i))},Cr=function(t,e){return{u_matrix:t,u_world:e}},Pr=function(e,r,n,i,a){return t.extend(Lr(e,r,n,i),{u_world:a})},Or=function(e,r,n,i){var a,o,s=e.transform;if("map"===i.paint.get("circle-pitch-alignment")){var l=ge(n,1,s.zoom);a=!0,o=[l,l]}else a=!1,o=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+("map"===i.paint.get("circle-pitch-scale")),u_matrix:e.translatePosMatrix(r.posMatrix,n,i.paint.get("circle-translate"),i.paint.get("circle-translate-anchor")),u_pitch_with_map:+a,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:o}},Ir=function(t,e,r){var n=ge(r,1,e.zoom),i=Math.pow(2,e.zoom-r.tileID.overscaledZ),a=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:n,u_extrude_scale:[e.pixelsToGLUnits[0]/(n*i),e.pixelsToGLUnits[1]/(n*i)],u_overscale_factor:a}},Dr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},zr=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Rr=function(t){return{u_matrix:t}},Fr=function(t,e,r,n){return{u_matrix:t,u_extrude_scale:ge(e,1,r),u_intensity:n}};var Br=function(e,r,n){var i=e.transform;return{u_matrix:Hr(e,r,n),u_ratio:1/ge(r,1,i.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Nr=function(e,r,n){return t.extend(Br(e,r,n),{u_image:0})},jr=function(e,r,n,i){var a=e.transform,o=Vr(r,a);return{u_matrix:Hr(e,r,n),u_texsize:r.imageAtlasTexture.size,u_ratio:1/ge(r,1,a.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[o,i.fromScale,i.toScale],u_fade:i.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Ur=function(e,r,n,i,a){var o=e.transform,s=e.lineAtlas,l=Vr(r,o),u="round"===n.layout.get("line-cap"),c=s.getDash(i.from,u),f=s.getDash(i.to,u),h=c.width*a.fromScale,p=f.width*a.toScale;return t.extend(Br(e,r,n),{u_patternscale_a:[l/h,-c.height/2],u_patternscale_b:[l/p,-f.height/2],u_sdfgamma:s.width/(256*Math.min(h,p)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:c.y,u_tex_y_b:f.y,u_mix:a.t})};function Vr(t,e){return 1/ge(t,1,e.tileZoom)}function Hr(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get("line-translate"),r.paint.get("line-translate-anchor"))}var qr=function(t,e,r,n,i){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get("raster-brightness-min"),u_brightness_high:i.paint.get("raster-brightness-max"),u_saturation_factor:(o=i.paint.get("raster-saturation"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get("raster-contrast"),a>0?1/(1-a):1+a),u_spin_weights:Gr(i.paint.get("raster-hue-rotate"))};var a,o};function Gr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var Yr,Wr=function(t,e,r,n,i,a,o,s,l,u){var c=i.transform;return{u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:c.cameraToCenterDistance,u_pitch:c.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:c.width/c.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:u,u_texture:0}},Zr=function(e,r,n,i,a,o,s,l,u,c,f){var h=a.transform;return t.extend(Wr(e,r,n,i,a,o,s,l,u,c),{u_gamma_scale:i?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+f})},Xr=function(e,r,n,i,a,o,s,l,u,c){return t.extend(Zr(e,r,n,i,a,o,s,l,!0,u,!0),{u_texsize_icon:c,u_texture_icon:1})},Jr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Kr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,u=Math.pow(2,n.tileID.overscaledZ),c=n.tileSize*Math.pow(2,r.transform.tileZoom)/u,f=c*(n.tileID.canonical.x+n.tileID.wrap*u),h=c*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/ge(n,1,r.transform.tileZoom),u_pixel_coord_upper:[f>>16,h>>16],u_pixel_coord_lower:[65535&f,65535&h]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},$r={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Qr(e,r,n,i,a,o,s){for(var l=e.context,u=l.gl,c=e.useProgram("collisionBox"),f=[],h=0,p=0,d=0;d0){var _=t.create(),w=m;t.mul(_,y.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(_,_,y.placementViewportMatrix),f.push({circleArray:b,circleOffset:p,transform:w,invTransform:_}),p=h+=b.length/4}x&&c.draw(l,u.LINES,Mt.disabled,Et.disabled,e.colorModeForRenderPass(),Ct.disabled,Ir(m,e.transform,g),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&f.length){var T=e.useProgram("collisionCircle"),A=new t.StructArrayLayout2f1f2i16;A.resize(4*h),A._trim();for(var k=0,M=0,S=f;M=0&&(v[y.associatedIconIndex]={shiftedAnchor:S,angle:E})}else he(y.numGlyphs,p)}if(f){d.clear();for(var C=e.icon.placedSymbolArray,P=0;P0){var s=t.browser.now(),l=(s-e.timeAdded)/o,u=r?(s-r.timeAdded)/o:-1,c=n.getSource(),f=a.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-f)>Math.abs(e.tileID.overscaledZ-f),p=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-u,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-p}:{opacity:p,mix:0}}return{opacity:1,mix:0}}var hn=new t.Color(1,0,0,1),pn=new t.Color(0,1,0,1),dn=new t.Color(0,0,1,1),vn=new t.Color(1,0,1,1),gn=new t.Color(0,1,1,1);function yn(t){var e=t.transform.padding;mn(t,t.transform.height-(e.top||0),3,hn),mn(t,e.bottom||0,3,pn),xn(t,e.left||0,3,dn),xn(t,t.transform.width-(e.right||0),3,vn);var r=t.transform.centerPoint;!function(t,e,r,n){var i=20,a=2;bn(t,e-a/2,r-i/2,a,i,n),bn(t,e-i/2,r-a/2,i,a,n)}(t,r.x,t.transform.height-r.y,gn)}function mn(t,e,r,n){bn(t,0,e+r/2,t.transform.width,r,n)}function xn(t,e,r,n){bn(t,e-r/2,0,r,t.transform.height,n)}function bn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function _n(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram("debug"),l=Mt.disabled,u=Et.disabled,c=e.colorModeForRenderPass(),f="$debug";i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,u,c,Ct.disabled,zr(o,t.Color.red),f,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var h=r.getTileByID(n.key).latestRawTileData,p=h&&h.byteLength||0,d=Math.floor(p/1024),v=r.getTile(n).tileSize,g=512/Math.min(v,512)*(n.overscaledZ/e.transform.zoom)*.5,y=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(y+=" => "+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext("2d");i.clearRect(0,0,r.width,r.height),i.shadowColor="white",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle="white",i.textBaseline="top",i.font="bold 36px Open Sans, sans-serif",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,y+" "+d+"kb"),s.draw(i,a.TRIANGLES,l,u,Lt.alphaBlended,Ct.disabled,zr(o,t.Color.transparent,g),f,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var wn={symbol:function(e,r,n,i,a){if("translucent"===e.renderPass){var o=Et.disabled,s=e.colorModeForRenderPass();n.layout.get("text-variable-anchor")&&function(e,r,n,i,a,o,s){for(var l=r.transform,u="map"===a,c="map"===o,f=0,h=e;f256&&this.clearStencil(),r.setColorMode(Lt.disabled),r.setDepthMode(Mt.disabled);var i=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Et({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},Tn.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Et({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},Tn.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort(function(t,e){return e.overscaledZ-t.overscaledZ}),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],A=c[w.source];this._renderTileClippingMasks(w,A),this.renderLayer(this,T,w,A)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer0?e.pop():null},Tn.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},Tn.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=""+t+(e?e.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[r]||(this.cache[r]=new Ar(this.context,wr[t],e,$r[t],this._showOverdrawInspector)),this.cache[r]},Tn.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},Tn.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},Tn.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},Tn.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var An=function(t,e){this.points=t,this.planes=e};An.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(function(r){return t.transformMat4([],r,e)}).map(function(e){return t.scale$1([],e,1/e[3]/r*i)}),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)});return new An(a,o)};var kn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};kn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var u=Number.MAX_VALUE,c=-Number.MAX_VALUE,f=0;fthis.max[l]-this.min[l])return 0}return 1};var Mn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=e,this.left=r,this.right=n};Mn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},Mn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},Mn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},Mn.prototype.clone=function(){return new Mn(this.top,this.bottom,this.left,this.right)},Mn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var Sn=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==n?0:n,this._maxPitch=null==i?60:i,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Mn,this._posMatrixCache={},this._alignedPosMatrixCache={}},En={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};Sn.prototype.clone=function(){var t=new Sn(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},En.minZoom.get=function(){return this._minZoom},En.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},En.maxZoom.get=function(){return this._maxZoom},En.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},En.minPitch.get=function(){return this._minPitch},En.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},En.maxPitch.get=function(){return this._maxPitch},En.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},En.renderWorldCopies.get=function(){return this._renderWorldCopies},En.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},En.worldSize.get=function(){return this.tileSize*this.scale},En.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},En.size.get=function(){return new t.Point(this.width,this.height)},En.bearing.get=function(){return-this.angle/Math.PI*180},En.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},En.pitch.get=function(){return this._pitch/Math.PI*180},En.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},En.fov.get=function(){return this._fov/Math.PI*180},En.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},En.zoom.get=function(){return this._zoom},En.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},En.center.get=function(){return this._center},En.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},En.padding.get=function(){return this._edgeInsets.toJSON()},En.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},En.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},Sn.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},Sn.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},Sn.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},Sn.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),u=s-1;u<=l+1;u++)0!==u&&r.push(new t.UnwrappedTileID(u,e));return r},Sn.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=An.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var u=function(t){return{aabb:new kn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},c=[],f=[],h=r,p=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)c.push(u(-d)),c.push(u(d));for(c.push(u(0));c.length>0;){var v=c.pop(),g=v.x,y=v.y,m=v.fullyVisible;if(!m){var x=v.aabb.intersects(s);if(0===x)continue;m=2===x}var b=v.aabb.distanceX(o),_=v.aabb.distanceY(o),w=Math.max(Math.abs(b),Math.abs(_)),T=3+(1<T&&v.zoom>=l)f.push({tileID:new t.OverscaledTileID(v.zoom===h?p:v.zoom,v.wrap,v.zoom,g,y),distanceSq:t.sqrLen([o[0]-.5-g,o[1]-.5-y])});else for(var A=0;A<4;A++){var k=(g<<1)+A%2,M=(y<<1)+(A>>1);c.push({aabb:v.aabb.quadrant(A),zoom:v.zoom+1,x:k,y:M,wrap:v.wrap,fullyVisible:m})}}return f.sort(function(t,e){return t.distanceSq-e.distanceSq}).map(function(t){return t.tileID})},Sn.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},En.unmodified.get=function(){return this._unmodified},Sn.prototype.zoomScale=function(t){return Math.pow(2,t)},Sn.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},Sn.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},Sn.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},En.point.get=function(){return this.project(this.center)},Sn.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},Sn.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},Sn.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},Sn.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},Sn.prototype.coordinateLocation=function(t){return t.toLngLat()},Sn.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,u=n[1]/a,c=r[2]/i,f=n[2]/a,h=c===f?0:(0-c)/(f-c);return new t.MercatorCoordinate(t.number(o,s,h)/this.worldSize,t.number(l,u,h)/this.worldSize)},Sn.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},Sn.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},Sn.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},Sn.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},Sn.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},Sn.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},Sn.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,u=this.size,c=this._unmodified;if(this.latRange){var f=this.latRange;a=t.mercatorYfromLat(f[1])*this.worldSize,e=(o=t.mercatorYfromLat(f[0])*this.worldSize)-ao&&(i=o-g)}if(this.lngRange){var y=p.x,m=u.x/2;y-ml&&(n=l-m)}void 0===n&&void 0===i||(this.center=this.unproject(new t.Point(void 0!==n?n:p.x,void 0!==i?i:p.y))),this._unmodified=c,this._constraining=!1}},Sn.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,u=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),c=this.height/50,f=new Float64Array(16);t.perspective(f,this._fov,this.width/this.height,c,u),f[8]=2*-r.x/this.width,f[9]=2*r.y/this.height,t.scale(f,f,[1,-1,1]),t.translate(f,f,[0,0,-this.cameraToCenterDistance]),t.rotateX(f,f,this._pitch),t.rotateZ(f,f,this.angle),t.translate(f,f,[-s,-l,0]),this.mercatorMatrix=t.scale([],f,[this.worldSize,this.worldSize,this.worldSize]),t.scale(f,f,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=f,this.invProjMatrix=t.invert([],this.projMatrix);var h=this.width%2/2,p=this.height%2/2,d=Math.cos(this.angle),v=Math.sin(this.angle),g=s-Math.round(s)+d*h+v*p,y=l-Math.round(l)+d*p+v*h,m=new Float64Array(f);if(t.translate(m,m,[g>.5?g-1:g,y>.5?y-1:y,0]),this.alignedProjMatrix=m,f=t.create(),t.scale(f,f,[this.width/2,-this.height/2,1]),t.translate(f,f,[1,-1,0]),this.labelPlaneMatrix=f,f=t.create(),t.scale(f,f,[1,-1,1]),t.translate(f,f,[-1,-1,0]),t.scale(f,f,[2/this.width,2/this.height,1]),this.glCoordMatrix=f,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(f=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error("failed to invert matrix");this.pixelMatrixInverse=f,this._posMatrixCache={},this._alignedPosMatrixCache={}}},Sn.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},Sn.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},Sn.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some(function(t){return isNaN(t)})){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Ln.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,"",e)}catch(t){}};var Cn={linearity:.3,easing:t.bezier(0,0,.3,1)},Pn=t.extend({deceleration:2500,maxSpeed:1400},Cn),On=t.extend({deceleration:20,maxSpeed:1400},Cn),In=t.extend({deceleration:1e3,maxSpeed:360},Cn),Dn=t.extend({deceleration:1e3,maxSpeed:90},Cn),zn=function(t){this._map=t,this.clear()};function Rn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},zn.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new Bn(t.type,this._map,t))},Un.prototype.dblclick=function(t){return this._firePreventable(new Bn(t.type,this._map,t))},Un.prototype.mouseover=function(t){this._map.fire(new Bn(t.type,this._map,t))},Un.prototype.mouseout=function(t){this._map.fire(new Bn(t.type,this._map,t))},Un.prototype.touchstart=function(t){return this._firePreventable(new Nn(t.type,this._map,t))},Un.prototype.touchmove=function(t){this._map.fire(new Nn(t.type,this._map,t))},Un.prototype.touchend=function(t){this._map.fire(new Nn(t.type,this._map,t))},Un.prototype.touchcancel=function(t){this._map.fire(new Nn(t.type,this._map,t))},Un.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Un.prototype.isEnabled=function(){return!0},Un.prototype.isActive=function(){return!1},Un.prototype.enable=function(){},Un.prototype.disable=function(){};var Vn=function(t){this._map=t};Vn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},Vn.prototype.mousemove=function(t){this._map.fire(new Bn(t.type,this._map,t))},Vn.prototype.mousedown=function(){this._delayContextMenu=!0},Vn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Bn("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},Vn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Bn(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()},Vn.prototype.isEnabled=function(){return!0},Vn.prototype.isActive=function(){return!1},Vn.prototype.enable=function(){},Vn.prototype.disable=function(){};var Hn=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function qn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Gn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var Yn=function(t){this.singleTap=new Gn(t),this.numTaps=t.numTaps,this.reset()};Yn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},Yn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},Yn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},Yn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if(i&&a||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Wn=function(){this._zoomIn=new Yn({numTouches:1,numTaps:2}),this._zoomOut=new Yn({numTouches:2,numTaps:1}),this.reset()};Wn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Wn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Wn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Wn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout(function(){return n.reset()},0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout(function(){return n.reset()},0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Wn.prototype.touchcancel=function(){this.reset()},Wn.prototype.enable=function(){this._enabled=!0},Wn.prototype.disable=function(){this._enabled=!1,this.reset()},Wn.prototype.isEnabled=function(){return this._enabled},Wn.prototype.isActive=function(){return this._active};var Zn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Zn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Zn.prototype._correctButton=function(t,e){return!1},Zn.prototype._move=function(t,e){return{}},Zn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Zn.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var i=qn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var u=i[l],c=this._touches[l];c&&(a._add(u),o._add(u.sub(c)),s++,i[l]=u)}if(this._touches=i,!(sMath.abs(t.x)}var oi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,ai(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid)return this._lastPoints=t,this._active=!0,{pitchDelta:(n.y+i.y)/2*-.5}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return ai(t)&&ai(e)&&a}},e}(Qn),si={panStep:100,bearingStep:15,pitchStep:10},li=function(){var t=si;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function ui(t){return t*(2-t)}li.prototype.reset=function(){this._active=!1},li.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:"keyboardHandler",easing:ui,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},li.prototype.enable=function(){this._enabled=!0},li.prototype.disable=function(){this._enabled=!1,this.reset()},li.prototype.isEnabled=function(){return this._enabled},li.prototype.isActive=function(){return this._active};var ci=4.000244140625,fi=1/450,hi=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=fi,t.bindAll(["_onWheel","_onTimeout","_onScrollFrame","_onScrollFinished"],this)};hi.prototype.setZoomRate=function(t){this._defaultZoomRate=t},hi.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},hi.prototype.isEnabled=function(){return!!this._enabled},hi.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},hi.prototype.isZooming=function(){return!!this._zooming},hi.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&"center"===t.around)},hi.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},hi.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%ci===0?this._type="wheel":0!==r&&Math.abs(r)<4?this._type="trackpad":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},hi.prototype._onTimeout=function(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)},hi.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},hi.prototype.renderFrame=function(){return this._onScrollFrame()},hi.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n="wheel"===this._type&&Math.abs(this._delta)>ci?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a="number"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),"wheel"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s="number"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,u=this._easing,c=!1;if("wheel"===this._type&&l&&u){var f=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=u(f);o=t.number(l,s,h),f<1?this._frameId||(this._frameId=!0):c=!0}else o=s,c=!0;return this._active=!0,c&&(this._active=!1,this._finishTimeout=setTimeout(function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!c,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},hi.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},hi.prototype.reset=function(){this._active=!1};var pi=function(t,e){this._clickZoom=t,this._tapZoom=e};pi.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},pi.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},pi.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},pi.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var di=function(){this.reset()};di.prototype.reset=function(){this._active=!1},di.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},di.prototype.enable=function(){this._enabled=!0},di.prototype.disable=function(){this._enabled=!1,this.reset()},di.prototype.isEnabled=function(){return this._enabled},di.prototype.isActive=function(){return this._active};var vi=function(){this._tap=new Yn({numTouches:1,numTaps:1}),this.reset()};vi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},vi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},vi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},vi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},vi.prototype.touchcancel=function(){this.reset()},vi.prototype.enable=function(){this._enabled=!0},vi.prototype.disable=function(){this._enabled=!1,this.reset()},vi.prototype.isEnabled=function(){return this._enabled},vi.prototype.isActive=function(){return this._active};var gi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};gi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},gi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},gi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},gi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var yi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};yi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},yi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},yi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},yi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var mi=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};mi.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},mi.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},mi.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},mi.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},mi.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},mi.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var xi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},bi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function _i(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var wi=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new zn(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll(["handleEvent","handleWindowEvent"],this);var i=this._el;this._listeners=[[i,"touchstart",{passive:!1}],[i,"touchmove",{passive:!1}],[i,"touchend",void 0],[i,"touchcancel",void 0],[i,"mousedown",void 0],[i,"mousemove",void 0],[i,"mouseup",void 0],[t.window.document,"mousemove",{capture:!0}],[t.window.document,"mouseup",void 0],[i,"mouseover",void 0],[i,"mouseout",void 0],[i,"dblclick",void 0],[i,"click",void 0],[i,"keydown",{capture:!1}],[i,"keyup",void 0],[i,"wheel",{passive:!1}],[i,"contextmenu",void 0],[t.window,"blur",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,_):Math.max(.5,_),w=Math.pow(g,1-e),T=i.unproject(x.add(b.mult(e*w)).mult(v));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)},function(t){n._afterEase(r,t)},e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,r||n.moving||this.fire(new t.Event("movestart",e)),this._zooming&&!n.zooming&&this.fire(new t.Event("zoomstart",e)),this._rotating&&!n.rotating&&this.fire(new t.Event("rotatestart",e)),this._pitching&&!n.pitching&&this.fire(new t.Event("pitchstart",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event("move",e)),this._zooming&&this.fire(new t.Event("zoom",e)),this._rotating&&this.fire(new t.Event("rotate",e)),this._pitching&&this.fire(new t.Event("pitch",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event("zoomend",e)),i&&this.fire(new t.Event("rotateend",e)),a&&this.fire(new t.Event("pitchend",e)),this.fire(new t.Event("moveend",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,["center","zoom","bearing","pitch","around"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),u=this.getPadding(),c="zoom"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,f="bearing"in e?this._normalizeBearing(e.bearing,s):s,h="pitch"in e?+e.pitch:l,p="padding"in e?e.padding:a.padding,d=a.zoomScale(c-o),v=t.Point.convert(e.offset),g=a.centerPoint.add(v),y=a.pointLocation(g),m=t.LngLat.convert(e.center||y);this._normalizeCenter(m);var x=a.project(y),b=a.project(m).sub(x),_=e.curve,w=Math.max(a.width,a.height),T=w/d,A=b.mag();if("minZoom"in e){var k=t.clamp(Math.min(e.minZoom,o,c),a.minZoom,a.maxZoom),M=w/a.zoomScale(k-o);_=Math.sqrt(M/A*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*A*A)/(2*(t?T:w)*S*A);return Math.log(Math.sqrt(e*e+1)-e)}function L(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var P=E(0),O=function(t){return C(P)/C(P+_*t)},I=function(t){return w*((C(P)*(L(e=P+_*t)/C(e))-L(P))/S)/A;var e},D=(E(1)-P)/_;if(Math.abs(A)<1e-6||!isFinite(D)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var z=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==f,this._pitching=h!==l,this._padding=!a.isPaddingEqual(p),this._prepareEase(r,!1),this._ease(function(e){var i=e*D,d=1/O(i);a.zoom=1===e?c:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,f,e)),n._pitching&&(a.pitch=t.number(l,h,e)),n._padding&&(a.interpolatePadding(u,p,e),g=a.centerPoint.add(v));var y=1===e?m:a.unproject(x.add(b.mult(I(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?y.wrap():y,g),n._fireMoveEvents(r)},function(){return n._afterEase(r)},e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop()}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),Ai=function(e){void 0===e&&(e={}),this.options=e,t.bindAll(["_updateEditLink","_updateData","_updateCompact"],this)};Ai.prototype.getDefaultPosition=function(){return"bottom-right"},Ai.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._innerContainer=r.create("div","mapboxgl-ctrl-attrib-inner",this._container),e&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),void 0===e&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},Ai.prototype.onRemove=function(){r.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},Ai.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(".mapbox-improve-map"));var r=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce(function(t,e,n){return e.value&&(t+=e.key+"="+e.value+(n=0)return!1;return!0})).join(" | ");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},Ai.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact")};var ki=function(){t.bindAll(["_updateLogo"],this),t.bindAll(["_updateCompact"],this)};ki.prototype.onAdd=function(t){this._map=t,this._container=r.create("div","mapboxgl-ctrl");var e=r.create("a","mapboxgl-ctrl-logo");return e.target="_blank",e.rel="noopener nofollow",e.href="https://www.mapbox.com/",e.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),e.setAttribute("rel","noopener nofollow"),this._container.appendChild(e),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},ki.prototype.onRemove=function(){r.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},ki.prototype.getDefaultPosition=function(){return"bottom-left"},ki.prototype._updateLogo=function(t){t&&"metadata"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?"block":"none")},ki.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t)if(t[e].getSource().mapbox_logo)return!0;return!1}},ki.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add("mapboxgl-compact"):e.classList.remove("mapboxgl-compact")}};var Mi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};Mi.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},Mi.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=e.minPitch&&e.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=e.maxPitch&&e.maxPitch>Pi)throw new Error("maxPitch must be less than or equal to 60");var i=new Sn(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new Mi,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Si,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),"string"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error("Container '"+e.container+"' not found.")}else{if(!(e.container instanceof Li))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll(["_onWindowOnline","_onWindowResize","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return r._update(!1)}),this.on("moveend",function(){return r._update(!1)}),this.on("zoom",function(){return r._update(!0)}),void 0!==t.window&&(t.window.addEventListener("online",this._onWindowOnline,!1),t.window.addEventListener("resize",this._onWindowResize,!1)),this.handlers=new wi(this,e);var a="string"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new Ln(a).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new Ai({customAttribution:e.customAttribution})),this.addControl(new ki,e.logoPosition),this.on("style.load",function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)}),this.on("data",function(e){r._update("style"===e.dataType),r.fire(new t.Event(e.dataType+"data",e))}),this.on("dataloading",function(e){r.fire(new t.Event(e.dataType+"dataloading",e))})}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r="top-right"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf("bottom")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event("movestart",e)).fire(new t.Event("move",e))),this.fire(new t.Event("resize",e)),a&&this.fire(new t.Event("moveend",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be greater than the current minZoom")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()Pi)throw new Error("maxPitch must be less than or equal to 60");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error("maxPitch must be greater than the current minPitch")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if("mouseenter"===t||"mouseover"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new Bn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if("mouseleave"===t||"mouseout"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new Bn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new Bn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;if(void 0===r)return n.prototype.off.call(this,t,e);return this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Fi.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Fi.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Fi.prototype.off=function(){var t=this.element;r.removeEventListener(t,"mousedown",this.mousedown),r.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),r.removeEventListener(t,"touchmove",this.touchmove),r.removeEventListener(t,"touchend",this.touchend),r.removeEventListener(t,"touchcancel",this.reset),this.offTemp()},Fi.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,"mousemove",this.mousemove),r.removeEventListener(t.window,"mouseup",this.mouseup)},Fi.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,"mousemove",this.mousemove),r.addEventListener(t.window,"mouseup",this.mouseup)},Fi.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Fi.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Fi.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Fi.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Fi.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("geolocate",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+"px",this._circleElement.style.height=i+"px"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var r=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=r,this._geolocateButton.setAttribute("aria-label",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&Gi)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("error",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener("contextmenu",function(t){return t.preventDefault()}),this._geolocateButton=r.create("button","mapboxgl-ctrl-geolocate",this._container),r.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",!1===e){t.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var i=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute("aria-label",i)}else{var a=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=a,this._geolocateButton.setAttribute("aria-label",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=r.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Vi(this._dotElement),this._circleElement=r.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Vi({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(e){var r=e.originalEvent&&"resize"===e.originalEvent.type;e.geolocateSource||"ACTIVE_LOCK"!==n._watchState||r||(n._watchState="BACKGROUND",n._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),n._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),n.fire(new t.Event("trackuserlocationend")))})},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":qi--,Gi=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new t.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),++qi>1?(e={maximumAge:6e5,timeout:0},Gi=!0):(e=this.options.positionOptions,Gi=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Wi={maxWidth:100,unit:"metric"},Zi=function(e){this.options=t.extend({},Wi,e),t.bindAll(["_onMove","setUnit"],this)};function Xi(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&"imperial"===r.unit){var l=3.2808*s;l>5280?Ji(e,n,l/5280,t._getUIString("ScaleControl.Miles")):Ji(e,n,l,t._getUIString("ScaleControl.Feet"))}else r&&"nautical"===r.unit?Ji(e,n,s/1852,t._getUIString("ScaleControl.NauticalMiles")):s>=1e3?Ji(e,n,s/1e3,t._getUIString("ScaleControl.Kilometers")):Ji(e,n,s,t._getUIString("ScaleControl.Meters"))}function Ji(t,e,r,n){var i,a,o,s=(i=r,(a=Math.pow(10,(""+Math.floor(i)).length-1))*((o=i/a)>=10?10:o>=5?5:o>=3?3:o>=2?2:o>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(o))),l=s/r;t.style.width=e*l+"px",t.innerHTML=s+" "+n}Zi.prototype.getDefaultPosition=function(){return"bottom-left"},Zi.prototype._onMove=function(){Xi(this._map,this._container,this.options)},Zi.prototype.onAdd=function(t){return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Zi.prototype.onRemove=function(){r.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Zi.prototype.setUnit=function(t){this.options.unit=t,Xi(this._map,this._container,this.options)};var Ki=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce("Full screen control 'container' must be a DOM element.")),t.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in t.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in t.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in t.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in t.window.document&&(this._fullscreenchange="MSFullscreenChange")};Ki.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",t.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},Ki.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Ki.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Ki.prototype._setupUI=function(){var e=this._fullscreenButton=r.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);r.create("span","mapboxgl-ctrl-icon",e).setAttribute("aria-hidden",!0),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Ki.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t},Ki.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Ki.prototype._isFullscreen=function(){return this._fullscreen},Ki.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},Ki.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var $i={closeButton:!0,closeOnClick:!0,className:"",maxWidth:"240px"},Qi=function(e){function n(r){e.call(this),this.options=t.extend(Object.create($i),r),t.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new t.Event("open")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new t.Event("close")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement("body");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create("div","mapboxgl-popup-content",this._container),this.options.closeButton&&(this._closeButton=r.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(t){var e=this,n=this._lngLat||this._trackPointer;if(this._map&&n&&this._content&&(this._container||(this._container=r.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=r.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(t){return e._container.classList.add(t)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Bi(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||t)){var i=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat),a=this.options.anchor,o=ta(this.options.offset);if(!a){var s,l=this._container.offsetWidth,u=this._container.offsetHeight;s=i.y+o.bottom.ythis._map.transform.height-u?["bottom"]:[],i.xthis._map.transform.width-l/2&&s.push("right"),a=0===s.length?"bottom":s.join("-")}var c=i.add(o[a]).round();r.setTransform(this._container,Ni[a]+" translate("+c.x+"px,"+c.y+"px)"),ji(this._container,a,"popup")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);function ta(e){if(e){if("number"==typeof e){var r=Math.round(Math.sqrt(.5*Math.pow(e,2)));return{center:new t.Point(0,0),top:new t.Point(0,e),"top-left":new t.Point(r,r),"top-right":new t.Point(-r,r),bottom:new t.Point(0,-e),"bottom-left":new t.Point(r,-r),"bottom-right":new t.Point(-r,-r),left:new t.Point(e,0),right:new t.Point(-e,0)}}if(e instanceof t.Point||Array.isArray(e)){var n=t.Point.convert(e);return{center:n,top:n,"top-left":n,"top-right":n,bottom:n,"bottom-left":n,"bottom-right":n,left:n,right:n}}return{center:t.Point.convert(e.center||[0,0]),top:t.Point.convert(e.top||[0,0]),"top-left":t.Point.convert(e["top-left"]||[0,0]),"top-right":t.Point.convert(e["top-right"]||[0,0]),bottom:t.Point.convert(e.bottom||[0,0]),"bottom-left":t.Point.convert(e["bottom-left"]||[0,0]),"bottom-right":t.Point.convert(e["bottom-right"]||[0,0]),left:t.Point.convert(e.left||[0,0]),right:t.Point.convert(e.right||[0,0])}}return ta(new t.Point(0,0))}var ea={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Ii,NavigationControl:Ri,GeolocateControl:Yi,AttributionControl:Ai,ScaleControl:Zi,FullscreenControl:Ki,Popup:Qi,Marker:Vi,Style:We,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){jt().acquire(Rt)},clearPrewarmedResources:function(){var t=Bt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(Rt),Bt=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Ft.workerCount},set workerCount(t){Ft.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:""};return ea}),r}()},55759:function(t,e,r){"use strict";var n=r(26446),i=r(15181);function a(t,e,r){var i={type:"linear",range:[t,e]};return n.autoTicks(i,(e-t)/(r||15)),i}t.exports=function(t,e){var r=t.contours;if(t.autocontour){var o=t.zmin,s=t.zmax;(t.zauto||void 0===o)&&(o=i.aggNums(Math.min,null,e)),(t.zauto||void 0===s)&&(s=i.aggNums(Math.max,null,e));var l=a(o,s,t.ncontours);r.size=l.dtick,r.start=n.tickFirst(l),l.range.reverse(),r.end=n.tickFirst(l),r.start===o&&(r.start+=r.size),r.end===s&&(r.end-=r.size),r.start>r.end&&(r.start=r.end=(r.start+r.end)/2),t._input.contours||(t._input.contours={}),i.extendFlat(t._input.contours,{start:r.start,end:r.end,size:r.size}),t._input.autocontour=!0}else if("constraint"!==r.type){var u,c=r.start,f=r.end,h=t._input.contours;c>f&&(r.start=h.start=f,f=r.end=h.end=c,c=r.start),r.size>0||(u=c===f?1:a(c,f,t.ncontours).dtick,h.size=r.size=u)}}},55835:function(t,e,r){"use strict";var n=r(69562),i=r(38793);t.exports=function(t,e,r,a,o){o||(o={}),o.isContour=!0;var s=i(t,e,r,a,o);return s&&s.forEach(function(t){var e=t.trace;"constraint"===e.contours.type&&(e.fillcolor&&n.opacity(e.fillcolor)?t.color=n.addOpacity(e.fillcolor,1):e.contours.showlines&&n.opacity(e.line.color)&&(t.color=n.addOpacity(e.line.color,1)))}),s}},55891:function(t,e,r){"use strict";var n=r(79758),i=r(26446),a=r(88191);t.exports=function(t,e,r,o){var s,l,u,c=r[0][0].carpet,f=i.getFromId(t,c.xaxis||"x"),h=i.getFromId(t,c.yaxis||"y"),p={xaxis:f,yaxis:h,plot:e.plot};for(s=0;s path").each(function(t){if(!t.isBlank){var e=s.marker;n.select(this).call(a.fill,t.mc||e.color).call(a.stroke,t.mlc||e.line.color).call(i.dashLine,e.line.dash,t.mlw||e.line.width).style("opacity",s.selectedpoints&&!t.selected?o:1)}}),u(r,s,t),r.selectAll(".regions").each(function(){n.select(this).selectAll("path").style("stroke-width",0).call(a.fill,s.connector.fillcolor)}),r.selectAll(".lines").each(function(){var t=s.connector.line;i.lineGroupStyle(n.select(this).selectAll("path"),t.width,t.color,t.dash)})})}}},56299:function(t,e,r){"use strict";t.exports={attributes:r(48114),supplyDefaults:r(62277),calc:r(4974),plot:r(48236),moduleType:"trace",name:"table",basePlotModule:r(64381),categories:["noOpacity"],meta:{}}},56327:function(t,e,r){"use strict";t.exports={attributes:r(48246),supplyDefaults:r(17665),calc:r(60306),plot:r(9168),colorbar:r(62731),style:r(55482),hoverPoints:r(38793),moduleType:"trace",name:"heatmap",basePlotModule:r(29435),categories:["cartesian","svg","2dMap","showLegend"],meta:{}}},56522:function(t,e,r){"use strict";t.exports={attributes:r(26761),supplyDefaults:r(18030),colorbar:r(60469),calc:r(87597),plot:r(86275),style:r(62468),moduleType:"trace",name:"contourcarpet",basePlotModule:r(29435),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}},56576:function(t,e,r){"use strict";var n=r(5159),i=r(25623),a=r(69562),o={};function s(t){return function(e,r){return!!e&&!!(e=i(e)).isValid()&&(e=a.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e)}}function l(t,e){var r,n=JSON.stringify(t),a=e[n];if(!a){for(a=t.slice(),r=0;r=0}),("funnelarea"===e.type?y:e.sort)&&a.sort(function(t,e){return e.v-t.v}),a[0]&&(a[0].vTotal=g),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r="pie");var n=t._fullLayout,i=t.calcdata,a=n[r+"colorway"],s=n["_"+r+"colormap"];n["extend"+r+"colors"]&&(a=l(a,o));for(var u=0,c=0;c=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r})}),l(n.prototype,o.toStringTag,a("c","String Iterator"))},56895:function(t,e,r){"use strict";var n=r(13625);t.exports=function(t){var e;return arguments.length>1&&(t=arguments),"string"==typeof t?t=t.split(/\s/).map(parseFloat):"number"==typeof t&&(t=[t]),t.length&&"number"==typeof t[0]?e=1===t.length?{width:t[0],height:t[0],x:0,y:0}:2===t.length?{width:t[0],height:t[1],x:0,y:0}:{x:t[0],y:t[1],width:t[2]-t[0]||0,height:t[3]-t[1]||0}:t&&(e={x:(t=n(t,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"})).left||0,y:t.top||0},null==t.width?t.right?e.width=t.right-e.x:e.width=0:e.width=t.width,null==t.height?t.bottom?e.height=t.bottom-e.y:e.height=0:e.height=t.height),e}},56944:function(t){"use strict";t.exports=function(t,e){return t.x="xVal"in e?e.xVal:e.x,t.y="yVal"in e?e.yVal:e.y,"initial"in e&&(t.initial=e.initial),"delta"in e&&(t.delta=e.delta),"final"in e&&(t.final=e.final),e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),t}},57341:function(t,e){"use strict";var r={};function n(t){t&&null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}e.throttle=function(t,e,i){var a=r[t],o=Date.now();if(!a){for(var s in r)r[s].tsa.ts+e?l():a.timer=setTimeout(function(){l(),a.timer=null},e)},e.done=function(t){var e=r[t];return e&&e.timer?new Promise(function(t){var r=e.onDone;e.onDone=function(){r&&r(),t(),e.onDone=null}}):Promise.resolve()},e.clear=function(t){if(t)n(r[t]),delete r[t];else for(var i in r)e.clear(i)}},57731:function(t,e,r){"use strict";var n=r(16534),i=r(88191),a=r(69562),o=r(26100),s=o.stylePoints,l=o.styleText;t.exports=function(t,e){e&&function(t,e){var r=e[0].trace,o=e[0].node3;o.style("opacity",e[0].trace.opacity),s(o,r,t),l(o,r,t),o.selectAll("path.js-line").style("fill","none").each(function(t){var e=n.select(this),r=t.trace,o=r.line||{};e.call(a.stroke,o.color).call(i.dashLine,o.dash||"",o.width||0),"none"!==r.fill&&e.call(a.fill,r.fillcolor)})}(t,e)}},57916:function(t,e,r){"use strict";var n=r(15181),i=r(26446),a=r(46716),o=r(28315),s=r(80379);function l(t,e,r,a){function l(r,i){return n.coerce(t,e,s,r,i)}function u(t){var n=t+"axis",a={_fullLayout:{}};return a._fullLayout[n]=r[n],i.coercePosition(e,a,l,t,t,.5)}l("visible")&&(o(t,e,a.fullLayout,l),u("x"),u("y"),u("z"),n.noneOrAll(t,e,["x","y","z"]),e.xref="x",e.yref="y",e.zref="z",l("xanchor"),l("yanchor"),l("xshift"),l("yshift"),e.showarrow&&(e.axref="pixel",e.ayref="pixel",l("ax",-10),l("ay",-30),n.noneOrAll(t,e,["ax","ay"])))}t.exports=function(t,e,r){a(t,e,{name:"annotations",handleItemDefaults:l,fullLayout:r.fullLayout})}},58015:function(t,e,r){"use strict";var n=r(69562),i=r(28418);t.exports=function(t,e){var r,a;if("lines"===t.mode)return(r=t.line.color)&&n.opacity(r)?r:t.fillcolor;if("none"===t.mode)return t.fill?t.fillcolor:"";var o=e.mcc||(t.marker||{}).color,s=e.mlcc||((t.marker||{}).line||{}).color;return(a=o&&n.opacity(o)?o:s&&n.opacity(s)&&(e.mlw||((t.marker||{}).line||{}).width)?s:"")?n.opacity(a)<.3?n.addOpacity(a,.3):a:(r=(t.line||{}).color)&&n.opacity(r)&&i.hasLines(t)&&t.line.width?r:t.fillcolor}},58023:function(t,e,r){"use strict";var n=r(15181).isArrayOrTypedArray;t.exports=function(t,e,r){var i,a,o,s,l,u,c=[],f=n(t)?t.length:t,h=n(e)?e.length:e,p=n(t)?t:null,d=n(e)?e:null;p&&(o=(p.length-1)/(p[p.length-1]-p[0])/(f-1)),d&&(s=(d.length-1)/(d[d.length-1]-d[0])/(h-1));var v=1/0,g=-1/0;for(a=0;a0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function F(t,e){return null===t?e:t}function B(t,e,r){C();var n=[e],i=[r];if(s>=1)n=[e],i=[r];else if(s>0){var a=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?r[u]:L(c,f,h);l[u]=d>-1?d:O(c,f,h,F(t,p))}I(l[0],l[1],l[2])}}function N(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function j(t,e,r){return t>=e&&t<=r}function U(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function V(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function H(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[j(e[0][3],n,i),j(e[1][3],n,i),j(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return U(e[0][3])&&U(e[1][3])&&U(e[2][3])?(B(t,e,r),!0):a<3&&H(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var u=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach(function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var c=e[a[0]],f=e[a[1]],h=e[a[2]],p=N(h,c,n,i),d=N(h,f,n,i);o=l(t,[d,p,c],[-1,-1,r[a[0]]])||o,o=l(t,[c,f,d],[r[a[0]],r[a[1]],-1])||o,u=!0}}),u||[[0,1,2],[1,2,0],[2,0,1]].forEach(function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var c=e[a[0]],f=e[a[1]],h=e[a[2]],p=N(f,c,n,i),d=N(h,c,n,i);o=l(t,[d,p,c],[-1,-1,r[a[0]]])||o,u=!0}}),o}function q(t,e,r,n){var i=!1,a=V(e),o=[j(a[0][3],r,n),j(a[1][3],r,n),j(a[2][3],r,n),j(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return v&&(i=function(t,e,r){var n=function(n,i,a){B(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach(function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var u=a[l[0]],c=a[l[1]],f=a[l[2]],h=a[l[3]];if(v)i=B(t,[u,c,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=N(h,u,r,n),d=N(h,c,r,n),g=N(h,f,r,n);i=B(null,[p,d,g],[-1,-1,-1])||i}s=!0}}),s||([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach(function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var u=a[l[0]],c=a[l[1]],f=a[l[2]],h=a[l[3]],p=N(f,u,r,n),d=N(f,c,r,n),g=N(h,c,r,n),y=N(h,u,r,n);v?(i=B(t,[u,y,p],[e[l[0]],-1,-1])||i,i=B(t,[c,d,g],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(t,n,i){B(null,[e[t],e[n],e[i]],[r[t],r[n],r[i]])};n(0,1,2),n(2,3,0)}(0,[p,d,g,y],[-1,-1,-1,-1])||i,s=!0}}),s||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach(function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var u=a[l[0]],c=a[l[1]],f=a[l[2]],h=a[l[3]],p=N(c,u,r,n),d=N(f,u,r,n),g=N(h,u,r,n);v?(i=B(t,[u,p,d],[e[l[0]],-1,-1])||i,i=B(t,[u,d,g],[e[l[0]],-1,-1])||i,i=B(t,[u,g,p],[e[l[0]],-1,-1])||i):i=B(null,[p,d,g],[-1,-1,-1])||i,s=!0}})),i}function G(t,e,r,n,i,a,o,s,l,u,c){var f=!1;return d&&(R(t,"A")&&(f=q(null,[e,r,n,a],u,c)||f),R(t,"B")&&(f=q(null,[r,n,i,l],u,c)||f),R(t,"C")&&(f=q(null,[r,a,o,l],u,c)||f),R(t,"D")&&(f=q(null,[n,a,s,l],u,c)||f),R(t,"E")&&(f=q(null,[r,n,a,l],u,c)||f)),v&&(f=q(t,[r,n,a,l],u,c)||f),f}function Y(t,e,r,n,i,a,o,s){return[!0===s[0]||H(t,V([e,r,n]),[e,r,n],a,o),!0===s[1]||H(t,V([n,i,e]),[n,i,e],a,o)]}function W(t,e,r,n,i,a,o,s,l){return s?Y(t,e,r,i,n,a,o,l):Y(t,r,i,n,e,a,o,l)}function Z(t,e,r,n,i,a,o){var s,l,u,c,f=!1,h=function(){f=H(t,[s,l,u],[-1,-1,-1],i,a)||f,f=H(t,[u,c,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],v=o[2];return p&&(s=D(V([A(e,r-0,n-0)])[0],V([A(e-1,r-0,n-0)])[0],p),l=D(V([A(e,r-0,n-1)])[0],V([A(e-1,r-0,n-1)])[0],p),u=D(V([A(e,r-1,n-1)])[0],V([A(e-1,r-1,n-1)])[0],p),c=D(V([A(e,r-1,n-0)])[0],V([A(e-1,r-1,n-0)])[0],p),h()),d&&(s=D(V([A(e-0,r,n-0)])[0],V([A(e-0,r-1,n-0)])[0],d),l=D(V([A(e-0,r,n-1)])[0],V([A(e-0,r-1,n-1)])[0],d),u=D(V([A(e-1,r,n-1)])[0],V([A(e-1,r-1,n-1)])[0],d),c=D(V([A(e-1,r,n-0)])[0],V([A(e-1,r-1,n-0)])[0],d),h()),v&&(s=D(V([A(e-0,r-0,n)])[0],V([A(e-0,r-0,n-1)])[0],v),l=D(V([A(e-0,r-1,n)])[0],V([A(e-0,r-1,n-1)])[0],v),u=D(V([A(e-1,r-1,n)])[0],V([A(e-1,r-1,n-1)])[0],v),c=D(V([A(e-1,r-0,n)])[0],V([A(e-1,r-0,n-1)])[0],v),h()),f}function X(t,e,r,n,i,a,o,s,l,u,c,f){var h=t;return f?(d&&"even"===t&&(h=null),G(h,e,r,n,i,a,o,s,l,u,c)):(d&&"odd"===t&&(h=null),G(h,l,s,o,a,i,n,r,e,u,c))}function J(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(T-M)?[k,T]:[T,M];tt(r,L[0],L[1])}}var C=[[Math.min(S,M),Math.max(S,M)],[Math.min(k,E),Math.max(k,E)]];["x","y","z"].forEach(function(r){for(var n=[],i=0;i0&&(f.push(d.id),"x"===r?h.push([d.distRatio,0,0]):"y"===r?h.push([0,d.distRatio,0]):h.push([0,0,d.distRatio]))}else c=it(1,"x"===r?b-1:"y"===r?_-1:w-1);f.length>0&&(n[a]="x"===r?et(e,f,o,s,h,n[a]):"y"===r?rt(e,f,o,s,h,n[a]):nt(e,f,o,s,h,n[a]),a++),c.length>0&&(n[a]="x"===r?J(e,c,o,s,n[a]):"y"===r?K(e,c,o,s,n[a]):$(e,c,o,s,n[a]),a++)}var v=t.caps[r];v.show&&v.fill&&(z(v.fill),n[a]="x"===r?J(e,[0,b-1],o,s,n[a]):"y"===r?K(e,[0,_-1],o,s,n[a]):$(e,[0,w-1],o,s,n[a]),a++)}}),0===g&&P(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=y,t._Ys=m,t._Zs=x}(),t}t.exports={findNearestOnAxis:l,generateIsoMeshes:h,createIsosurfaceTrace:function(t,e){var r=t.glplot.gl,i=n({gl:r}),a=new u(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}},58328:function(t,e,r){"use strict";var n=r(46982),i=r(15181),a=i.extendFlat,o=i.extendDeep;function s(t){var e;switch(t){case"themes__thumb":e={autosize:!0,width:150,height:150,title:{text:""},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case"thumbnail":e={title:{text:""},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:"",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:e={}}return e}function l(t){return["xaxis","yaxis","zaxis"].indexOf(t.slice(0,5))>-1}t.exports=function(t,e){var r,i=t.data,u=t.layout,c=o([],i),f=o({},u,s(e.tileClass)),h=t._context||{};if(e.width&&(f.width=e.width),e.height&&(f.height=e.height),"thumbnail"===e.tileClass||"themes__thumb"===e.tileClass){f.annotations=[];var p=Object.keys(f);for(r=0;r0){var b,_,w,T,A,k=t.xa,M=t.ya;"h"===d.orientation?(A=e,b="y",w=M,_="x",T=k):(A=r,b="x",w=k,_="y",T=M);var S=p[t.index];if(A>=S.span[0]&&A<=S.span[1]){var E=i.extendFlat({},t),L=T.c2p(A,!0),C=s.getKdeValue(S,d,A),P=s.getPositionOnKdePath(S,d,L),O=w._offset,I=w._length;E[b+"0"]=P[0],E[b+"1"]=P[1],E[_+"0"]=E[_+"1"]=L,E[_+"Label"]=_+": "+a.hoverLabelText(T,A,d[_+"hoverformat"])+", "+p[0].t.labels.kde+" "+C.toFixed(3);for(var D=0,z=0;zf&&(n.log("parcoords traces support up to "+f+" dimensions at the moment"),d.splice(f));var v=s(t,e,{name:"dimensions",layout:l,handleItemDefaults:p}),g=function(t,e,r,o,s){var l=s("line.color",r);if(i(t,"line")&&n.isArrayOrTypedArray(l)){if(l.length)return s("line.colorscale"),a(t,e,o,s,{prefix:"line.",cLetter:"c"}),l.length;e.line.color=r}return 1/0}(t,e,r,l,c);o(e,l,c),Array.isArray(v)&&v.length||(e.visible=!1),h(e,v,"values",g);var y={family:l.font.family,size:Math.round(l.font.size/1.2),color:l.font.color};n.coerceFont(c,"labelfont",y),n.coerceFont(c,"tickfont",y),n.coerceFont(c,"rangefont",y),c("labelangle"),c("labelside"),c("unselected.line.color"),c("unselected.line.opacity")}},58833:function(t){"use strict";t.exports=function(t,e){var r={},n=e._carpet,i=n.ab2ij([t.a,t.b]),a=Math.floor(i[0]),o=i[0]-a,s=Math.floor(i[1]),l=i[1]-s,u=n.evalxy([],a,s,o,l);return r.yLabel=u[1].toFixed(3),r}},58953:function(t){"use strict";t.exports=function(t,e){return"xVal"in e&&(t.x=e.xVal),"yVal"in e&&(t.y=e.yVal),e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),t.color=e.color,t.colormodel=e.trace.colormodel,t.z||(t.z=e.color),t}},58978:function(t){t.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],l=t[7],u=t[8],c=t[9],f=t[10],h=t[11],p=t[12],d=t[13],v=t[14],g=t[15];return(e*o-r*a)*(f*g-h*v)-(e*s-n*a)*(c*g-h*d)+(e*l-i*a)*(c*v-f*d)+(r*s-n*o)*(u*g-h*p)-(r*l-i*o)*(u*v-f*p)+(n*l-i*s)*(u*d-c*p)}},59043:function(t,e,r){"use strict";t.exports=r(98436)},59129:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],u=e[6],c=e[7],f=e[8],h=e[9],p=e[10],d=e[11],v=e[12],g=e[13],y=e[14],m=e[15],x=r[0],b=r[1],_=r[2],w=r[3];return t[0]=x*n+b*s+_*f+w*v,t[1]=x*i+b*l+_*h+w*g,t[2]=x*a+b*u+_*p+w*y,t[3]=x*o+b*c+_*d+w*m,x=r[4],b=r[5],_=r[6],w=r[7],t[4]=x*n+b*s+_*f+w*v,t[5]=x*i+b*l+_*h+w*g,t[6]=x*a+b*u+_*p+w*y,t[7]=x*o+b*c+_*d+w*m,x=r[8],b=r[9],_=r[10],w=r[11],t[8]=x*n+b*s+_*f+w*v,t[9]=x*i+b*l+_*h+w*g,t[10]=x*a+b*u+_*p+w*y,t[11]=x*o+b*c+_*d+w*m,x=r[12],b=r[13],_=r[14],w=r[15],t[12]=x*n+b*s+_*f+w*v,t[13]=x*i+b*l+_*h+w*g,t[14]=x*a+b*u+_*p+w*y,t[15]=x*o+b*c+_*d+w*m,t}},59378:function(t,e,r){"use strict";var n=r(15181),i=r(55077),a=r(69562),o=r(79444).N,s=r(41562).handleText,l=r(53511).TEXTPAD,u=r(92967).handleMarkerDefaults,c=r(44236),f=c.hasColorscale,h=c.handleDefaults;t.exports=function(t,e,r,c){function p(r,a){return n.coerce(t,e,i,r,a)}var d=p("labels"),v=p("parents");if(d&&d.length&&v&&v.length){var g=p("values");g&&g.length?p("branchvalues"):p("count"),p("level"),p("maxdepth"),p("tiling.orientation"),p("tiling.flip"),p("tiling.pad");var y=p("text");p("texttemplate"),e.texttemplate||p("textinfo",Array.isArray(y)?"text+label":"label"),p("hovertext"),p("hovertemplate");var m=p("pathbar.visible");s(t,e,c,p,"auto",{hasPathbar:m,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),p("textposition"),u(t,e,c,p);var x=e._hasColorscale=f(t,"marker","colors")||(t.marker||{}).coloraxis;x&&h(t,e,c,p,{prefix:"marker.",cLetter:"c"}),p("leaf.opacity",x?1:.7),e._hovered={marker:{line:{width:2,color:a.contrast(c.paper_bgcolor)}}},m&&(p("pathbar.thickness",e.pathbar.textfont.size+2*l),p("pathbar.side"),p("pathbar.edgeshape")),p("sort"),p("root.color"),o(e,c,p),e._length=null}else e.visible=!1}},59451:function(t){"use strict";var e=Object.create(null),r=Math.random;t.exports=function(){var t;do{t=r().toString(36).slice(2)}while(e[t]);return t}},59487:function(t,e,r){"use strict";var n=r(97261).F.ERR_STREAM_PREMATURE_CLOSE;function i(){}t.exports=function t(e,r,a){if("function"==typeof r)return t(e,null,r);r||(r={}),a=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),i=0;id.TOO_MANY_POINTS||f.hasMarkers(e)?"rect":"round";if(u&&e.connectgaps){var h=n[0],p=n[1];for(i=0;i1?l[i]:l[0]:l,d=Array.isArray(u)?u.length>1?u[i]:u[0]:u,v=g[p],y=g[d],m=c?c/.8+1:0,x=-y*m-.5*y;o.offset[i]=[v*m/h,x/h]}}return o}}},59817:function(t,e,r){"use strict";var n=r(62019),i={object:!0,symbol:!0};t.exports=function(){var t,e=n.Symbol;if("function"!=typeof e)return!1;t=e("test symbol");try{String(t)}catch(t){return!1}return!!i[typeof e.iterator]&&!!i[typeof e.toPrimitive]&&!!i[typeof e.toStringTag]}},59884:function(t,e,r){"use strict";var n=r(30137).EventEmitter,i=r(46982),a=r(15181),o=r(93335),s=r(58328),l=r(65479),u=r(69982);t.exports=function(t,e){var r=new n,c=s(t,{format:"png"}),f=c.gd;f.style.position="absolute",f.style.left="-5000px",document.body.appendChild(f);var h=o.getRedrawFunc(f);return i.call("_doPlot",f,c.data,c.layout,c.config).then(h).then(function(){var t=o.getDelay(f._fullLayout);setTimeout(function(){var t=l(f),n=document.createElement("canvas");n.id=a.randstr(),(r=u({format:e.format,width:f._fullLayout.width,height:f._fullLayout.height,canvas:n,emitter:r,svg:t})).clean=function(){f&&document.body.removeChild(f)}},t)}).catch(function(t){r.emit("error",t)}),r}},59953:function(t,e,r){"use strict";var n=r(48563),i=r(14617).traceLayerPrefix;function a(t,e){this.type="densitymapbox",this.subplot=t,this.uid=e,this.sourceId="source-"+e,this.layerList=[["heatmap",i+e+"-heatmap"]],this.below=null}var o=a.prototype;o.update=function(t){var e=this.subplot,r=this.layerList,i=n(t),a=e.belowLookup["trace-"+this.uid];e.map.getSource(this.sourceId).setData(i.geojson),a!==this.below&&(this._removeLayers(),this._addLayers(i,a),this.below=a);for(var o=0;o=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},t.exports=function(t,e){var r=e[0].trace,i=new a(t,r.uid),o=i.sourceId,s=n(e),l=i.below=t.belowLookup["trace-"+r.uid];return t.map.addSource(o,{type:"geojson",data:s.geojson}),i._addLayers(s,l),i}},59975:function(t,e,r){"use strict";var n=r(76252);t.exports=function(){return n(this).length=0,this}},60042:function(t,e,r){"use strict";var n=r(97261).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(i?r:"highWaterMark",a);return Math.floor(a)}return t.objectMode?16:16384}}},60153:function(t){"use strict";t.exports=function(t){return!!t&&("symbol"==typeof t||!!t.constructor&&"Symbol"===t.constructor.name&&"Symbol"===t[t.constructor.toStringTag])}},60154:function(t,e,r){"use strict";var n=r(41511);t.exports=function(t,e,r,i){var a=t._fullLayout,o=a._paper,s=a._size;n(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},r,i)}},60220:function(t){"use strict";t.exports=function(){for(var t=0;t1){var e=(t[t.length-1]-t[0])/(t.length-1),r=Math.abs(e/100);for(A=0;Ar)return!1}return!0}(M.rangebreaks||S.rangebreaks)&&(T=function(t,e,r){for(var n=[],i=-1,a=0;at.length)&&(r=t.length),t.substring(r-e.length,r)===e}var x="",b="",_="",w="",T={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function A(t){var e=Object.keys(t),r=Object.create(Object.getPrototypeOf(t));return e.forEach(function(e){r[e]=t[e]}),Object.defineProperty(r,"message",{value:t.message}),r}function k(t){return g(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var M=function(t,e){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&p(t,e)}(M,t);var r,i,s,c,f=(r=M,i=h(),function(){var t,e=d(r);if(i){var n=d(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return l(this,t)});function M(t){var e;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,M),"object"!==v(t)||null===t)throw new y("options","Object",t);var r=t.message,i=t.operator,a=t.stackStartFn,o=t.actual,s=t.expected,c=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=r)e=f.call(this,String(r));else if(n.stderr&&n.stderr.isTTY&&(n.stderr&&n.stderr.getColorDepth&&1!==n.stderr.getColorDepth()?(x="",b="",w="",_=""):(x="",b="",w="",_="")),"object"===v(o)&&null!==o&&"object"===v(s)&&null!==s&&"stack"in o&&o instanceof Error&&"stack"in s&&s instanceof Error&&(o=A(o),s=A(s)),"deepStrictEqual"===i||"strictEqual"===i)e=f.call(this,function(t,e,r){var i="",a="",o=0,s="",l=!1,u=k(t),c=u.split("\n"),f=k(e).split("\n"),h=0,p="";if("strictEqual"===r&&"object"===v(t)&&"object"===v(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===c.length&&1===f.length&&c[0]!==f[0]){var d=c[0].length+f[0].length;if(d<=10){if(!("object"===v(t)&&null!==t||"object"===v(e)&&null!==e||0===t&&0===e))return"".concat(T[r],"\n\n")+"".concat(c[0]," !== ").concat(f[0],"\n")}else if("strictEqualObject"!==r&&d<(n.stderr&&n.stderr.isTTY?n.stderr.columns:80)){for(;c[0][h]===f[0][h];)h++;h>2&&(p="\n ".concat(function(t,e){if(e=Math.floor(e),0==t.length||0==e)return"";var r=t.length*e;for(e=Math.floor(Math.log(e)/Math.log(2));e;)t+=t,e--;return t+t.substring(0,r-t.length)}(" ",h),"^"),h=0)}}for(var g=c[c.length-1],y=f[f.length-1];g===y&&(h++<2?s="\n ".concat(g).concat(s):i=g,c.pop(),f.pop(),0!==c.length&&0!==f.length);)g=c[c.length-1],y=f[f.length-1];var A=Math.max(c.length,f.length);if(0===A){var M=u.split("\n");if(M.length>30)for(M[26]="".concat(x,"...").concat(w);M.length>27;)M.pop();return"".concat(T.notIdentical,"\n\n").concat(M.join("\n"),"\n")}h>3&&(s="\n".concat(x,"...").concat(w).concat(s),l=!0),""!==i&&(s="\n ".concat(i).concat(s),i="");var S=0,E=T[r]+"\n".concat(b,"+ actual").concat(w," ").concat(_,"- expected").concat(w),L=" ".concat(x,"...").concat(w," Lines skipped");for(h=0;h1&&h>2&&(C>4?(a+="\n".concat(x,"...").concat(w),l=!0):C>3&&(a+="\n ".concat(f[h-2]),S++),a+="\n ".concat(f[h-1]),S++),o=h,i+="\n".concat(_,"-").concat(w," ").concat(f[h]),S++;else if(f.length1&&h>2&&(C>4?(a+="\n".concat(x,"...").concat(w),l=!0):C>3&&(a+="\n ".concat(c[h-2]),S++),a+="\n ".concat(c[h-1]),S++),o=h,a+="\n".concat(b,"+").concat(w," ").concat(c[h]),S++;else{var P=f[h],O=c[h],I=O!==P&&(!m(O,",")||O.slice(0,-1)!==P);I&&m(P,",")&&P.slice(0,-1)===O&&(I=!1,O+=","),I?(C>1&&h>2&&(C>4?(a+="\n".concat(x,"...").concat(w),l=!0):C>3&&(a+="\n ".concat(c[h-2]),S++),a+="\n ".concat(c[h-1]),S++),o=h,a+="\n".concat(b,"+").concat(w," ").concat(O),i+="\n".concat(_,"-").concat(w," ").concat(P),S+=2):(a+=i,i="",1!==C&&0!==h||(a+="\n ".concat(O),S++))}if(S>20&&h30)for(p[26]="".concat(x,"...").concat(w);p.length>27;)p.pop();e=1===p.length?f.call(this,"".concat(h," ").concat(p[0])):f.call(this,"".concat(h,"\n\n").concat(p.join("\n"),"\n"))}else{var d=k(o),g="",S=T[i];"notDeepEqual"===i||"notEqual"===i?(d="".concat(T[i],"\n\n").concat(d)).length>1024&&(d="".concat(d.slice(0,1021),"...")):(g="".concat(k(s)),d.length>512&&(d="".concat(d.slice(0,509),"...")),g.length>512&&(g="".concat(g.slice(0,509),"...")),"deepEqual"===i||"equal"===i?d="".concat(S,"\n\n").concat(d,"\n\nshould equal\n\n"):g=" ".concat(i," ").concat(g)),e=f.call(this,"".concat(d).concat(g))}return Error.stackTraceLimit=c,e.generatedMessage=!r,Object.defineProperty(u(e),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),e.code="ERR_ASSERTION",e.actual=o,e.expected=s,e.operator=i,Error.captureStackTrace&&Error.captureStackTrace(u(e),a),e.stack,e.name="AssertionError",l(e)}return s=M,(c=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:e,value:function(t,e){return g(this,a(a({},e),{},{customInspect:!1,depth:0}))}}])&&o(s.prototype,c),Object.defineProperty(s,"prototype",{writable:!1}),M}(c(Error),g.custom);t.exports=M},60432:function(t,e){"use strict";e.xmlns="http://www.w3.org/2000/xmlns/",e.svg="http://www.w3.org/2000/svg",e.xlink="http://www.w3.org/1999/xlink",e.svgAttrs={xmlns:e.svg,"xmlns:xlink":e.xlink}},60433:function(t){"use strict";t.exports=Number.isNaN||function(t){return t!=t}},60469:function(t,e,r){"use strict";var n=r(44236),i=r(7450),a=r(15583);t.exports={min:"zmin",max:"zmax",calc:function(t,e,r){var o=e.contours,s=e.line,l=o.size||1,u=o.coloring,c=i(e,{isColorbar:!0});if("heatmap"===u){var f=n.extractOpts(e);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else"fill"===u&&(r._fillcolor=c);r._line={color:"lines"===u?c:s.color,width:!1!==o.showlines?s.width:0,dash:s.dash},r._levels={start:o.start,end:a(o),size:l}}}},60478:function(t,e,r){"use strict";var n=r(46982),i=r(68231);t.exports={moduleType:"trace",name:"splom",categories:["gl","regl","cartesian","symbols","showLegend","scatter-like"],attributes:r(12261),supplyDefaults:r(49746),colorbar:r(23814),calc:r(63097),plot:r(62943),hoverPoints:r(99572).hoverPoints,selectPoints:r(1396),editStyle:r(98962),meta:{}},n.register(i)},60512:function(t,e,r){"use strict";var n=r(96221),i=r(5159),a=r(15181),o=r(44236).makeColorScaleFuncFromTrace,s=r(56576).makePullColorFn,l=r(56576).generateExtendedColors,u=r(44236).calc,c=r(78945).ALMOST_EQUAL,f={},h={},p={};function d(t,e,r){var n=0,i=t.children;if(i){for(var a=i.length,o=0;o=0};g?(r=Math.min(v.length,m.length),l=function(t){return k(v[t])&&M(t)},f=function(t){return String(v[t])}):(r=Math.min(y.length,m.length),l=function(t){return k(y[t])&&M(t)},f=function(t){return String(y[t])}),b&&(r=Math.min(r,x.length));for(var S=0;S1){for(var P=a.randstr(),O=0;O<_.length;O++)""===_[O].pid&&(_[O].pid=P);_.unshift({hasMultipleRoots:!0,id:P,pid:"",label:""})}}else{var I,D=[];for(I in w)T[I]||D.push(I);if(1!==D.length)return a.warn(["Multiple implied roots, cannot build",e.type,"hierarchy of",e.name+".","These roots include:",D.join(", ")].join(" "));I=D[0],_.unshift({hasImpliedRoot:!0,id:I,pid:"",label:I})}try{h=n.stratify().id(function(t){return t.id}).parentId(function(t){return t.pid})(_)}catch(t){return a.warn(["Failed to build",e.type,"hierarchy of",e.name+".","Error:",t.message].join(" "))}var z=n.hierarchy(h),R=!1;if(b)switch(e.branchvalues){case"remainder":z.sum(function(t){return t.data.v});break;case"total":z.each(function(t){var r=t.data.data,n=r.v;if(t.children){var i=t.children.reduce(function(t,e){return t+e.data.data.v},0);if((r.hasImpliedRoot||r.hasMultipleRoots)&&(n=i),n-1?e:"Object"===e&&function(t){var e=!1;return n(v,function(r,n){if(!e)try{r(t),e=p(n,1)}catch(t){}}),e}(t)}return s?function(t){var e=!1;return n(v,function(r,n){if(!e)try{"$"+r(t)===n&&(e=p(n,1))}catch(t){}}),e}(t):null}},61097:function(t,e,r){"use strict";var n=r(88191),i=r(78945),a=i.BADNUM,o=i.LOG_CLIP,s=o+.5,l=o-.5,u=r(15181),c=u.segmentsIntersect,f=u.constrain,h=r(6680);t.exports=function(t,e){var r,i,o,p,d,v,g,y,m,x,b,_,w,T,A,k,M,S,E=e.trace||{},L=e.xaxis,C=e.yaxis,P="log"===L.type,O="log"===C.type,I=L._length,D=C._length,z=e.backoff,R=E.marker,F=e.connectGaps,B=e.baseTolerance,N=e.shape,j="linear"===N,U=E.fill&&"none"!==E.fill,V=[],H=h.minTolerance,q=t.length,G=new Array(q),Y=0;function W(r){var n=t[r];if(!n)return!1;var i=e.linearized?L.l2p(n.x):L.c2p(n.x),o=e.linearized?C.l2p(n.y):C.c2p(n.y);if(i===a){if(P&&(i=L.c2p(n.x,!0)),i===a)return!1;O&&o===a&&(i*=Math.abs(L._m*D*(L._m>0?s:l)/(C._m*I*(C._m>0?s:l)))),i*=1e3}if(o===a){if(O&&(o=C.c2p(n.y,!0)),o===a)return!1;o*=1e3}return[i,o]}function Z(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,u=i*o+a*s;if(u>0&&uot||t[1]lt)return[f(t[0],at,ot),f(t[1],st,lt)]}function ft(t,e){return t[0]===e[0]&&(t[0]===at||t[0]===ot)||t[1]===e[1]&&(t[1]===st||t[1]===lt)||void 0}function ht(t,e,r){return function(n,i){var a=ct(n),o=ct(i),s=[];if(a&&o&&ft(a,o))return s;a&&s.push(a),o&&s.push(o);var l=2*u.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);return l&&((a&&o?l>0==a[t]>o[t]?a:o:a||o)[t]+=l),s}}function pt(t){var e=t[0],r=t[1],n=e===G[Y-1][0],i=r===G[Y-1][1];if(!n||!i)if(Y>1){var a=e===G[Y-2][0],o=r===G[Y-2][1];n&&(e===at||e===ot)&&a?o?Y--:G[Y-1]=t:i&&(r===st||r===lt)&&o?a?Y--:G[Y-1]=t:G[Y++]=t}else G[Y++]=t}function dt(t){G[Y-1][0]!==t[0]&&G[Y-1][1]!==t[1]&&pt([Q,tt]),pt(t),et=null,Q=tt=0}"linear"===N||"spline"===N?nt=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=ut[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&J(o,t)ot?ot:0,$=e[1]lt?lt:0,K||$){if(Y)if(et){var n=nt(et,e);n.length>1&&(dt(n[0]),G[Y++]=n[1])}else rt=nt(G[Y-1],e)[0],G[Y++]=rt;else G[Y++]=[K||e[0],$||e[1]];var i=G[Y-1];K&&$&&(i[0]!==K||i[1]!==$)?(et&&(Q!==K&&tt!==$?pt(Q&&tt?(a=et,s=(o=e)[0]-a[0],l=(o[1]-a[1])/s,(a[1]*o[0]-o[1]*a[0])/s>0?[l>0?at:ot,lt]:[l>0?ot:at,st]):[Q||K,tt||$]):Q&&tt&&pt([Q,tt])),pt([K,$])):Q-K&&tt-$&&pt([K||Q,$||tt]),et=e,Q=K,tt=$}else et&&dt(nt(et,e)[0]),G[Y++]=e;var a,o,s,l}for(r=0;rX(v,yt))break;o=v,(w=m[0]*y[0]+m[1]*y[1])>b?(b=w,p=v,g=!1):w<_&&(_=w,d=v,g=!0)}if(g?(gt(p),o!==d&>(d)):(d!==i&>(d),o!==p&>(p)),gt(o),r>=t.length||!v)break;gt(v),i=v}}else gt(p)}et&&pt([Q||et[0],tt||et[1]]),V.push(G.slice(0,Y))}var mt=N.slice(N.length-1);if(z&&"h"!==mt&&"v"!==mt){for(var xt=!1,bt=-1,_t=[],wt=0;wtt.length)&&(e=t.length);for(var r=0,n=new Array(e);r10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function I(t){return Object.keys(t).filter(O).concat(c(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function D(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,a=Math.min(r,n);iu?t>o?t>1.1*i?i:t>1.1*a?a:o:t>s?s:t>l?l:u:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,n,a,s){if(n&&t>o){var l=d(e,a,s),u=d(r,a,s),c=t===i?0:1;return l[c]!==u[c]}return Math.floor(r/t)-Math.floor(e/t)>.1}function d(t,e,r){var n=e.c2d(t,i,r).split("-");return""===n[0]&&(n.unshift(),n[0]="-"+n[0]),n}t.exports=function(t,e,r,n,a){var s,l,u=-1.1*e,h=-.1*e,p=t-h,d=r[0],v=r[1],g=Math.min(f(d+h,d+p,n,a),f(v+h,v+p,n,a)),y=Math.min(f(d+u,d+h,n,a),f(v+u,v+h,n,a));if(g>y&&yo){var m=s===i?1:6,x=s===i?"M12":"M1";return function(e,r){var o=n.c2d(e,i,a),s=o.indexOf("-",m);s>0&&(o=o.substr(0,s));var u=n.d2c(o,0,a);if(u=55296&&m<=56319&&(w+=t[++r]),w=T?h.call(T,A,w,v):w,e?(p.value=w,d(g,v,p)):g[v]=w,++v;y=v}if(void 0===y)for(y=o(t.length),e&&(g=new e(y)),r=0;r=0?1:-1,L=E*S,C=L>a.pi,P=x*k;if(o.add((0,a.FP)(P*E*(0,a.F8)(L),b*M+P*(0,a.gn)(L))),c+=C?S+E*a.FA:S,C^y>=r^T>=r){var O=(0,i.r8)((0,i.jf)(g),(0,i.jf)(w));(0,i.Cx)(O);var I=(0,i.r8)(u,O);(0,i.Cx)(I);var D=(C^S>=0?-1:1)*(0,a.qR)(I[2]);(n>D||n===D&&(O[0]||O[1]))&&(f+=C^S>=0?1:-1)}}return(c<-a.Ni||c=(a=(v+y)/2))?v=a:y=a,(c=r>=(o=(g+m)/2))?g=o:m=o,i=p,!(p=p[f=c<<1|u]))return i[f]=d,t;if(s=+t._x.call(null,p.data),l=+t._y.call(null,p.data),e===s&&r===l)return d.next=p,i?i[f]=d:t._root=d,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(u=e>=(a=(v+y)/2))?v=a:y=a,(c=r>=(o=(g+m)/2))?g=o:m=o}while((f=c<<1|u)==(h=(l>=o)<<1|s>=a));return i[h]=p,i[f]=d,t}function s(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function l(t){return t[0]}function u(t){return t[1]}function c(t,e,r){var n=new f(null==e?l:e,null==r?u:r,NaN,NaN,NaN,NaN);return null==t?n:n.addAll(t)}function f(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function h(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}r.r(e),r.d(e,{forceCenter:function(){return n},forceCollide:function(){return g},forceLink:function(){return b},forceManyBody:function(){return X},forceRadial:function(){return J},forceSimulation:function(){return Z},forceX:function(){return K},forceY:function(){return $}});var p=c.prototype=f.prototype;function d(t){return t.x+t.vx}function v(t){return t.y+t.vy}function g(t){var e,r,n=1,o=1;function s(){for(var t,i,s,u,f,h,p,g=e.length,y=0;yu+d||if+d||os.index){var v=u-l.x-l.vx,g=f-l.y-l.vy,y=v*v+g*g;yt.r&&(t.r=t[e].r)}function u(){if(e){var n,i,a=e.length;for(r=new Array(a),n=0;nf&&(f=n),ih&&(h=i));if(u>f||c>h)return this;for(this.cover(u,c).cover(f,h),r=0;rt||t>=i||n>e||e>=a;)switch(s=(ep||(a=u.y0)>d||(o=u.x1)=m)<<1|t>=y)&&(u=v[v.length-1],v[v.length-1]=v[v.length-1-c],v[v.length-1-c]=u)}else{var x=t-+this._x.call(null,g.data),b=e-+this._y.call(null,g.data),_=x*x+b*b;if(_=(s=(d+g)/2))?d=s:g=s,(c=o>=(l=(v+y)/2))?v=l:y=l,e=p,!(p=p[f=c<<1|u]))return this;if(!p.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(r=e,h=f)}for(;p.data!==t;)if(n=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,n?(i?n.next=i:delete n.next,this):e?(i?e[f]=i:delete e[f],(p=e[0]||e[1]||e[2]||e[3])&&p===(e[3]||e[2]||e[1]||e[0])&&!p.length&&(r?r[h]=p:this._root=p),this):(this._root=i,this)},p.removeAll=function(t){for(var e=0,r=t.length;e=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),o=-1,s=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var r,n,i=new Array(r),a=0;a=0&&e._call.call(null,t),e=e._next;--L}()}finally{L=0,function(){for(var t,e,r=M,n=1/0;r;)r._call?(n>r._time&&(n=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:M=e);S=t,H(n)}(),I=0}}function V(){var t=z.now(),e=t-O;e>1e3&&(D-=e,O=t)}function H(t){L||(C&&(C=clearTimeout(C)),t-I>24?(t<1/0&&(C=setTimeout(U,t-z.now()-D)),P&&(P=clearInterval(P))):(P||(O=z.now(),P=setInterval(V,1e3)),L=1,R(U)))}function q(t){return t.x}function G(t){return t.y}N.prototype=j.prototype={constructor:N,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?F():+r)+(null==e?0:+e),this._next||S===this||(S?S._next=this:M=this,S=this),this._call=t,this._time=r,H()},stop:function(){this._call&&(this._call=null,this._time=1/0,H())}};var Y=10,W=Math.PI*(3-Math.sqrt(5));function Z(t){var e,r=1,n=.001,i=1-Math.pow(n,1/300),a=0,o=.6,s=(0,y.Tj)(),l=j(c),u=E("tick","end");function c(){f(),u.call("tick",e),r1?(null==r?s.remove(t):s.set(t,p(r)),e):s.get(t)},find:function(e,r,n){var i,a,o,s,l,u=0,c=t.length;for(null==n?n=1/0:n*=n,u=0;u1?(u.on(t,r),e):u.on(t)}}}function X(){var t,e,r,n,o=i(-30),s=1,l=1/0,u=.81;function f(n){var i,a=t.length,o=c(t,q,G).visitAfter(p);for(r=n,i=0;i=l)){(t.data!==e||t.next)&&(0===f&&(d+=(f=a())*f),0===h&&(d+=(h=a())*h),d100},e.isDotSymbol=function(t){return"string"==typeof t?n.DOT_RE.test(t):t>200}},62658:function(t,e,r){"use strict";var n,i=r(42964),a=r(42424),o=r(4814),s=r(76252),l=r(59451),u=r(41365),c=r(96568),f=r(88833),h=r(72930).toStringTag,p=r(34412),d=Array.isArray,v=Object.defineProperty,g=Object.prototype.hasOwnProperty,y=Object.getPrototypeOf;t.exports=n=function(){var t,e=arguments[0];if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");return t=p&&a&&WeakMap!==n?a(new WeakMap,y(this)):this,i(e)&&(d(e)||(e=c(e))),v(t,"__weakMapData__",u("c","$weakMap$"+l())),e?(f(e,function(e){s(e),t.set(e[0],e[1])}),t):t},p&&(a&&a(n,WeakMap),n.prototype=Object.create(WeakMap.prototype,{constructor:u(n)})),Object.defineProperties(n.prototype,{delete:u(function(t){return!!g.call(o(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)}),get:u(function(t){if(g.call(o(t),this.__weakMapData__))return t[this.__weakMapData__]}),has:u(function(t){return g.call(o(t),this.__weakMapData__)}),set:u(function(t,e){return v(o(t),this.__weakMapData__,u("c",e)),this}),toString:u(function(){return"[object WeakMap]"})}),v(n.prototype,h,u("c","WeakMap"))},62731:function(t){"use strict";t.exports={min:"zmin",max:"zmax"}},62736:function(t,e,r){"use strict";var n=r(28209),i=r(79444).u,a=r(37565),o=r(24761),s=r(38532).rb,l=r(38532).ay,u=r(8357).extendFlat,c=r(30430).k,f=a({editType:"plot",arrayOk:!0,colorEditType:"plot"});t.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:o.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:c,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:u({},n.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:s({},{keys:["label","color","value","percent","text"]}),texttemplate:l({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:u({},f,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:u({},f,{}),outsidetextfont:u({},f,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:u({},f,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:i({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"},_deprecated:{title:{valType:"string",dflt:"",editType:"calc"},titlefont:u({},f,{}),titleposition:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"calc"}}}},62747:function(t,e,r){"use strict";function n(){return new i}function i(){this.reset()}r.d(e,{A:function(){return n}}),i.prototype={constructor:i,reset:function(){this.s=this.t=0},add:function(t){o(a,t,this.t),o(this,a.s,this.s),this.s?this.t+=a.t:this.s=a.t},valueOf:function(){return this.s}};var a=new i;function o(t,e,r){var n=t.s=e+r,i=n-e,a=n-i;t.t=e-a+(r-i)}},62804:function(t,e,r){"use strict";var n=r(15181);t.exports=function(t,e){var r=t._fullLayout,i=e.uid,a=r._splomScenes;a||(a=r._splomScenes={});var o={dirty:!0,selectBatch:[],unselectBatch:[]},s=a[e.uid];return s||((s=a[i]=n.extendFlat({},o,{matrix:!1,selectBatch:[],unselectBatch:[]})).draw=function(){s.matrix&&s.matrix.draw&&(s.selectBatch.length||s.unselectBatch.length?s.matrix.draw(s.unselectBatch,s.selectBatch):s.matrix.draw()),s.dirty=!1},s.destroy=function(){s.matrix&&s.matrix.destroy&&s.matrix.destroy(),s.matrixOptions=null,s.selectBatch=null,s.unselectBatch=null,s=null}),s.dirty||n.extendFlat(s,o),s}},62839:function(t,e,r){"use strict";var n=r(99555),i=r(49367),a=r(64866)(),o=r(94693),s=r(46169),l=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new s("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||l(e)!==e)throw new s("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,u=!0;if("length"in t&&o){var c=o(t,"length");c&&!c.configurable&&(n=!1),c&&!c.writable&&(u=!1)}return(n||u||!r)&&(a?i(t,"length",e,!0,!0):i(t,"length",e)),t}},62943:function(t,e,r){"use strict";var n=r(40413),i=r(15181),a=r(93003),o=r(7514).selectMode;function s(t,e){var r,s,l,u,c,f=t._fullLayout,h=f._size,p=e.trace,d=e.t,v=f._splomScenes[p.uid],g=v.matrixOptions,y=g.cdata,m=f._glcanvas.data()[0].regl,x=f.dragmode;if(0!==y.length){g.lower=p.showupperhalf,g.upper=p.showlowerhalf,g.diagonal=p.diagonal.visible;var b=p._visibleDims,_=y.length,w=v.viewOpts={};for(w.ranges=new Array(_),w.domains=new Array(_),c=0;c-1,P=!0;if(o(x)||p.selectedpoints||C){var O=p._length;if(p.selectedpoints){v.selectBatch=p.selectedpoints;var I=p.selectedpoints,D={};for(l=0;lh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa)if(Math.abs(h*u-c*f)>a&&o){var d=r-s,v=i-l,g=u*u+c*c,y=d*d+v*v,m=Math.sqrt(g),x=Math.sqrt(p),b=o*Math.tan((n-Math.acos((g+p-y)/(2*m*x)))/2),_=b/x,w=b/m;Math.abs(_-1)>a&&(this._+="L"+(t+_*f)+","+(e+_*h)),this._+="A"+o+","+o+",0,0,"+ +(h*d>f*v)+","+(this._x1=t+w*u)+","+(this._y1=e+w*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,r,s,l,u){t=+t,e=+e,u=!!u;var c=(r=+r)*Math.cos(s),f=r*Math.sin(s),h=t+c,p=e+f,d=1^u,v=u?s-l:l-s;if(r<0)throw new Error("negative radius: "+r);null===this._x1?this._+="M"+h+","+p:(Math.abs(this._x1-h)>a||Math.abs(this._y1-p)>a)&&(this._+="L"+h+","+p),r&&(v<0&&(v=v%i+i),v>o?this._+="A"+r+","+r+",0,1,"+d+","+(t-c)+","+(e-f)+"A"+r+","+r+",0,1,"+d+","+(this._x1=h)+","+(this._y1=p):v>a&&(this._+="A"+r+","+r+",0,"+ +(v>=n)+","+d+","+(this._x1=t+r*Math.cos(l))+","+(this._y1=e+r*Math.sin(l))))},rect:function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},toString:function(){return this._}};var u=l,c=Array.prototype.slice;function f(t){return function(){return t}}function h(t){return t[0]}function p(t){return t[1]}function d(t){return t.source}function v(t){return t.target}function g(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function y(){return function(t){var e=d,r=v,n=h,i=p,a=null;function o(){var o,s=c.call(arguments),l=e.apply(this,s),f=r.apply(this,s);if(a||(a=o=u()),t(a,+n.apply(this,(s[0]=l,s)),+i.apply(this,s),+n.apply(this,(s[0]=f,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(r=t,o):r},o.x=function(t){return arguments.length?(n="function"==typeof t?t:f(+t),o):n},o.y=function(t){return arguments.length?(i="function"==typeof t?t:f(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}(g)}},64015:function(t,e,r){var n=r(9915),i=r(18610),a=n.instance();function o(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}o.prototype=new n.baseCalendar,i(o.prototype,{name:"Chinese",jdEpoch:1721425.5,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(t,e){if("string"==typeof t){var r=t.match(l);return r?r[0]:""}var n=this._validateYear(t),i=t.month(),a=""+this.toChineseMonth(n,i);return e&&a.length<2&&(a="0"+a),this.isIntercalaryMonth(n,i)&&(a+="i"),a},monthNames:function(t){if("string"==typeof t){var e=t.match(u);return e?e[0]:""}var r=this._validateYear(t),n=t.month(),i=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"][this.toChineseMonth(r,n)-1];return this.isIntercalaryMonth(r,n)&&(i="闰"+i),i},monthNamesShort:function(t){if("string"==typeof t){var e=t.match(c);return e?e[0]:""}var r=this._validateYear(t),n=t.month(),i=["一","二","三","四","五","六","七","八","九","十","十一","十二"][this.toChineseMonth(r,n)-1];return this.isIntercalaryMonth(r,n)&&(i="闰"+i),i},parseMonth:function(t,e){t=this._validateYear(t);var r,n=parseInt(e);if(isNaN(n))"闰"===e[0]&&(r=!0,e=e.substring(1)),"月"===e[e.length-1]&&(e=e.substring(0,e.length-1)),n=1+["一","二","三","四","五","六","七","八","九","十","十一","十二"].indexOf(e);else{var i=e[e.length-1];r="i"===i||"I"===i}return this.toMonthIndex(t,n,r)},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(t,e){if(t.year&&(t=t.year()),"number"!=typeof t||t<1888||t>2111)throw e.replace(/\{0\}/,this.local.name);return t},toMonthIndex:function(t,e,r){var i=this.intercalaryMonth(t);if(r&&e!==i||e<1||e>12)throw n.local.invalidMonth.replace(/\{0\}/,this.local.name);return i?!r&&e<=i?e-1:e:e-1},toChineseMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);if(e<0||e>(r?12:11))throw n.local.invalidMonth.replace(/\{0\}/,this.local.name);return r?e>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leapYear:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(t,e,r){var i,o=this._validateYear(t,n.local.invalidyear),s=h[o-h[0]],l=s>>9&4095,u=s>>5&15,c=31&s;(i=a.newDate(l,u,c)).add(4-(i.dayOfWeek()||7),"d");var f=this.toJD(t,e,r)-i.toJD();return 1+Math.floor(f/7)},monthsInYear:function(t){return this.leapYear(t)?13:12},daysInMonth:function(t,e){t.year&&(e=t.month(),t=t.year()),t=this._validateYear(t);var r=f[t-f[0]];if(e>(r>>13?12:11))throw n.local.invalidMonth.replace(/\{0\}/,this.local.name);return r&1<<12-e?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,s,r,n.local.invalidDate);t=this._validateYear(i.year()),e=i.month(),r=i.day();var o=this.isIntercalaryMonth(t,e),s=this.toChineseMonth(t,e),l=function(t,e,r,n){var i,a,o;if("object"==typeof t)a=t,i=e||{};else{var s;if(!("number"==typeof t&&t>=1888&&t<=2111))throw new Error("Lunar year outside range 1888-2111");if(!("number"==typeof e&&e>=1&&e<=12))throw new Error("Lunar month outside range 1 - 12");if(!("number"==typeof r&&r>=1&&r<=30))throw new Error("Lunar day outside range 1 - 30");"object"==typeof n?(s=!1,i=n):(s=!!n,i={}),a={year:t,month:e,day:r,isIntercalary:s}}o=a.day-1;var l,u=f[a.year-f[0]],c=u>>13;l=c&&(a.month>c||a.isIntercalary)?a.month:a.month-1;for(var p=0;p>9&4095,(d>>5&15)-1,(31&d)+o);return i.year=v.getFullYear(),i.month=1+v.getMonth(),i.day=v.getDate(),i}(t,s,r,o);return a.toJD(l.year,l.month,l.day)},fromJD:function(t){var e=a.fromJD(t),r=function(t,e,r){var n,i;if("object"==typeof t)n=t,i=e||{};else{if(!("number"==typeof t&&t>=1888&&t<=2111))throw new Error("Solar year outside range 1888-2111");if(!("number"==typeof e&&e>=1&&e<=12))throw new Error("Solar month outside range 1 - 12");if(!("number"==typeof r&&r>=1&&r<=31))throw new Error("Solar day outside range 1 - 31");n={year:t,month:e,day:r},i={}}var a=h[n.year-h[0]],o=n.year<<9|n.month<<5|n.day;i.year=o>=a?n.year:n.year-1,a=h[i.year-h[0]];var s,l=new Date(a>>9&4095,(a>>5&15)-1,31&a),u=new Date(n.year,n.month-1,n.day);s=Math.round((u-l)/864e5);var c,p=f[i.year-f[0]];for(c=0;c<13;c++){var d=p&1<<12-c?30:29;if(s>13;return!v||c1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0}),i=n.mod(r+1,e.length);return[e[r],e[i]]},findIntersectionXY:u,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),u=(-o+l)/(2*a),c=(-o-l)/(2*a);return[[u,e*u+i+n],[c,e*c+i+n]]},clampTiny:f,pathPolygon:function(t,e,r,n,i,a){return"M"+h(c(t,e,r,n),i,a).join("L")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function v(t){return new Uint16Array(p(2*t),0,t)}function g(t){return new Uint32Array(p(4*t),0,t)}function y(t){return new Int8Array(p(t),0,t)}function m(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function A(t){return l?new BigInt64Array(p(8*t),0,t):null}function k(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}e.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);c[r].push(t)}},e.freeUint8=e.freeUint16=e.freeUint32=e.freeBigUint64=e.freeInt8=e.freeInt16=e.freeInt32=e.freeBigInt64=e.freeFloat32=e.freeFloat=e.freeFloat64=e.freeDouble=e.freeUint8Clamped=e.freeDataView=function(t){h(t.buffer)},e.freeArrayBuffer=h,e.freeBuffer=function(t){f[n.log2(t.length)].push(t)},e.malloc=function(t,e){if(void 0===e||"arraybuffer"===e)return p(t);switch(e){case"uint8":return d(t);case"uint16":return v(t);case"uint32":return g(t);case"int8":return y(t);case"int16":return m(t);case"int32":return x(t);case"float":case"float32":return b(t);case"double":case"float64":return _(t);case"uint8_clamped":return w(t);case"bigint64":return A(t);case"biguint64":return T(t);case"buffer":return M(t);case"data":case"dataview":return k(t);default:return null}return null},e.mallocArrayBuffer=p,e.mallocUint8=d,e.mallocUint16=v,e.mallocUint32=g,e.mallocInt8=y,e.mallocInt16=m,e.mallocInt32=x,e.mallocFloat32=e.mallocFloat=b,e.mallocFloat64=e.mallocDouble=_,e.mallocUint8Clamped=w,e.mallocBigUint64=T,e.mallocBigInt64=A,e.mallocDataView=k,e.mallocBuffer=M,e.clearCache=function(){for(var t=0;t<32;++t)u.UINT8[t].length=0,u.UINT16[t].length=0,u.UINT32[t].length=0,u.INT8[t].length=0,u.INT16[t].length=0,u.INT32[t].length=0,u.FLOAT[t].length=0,u.DOUBLE[t].length=0,u.BIGUINT64[t].length=0,u.BIGINT64[t].length=0,u.UINT8C[t].length=0,c[t].length=0,f[t].length=0}},64815:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(22447),i=6378137;function a(t){var e=0;if(t&&t.length>0){e+=Math.abs(o(t[0]));for(var r=1;r2){for(l=0;lt?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}t.exports=function(t){var e,r,a,o,s,l,u,c,f,h=t[0].z,p=h.length,d=h[0].length,v=2===p||2===d;for(r=0;r>>1,h)d[0]=t.xbounds[0],d[2]=t.xbounds[1],d[1]=t.ybounds[0],d[3]=t.ybounds[1];else for(l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);if(p)r=p;else for(r=new Int32Array(e),l=0;ld[2]&&(d[2]=o),sd[3]&&(d[3]=s);this.idToIndex=r,this.pointcloudOptions.idToIndex=r,this.pointcloudOptions.positions=n;var v=i(t.marker.color),g=i(t.marker.border.color),y=t.opacity*t.marker.opacity;v[3]*=y,this.pointcloudOptions.color=v;var m=t.marker.blend;null===m&&(m=u.length<100||c.length<100),this.pointcloudOptions.blend=m,g[3]*=y,this.pointcloudOptions.borderColor=g;var x=t.marker.sizemin,b=Math.max(t.marker.sizemax,t.marker.sizemin);this.pointcloudOptions.sizeMin=x,this.pointcloudOptions.sizeMax=b,this.pointcloudOptions.areaRatio=t.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var _=this.scene.xaxis,w=this.scene.yaxis,T=b/2||.5;t._extremes[_._id]=a(_,[d[0],d[2]],{ppad:T}),t._extremes[w._id]=a(w,[d[1],d[3]],{ppad:T})},l.dispose=function(){this.pointcloud.dispose()},t.exports=function(t,e){var r=new s(t,e.uid);return r.update(e),r}},65255:function(t,e,r){"use strict";var n=r(16534),i=r(88191),a=r(29076),o=r(55217),s=r(22951),l=r(3071),u=r(15181),c=u.strRotate,f=u.strTranslate,h=r(5126);function p(t,e,r,s,l,u,c){var f="const-"+l+"-lines",h=r.selectAll("."+f).data(u);h.enter().append("path").classed(f,!0).style("vector-effect",c?"none":"non-scaling-stroke"),h.each(function(r){var s=r,l=s.x,u=s.y,c=a([],l,t.c2p),f=a([],u,e.c2p),h="M"+o(c,f,s.smoothing);n.select(this).attr("d",h).style("stroke-width",s.width).style("stroke",s.color).style("stroke-dasharray",i.dashStyle(s.dash,s.width)).style("fill","none")}),h.exit().remove()}function d(t,e,r,a,o,u,h,p){var d=u.selectAll("text."+p).data(h);d.enter().append("text").classed(p,!0);var v=0,g={};return d.each(function(o,u){var h;if("auto"===o.axis.tickangle)h=s(a,e,r,o.xy,o.dxy);else{var p=(o.axis.tickangle+180)*Math.PI/180;h=s(a,e,r,o.xy,[Math.cos(p),Math.sin(p)])}u||(g={angle:h.angle,flip:h.flip});var d=(o.endAnchor?-1:1)*h.flip,y=n.select(this).attr({"text-anchor":d>0?"start":"end","data-notex":1}).call(i.font,o.font).text(o.text).call(l.convertToTspans,t),m=i.bBox(this);y.attr("transform",f(h.p[0],h.p[1])+c(h.angle)+f(o.axis.labelpadding*d,.3*m.height)),v=Math.max(v,m.width+o.axis.labelpadding)}),d.exit().remove(),g.maxExtent=v,g}t.exports=function(t,e,r,i){var l=t._context.staticPlot,c=e.xaxis,f=e.yaxis,h=t._fullLayout._clips;u.makeTraceGroups(i,r,"trace").each(function(e){var r=n.select(this),i=e[0],v=i.trace,g=v.aaxis,m=v.baxis,x=u.ensureSingle(r,"g","minorlayer"),b=u.ensureSingle(r,"g","majorlayer"),_=u.ensureSingle(r,"g","boundarylayer"),w=u.ensureSingle(r,"g","labellayer");r.style("opacity",v.opacity),p(c,f,b,0,"a",g._gridlines,!0),p(c,f,b,0,"b",m._gridlines,!0),p(c,f,x,0,"a",g._minorgridlines,!0),p(c,f,x,0,"b",m._minorgridlines,!0),p(c,f,_,0,"a-boundary",g._boundarylines,l),p(c,f,_,0,"b-boundary",m._boundarylines,l);var T=d(t,c,f,v,0,w,g._labels,"a-label"),A=d(t,c,f,v,0,w,m._labels,"b-label");!function(t,e,r,n,i,a,o,l){var c,f,h,p,d=u.aggNums(Math.min,null,r.a),v=u.aggNums(Math.max,null,r.a),g=u.aggNums(Math.min,null,r.b),m=u.aggNums(Math.max,null,r.b);c=.5*(d+v),f=g,h=r.ab2xy(c,f,!0),p=r.dxyda_rough(c,f),void 0===o.angle&&u.extendFlat(o,s(r,i,a,h,r.dxydb_rough(c,f))),y(t,e,r,0,h,p,r.aaxis,i,a,o,"a-title"),c=d,f=.5*(g+m),h=r.ab2xy(c,f,!0),p=r.dxydb_rough(c,f),void 0===l.angle&&u.extendFlat(l,s(r,i,a,h,r.dxyda_rough(c,f))),y(t,e,r,0,h,p,r.baxis,i,a,l,"b-title")}(t,w,v,0,c,f,T,A),function(t,e,r,n,i){var s,l,c,f,h=r.select("#"+t._clipPathId);h.size()||(h=r.append("clipPath").classed("carpetclip",!0));var p=u.ensureSingle(h,"path","carpetboundary"),d=e.clipsegments,v=[];for(f=0;f90&&m<270,b=n.select(this);b.text(h.title.text).call(l.convertToTspans,t),x&&(_=(-l.lineCount(b)+g)*v*a-_),b.attr("transform",f(e.p[0],e.p[1])+c(e.angle)+f(0,_)).attr("text-anchor","middle").call(i.font,h.title.font)}),b.exit().remove()}},65409:function(t,e,r){"use strict";var n=r(26446),i=r(15181),a=r(93441),o=r(69562),s=r(15181).fillText,l=r(11881),u={increasing:l.INCREASING.SYMBOL,decreasing:l.DECREASING.SYMBOL};function c(t,e,r,n){var i,s,l=t.cd,u=t.xa,c=l[0].trace,f=l[0].t,h=c.type,p="ohlc"===h?"l":"min",d="ohlc"===h?"h":"max",v=f.bPos||0,g=f.bdPos||f.tickLen,y=f.wHover,m=Math.min(1,g/Math.abs(u.r2c(u.range[1])-u.r2c(u.range[0])));function x(t){var r=function(t){return t.pos+v-e}(t);return a.inbox(r-y,r+y,i)}function b(t){var e=t[p],n=t[d];return e===n||a.inbox(e-r,n-r,i)}function _(t){return(x(t)+b(t))/2}i=t.maxHoverDistance-m,s=t.maxSpikeDistance-m;var w=a.getDistanceFunction(n,x,b,_);if(a.getClosest(l,w,t),!1===t.index)return null;var T=l[t.index];if(T.empty)return null;var A=c[T.dir],k=A.line.color;return o.opacity(k)&&A.line.width?t.color=k:t.color=A.fillcolor,t.x0=u.c2p(T.pos+v-g,!0),t.x1=u.c2p(T.pos+v+g,!0),t.xLabelVal=void 0!==T.orig_p?T.orig_p:T.pos,t.spikeDistance=_(T)*s/i,t.xSpike=u.c2p(T.pos,!0),t}function f(t,e,r,a){var o=t.cd,s=t.ya,l=o[0].trace,u=o[0].t,f=[],h=c(t,e,r,a);if(!h)return[];var p=o[h.index].hi||l.hoverinfo,d=p.split("+");if("all"!==p&&-1===d.indexOf("y"))return[];for(var v=["high","open","close","low"],g={},y=0;y"+u.labels[x]+n.hoverLabelText(s,b,l.yhoverformat):((m=i.extendFlat({},h)).y0=m.y1=_,m.yLabelVal=b,m.yLabel=u.labels[x]+n.hoverLabelText(s,b,l.yhoverformat),m.name="",f.push(m),g[b]=m)}return f}function h(t,e,r,i){var a=t.cd,o=t.ya,l=a[0].trace,f=a[0].t,h=c(t,e,r,i);if(!h)return[];var p=a[h.index],d=h.index=p.i,v=p.dir;function g(t){return f.labels[t]+n.hoverLabelText(o,l[t][d],l.yhoverformat)}var y=p.hi||l.hoverinfo,m=y.split("+"),x="all"===y,b=x||-1!==m.indexOf("y"),_=x||-1!==m.indexOf("text"),w=b?[g("open"),g("high"),g("low"),g("close")+" "+u[v]]:[];return _&&s(p,l,w),h.extraText=w.join("
    "),h.y0=h.y1=o.c2p(p.yc,!0),[h]}t.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?f(t,e,r,n):h(t,e,r,n)},hoverSplit:f,hoverOnPoints:h}},65479:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=r(88191),o=r(69562),s=r(60432),l=/"/g,u="TOBESTRIPPED",c=new RegExp('("'+u+")|("+u+'")',"g");t.exports=function(t,e,r){var f,h=t._fullLayout,p=h._paper,d=h._toppaper,v=h.width,g=h.height;p.insert("rect",":first-child").call(a.setRect,0,0,v,g).call(o.fill,h.paper_bgcolor);var y=h._basePlotModules||[];for(f=0;f")?"":e.html(t).text()});return e.remove(),r}(w)).replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")).replace(c,"'"),i.isIE()&&(w=(w=(w=w.replace(/"/gi,"'")).replace(/(\('#)([^']*)('\))/gi,'("#$2")')).replace(/(\\')/gi,'"')),w}},65552:function(t){"use strict";t.exports={segmentRE:/[MLHVQCTSZ][^MLHVQCTSZ]*/g,paramRE:/[^\s,]+/g,paramIsX:{M:{0:!0,drawn:0},L:{0:!0,drawn:0},H:{0:!0,drawn:0},V:{},Q:{0:!0,2:!0,drawn:2},C:{0:!0,2:!0,4:!0,drawn:4},T:{0:!0,drawn:0},S:{0:!0,2:!0,drawn:2},Z:{}},paramIsY:{M:{1:!0,drawn:1},L:{1:!0,drawn:1},H:{},V:{0:!0,drawn:0},Q:{1:!0,3:!0,drawn:3},C:{1:!0,3:!0,5:!0,drawn:5},T:{1:!0,drawn:1},S:{1:!0,3:!0,drawn:5},Z:{}},numParams:{M:2,L:2,H:1,V:1,Q:4,C:6,T:2,S:4,Z:0}}},65738:function(t,e,r){"use strict";t.exports=r(71233)},65743:function(t,e,r){"use strict";t.exports=r(7544)},65921:function(t,e,r){"use strict";var n=r(14083).convert,i=r(14083).convertOnSelect,a=r(14617).traceLayerPrefix;function o(t,e){this.type="choroplethmapbox",this.subplot=t,this.uid=e,this.sourceId="source-"+e,this.layerList=[["fill",a+e+"-fill"],["line",a+e+"-line"]],this.below=null}var s=o.prototype;s.update=function(t){this._update(n(t)),t[0].trace._glTrace=this},s.updateOnSelect=function(t){this._update(i(t))},s._update=function(t){var e=this.subplot,r=this.layerList,n=e.belowLookup["trace-"+this.uid];e.map.getSource(this.sourceId).setData(t.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(t,n),this.below=n);for(var i=0;i=0;r--)t.removeLayer(e[r][1])},s.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},t.exports=function(t,e){var r=e[0].trace,i=new o(t,r.uid),a=i.sourceId,s=n(e),l=i.below=t.belowLookup["trace-"+r.uid];return t.map.addSource(a,{type:"geojson",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}},65941:function(t){"use strict";t.exports=function(){}},65953:function(t,e,r){"use strict";var n=r(26446);t.exports=function(t,e,r){var i={},a=r[e.geo]._subplot.mockAxis,o=t.lonlat;return i.lonLabel=n.tickText(a,a.c2l(o[0]),!0).text,i.latLabel=n.tickText(a,a.c2l(o[1]),!0).text,i}},66031:function(t){t.exports=function(t,e,r,n){var i=t[0],a=t[1],o=!1;void 0===r&&(r=0),void 0===n&&(n=e.length);for(var s=n-r,l=0,u=s-1;la!=p>a&&i<(h-c)*(a-f)/(p-f)+c&&(o=!o)}return o}},66072:function(t,e,r){"use strict";t.exports=r(32679)},66335:function(t,e,r){"use strict";var n=r(15181);t.exports=function(t,e){for(var r=0;rh)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,d.prototype),e}function d(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return y(t)}return v(t,e,r)}function v(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!d.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|_(t,e),n=p(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(et(t,Uint8Array)){var e=new Uint8Array(t);return x(e.buffer,e.byteOffset,e.byteLength)}return m(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(t));if(et(t,ArrayBuffer)||t&&et(t.buffer,ArrayBuffer))return x(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(et(t,SharedArrayBuffer)||t&&et(t.buffer,SharedArrayBuffer)))return x(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return d.from(n,e,r);var i=function(t){if(d.isBuffer(t)){var e=0|b(t.length),r=p(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||rt(t.length)?p(0):m(t):"Buffer"===t.type&&Array.isArray(t.data)?m(t.data):void 0}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return d.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(t))}function g(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function y(t){return g(t),p(t<0?0:0|b(t))}function m(t){for(var e=t.length<0?0:0|b(t.length),r=p(e),n=0;n=h)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+h.toString(16)+" bytes");return 0|t}function _(t,e){if(d.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||et(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+l(t));var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return $(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Q(t).length;default:if(i)return n?-1:$(t).length;e=(""+e).toLowerCase(),i=!0}}function w(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 R(this,e,r);case"utf8":case"utf-8":return O(this,e,r);case"ascii":return D(this,e,r);case"latin1":case"binary":return z(this,e,r);case"base64":return P(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function T(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function A(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),rt(r=+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=d.from(e,n)),d.isBuffer(e))return 0===e.length?-1:k(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):k(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function k(t,e,r,n,i){var a,o=1,s=t.length,l=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;o=2,s/=2,l/=2,r/=2}function u(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var c=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a,o=e.length;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function P(t,e,r){return 0===e&&r===t.length?u.fromByteArray(t):u.fromByteArray(t.slice(e,r))}function O(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:a>223?3:a>191?2:1;if(i+s<=r){var l=void 0,u=void 0,c=void 0,f=void 0;switch(s){case 1:a<128&&(o=a);break;case 2:128==(192&(l=t[i+1]))&&(f=(31&a)<<6|63&l)>127&&(o=f);break;case 3:l=t[i+1],u=t[i+2],128==(192&l)&&128==(192&u)&&(f=(15&a)<<12|(63&l)<<6|63&u)>2047&&(f<55296||f>57343)&&(o=f);break;case 4:l=t[i+1],u=t[i+2],c=t[i+3],128==(192&l)&&128==(192&u)&&128==(192&c)&&(f=(15&a)<<18|(63&l)<<12|(63&u)<<6|63&c)>65535&&f<1114112&&(o=f)}}null===o?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=s}return function(t){var e=t.length;if(e<=I)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn.length?(d.isBuffer(a)||(a=d.from(a)),a.copy(n,i)):Uint8Array.prototype.set.call(n,a,i);else{if(!d.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(n,i)}i+=a.length}return n},d.byteLength=_,d.prototype._isBuffer=!0,d.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;er&&(t+=" ... "),""},f&&(d.prototype[f]=d.prototype.inspect),d.prototype.compare=function(t,e,r,n,i){if(et(t,Uint8Array)&&(t=d.from(t,t.offset,t.byteLength)),!d.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+l(t));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 a=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(e>>>=0),s=Math.min(a,o),u=this.slice(n,i),c=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(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 a=!1;;)switch(n){case"hex":return M(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":case"latin1":case"binary":return E(this,t,e,r);case"base64":return L(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function D(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",a=e;ar)throw new RangeError("Trying to access beyond buffer length")}function N(t,e,r,n,i,a){if(!d.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,i){Z(e,n,i,t,r,7);var a=Number(e&BigInt(4294967295));t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a;var o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,r}function U(t,e,r,n,i){Z(e,n,i,t,r,7);var a=Number(e&BigInt(4294967295));t[r+7]=a,a>>=8,t[r+6]=a,a>>=8,t[r+5]=a,a>>=8,t[r+4]=a;var o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=o,o>>=8,t[r+2]=o,o>>=8,t[r+1]=o,o>>=8,t[r]=o,r+8}function V(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function H(t,e,r,n,i){return e=+e,r>>>=0,i||V(t,0,r,4),c.write(t,e,r,n,23,4),r+4}function q(t,e,r,n,i){return e=+e,r>>>=0,i||V(t,0,r,8),c.write(t,e,r,n,52,8),r+8}d.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||B(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||B(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},d.prototype.readUint8=d.prototype.readUInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),this[t]},d.prototype.readUint16LE=d.prototype.readUInt16LE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]|this[t+1]<<8},d.prototype.readUint16BE=d.prototype.readUInt16BE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]<<8|this[t+1]},d.prototype.readUint32LE=d.prototype.readUInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},d.prototype.readUint32BE=d.prototype.readUInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},d.prototype.readBigUInt64LE=it(function(t){X(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||J(t,this.length-8);var n=e+this[++t]*Math.pow(2,8)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,24),i=this[++t]+this[++t]*Math.pow(2,8)+this[++t]*Math.pow(2,16)+r*Math.pow(2,24);return BigInt(n)+(BigInt(i)<>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||J(t,this.length-8);var n=e*Math.pow(2,24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+this[++t],i=this[++t]*Math.pow(2,24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+r;return(BigInt(n)<>>=0,e>>>=0,r||B(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},d.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||B(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},d.prototype.readInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},d.prototype.readInt16LE=function(t,e){t>>>=0,e||B(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt16BE=function(t,e){t>>>=0,e||B(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},d.prototype.readInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},d.prototype.readBigInt64LE=it(function(t){X(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||J(t,this.length-8);var n=this[t+4]+this[t+5]*Math.pow(2,8)+this[t+6]*Math.pow(2,16)+(r<<24);return(BigInt(n)<>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||J(t,this.length-8);var n=(e<<24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+this[++t];return(BigInt(n)<>>=0,e||B(t,4,this.length),c.read(this,t,!0,23,4)},d.prototype.readFloatBE=function(t,e){return t>>>=0,e||B(t,4,this.length),c.read(this,t,!1,23,4)},d.prototype.readDoubleLE=function(t,e){return t>>>=0,e||B(t,8,this.length),c.read(this,t,!0,52,8)},d.prototype.readDoubleBE=function(t,e){return t>>>=0,e||B(t,8,this.length),c.read(this,t,!1,52,8)},d.prototype.writeUintLE=d.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||N(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n||N(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},d.prototype.writeUint8=d.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,1,255,0),this[e]=255&t,e+1},d.prototype.writeUint16LE=d.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},d.prototype.writeUint16BE=d.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},d.prototype.writeUint32LE=d.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},d.prototype.writeUint32BE=d.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},d.prototype.writeBigUInt64LE=it(function(t){return j(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))}),d.prototype.writeBigUInt64BE=it(function(t){return U(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))}),d.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>>=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o|0)-s&255;return e+r},d.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},d.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},d.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},d.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},d.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||N(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},d.prototype.writeBigInt64LE=it(function(t){return j(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),d.prototype.writeBigInt64BE=it(function(t){return U(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),d.prototype.writeFloatLE=function(t,e,r){return H(this,t,e,!0,r)},d.prototype.writeFloatBE=function(t,e,r){return H(this,t,e,!1,r)},d.prototype.writeDoubleLE=function(t,e,r){return q(this,t,e,!0,r)},d.prototype.writeDoubleBE=function(t,e,r){return q(this,t,e,!1,r)},d.prototype.copy=function(t,e,r,n){if(!d.isBuffer(t))throw new TypeError("argument should be a Buffer");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("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(a=e;a=n+4;r-=3)e="_".concat(t.slice(r-3,r)).concat(e);return"".concat(t.slice(0,r)).concat(e)}function Z(t,e,r,n,i,a){if(t>r||t3?0===e||e===BigInt(0)?">= 0".concat(s," and < 2").concat(s," ** ").concat(8*(a+1)).concat(s):">= -(2".concat(s," ** ").concat(8*(a+1)-1).concat(s,") and < 2 ** ")+"".concat(8*(a+1)-1).concat(s):">= ".concat(e).concat(s," and <= ").concat(r).concat(s),new G.ERR_OUT_OF_RANGE("value",o,t)}!function(t,e,r){X(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||J(e,t.length-(r+1))}(n,i,a)}function X(t,e){if("number"!=typeof t)throw new G.ERR_INVALID_ARG_TYPE(e,"number",t)}function J(t,e,r){if(Math.floor(t)!==t)throw X(t,r),new G.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new G.ERR_BUFFER_OUT_OF_BOUNDS;throw new G.ERR_OUT_OF_RANGE(r||"offset",">= ".concat(r?1:0," and <= ").concat(e),t)}Y("ERR_BUFFER_OUT_OF_BOUNDS",function(t){return t?"".concat(t," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"},RangeError),Y("ERR_INVALID_ARG_TYPE",function(t,e){return'The "'.concat(t,'" argument must be of type number. Received type ').concat(l(e))},TypeError),Y("ERR_OUT_OF_RANGE",function(t,e,r){var n='The value of "'.concat(t,'" is out of range.'),i=r;return Number.isInteger(r)&&Math.abs(r)>Math.pow(2,32)?i=W(String(r)):"bigint"==typeof r&&(i=String(r),(r>Math.pow(BigInt(2),BigInt(32))||r<-Math.pow(BigInt(2),BigInt(32)))&&(i=W(i)),i+="n"),n+" It must be ".concat(e,". Received ").concat(i)},RangeError);var K=/[^+/0-9A-Za-z-_]/g;function $(t,e){var r;e=e||1/0;for(var n=t.length,i=null,a=[],o=0;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.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;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function Q(t){return u.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(K,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function tt(t,e,r,n){var i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function et(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function rt(t){return t!=t}var nt=function(){for(var t="0123456789abcdef",e=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)e[n+i]=t[r]+t[i];return e}();function it(t){return"undefined"==typeof BigInt?at:t}function at(){throw new Error("BigInt not supported")}},66571:function(t,e,r){"use strict";var n=r(15181),i=r(46982),a=r(31164),o=r(6680),s=r(28418),l=r(72639),u=r(63457),c=r(93234),f=r(52948),h=r(4868),p=r(68478),d=r(54563),v=r(46190),g=r(15181).coercePattern;t.exports=function(t,e,r,y){function m(r,i){return n.coerce(t,e,a,r,i)}var x=l(t,e,y,m);if(x||(e.visible=!1),e.visible){u(t,e,y,m),m("xhoverformat"),m("yhoverformat");var b=c(t,e,y,m);"group"===y.scattermode&&void 0===e.orientation&&m("orientation","v");var _=!b&&x=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.hebrew=a},67914:function(t,e,r){"use strict";var n=r(15181),i=r(73553).handleRThetaDefaults,a=r(88156),o=r(29245);t.exports=function(t,e,r,s){function l(r,i){return n.coerce(t,e,o,r,i)}i(t,e,s,l)?(l("thetaunit"),l("base"),l("offset"),l("width"),l("text"),l("hovertext"),l("hovertemplate"),a(t,e,l,r,s),n.coerceSelectionMarkerOpacity(e,l)):e.visible=!1}},68047:function(t){"use strict";t.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},68231:function(t,e,r){"use strict";var n=r(15181),i=r(90778).counter,a=r(79444).u,o=r(29278).idRegex,s=r(92444),l={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[i("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[o.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[o.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:a({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function u(t,e,r){var n=e[r+"axes"],i=Object.keys((t._splomAxes||{})[r]||{});return Array.isArray(n)?n:i.length?i:void 0}function c(t,e,r,n,i,a){var o=e(t+"gap",r),s=e("domain."+t);e(t+"side",n);for(var l=new Array(i),u=s[0],c=(s[1]-u)/(i-o),f=c*(1-o),h=0;h1){h||p||d||"independent"===A("pattern")&&(h=!0),g._hasSubplotGrid=h;var x,b,_="top to bottom"===A("roworder"),w=h?.2:.1,T=h?.3:.1;v&&e._splomGridDflt&&(x=e._splomGridDflt.xside,b=e._splomGridDflt.yside),g._domains={x:c("x",A,w,x,m),y:c("y",A,T,b,y,_)}}else delete e.grid}function A(t,e){return n.coerce(r,g,l,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,l,c,h=t.grid||{},p=e._subplots,d=r._hasSubplotGrid,v=r.rows,g=r.columns,y="independent"===r.pattern,m=r._axisMap={};if(d){var x=h.subplots||[];l=r.subplots=new Array(v);var b=1;for(n=0;nt.lo&&(x.so=!0)}return a});h.enter().append("path").classed("point",!0),h.exit().remove(),h.call(a.translatePoints,o,s)}function l(t,e,r,a){var o,s,l=e.val,u=e.pos,c=!!u.rangebreaks,f=a.bPos,h=a.bPosPxOffset||0,p=r.boxmean||(r.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll("path.mean").data("box"===r.type&&r.boxmean||"violin"===r.type&&r.box.visible&&r.meanline.visible?i.identity:[]);d.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),d.exit().remove(),d.each(function(t){var e=u.c2l(t.pos+f,!0),i=u.l2p(e-o)+h,a=u.l2p(e+s)+h,d=c?(i+a)/2:u.l2p(e)+h,v=l.c2p(t.mean,!0),g=l.c2p(t.mean-t.sd,!0),y=l.c2p(t.mean+t.sd,!0);"h"===r.orientation?n.select(this).attr("d","M"+v+","+i+"V"+a+("sd"===p?"m0,0L"+g+","+d+"L"+v+","+i+"L"+y+","+d+"Z":"")):n.select(this).attr("d","M"+i+","+v+"H"+a+("sd"===p?"m0,0L"+d+","+g+"L"+i+","+v+"L"+d+","+y+"Z":""))})}t.exports={plot:function(t,e,r,a){var u=t._context.staticPlot,c=e.xaxis,f=e.yaxis;i.makeTraceGroups(a,r,"trace boxes").each(function(t){var e,r,i=n.select(this),a=t[0],h=a.t,p=a.trace;h.wdPos=h.bdPos*p.whiskerwidth,!0!==p.visible||h.empty?i.remove():("h"===p.orientation?(e=f,r=c):(e=c,r=f),o(i,{pos:e,val:r},p,h,u),s(i,{x:c,y:f},p,h),l(i,{pos:e,val:r},p,h))})},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},68397:function(t,e,r){"use strict";var n=r(23786),i=r(6378),a=r(61085),o=r(38598);function s(t){return t.call.bind(t)}var l="undefined"!=typeof BigInt,u="undefined"!=typeof Symbol,c=s(Object.prototype.toString),f=s(Number.prototype.valueOf),h=s(String.prototype.valueOf),p=s(Boolean.prototype.valueOf);if(l)var d=s(BigInt.prototype.valueOf);if(u)var v=s(Symbol.prototype.valueOf);function g(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function y(t){return"[object Map]"===c(t)}function m(t){return"[object Set]"===c(t)}function x(t){return"[object WeakMap]"===c(t)}function b(t){return"[object WeakSet]"===c(t)}function _(t){return"[object ArrayBuffer]"===c(t)}function w(t){return"undefined"!=typeof ArrayBuffer&&(_.working?_(t):t instanceof ArrayBuffer)}function T(t){return"[object DataView]"===c(t)}function A(t){return"undefined"!=typeof DataView&&(T.working?T(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=i,e.isTypedArray=o,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):o(t)||A(t)},e.isUint8Array=function(t){return"Uint8Array"===a(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===a(t)},e.isUint16Array=function(t){return"Uint16Array"===a(t)},e.isUint32Array=function(t){return"Uint32Array"===a(t)},e.isInt8Array=function(t){return"Int8Array"===a(t)},e.isInt16Array=function(t){return"Int16Array"===a(t)},e.isInt32Array=function(t){return"Int32Array"===a(t)},e.isFloat32Array=function(t){return"Float32Array"===a(t)},e.isFloat64Array=function(t){return"Float64Array"===a(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===a(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===a(t)},y.working="undefined"!=typeof Map&&y(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(y.working?y(t):t instanceof Map)},m.working="undefined"!=typeof Set&&m(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(m.working?m(t):t instanceof Set)},x.working="undefined"!=typeof WeakMap&&x(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(x.working?x(t):t instanceof WeakMap)},b.working="undefined"!=typeof WeakSet&&b(new WeakSet),e.isWeakSet=function(t){return b(t)},_.working="undefined"!=typeof ArrayBuffer&&_(new ArrayBuffer),e.isArrayBuffer=w,T.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&T(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=A;var k="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function M(t){return"[object SharedArrayBuffer]"===c(t)}function S(t){return void 0!==k&&(void 0===M.working&&(M.working=M(new k)),M.working?M(t):t instanceof k)}function E(t){return g(t,f)}function L(t){return g(t,h)}function C(t){return g(t,p)}function P(t){return l&&g(t,d)}function O(t){return u&&g(t,v)}e.isSharedArrayBuffer=S,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=E,e.isStringObject=L,e.isBooleanObject=C,e.isBigIntObject=P,e.isSymbolObject=O,e.isBoxedPrimitive=function(t){return E(t)||L(t)||C(t)||P(t)||O(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(w(t)||S(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},68478:function(t){"use strict";t.exports=function(t,e,r){"spline"===r("line.shape")&&r("line.smoothing")}},68552:function(t,e,r){"use strict";var n=r(15181),i=r(25103),a=r(9381),o=r(93335);t.exports=function(t,e){var r;return n.isPlainObject(t)||(r=n.getGraphDiv(t)),(e=e||{}).format=e.format||"png",e.width=e.width||null,e.height=e.height||null,e.imageDataOnly=!0,new Promise(function(s,l){r&&r._snapshotInProgress&&l(new Error("Snapshotting already in progress.")),n.isIE()&&"svg"!==e.format&&l(new Error(o.MSG_IE_BAD_FORMAT)),r&&(r._snapshotInProgress=!0);var u=i(t,e),c=e.filename||t.fn||"newplot";c+="."+e.format.replace("-","."),u.then(function(t){return r&&(r._snapshotInProgress=!1),a(t,c,e.format)}).then(function(t){s(t)}).catch(function(t){r&&(r._snapshotInProgress=!1),l(t)})})}},68559:function(t,e,r){"use strict";var n=r(69562),i=r(79335),a=r(99012).axisHoverFormat,o=r(38532).rb,s=r(28209),l=r(8357).extendFlat,u=r(7458).overrideAll;function c(t){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:{valType:"boolean",dflt:!1},y:{valType:"boolean",dflt:!1},z:{valType:"boolean",dflt:!1}},color:{valType:"color",dflt:n.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:n.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var f=t.exports=u(l({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:o(),xhoverformat:a("x"),yhoverformat:a("y"),zhoverformat:a("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},i("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:c(),y:c(),z:c()},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},_deprecated:{zauto:l({},i.zauto,{}),zmin:l({},i.zmin,{}),zmax:l({},i.zmax,{})},hoverinfo:l({},s.hoverinfo),showlegend:l({},s.showlegend,{dflt:!1})}),"calc","nested");f.x.editType=f.y.editType=f.z.editType="calc+clearAxisTypes",f.transforms=void 0},68572:function(t){"use strict";t.exports={visible:{valType:"boolean",editType:"calc"},type:{valType:"enumerated",values:["percent","constant","sqrt","data"],editType:"calc"},symmetric:{valType:"boolean",editType:"calc"},array:{valType:"data_array",editType:"calc"},arrayminus:{valType:"data_array",editType:"calc"},value:{valType:"number",min:0,dflt:10,editType:"calc"},valueminus:{valType:"number",min:0,dflt:10,editType:"calc"},traceref:{valType:"integer",min:0,dflt:0,editType:"style"},tracerefminus:{valType:"integer",min:0,dflt:0,editType:"style"},copy_ystyle:{valType:"boolean",editType:"plot"},copy_zstyle:{valType:"boolean",editType:"style"},color:{valType:"color",editType:"style"},thickness:{valType:"number",min:0,dflt:2,editType:"style"},width:{valType:"number",min:0,editType:"plot"},editType:"calc",_deprecated:{opacity:{valType:"number",editType:"style"}}}},68649:function(t,e,r){"use strict";var n=r(26446),i=r(81878),a=r(15181).fillText;t.exports=function(t,e,r){var o,s,l,u,c=t.cd,f=c[0].trace,h=t.subplot,p=[e,r],d=[e+360,r];for(s=0;s")}}(t,f,o),[t]}},68661:function(t,e,r){"use strict";t.exports={attributes:r(70856),supplyDefaults:r(27071),calc:r(88472),plot:r(60154),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:r(72384),categories:["noOpacity"],meta:{}}},68731:function(t){"use strict";t.exports=i,t.exports.isMobile=i,t.exports.default=i;var e=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,r=/CrOS/,n=/android|ipad|playbook|silk/i;function i(t){t||(t={});var i=t.ua;if(i||"undefined"==typeof navigator||(i=navigator.userAgent),i&&i.headers&&"string"==typeof i.headers["user-agent"]&&(i=i.headers["user-agent"]),"string"!=typeof i)return!1;var a=e.test(i)&&!r.test(i)||!!t.tablet&&n.test(i);return!a&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==i.indexOf("Macintosh")&&-1!==i.indexOf("Safari")&&(a=!0),a}},68871:function(t,e,r){var n=r(9915),i=r(18610);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thalāthā’","Yawm al-Arba‘ā’","Yawm al-Khamīs","Yawm al-Jum‘a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return 355===this.daysInYear(e.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(t,e){for(var r=this._validate(t,e,this.minDay,n.local.invalidMonth).toJD()-24e5+.5,i=0,a=0;ar)return o[i]-o[i-1];i++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate),a=12*(i.year()-1)+i.month()-15292;return i.day()+o[a-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,n=0;ne);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),s=a+1,l=i-12*a,u=e-o[r-1]+1;return this.newDate(s,l,u)},isValid:function(t,e,r){var i=n.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(t=null!=t.year?t.year:t)>=1276&&t<=1500),i},_validate:function(t,e,r,i){var a=n.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\{0\}/,this.local.name);return a}}),n.calendars.ummalqura=a;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},68947:function(t,e,r){var n=r(9915),i=r(18610);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Julian",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return(t=e.year()<0?e.year()+1:e.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(2===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return t=i.year(),e=i.month(),r=i.day(),t<0&&t++,e<=2&&(t--,e+=12),Math.floor(365.25*(t+4716))+Math.floor(30.6001*(e+1))+r-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),n.calendars.julian=a},68983:function(t){t.exports=!0},69027:function(t){t.exports=function(t,e,r,n,i){var a=1/Math.tan(e/2),o=1/(n-i);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t}},69030:function(t,e,r){"use strict";r.d(e,{A:function(){return l}});var n=r(55270),i=r(29181),a=r(18901),o=r(62244),s=r(22208);function l(t,e,r,a){return function(l){var f,h,p,d=e(l),v=(0,n.A)(),g=e(v),y=!1,m={point:x,lineStart:_,lineEnd:w,polygonStart:function(){m.point=T,m.lineStart=A,m.lineEnd=k,h=[],f=[]},polygonEnd:function(){m.point=x,m.lineStart=_,m.lineEnd=w,h=(0,s.Am)(h);var t=(0,o.A)(f,a);h.length?(y||(l.polygonStart(),y=!0),(0,i.A)(h,c,t,r,l)):t&&(y||(l.polygonStart(),y=!0),l.lineStart(),r(null,null,1,l),l.lineEnd()),y&&(l.polygonEnd(),y=!1),h=f=null},sphere:function(){l.polygonStart(),l.lineStart(),r(null,null,1,l),l.lineEnd(),l.polygonEnd()}};function x(e,r){t(e,r)&&l.point(e,r)}function b(t,e){d.point(t,e)}function _(){m.point=b,d.lineStart()}function w(){m.point=x,d.lineEnd()}function T(t,e){p.push([t,e]),g.point(t,e)}function A(){g.lineStart(),p=[]}function k(){T(p[0][0],p[0][1]),g.lineEnd();var t,e,r,n,i=g.clean(),a=v.result(),o=a.length;if(p.pop(),f.push(p),p=null,o)if(1&i){if((e=(r=a[0]).length-1)>0){for(y||(l.polygonStart(),y=!0),l.lineStart(),t=0;t1&&2&i&&a.push(a.pop().concat(a.shift())),h.push(a.filter(u))}return m}}function u(t){return t.length>1}function c(t,e){return((t=t.x)[0]<0?t[1]-a.TW-a.Ni:a.TW-t[1])-((e=e.x)[0]<0?e[1]-a.TW-a.Ni:a.TW-e[1])}},69082:function(t){"use strict";t.exports=function(t,e,r,n,i){t.location=e.location,t.z=e.z;var a=n[i];return a.fIn&&a.fIn.properties&&(t.properties=a.fIn.properties),t.ct=a.ct,t}},69110:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=r(88191),o=r(3071),s=r(80783),l=r(76780).styleOne,u=r(93952),c=r(95304),f=r(96303),h=!0;t.exports=function(t,e,r,p,d){var v=d.barDifY,g=d.width,y=d.height,m=d.viewX,x=d.viewY,b=d.pathSlice,_=d.toMoveInsideSlice,w=d.strTransform,T=d.hasTransition,A=d.handleSlicesExit,k=d.makeUpdateSliceInterpolator,M=d.makeUpdateTextInterpolator,S={},E=t._context.staticPlot,L=t._fullLayout,C=e[0],P=C.trace,O=C.hierarchy,I=g/P._entryDepth,D=c.listPath(r.data,"id"),z=s(O.copy(),[g,y],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(z=z.filter(function(t){var e=D.indexOf(t.data.id);return-1!==e&&(t.x0=I*e,t.x1=I*(e+1),t.y0=v,t.y1=v+y,t.onPathbar=!0,!0)})).reverse(),(p=p.data(z,c.getPtId)).enter().append("g").classed("pathbar",!0),A(p,h,S,[g,y],b),p.order();var R=p;T&&(R=R.transition().each("end",function(){var e=n.select(this);c.setSliceCursor(e,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),R.each(function(s){s._x0=m(s.x0),s._x1=m(s.x1),s._y0=x(s.y0),s._y1=x(s.y1),s._hoverX=m(s.x1-Math.min(g,y)/2),s._hoverY=x(s.y1-y/2);var p=n.select(this),d=i.ensureSingle(p,"path","surface",function(t){t.style("pointer-events",E?"none":"all")});T?d.transition().attrTween("d",function(t){var e=k(t,h,S,[g,y]);return function(t){return b(e(t))}}):d.attr("d",b),p.call(f,r,t,e,{styleOne:l,eventDataKeys:u.eventDataKeys,transitionTime:u.CLICK_TRANSITION_TIME,transitionEasing:u.CLICK_TRANSITION_EASING}).call(c.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),d.call(l,s,P,t,{hovered:!1}),s._text=(c.getPtLabel(s)||"").split("
    ").join(" ")||"";var v=i.ensureSingle(p,"g","slicetext"),A=i.ensureSingle(v,"text","",function(t){t.attr("data-notex",1)}),C=i.ensureUniformFontSize(t,c.determineTextFont(P,s,L.font,{onPathbar:!0}));A.text(s._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(a.font,C).call(o.convertToTspans,t),s.textBB=a.bBox(A.node()),s.transform=_(s,{fontSize:C.size,onPathbar:!0}),s.transform.fontSize=C.size,T?A.transition().attrTween("transform",function(t){var e=M(t,h,S,[g,y]);return function(t){return w(e(t))}}):A.attr("transform",w(s))})}},69309:function(t,e,r){"use strict";var n=r(15181),i=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];t.exports=function(t,e,r,a){return t="left"===r?0:"center"===r?1:"right"===r?2:n.constrain(Math.floor(3*t),0,2),e="bottom"===a?0:"middle"===a?1:"top"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},69342:function(t){"use strict";t.exports=Object},69480:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=n+n,l=i+i,u=a+a,c=n*s,f=n*l,h=n*u,p=i*l,d=i*u,v=a*u,g=o*s,y=o*l,m=o*u;return t[0]=1-(p+v),t[1]=f+m,t[2]=h-y,t[3]=0,t[4]=f-m,t[5]=1-(c+v),t[6]=d+g,t[7]=0,t[8]=h+y,t[9]=d-g,t[10]=1-(c+p),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}},69508:function(t,e,r){"use strict";t.exports=r(89811)},69543:function(t,e,r){"use strict";var n=r(16534),i=r(5159),a=[];t.exports=function(t,e){if(-1===a.indexOf(t)){a.push(t);var r=1e3;i(e)?r=e:"long"===e&&(r=3e3);var o=n.select("body").selectAll(".plotly-notifier").data([0]);o.enter().append("div").classed("plotly-notifier",!0),o.selectAll(".notifier-note").data(a).enter().append("div").classed("notifier-note",!0).style("opacity",0).each(function(t){var i=n.select(this);i.append("button").classed("notifier-close",!0).html("×").on("click",function(){i.transition().call(s)});for(var a=i.append("p"),o=t.split(//g),l=0;l=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+", "+Math.round(255*n[1])+", "+Math.round(255*n[2]);return a?"rgba("+s+", "+n[3]+")":"rgb("+s+")"}o.tinyRGB=function(t){var e=t.toRgb();return"rgb("+Math.round(e.r)+", "+Math.round(e.g)+", "+Math.round(e.b)+")"},o.rgb=function(t){return o.tinyRGB(n(t))},o.opacity=function(t){return t?n(t).getAlpha():0},o.addOpacity=function(t,e){var r=n(t).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+e+")"},o.combine=function(t,e){var r=n(t).toRgb();if(1===r.a)return n(t).toRgbString();var i=n(e||u).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return n(o).toRgbString()},o.contrast=function(t,e,r){var i=n(t);return 1!==i.getAlpha()&&(i=n(o.combine(t,u))),(i.isDark()?e?i.lighten(e):u:r?i.darken(r):l).toString()},o.stroke=function(t,e){var r=n(e);t.style({stroke:o.tinyRGB(r),"stroke-opacity":r.getAlpha()})},o.fill=function(t,e){var r=n(e);t.style({fill:o.tinyRGB(r),"fill-opacity":r.getAlpha()})},o.clean=function(t){if(t&&"object"==typeof t){var e,r,n,i,s=Object.keys(t);for(e=0;e=2){var s,u,c="";if(2===o.length)for(s=0;s<2;s++)if(u=b(o[s])){c=g;break}var f=i("pattern",c);if(f===g)for(s=0;s<2;s++)(u=b(o[s]))&&(e.bounds[s]=o[s]=u-1);if(f)for(s=0;s<2;s++)switch(u=o[s],f){case g:if(!n(u))return void(e.enabled=!1);if((u=+u)!==Math.floor(u)||u<0||u>=7)return void(e.enabled=!1);e.bounds[s]=o[s]=u;break;case y:if(!n(u))return void(e.enabled=!1);if((u=+u)<0||u>24)return void(e.enabled=!1);e.bounds[s]=o[s]=u}if(!1===r.autorange){var h=r.range;if(h[0]h[1])return void(e.enabled=!1)}else if(o[0]>h[0]&&o[1]0&&(i=S(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))g.Ni}).map(l)).concat((0,F.y1)((0,g.mk)(a/p)*p,i,p).filter(function(t){return(0,g.tn)(t%v)>g.Ni}).map(u))}return m.lines=function(){return x().map(function(t){return{type:"LineString",coordinates:t}})},m.outline=function(){return{type:"Polygon",coordinates:[c(n).concat(f(o).slice(1),c(r).reverse().slice(1),f(s).reverse().slice(1))]}},m.extent=function(t){return arguments.length?m.extentMajor(t).extentMinor(t):m.extentMinor()},m.extentMajor=function(t){return arguments.length?(n=+t[0][0],r=+t[1][0],s=+t[0][1],o=+t[1][1],n>r&&(t=n,n=r,r=t),s>o&&(t=s,s=o,o=t),m.precision(y)):[[n,s],[r,o]]},m.extentMinor=function(r){return arguments.length?(e=+r[0][0],t=+r[1][0],a=+r[0][1],i=+r[1][1],e>t&&(r=e,e=t,t=r),a>i&&(r=a,a=i,i=r),m.precision(y)):[[e,a],[t,i]]},m.step=function(t){return arguments.length?m.stepMajor(t).stepMinor(t):m.stepMinor()},m.stepMajor=function(t){return arguments.length?(d=+t[0],v=+t[1],m):[d,v]},m.stepMinor=function(t){return arguments.length?(h=+t[0],p=+t[1],m):[h,p]},m.precision=function(h){return arguments.length?(y=+h,l=B(a,i,90),u=N(e,t,y),c=B(s,o,90),f=N(n,r,y),m):y},m.extentMajor([[-180,-90+g.Ni],[180,90-g.Ni]]).extentMinor([[-180,-80-g.Ni],[180,80+g.Ni]])}function U(){return j()()}var V,H,q,G,Y=r(9432),W=r(86705),Z=(0,v.A)(),X=(0,v.A)(),J={point:y.A,lineStart:y.A,lineEnd:y.A,polygonStart:function(){J.lineStart=K,J.lineEnd=tt},polygonEnd:function(){J.lineStart=J.lineEnd=J.point=y.A,Z.add((0,g.tn)(X)),X.reset()},result:function(){var t=Z/2;return Z.reset(),t}};function K(){J.point=$}function $(t,e){J.point=Q,V=q=t,H=G=e}function Q(t,e){X.add(G*t-q*e),q=t,G=e}function tt(){Q(V,H)}var et,rt,nt,it,at=J,ot=r(73342),st=0,lt=0,ut=0,ct=0,ft=0,ht=0,pt=0,dt=0,vt=0,gt={point:yt,lineStart:mt,lineEnd:_t,polygonStart:function(){gt.lineStart=wt,gt.lineEnd=Tt},polygonEnd:function(){gt.point=yt,gt.lineStart=mt,gt.lineEnd=_t},result:function(){var t=vt?[pt/vt,dt/vt]:ht?[ct/ht,ft/ht]:ut?[st/ut,lt/ut]:[NaN,NaN];return st=lt=ut=ct=ft=ht=pt=dt=vt=0,t}};function yt(t,e){st+=t,lt+=e,++ut}function mt(){gt.point=xt}function xt(t,e){gt.point=bt,yt(nt=t,it=e)}function bt(t,e){var r=t-nt,n=e-it,i=(0,g.RZ)(r*r+n*n);ct+=i*(nt+t)/2,ft+=i*(it+e)/2,ht+=i,yt(nt=t,it=e)}function _t(){gt.point=yt}function wt(){gt.point=At}function Tt(){kt(et,rt)}function At(t,e){gt.point=kt,yt(et=nt=t,rt=it=e)}function kt(t,e){var r=t-nt,n=e-it,i=(0,g.RZ)(r*r+n*n);ct+=i*(nt+t)/2,ft+=i*(it+e)/2,ht+=i,pt+=(i=it*t-nt*e)*(nt+t),dt+=i*(it+e),vt+=3*i,yt(nt=t,it=e)}var Mt=gt;function St(t){this._context=t}St.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,g.FA)}},result:y.A};var Et,Lt,Ct,Pt,Ot,It=(0,v.A)(),Dt={point:y.A,lineStart:function(){Dt.point=zt},lineEnd:function(){Et&&Rt(Lt,Ct),Dt.point=y.A},polygonStart:function(){Et=!0},polygonEnd:function(){Et=null},result:function(){var t=+It;return It.reset(),t}};function zt(t,e){Dt.point=Rt,Lt=Pt=t,Ct=Ot=e}function Rt(t,e){Pt-=t,Ot-=e,It.add((0,g.RZ)(Pt*Pt+Ot*Ot)),Pt=t,Ot=e}var Ft=Dt;function Bt(){this._string=[]}function Nt(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function jt(t,e){var r,n,i=4.5;function a(t){return t&&("function"==typeof i&&n.pointRadius(+i.apply(this,arguments)),(0,m.A)(t,r(n))),n.result()}return a.area=function(t){return(0,m.A)(t,r(at)),at.result()},a.measure=function(t){return(0,m.A)(t,r(Ft)),Ft.result()},a.bounds=function(t){return(0,m.A)(t,r(ot.A)),ot.A.result()},a.centroid=function(t){return(0,m.A)(t,r(Mt)),Mt.result()},a.projection=function(e){return arguments.length?(r=null==e?(t=null,W.A):(t=e).stream,a):t},a.context=function(t){return arguments.length?(n=null==t?(e=null,new Bt):new St(e=t),"function"!=typeof i&&n.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(n.pointRadius(+t),+t),a):i},a.projection(t).context(e)}Bt.prototype={_radius:4.5,_circle:Nt(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=Nt(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var Ut=r(76610);function Vt(t){var e=0,r=g.pi/3,n=(0,Ut.U)(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*g.F2,r=t[1]*g.F2):[e*g.uj,r*g.uj]},i}function Ht(t,e){var r=(0,g.F8)(t),n=(r+(0,g.F8)(e))/2;if((0,g.tn)(n)=.12&&i<.234&&n>=-.425&&n<-.214?s:i>=.166&&i<.234&&n>=-.214&&n<-.115?l:o).invert(t)},c.stream=function(r){return t&&e===r?t:(n=[o.stream(e=r),s.stream(r),l.stream(r)],i=n.length,t={point:function(t,e){for(var r=-1;++r0?e<-g.TW+g.Ni&&(e=-g.TW+g.Ni):e>g.TW-g.Ni&&(e=g.TW-g.Ni);var r=i/(0,g.n7)(te(e),n);return[r*(0,g.F8)(n*t),i-r*(0,g.gn)(n*t)]}return a.invert=function(t,e){var r=i-e,a=(0,g._S)(n)*(0,g.RZ)(t*t+r*r),o=(0,g.FP)(t,(0,g.tn)(r))*(0,g._S)(r);return r*n<0&&(o-=g.pi*(0,g._S)(t)*(0,g._S)(r)),[o/n,2*(0,g.rY)((0,g.n7)(i/a,1/n))-g.TW]},a}function re(){return Vt(ee).scale(109.5).parallels([30,30])}Kt.invert=function(t,e){return[t,2*(0,g.rY)((0,g.oN)(e))-g.TW]};var ne=r(77405);function ie(t,e){var r=(0,g.gn)(t),n=t===e?(0,g.F8)(t):(r-(0,g.gn)(e))/(e-t),i=r/n+t;if((0,g.tn)(n)2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)}xe.invert=(0,me.I)(function(t){return 2*(0,g.rY)(t)}),_e.invert=function(t,e){return[-e,2*(0,g.rY)((0,g.oN)(t))-g.TW]}},69943:function(t,e,r){"use strict";var n=r(16722),i=/[\n\r\u2028\u2029]/g;t.exports=function(t){var e=n(t);return null===e?"":(e.length>100&&(e=e.slice(0,99)+"…"),e=e.replace(i,function(t){switch(t){case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}))}},69982:function(t,e,r){"use strict";var n=r(15181),i=r(30137).EventEmitter,a=r(93335);t.exports=function(t){var e=t.emitter||new i,r=new Promise(function(i,o){var s=window.Image,l=t.svg,u=t.format||"png";if(n.isIE()&&"svg"!==u){var c=new Error(a.MSG_IE_BAD_FORMAT);return o(c),t.promise?r:e.emit("error",c)}var f,h,p=t.canvas,d=t.scale||1,v=t.width||300,g=t.height||150,y=d*v,m=d*g,x=p.getContext("2d",{willReadFrequently:!0}),b=new s;"svg"===u||n.isSafari()?h=a.encodeSVG(l):(f=a.createBlob(l,"svg"),h=a.createObjectURL(f)),p.width=y,p.height=m,b.onload=function(){var r;switch(f=null,a.revokeObjectURL(h),"svg"!==u&&x.drawImage(b,0,0,y,m),u){case"jpeg":r=p.toDataURL("image/jpeg");break;case"png":r=p.toDataURL("image/png");break;case"webp":r=p.toDataURL("image/webp");break;case"svg":r=h;break;default:var n="Image format is not jpeg, png, svg or webp.";if(o(new Error(n)),!t.promise)return e.emit("error",n)}i(r),t.promise||e.emit("success",r)},b.onerror=function(r){if(f=null,a.revokeObjectURL(h),o(r),!t.promise)return e.emit("error",r)},b.src=h});return t.promise?r:e}},70200:function(t,e,r){"use strict";var n=r(37070);e.name="pie",e.plot=function(t,r,i,a){n.plotBasePlot(e.name,t,r,i,a)},e.clean=function(t,r,i,a){n.cleanBasePlot(e.name,t,r,i,a)}},70212:function(t,e,r){"use strict";var n=r(15181),i=r(24181),a=r(32832),o=r(64579);t.exports=function(t,e,r,s){function l(r,i){return n.coerce(t,e,o,r,i)}i(t,e,l,s)?(l("text"),l("zsmooth"),a(t,e,s,l,{prefix:"",cLetter:"z"})):e.visible=!1}},70394:function(t,e,r){"use strict";var n=r(16534),i=r(15181);function a(t){return"_"+t+"Text_minsize"}t.exports={recordMinTextSize:function(t,e,r){if(r.uniformtext.mode){var n=a(t),i=r.uniformtext.minsize,o=e.scale*e.fontSize;e.hide=o0||n.inbox(r-o.y0,r-(o.y0+o.h*s.dy),0)>0)){var c,f=Math.floor((e-o.x0)/s.dx),h=Math.floor(Math.abs(r-o.y0)/s.dy);if(s._hasZ?c=o.z[h][f]:s._hasSource&&(c=s._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(f,h,1,1).data),c){var p,d=o.hi||s.hoverinfo;if(d){var v=d.split("+");-1!==v.indexOf("all")&&(v=["color"]),-1!==v.indexOf("color")&&(p=!0)}var g,y=a.colormodel[s.colormodel],m=y.colormodel||s.colormodel,x=m.length,b=s._scaler(c),_=y.suffix,w=[];(s.hovertemplate||p)&&(w.push("["+[b[0]+_[0],b[1]+_[1],b[2]+_[2]].join(", ")),4===x&&w.push(", "+b[3]+_[3]),w.push("]"),w=w.join(""),t.extraText=m.toUpperCase()+": "+w),Array.isArray(s.hovertext)&&Array.isArray(s.hovertext[h])?g=s.hovertext[h][f]:Array.isArray(s.text)&&Array.isArray(s.text[h])&&(g=s.text[h][f]);var T=u.c2p(o.y0+(h+.5)*s.dy),A=o.x0+(f+.5)*s.dx,k=o.y0+(h+.5)*s.dy,M="["+c.slice(0,s.colormodel.length).join(", ")+"]";return[i.extendFlat(t,{index:[h,f],x0:l.c2p(o.x0+f*s.dx),x1:l.c2p(o.x0+(f+1)*s.dx),y0:T,y1:T,color:b,xVal:A,xLabelVal:A,yVal:k,yLabelVal:k,zLabelVal:M,text:g,hovertemplateLabels:{zLabel:M,colorLabel:w,"color[0]Label":b[0]+_[0],"color[1]Label":b[1]+_[1],"color[2]Label":b[2]+_[2],"color[3]Label":b[3]+_[3]}})]}}}},70919:function(t,e,r){"use strict";var n=r(27050).setGroupPositions;t.exports=function(t,e){var r,i,a=t._fullLayout,o=t._fullData,s=t.calcdata,l=e.xaxis,u=e.yaxis,c=[],f=[],h=[];for(i=0;ig.Ni?o=90:m<-g.Ni&&(i=-90),h[0]=n,h[1]=a},sphere:function(){n=-(a=180),i=-(o=90)}};function b(t,e){f.push(h=[n=t,a=t]),eo&&(o=e)}function _(t,e){var r=(0,v.jf)([t*g.F2,e*g.F2]);if(c){var l=(0,v.r8)(c,r),u=[l[1],-l[0],0],p=(0,v.r8)(u,l);(0,v.Cx)(p),p=(0,v.EV)(p);var d,y=t-s,m=y>0?1:-1,x=p[0]*g.uj*m,b=(0,g.tn)(y)>180;b^(m*so&&(o=d):b^(m*s<(x=(x+360)%360-180)&&xo&&(o=e)),b?tS(n,a)&&(a=t):S(t,a)>S(n,a)&&(n=t):a>=n?(ta&&(a=t)):t>s?S(n,t)>S(n,a)&&(a=t):S(t,a)>S(n,a)&&(n=t)}else f.push(h=[n=t,a=t]);eo&&(o=e),c=r,s=t}function w(){x.point=_}function T(){h[0]=n,h[1]=a,x.point=b,c=null}function A(t,e){if(c){var r=t-s;m.add((0,g.tn)(r)>180?r+(r>0?360:-360):r)}else l=t,u=e;d.Y7.point(t,e),_(t,e)}function k(){d.Y7.lineStart()}function M(){A(l,u),d.Y7.lineEnd(),(0,g.tn)(m)>g.Ni&&(n=-(a=180)),h[0]=n,h[1]=a,c=null}function S(t,e){return(e-=t)<0?e+360:e}function E(t,e){return t[0]-e[0]}function L(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eS(s[0],s[1])&&(s[1]=l[1]),S(l[0],s[1])>S(s[0],s[1])&&(s[0]=l[0])):u.push(s=l);for(c=-1/0,e=0,s=u[r=u.length-1];e<=r;s=l,++e)l=u[e],(p=S(s[1],l[0]))>c&&(c=p,n=l[0],a=s[1])}return f=h=null,n===1/0||i===1/0?[[NaN,NaN],[NaN,NaN]]:[[n,i],[a,o]]}},71045:function(t,e,r){"use strict";var n=r(15181),i=r(18687),a=n.deg2rad,o=n.rad2deg;t.exports=function(t,e,r){switch(i(t,r),t._id){case"x":case"radialaxis":!function(t,e){var r=e._subplot;t.setGeometry=function(){var e=t._rl[0],n=t._rl[1],i=r.innerRadius,a=(r.radius-i)/(n-e),o=i/a,s=e>n?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case"angularaxis":!function(t,e){var r=t.type;if("linear"===r){var i=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return"degrees"===e?a(t):t}(i(t),e)},t.c2d=function(t,e){return s(function(t,e){return"degrees"===e?o(t):t}(t,e))}}t.makeCalcdata=function(e,i){var a,o,s=e[i],l=e._length,u=function(r){return t.d2c(r,e.thetaunit)};if(s){if(n.isTypedArray(s)&&"linear"===r){if(l===s.length)return s;if(s.subarray)return s.subarray(0,l)}for(a=new Array(l),o=0;o=0;n--){var i=r[n].id;if("string"==typeof i&&0===i.indexOf("water"))for(var a=n+1;a0,f=t._context.staticPlot;e.each(function(e){var h,p=e[0].trace,d=p.error_x||{},v=p.error_y||{};p.ids&&(h=function(t){return t.id});var g=o.hasMarkers(p)&&p.marker.maxdisplayed>0;v.visible||d.visible||(e=[]);var y=n.select(this).selectAll("g.errorbar").data(e,h);if(y.exit().remove(),e.length){d.visible||y.selectAll("path.xerror").remove(),v.visible||y.selectAll("path.yerror").remove(),y.style("opacity",1);var m=y.enter().append("g").classed("errorbar",!0);c&&m.style("opacity",0).transition().duration(s.duration).style("opacity",1),a.setClipUrl(y,r.layerClipId,t),y.each(function(t){var e=n.select(this),r=function(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};return void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),i(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0))),void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),i(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0))),n}(t,l,u);if(!g||t.vis){var a,o=e.select("path.yerror");if(v.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var h=v.width;a="M"+(r.x-h)+","+r.yh+"h"+2*h+"m-"+h+",0V"+r.ys,r.noYS||(a+="m-"+h+",0h"+2*h),o.size()?c&&(o=o.transition().duration(s.duration).ease(s.easing)):o=e.append("path").style("vector-effect",f?"none":"non-scaling-stroke").classed("yerror",!0),o.attr("d",a)}else o.remove();var p=e.select("path.xerror");if(d.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var y=(d.copy_ystyle?v:d).width;a="M"+r.xh+","+(r.y-y)+"v"+2*y+"m0,-"+y+"H"+r.xs,r.noXS||(a+="m0,-"+y+"v"+2*y),p.size()?c&&(p=p.transition().duration(s.duration).ease(s.easing)):p=e.append("path").style("vector-effect",f?"none":"non-scaling-stroke").classed("xerror",!0),p.attr("d",a)}else p.remove()}})}})}},71649:function(t){"use strict";t.exports=function(t,e,r){return t.x="xVal"in e?e.xVal:e.x,t.y="yVal"in e?e.yVal:e.y,e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),"h"===r.orientation?(t.label=t.y,t.value=t.x):(t.label=t.x,t.value=t.y),t}},71796:function(t,e,r){"use strict";var n=r(15181);t.exports=function(t,e){var r=e._scene,i={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},a={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return e._scene||((r=e._scene={}).init=function(){n.extendFlat(r,a,i)},r.init(),r.update=function(t){var e=n.repeat(t,r.count);if(r.fill2d&&r.fill2d.update(e),r.scatter2d&&r.scatter2d.update(e),r.line2d&&r.line2d.update(e),r.error2d&&r.error2d.update(e.concat(e)),r.select2d&&r.select2d.update(e),r.glText)for(var i=0;iE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return m.d2c((e[t]||[])[r])},H=1/0,q=-1/0;for(r=0;r=E.q1&&E.q3>=E.med){var Y=V("lowerfence");E.lf=Y!==s&&Y<=E.q1?Y:p(E,C,P);var W=V("upperfence");E.uf=W!==s&&W>=E.q3?W:d(E,C,P);var Z=V("mean");E.mean=Z!==s?Z:P?o.mean(C,P):(E.q1+E.q3)/2;var X=V("sd");E.sd=Z!==s&&X>=0?X:P?o.stdev(C,P,E.mean):E.q3-E.q1,E.lo=v(E),E.uo=g(E);var J=V("notchspan");J=J!==s&&J>0?J:y(E,P),E.ln=E.med-J,E.un=E.med+J;var K=E.lf,$=E.uf;e.boxpoints&&C.length&&(K=Math.min(K,C[0]),$=Math.max($,C[P-1])),e.notched&&(K=Math.min(K,E.ln),$=Math.max($,E.un)),E.min=K,E.max=$}else{var Q;o.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+E.q1,"median = "+E.med,"q3 = "+E.q3].join("\n")),Q=E.med!==s?E.med:E.q1!==s?E.q3!==s?(E.q1+E.q3)/2:E.q1:E.q3!==s?E.q3:0,E.med=Q,E.q1=E.q3=Q,E.lf=E.uf=Q,E.mean=E.sd=Q,E.ln=E.un=Q,E.min=E.max=Q}H=Math.min(H,E.min),q=Math.max(q,E.max),E.pts2=L.filter(j),M.push(E)}}e._extremes[m._id]=i.findExtremes(m,[H,q],{padded:!0})}else{var tt=m.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ct,ft;(E={}).pos=E[_]=B[r],L=E.pts=nt[r].sort(f),P=(C=E[x]=L.map(h)).length,E.min=C[0],E.max=C[P-1],E.mean=o.mean(C,P),E.sd=o.stdev(C,P,E.mean),E.med=o.interp(C,.5),P%2&&(lt||ut)?(lt?(ct=C.slice(0,P/2),ft=C.slice(P/2+1)):ut&&(ct=C.slice(0,P/2+1),ft=C.slice(P/2)),E.q1=o.interp(ct,.5),E.q3=o.interp(ft,.5)):(E.q1=o.interp(C,.25),E.q3=o.interp(C,.75)),E.lf=p(E,C,P),E.uf=d(E,C,P),E.lo=v(E),E.uo=g(E);var ht=y(E,P);E.ln=E.med-ht,E.un=E.med+ht,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=L.filter(j),M.push(E)}e._extremes[m._id]=i.findExtremes(m,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(o.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:N,posLetter:_,valLetter:x,labels:{med:l(t,"median:"),min:l(t,"min:"),q1:l(t,"q1:"),q3:l(t,"q3:"),max:l(t,"max:"),mean:"sd"===e.boxmean?l(t,"mean ± σ:"):l(t,"mean:"),lf:l(t,"lower fence:"),uf:l(t,"upper fence:")}},T[S]++,M):[{t:{empty:!0}}]};var u={text:"tx",hovertext:"htx"};function c(t,e,r){for(var n in u)o.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?o.isArrayOrTypedArray(e[n][r[0]])&&(t[u[n]]=e[n][r[0]][r[1]]):t[u[n]]=e[n][r])}function f(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(o.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function d(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(o.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function v(t){return 4*t.q1-3*t.q3}function g(t){return 4*t.q3-3*t.q1}function y(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}},71959:function(t){"use strict";var e=Object.prototype.toString,r=Math.max,n=function(t,e){for(var r=[],n=0;n")}function c(t){return t+"°"}}t.exports={hoverPoints:function(t,e,r){var o=t.cd,c=o[0].trace,f=t.xa,h=t.ya,p=t.subplot,d=[],v=l+c.uid+"-circle",g=c.cluster&&c.cluster.enabled;if(g){var y=p.map.queryRenderedFeatures(null,{layers:[v]});d=y.map(function(t){return t.id})}var m=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),x=e-m;if(n.getClosest(o,function(t){var e=t.lonlat;if(e[0]===s)return 1/0;if(g&&-1===d.indexOf(t.i+1))return 1/0;var n=i.modHalf(e[0],360),a=e[1],o=p.project([n,a]),l=o.x-f.c2p([x,a]),u=o.y-h.c2p([n,r]),c=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+u*u)-c,1-3/c)},t),!1!==t.index){var b=o[t.index],_=b.lonlat,w=[i.modHalf(_[0],360)+m,_[1]],T=f.c2p(w),A=h.c2p(w),k=b.mrc||1;t.x0=T-k,t.x1=T+k,t.y0=A-k,t.y1=A+k;var M={};M[c.subplot]={_subplot:p};var S=c._module.formatLabels(b,c,M);return t.lonLabel=S.lonLabel,t.latLabel=S.latLabel,t.color=a(c,b),t.extraText=u(c,b,o[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}},getExtraText:u}},72026:function(t,e,r){"use strict";t.exports={moduleType:"component",name:"legend",layoutAttributes:r(60633),supplyLayoutDefaults:r(15614),draw:r(31122),style:r(85747)}},72028:function(t,e,r){"use strict";var n=r(24873);t.exports=function(){return"function"==typeof Object.is?Object.is:n}},72095:function(t,e,r){"use strict";var n=r(78032),i=r(46982),a=r(9295),o=r(60609).eV,s=r(29435),l=r(93003).getFromId,u=r(26446).shouldShowZeroLine,c="splom",f={};function h(t,e,r){for(var n=r.matrixOptions.data.length,i=e._visibleDims,a=r.viewOpts.ranges=new Array(n),o=0;o0?1:t<0?-1:0},g=Math.sin,y=Math.tan,m=1e-6,x=1e-12,b=Math.PI,_=b/2,w=b/4,T=Math.SQRT1_2,A=P(2),k=P(b),M=2*b,S=180/b,E=b/180;function L(t){return t>1?_:t<-1?-_:Math.asin(t)}function C(t){return t>1?0:t<-1?b:Math.acos(t)}function P(t){return t>0?Math.sqrt(t):0}function O(t){return(l(t)-l(-t))/2}function I(t){return(l(t)+l(-t))/2}function D(t){var e=y(t/2),r=2*c(s(t/2))/(e*e);function n(t,e){var n=s(t),i=s(e),a=g(e),o=i*n,l=-((1-o?c((1+o)/2)/(1-o):-.5)+r/(1+o));return[l*i*g(t),l*a]}return n.invert=function(e,n){var a,l=P(e*e+n*n),u=-t/2,f=50;if(!l)return[0,0];do{var h=u/2,p=s(h),d=g(h),v=d/p,y=-c(i(p));u-=a=(2/v*y-r*v-l)/(-y/(d*d)+1-r/(2*p*p))*(p<0?.7:1)}while(i(a)>m&&--f>0);var x=g(u);return[o(e*x,l*s(u)),L(n*x/l)]},n}function z(){var t=_,e=(0,n.U)(D),r=e(t);return r.radius=function(r){return arguments.length?e(t=r*E):t*S},r.scale(179.976).clipAngle(147)}function R(t,e){var r=s(e),n=function(t){return t?t/Math.sin(t):1}(C(r*s(t/=2)));return[2*r*g(t)*n,g(e)*n]}function F(){return(0,n.A)(R).scale(152.63)}function B(t){var e=g(t),r=s(t),n=t>=0?1:-1,a=y(n*t),l=(1+e-r)/2;function u(t,i){var u=s(i),c=s(t/=2);return[(1+u)*g(t),(n*i>-o(c,a)-.001?0:10*-n)+l+g(i)*r-(1+u)*e*c]}return u.invert=function(t,u){var c=0,f=0,h=50;do{var p=s(c),d=g(c),v=s(f),y=g(f),x=1+v,b=x*d-t,_=l+y*r-x*e*p-u,w=x*p/2,T=-d*y,A=e*x*d/2,k=r*v+e*p*y,M=T*A-k*w,S=(_*T-b*k)/M/2,E=(b*A-_*w)/M;i(E)>2&&(E/=2),c-=S,f-=E}while((i(S)>m||i(E)>m)&&--h>0);return n*f>-o(s(c),a)-.001?[2*c,f]:null},u}function N(){var t=20*E,e=t>=0?1:-1,r=y(e*t),i=(0,n.U)(B),a=i(t),l=a.stream;return a.parallel=function(n){return arguments.length?(r=y((e=(t=n*E)>=0?1:-1)*t),i(t)):t*S},a.stream=function(n){var i=a.rotate(),u=l(n),c=(a.rotate([0,0]),l(n)),f=a.precision();return a.rotate(i),u.sphere=function(){c.polygonStart(),c.lineStart();for(var n=-180*e;e*n<180;n+=90*e)c.point(n,90*e);if(t)for(;e*(n-=3*e*f)>=-180;)c.point(n,e*-o(s(n*E/2),r)*S);c.lineEnd(),c.polygonEnd()},u},a.scale(218.695).center([0,28.0974])}function j(t,e){var r=y(e/2),n=P(1-r*r),i=1+n*s(t/=2),a=g(t)*n/i,o=r/i,l=a*a,u=o*o;return[4/3*a*(3+l-3*u),4/3*o*(3+3*l-u)]}function U(){return(0,n.A)(j).scale(66.1603)}R.invert=function(t,e){if(!(t*t+4*e*e>b*b+m)){var r=t,n=e,a=25;do{var o,l=g(r),u=g(r/2),c=s(r/2),f=g(n),h=s(n),p=g(2*n),d=f*f,v=h*h,y=u*u,x=1-v*c*c,_=x?C(h*c)*P(o=1/x):o=0,w=2*_*h*u-t,T=_*f-e,A=o*(v*y+_*h*c*d),k=o*(.5*l*p-2*_*f*u),M=.25*o*(p*u-_*f*v*l),S=o*(d*c+_*y*h),E=k*M-S*A;if(!E)break;var L=(T*k-w*S)/E,O=(w*M-T*A)/E;r-=L,n-=O}while((i(L)>m||i(O)>m)&&--a>0);return[r,n]}},j.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&i(e)>1)return null;var r=1+t*t+e*e,n=P((r-P(r*r-4*e*e))/2),a=L(n)/3,l=n?function(t){return c(t+P(t*t-1))}(i(e/n))/3:function(t){return c(t+P(t*t+1))}(i(t))/3,u=s(a),f=I(l),h=f*f-u*u;return[2*v(t)*o(O(l)*u,.25-h),2*v(e)*o(f*g(a),.25+h)]};var V=P(8),H=c(1+A);function q(t,e){var r=i(e);return rx&&--u>0);return[t/(s(o)*(V-1/g(o))),v(e)*o]};var Y=r(44635);function W(t){var e=2*b/t;function r(t,r){var n=(0,Y.j)(t,r);if(i(t)>_){var a=o(n[1],n[0]),l=P(n[0]*n[0]+n[1]*n[1]),u=e*d((a-_)/e)+_,c=o(g(a-=u),2-s(a));a=u+L(b/l*g(c))-c,n[0]=l*s(a),n[1]=l*g(a)}return n}return r.invert=function(t,r){var n=P(t*t+r*r);if(n>_){var i=o(r,t),l=e*d((i-_)/e)+_,u=i>l?-1:1,c=n*s(l-i),f=1/y(u*C((c-b)/P(b*(b-2*c)+n*n)));i=l+2*a((f+u*P(f*f-3))/3),t=n*s(i),r=n*g(i)}return Y.j.invert(t,r)},r}function Z(){var t=5,e=(0,n.U)(W),r=e(t),i=r.stream,a=.01,l=-s(a*E),u=g(a*E);return r.lobes=function(r){return arguments.length?e(t=+r):t},r.stream=function(e){var n=r.rotate(),c=i(e),f=(r.rotate([0,0]),i(e));return r.rotate(n),c.sphere=function(){f.polygonStart(),f.lineStart();for(var e=0,r=360/t,n=2*b/t,i=90-180/t,c=_;e0&&i(n)>m);return s<0?NaN:r}function tt(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=x),function(n,a,o,s){var l,u,c;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var f=0;fl)o-=u/=2,s-=c/=2;else{l=v;var g=(o>0?-1:1)*r,y=(s>0?-1:1)*r,m=t(o+g,s),x=t(o,s+y),b=(m[0]-h[0])/g,_=(m[1]-h[1])/g,w=(x[0]-h[0])/y,T=(x[1]-h[1])/y,A=T*b-_*w,k=(i(A)<.5?.5:1)/A;if(o+=u=(d*w-p*T)*k,s+=c=(p*_-d*b)*k,i(u)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=tt(e),e}function rt(){return(0,n.A)(et()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function nt(t,e){var r,n=t*g(e),a=30;do{e-=r=(e+g(e)-n)/(1+s(e))}while(i(r)>m&&--a>0);return e/2}function it(t,e,r){function n(n,i){return[t*n*s(i=nt(r,i)),e*g(i)]}return n.invert=function(n,i){return i=L(i/e),[n/(t*s(i)),L((2*i+g(2*i))/r)]},n}K.invert=function(t,e){var r=2*L(e/2);return[t*s(r/2)/s(r),r]};var at=it(A/_,A,b);function ot(){return(0,n.A)(at).scale(169.529)}var st=2.00276,lt=1.11072;function ut(t,e){var r=nt(b,e);return[st*t/(1/s(e)+lt/s(r)),(e+A*g(r))/st]}function ct(){return(0,n.A)(ut).scale(160.857)}function ft(t){var e=0,r=(0,n.U)(t),i=r(e);return i.parallel=function(t){return arguments.length?r(e=t*E):e*S},i}function ht(t,e){return[t*s(e),e]}function pt(){return(0,n.A)(ht).scale(152.63)}function dt(t){if(!t)return ht;var e=1/y(t);function r(r,n){var i=e+t-n,a=i?r*s(n)/i:i;return[i*g(a),e-i*s(a)]}return r.invert=function(r,n){var i=P(r*r+(n=e-n)*n),a=e+t-i;return[i/s(a)*o(r,n),a]},r}function vt(){return ft(dt).scale(123.082).center([0,26.1441]).parallel(45)}function gt(t){function e(e,r){var n=_-r,i=n?e*t*g(n)/n:n;return[n*g(i)/t,_-n*s(i)]}return e.invert=function(e,r){var n=e*t,i=_-r,a=P(n*n+i*i),s=o(n,i);return[(a?a/g(a):1)*s/t,_-a]},e}function yt(){var t=.5,e=(0,n.U)(gt),r=e(t);return r.fraction=function(r){return arguments.length?e(t=+r):t},r.scale(158.837)}ut.invert=function(t,e){var r,n,a=st*e,o=e<0?-w:w,l=25;do{n=a-A*g(o),o-=r=(g(2*o)+2*o-b*g(n))/(2*s(2*o)+2+b*s(n)*A*s(o))}while(i(r)>m&&--l>0);return n=a-A*g(o),[t*(1/s(n)+lt/s(o))/st,n]},ht.invert=function(t,e){return[t/s(e),e]};var mt=it(1,4/b,b);function xt(){return(0,n.A)(mt).scale(152.63)}var bt=r(43623),_t=r(97469);function wt(t,e,r,n,a,l){var u,c=s(l);if(i(t)>1||i(l)>1)u=C(r*a+e*n*c);else{var f=g(t/2),h=g(l/2);u=2*L(P(f*f+e*n*h*h))}return i(u)>m?[u,o(n*g(l),e*a-r*n*c)]:[0,0]}function Tt(t,e,r){return C((t*t+e*e-r*r)/(2*t*e))}function At(t){return t-2*b*u((t+b)/(2*b))}function kt(t,e,r){for(var n,i=[[t[0],t[1],g(t[1]),s(t[1])],[e[0],e[1],g(e[1]),s(e[1])],[r[0],r[1],g(r[1]),s(r[1])]],a=i[2],o=0;o<3;++o,a=n)n=i[o],a.v=wt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=Tt(i[0].v[0],i[2].v[0],i[1].v[0]),u=Tt(i[0].v[0],i[1].v[0],i[2].v[0]),c=b-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var f=[i[2].point[0]=i[0].point[0]+i[2].v[0]*s(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*g(l))];return function(t,e){var r,n=g(e),a=s(e),o=new Array(3);for(r=0;r<3;++r){var l=i[r];if(o[r]=wt(e-l[1],l[3],l[2],a,n,t-l[0]),!o[r][0])return l.point;o[r][1]=At(o[r][1]-l.v[1])}var h=f.slice();for(r=0;r<3;++r){var p=2==r?0:r+1,d=Tt(i[r].v[0],o[r][0],o[p][0]);o[r][1]<0&&(d=-d),r?1==r?(d=u-d,h[0]-=o[r][0]*s(d),h[1]-=o[r][0]*g(d)):(d=c-d,h[0]+=o[r][0]*s(d),h[1]+=o[r][0]*g(d)):(h[0]+=o[r][0]*s(d),h[1]-=o[r][0]*g(d))}return h[0]/=3,h[1]/=3,h}}function Mt(t){return t[0]*=E,t[1]*=E,t}function St(){return Et([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function Et(t,e,r){var i=(0,bt.A)({type:"MultiPoint",coordinates:[t,e,r]}),a=[-i[0],-i[1]],o=(0,_t.A)(a),s=kt(Mt(o(t)),Mt(o(e)),Mt(o(r)));s.invert=tt(s);var l=(0,n.A)(s).rotate(a),u=l.center;return delete l.rotate,l.center=function(t){return arguments.length?u(o(t)):o.invert(u())},l.clipAngle(90)}function Lt(t,e){var r=P(1-g(e));return[2/k*t*r,k*(1-r)]}function Ct(){return(0,n.A)(Lt).scale(95.6464).center([0,30])}function Pt(t){var e=y(t);function r(t,r){return[t,(t?t/g(t):1)*(g(r)*s(t)-e*s(r))]}return r.invert=e?function(t,r){t&&(r*=g(t)/t);var n=s(t);return[t,2*o(P(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,L(t?e*y(t)/t:e)]},r}function Ot(){return ft(Pt).scale(249.828).clipAngle(90)}Lt.invert=function(t,e){var r=(r=e/k-1)*r;return[r>0?t*P(b/r)/2:0,L(1-r)]};var It=P(3);function Dt(t,e){return[It*t*(2*s(2*e/3)-1)/k,It*k*g(e/3)]}function zt(){return(0,n.A)(Dt).scale(156.19)}function Rt(t){var e=s(t);function r(t,r){return[t*e,g(r)/e]}return r.invert=function(t,r){return[t/e,L(r*e)]},r}function Ft(){return ft(Rt).parallel(38.58).scale(195.044)}function Bt(t){var e=s(t);function r(t,r){return[t*e,(1+e)*y(r/2)]}return r.invert=function(t,r){return[t/e,2*a(r/(1+e))]},r}function Nt(){return ft(Bt).scale(124.75)}function jt(t,e){var r=P(8/(3*b));return[r*t*(1-i(e)/b),r*e]}function Ut(){return(0,n.A)(jt).scale(165.664)}function Vt(t,e){var r=P(4-3*g(i(e)));return[2/P(6*b)*t*r,v(e)*P(2*b/3)*(2-r)]}function Ht(){return(0,n.A)(Vt).scale(165.664)}function qt(t,e){var r=P(b*(4+b));return[2/r*t*(1+P(1-4*e*e/(b*b))),4/r*e]}function Gt(){return(0,n.A)(qt).scale(180.739)}function Yt(t,e){var r=(2+_)*g(e);e/=2;for(var n=0,a=1/0;n<10&&i(a)>m;n++){var o=s(e);e-=a=(e+g(e)*(o+2)-r)/(2*o*(1+o))}return[2/P(b*(4+b))*t*(1+s(e)),2*P(b/(4+b))*g(e)]}function Wt(){return(0,n.A)(Yt).scale(180.739)}function Zt(t,e){return[t*(1+s(e))/P(2+b),2*e/P(2+b)]}function Xt(){return(0,n.A)(Zt).scale(173.044)}function Jt(t,e){for(var r=(1+_)*g(e),n=0,a=1/0;n<10&&i(a)>m;n++)e-=a=(e+g(e)-r)/(1+s(e));return r=P(2+b),[t*(1+s(e))/r,2*e/r]}function Kt(){return(0,n.A)(Jt).scale(173.044)}Dt.invert=function(t,e){var r=3*L(e/(It*k));return[k*t/(It*(2*s(2*r/3)-1)),r]},jt.invert=function(t,e){var r=P(8/(3*b)),n=e/r;return[t/(r*(1-i(n)/b)),n]},Vt.invert=function(t,e){var r=2-i(e)/P(2*b/3);return[t*P(6*b)/(2*r),v(e)*L((4-r*r)/3)]},qt.invert=function(t,e){var r=P(b*(4+b))/2;return[t*r/(1+P(1-e*e*(4+b)/(4*b))),e*r/2]},Yt.invert=function(t,e){var r=e*P((4+b)/b)/2,n=L(r),i=s(n);return[t/(2/P(b*(4+b))*(1+i)),L((n+r*(i+2))/(2+_))]},Zt.invert=function(t,e){var r=P(2+b),n=e*r/2;return[r*t/(1+s(n)),n]},Jt.invert=function(t,e){var r=1+_,n=P(r/2);return[2*t*n/(1+s(e*=n)),L((e+g(e))/r)]};var $t=3+2*A;function Qt(t,e){var r=g(t/=2),n=s(t),i=P(s(e)),o=s(e/=2),l=g(e)/(o+A*n*i),u=P(2/(1+l*l)),f=P((A*o+(n+r)*i)/(A*o+(n-r)*i));return[$t*(u*(f-1/f)-2*c(f)),$t*(u*l*(f+1/f)-2*a(l))]}function te(){return(0,n.A)(Qt).scale(62.5271)}Qt.invert=function(t,e){if(!(r=j.invert(t/1.2,1.065*e)))return null;var r,n=r[0],o=r[1],l=20;t/=$t,e/=$t;do{var u=n/2,p=o/2,d=g(u),v=s(u),y=g(p),x=s(p),b=s(o),w=P(b),k=y/(x+A*v*w),M=k*k,S=P(2/(1+M)),E=(A*x+(v+d)*w)/(A*x+(v-d)*w),L=P(E),C=L-1/L,O=L+1/L,I=S*C-2*c(L)-t,D=S*k*O-2*a(k)-e,z=y&&T*w*d*M/y,R=(A*v*x+w)/(2*(x+A*v*w)*(x+A*v*w)*w),F=-.5*k*S*S*S,B=F*z,N=F*R,U=(U=2*x+A*w*(v-d))*U*L,V=(A*v*x*w+b)/U,H=-A*d*y/(w*U),q=C*B-2*V/L+S*(V+V/E),G=C*N-2*H/L+S*(H+H/E),Y=k*O*B-2*z/(1+M)+S*O*z+S*k*(V-V/E),W=k*O*N-2*R/(1+M)+S*O*R+S*k*(H-H/E),Z=G*Y-W*q;if(!Z)break;var X=(D*G-I*W)/Z,J=(I*Y-D*q)/Z;n-=X,o=f(-_,h(_,o-J))}while((i(X)>m||i(J)>m)&&--l>0);return i(i(o)-_)n){var h=P(f),p=o(c,u),v=r*d(p/r),y=p-v,x=t*s(y),w=(t*g(y)-y*g(x))/(_-x),T=de(y,w),A=(b-t)/ve(T,x,b);u=h;var k,M=50;do{u-=k=(t+ve(T,x,u)*A-h)/(T(u)*A)}while(i(k)>m&&--M>0);c=y*g(u),u<_&&(c-=w*(u-_));var S=g(v),E=s(v);l[0]=u*E-c*S,l[1]=u*S+c*E}return l}return a.invert=function(e,a){var l=e*e+a*a;if(l>n){var u=P(l),c=o(a,e),f=r*d(c/r),h=c-f;e=u*s(h),a=u*g(h);for(var p=e-_,v=g(e),y=a/v,m=e<_?1/0:0,w=10;;){var T=t*g(y),A=t*s(y),k=g(A),M=_-A,S=(T-y*k)/M,E=de(y,S);if(i(m)m||i(p)>m)&&--y>0);return[d,v]},c}var me=ye(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function xe(){return(0,n.A)(me).scale(149.995)}var be=ye(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function _e(){return(0,n.A)(be).scale(153.93)}var we=ye(5/6*b,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Te(){return(0,n.A)(we).scale(130.945)}function Ae(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}function ke(){return(0,n.A)(Ae).scale(131.747)}Ae.invert=function(t,e){var r,n=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(i(r)>m&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=n*n)*l;n-=r=(n*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(i(r)>m&&--o>0);return[n,a]};var Me=ye(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Se(){return(0,n.A)(Me).scale(131.087)}function Ee(t){var e=t(_,0)[0]-t(-_,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*b,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*b;return o<-b?o+=2*b:o>b&&(o-=2*b),a[0]=o,a}),r}function Le(t,e){var r=v(t),n=v(e),a=s(e),l=s(t)*a,u=g(t)*a,c=g(n*e);t=i(o(u,c)),e=L(l),i(t-_)>m&&(t%=_);var f=function(t,e){if(e===_)return[0,0];var r,n,a=g(e),o=a*a,l=o*o,u=1+l,c=1+3*l,f=1-l,h=L(1/P(u)),p=f+o*u*h,d=(1-a)/p,v=P(d),y=d*u,x=P(y),w=v*f;if(0===t)return[0,-(w+o*x)];var T,A=s(e),k=1/A,M=2*a*A,S=(-p*A-(1-a)*((-3*o+h*c)*M))/(p*p),E=-k*M,C=-k*(o*u*S+d*c*M),O=-2*k*(f*(.5*S/v)-2*o*v*M),I=4*t/b;if(t>.222*b||e.175*b){if(r=(w+o*P(y*(1+l)-w*w))/(1+l),t>b/4)return[r,r];var D=r,z=.5*r;r=.5*(z+D),n=50;do{var R=r*(O+E*P(y-r*r))+C*L(r/x)-I;if(!R)break;R<0?z=r:D=r,r=.5*(z+D)}while(i(D-z)>m&&--n>0)}else{r=m,n=25;do{var F=r*r,B=P(y-F),N=O+E*B,j=r*N+C*L(r/x)-I;r-=T=B?j/(N+(C-E*F)/B):0}while(i(T)>m&&--n>0)}return[r,-w-o*P(y-r*r)]}(t>b/4?_-t:t,e);return t>b/4&&(c=f[0],f[0]=-f[1],f[1]=-c),f[0]*=r,f[1]*=-n,f}function Ce(){return(0,n.A)(Ee(Le)).scale(239.75)}function Pe(t,e){var r,n,o,u,c,f;if(e=1-m)return r=(1-e)/4,o=1/(n=I(t)),[(u=((f=l(2*(f=t)))-1)/(f+1))+r*((c=n*O(t))-t)/(n*n),o-r*u*o*(c-t),o+r*u*o*(c+t),2*a(l(t))-_+r*(c-t)/n];var h=[1,0,0,0,0,0,0,0,0],p=[P(e),0,0,0,0,0,0,0,0],d=0;for(n=P(1-e),c=1;i(p[d]/h[d])>m&&d<8;)r=h[d++],p[d]=(r-n)/2,h[d]=(r+n)/2,n=P(r*n),c*=2;o=c*h[d]*t;do{o=(L(u=p[d]*g(n=o)/h[d])+o)/2}while(--d);return[g(o),u=s(o),u/s(o-n),o]}function Oe(t,e){if(!e)return t;if(1===e)return c(y(t/2+w));for(var r=1,n=P(1-e),o=P(e),s=0;i(o)>m;s++){if(t%b){var l=a(n*y(t)/r);l<0&&(l+=b),t+=l+~~(t/b)*b}else t+=t;o=(r+n)/2,n=P(r*n),o=((r=o)-n)/2}return t/(p(2,s)*r)}function Ie(t,e){var r=(A-1)/(A+1),n=P(1-r*r),u=Oe(_,n*n),f=c(y(b/4+i(e)/2)),h=l(-1*f)/P(r),p=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?_:-_)-o(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(h*s(-1*t),h*g(-1*t)),d=function(t,e,r){var n=i(t),o=O(i(e));if(n){var s=1/g(n),l=1/(y(n)*y(n)),u=-(l+r*(o*o*s*s)-1+r),c=(-u+P(u*u-(r-1)*l*4))/2;return[Oe(a(1/P(c)),r)*v(t),Oe(a(P((c/l-1)/r)),1-r)*v(e)]}return[0,Oe(a(o),1-r)*v(e)]}(p[0],p[1],n*n);return[-d[1],(e>=0?1:-1)*(.5*u-d[0])]}function De(){return(0,n.A)(Ee(Ie)).scale(151.496)}Le.invert=function(t,e){i(t)>1&&(t=2*v(t)-t),i(e)>1&&(e=2*v(e)-e);var r=v(t),n=v(e),a=-r*t,l=-n*e,u=l/a<1,c=function(t,e){for(var r=0,n=1,a=.5,o=50;;){var l=a*a,u=P(a),c=L(1/P(1+l)),f=1-l+a*(1+l)*c,h=(1-u)/f,p=P(h),d=h*(1+l),v=p*(1-l),g=P(d-t*t),y=e+v+a*g;if(i(n-r)0?r=a:n=a,a=.5*(r+n)}if(!o)return null;var m=L(u),_=s(m),w=1/_,T=2*u*_,A=(-f*_-(-3*a+c*(1+3*l))*T*(1-u))/(f*f);return[b/4*(t*(-2*w*((1-l)*(.5*A/p)-2*a*p*T)+-w*T*g)+-w*(a*(1+l)*A+h*(1+3*l)*T)*L(t/P(d))),m]}(u?l:a,u?a:l),f=c[0],h=c[1],p=s(h);return u&&(f=-_-f),[r*(o(g(f)*p,-g(h))+b),n*L(s(f)*p)]},Ie.invert=function(t,e){var r,n,i,s,u,f,h=(A-1)/(A+1),p=P(1-h*h),d=(n=-t,i=p*p,(r=.5*Oe(_,p*p)-e)?(s=Pe(r,i),n?(f=(u=Pe(n,1-i))[1]*u[1]+i*s[0]*s[0]*u[0]*u[0],[[s[0]*u[2]/f,s[1]*s[2]*u[0]*u[1]/f],[s[1]*u[1]/f,-s[0]*s[2]*u[0]*u[2]/f],[s[2]*u[1]*u[2]/f,-i*s[0]*s[1]*u[0]/f]]):[[s[0],0],[s[1],0],[s[2],0]]):[[0,(u=Pe(n,1-i))[0]/u[1]],[1/u[1],0],[u[2]/u[1],0]]),v=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(d[0],d[1]);return[o(v[1],v[0])/-1,2*a(l(-.5*c(h*v[0]*v[0]+h*v[1]*v[1])))-_]};var ze=r(29752);function Re(t){var e=g(t),r=s(t),n=Fe(t);function a(t,a){var o=n(t,a);t=o[0],a=o[1];var l=g(a),u=s(a),c=s(t),f=C(e*l+r*u*c),h=g(f),p=i(h)>m?f/h:1;return[p*r*g(t),(i(t)>_?p:-p)*(e*u-r*l*c)]}return n.invert=Fe(-t),a.invert=function(t,r){var i=P(t*t+r*r),a=-g(i),l=s(i),u=i*l,c=-r*a,f=i*e,h=P(u*u+c*c-f*f),p=o(u*f+c*h,c*f-u*h),d=(i>_?-1:1)*o(t*a,i*s(p)*l+r*g(p)*a);return n.invert(d,p)},a}function Fe(t){var e=g(t),r=s(t);return function(t,n){var i=s(n),a=s(t)*i,l=g(t)*i,u=g(n);return[o(l,a*r-u*e),L(u*r+a*e)]}}function Be(){var t=0,e=(0,n.U)(Re),r=e(t),i=r.rotate,a=r.stream,o=(0,ze.A)();return r.parallel=function(n){if(!arguments.length)return t*S;var i=r.rotate();return e(t=n*E).rotate(i)},r.rotate=function(e){return arguments.length?(i.call(r,[e[0],e[1]-t*S]),o.center([-e[0],-e[1]]),r):((e=i.call(r))[1]+=t*S,e)},r.stream=function(t){return(t=a(t)).sphere=function(){t.polygonStart();var e,r=o.radius(89.99)().coordinates[0],n=r.length-1,i=-1;for(t.lineStart();++i=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},r.scale(79.4187).parallel(45).clipAngle(179.999)}var Ne=r(22208),je=r(98683),Ue=L(1-1/3)*S,Ve=Rt(0);function He(t){var e=Ue*E,r=Lt(b,e)[0]-Lt(-b,e)[0],n=Ve(0,e)[1],a=Lt(0,e)[1],o=k-a,s=M/t,l=4/M,c=n+o*o*4/M;function p(p,d){var v,g=i(d);if(g>e){var y=h(t-1,f(0,u((p+b)/s)));(v=Lt(p+=b*(t-1)/t-y*s,g))[0]=v[0]*M/r-M*(t-1)/(2*t)+y*M/t,v[1]=n+4*(v[1]-a)*o/M,d<0&&(v[1]=-v[1])}else v=Ve(p,d);return v[0]*=l,v[1]/=c,v}return p.invert=function(e,p){e/=l;var d=i(p*=c);if(d>n){var v=h(t-1,f(0,u((e+b)/s)));e=(e+b*(t-1)/t-v*s)*r/M;var g=Lt.invert(e,.25*(d-n)*M/o+a);return g[0]-=b*(t-1)/t-v*s,p<0&&(g[1]=-g[1]),g}return Ve.invert(e,p)},p}function qe(t,e){return[t,1&e?90-m:Ue]}function Ge(t,e){return[t,1&e?-90+m:-Ue]}function Ye(t){return[t[0]*(1-m),t[1]]}function We(){var t=4,e=(0,n.U)(He),r=e(t),i=r.stream;return r.lobes=function(r){return arguments.length?e(t=+r):t},r.stream=function(e){var n=r.rotate(),a=i(e),o=(r.rotate([0,0]),i(e));return r.rotate(n),a.sphere=function(){var e,r;(0,je.A)((e=180/t,r=[].concat((0,Ne.y1)(-180,180+e/2,e).map(qe),(0,Ne.y1)(180,-180-e/2,-e).map(Ge)),{type:"Polygon",coordinates:[180===e?r.map(Ye):r]}),o)},a},r.scale(239.75)}function Ze(t){var e,r=1+t,n=L(g(1/r)),a=2*P(b/(e=b+4*n*r)),l=.5*a*(r+P(t*(2+t))),u=t*t,c=r*r;function f(f,h){var p,d,v=1-g(h);if(v&&v<2){var y,m=_-h,w=25;do{var T=g(m),A=s(m),k=n+o(T,r-A),M=1+c-2*r*A;m-=y=(m-u*n-r*T+M*k-.5*v*e)/(2*r*T*k)}while(i(y)>x&&--w>0);p=a*P(M),d=f*k/b}else p=a*(t+v),d=f*n/b;return[p*g(d),l-p*s(d)]}return f.invert=function(t,i){var s=t*t+(i-=l)*i,f=(1+c-s/(a*a))/(2*r),h=C(f),p=g(h),d=n+o(p,r-f);return[L(t/P(s))*b/d,L(1-2*(h-u*n-r*p+(1+c-2*r*f)*d)/e)]},f}function Xe(){var t=1,e=(0,n.U)(Ze),r=e(t);return r.ratio=function(r){return arguments.length?e(t=+r):t},r.scale(167.774).center([0,18.67])}var Je=.7109889596207567,Ke=.0528035274542;function $e(t,e){return e>-Je?((t=at(t,e))[1]+=Ke,t):ht(t,e)}function Qe(){return(0,n.A)($e).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function tr(t,e){return i(e)>Je?((t=at(t,e))[1]-=e>0?Ke:-Ke,t):ht(t,e)}function er(){return(0,n.A)(tr).scale(152.63)}function rr(t,e,r,n){var i=P(4*b/(2*r+(1+t-e/2)*g(2*r)+(t+e)/2*g(4*r)+e/2*g(6*r))),a=P(n*g(r)*P((1+t*s(2*r)+e*s(4*r))/(1+t+e))),o=r*u(1);function l(r){return P(1+t*s(2*r)+e*s(4*r))}function u(n){var i=n*r;return(2*i+(1+t-e/2)*g(2*i)+(t+e)/2*g(4*i)+e/2*g(6*i))/r}function c(t){return l(t)*g(t)}var f=function(t,e){var n=r*Q(u,o*g(e)/r,e/b);isNaN(n)&&(n=r*v(e));var c=i*l(n);return[c*a*t/b*s(n),c/a*g(n)]};return f.invert=function(t,e){var n=Q(c,e*a/i);return[t*b/(s(n)*i*a*l(n)),L(r*u(n/r)/o)]},0===r&&(i=P(n/b),(f=function(t,e){return[t*i,g(e)/i]}).invert=function(t,e){return[t/i,L(e*i)]}),f}function nr(){var t=1,e=0,r=45*E,i=2,a=(0,n.U)(rr),o=a(t,e,r,i);return o.a=function(n){return arguments.length?a(t=+n,e,r,i):t},o.b=function(n){return arguments.length?a(t,e=+n,r,i):e},o.psiMax=function(n){return arguments.length?a(t,e,r=+n*E,i):r*S},o.ratio=function(n){return arguments.length?a(t,e,r,i=+n):i},o.scale(180.739)}function ir(t,e,r,n,i,a,o,s,l,u,c){if(c.nanEncountered)return NaN;var f,h,p,d,v,g,y,m,x,b;if(h=t(e+.25*(f=r-e)),p=t(r-.25*f),isNaN(h))c.nanEncountered=!0;else{if(!isNaN(p))return b=((g=(d=f*(n+4*h+i)/12)+(v=f*(i+4*p+a)/12))-o)/15,u>l?(c.maxDepthCount++,g+b):Math.abs(b)t?r=n:e=n,n=e+r>>1}while(n>e);var i=u[n+1]-u[n];return i&&(i=(t-u[n+1])/i),(n+1+i)/s}var h=2*f(1)/b*o/r,d=function(t,e){var r=f(i(g(e))),a=n(r)*t;return r/=h,[a,e>=0?r:-r]};return d.invert=function(t,e){var r;return i(e*=h)<1&&(r=v(e)*L(a(i(e))*o)),[t/n(i(e)),r]},d}function sr(){var t=0,e=2.5,r=1.183136,i=(0,n.U)(or),a=i(t,e,r);return a.alpha=function(n){return arguments.length?i(t=+n,e,r):t},a.k=function(n){return arguments.length?i(t,e=+n,r):e},a.gamma=function(n){return arguments.length?i(t,e,r=+n):r},a.scale(152.63)}function lr(t,e){return i(t[0]-e[0])a[o][2][0];++o);var l=t(r-a[o][1][0],n);return l[0]+=t(a[o][1][0],i*n>i*a[o][0][1]?a[o][0][1]:n)[0],l}r?o.invert=r(o):t.invert&&(o.invert=function(r,n){for(var i=a[+(n<0)],s=e[+(n<0)],l=0,u=i.length;l=0;--s)r=(e=t[1][s])[0][0],n=e[0][1],i=e[1][1],a=e[2][0],o=e[2][1],l.push(ur([[a-m,o-m],[a-m,i+m],[r+m,i+m],[r+m,n-m]],30));return{type:"Polygon",coordinates:[(0,Ne.Am)(l)]}}(r),e=r.map(function(t){return t.map(function(t){return[[t[0][0]*E,t[0][1]*E],[t[1][0]*E,t[1][1]*E],[t[2][0]*E,t[2][1]*E]]})}),a=e.map(function(e){return e.map(function(e){var r,n=t(e[0][0],e[0][1])[0],i=t(e[2][0],e[2][1])[0],a=t(e[1][0],e[0][1])[1],o=t(e[1][0],e[1][1])[1];return a>o&&(r=a,a=o,o=r),[[n,a],[i,o]]})}),s):e.map(function(t){return t.map(function(t){return[[t[0][0]*S,t[0][1]*S],[t[1][0]*S,t[1][1]*S],[t[2][0]*S,t[2][1]*S]]})})},null!=e&&s.lobes(e),s}$e.invert=function(t,e){return e>-Je?at.invert(t,e-Ke):ht.invert(t,e)},tr.invert=function(t,e){return i(e)>Je?at.invert(t,e+(e>0?Ke:-Ke)):ht.invert(t,e)};var fr=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function hr(){return cr(ut,fr).scale(160.857)}var pr=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function dr(){return cr(tr,pr).scale(152.63)}var vr=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function gr(){return cr(at,vr).scale(169.529)}var yr=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function mr(){return cr(at,yr).scale(169.529).rotate([20,0])}var xr=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function br(){return cr($e,xr,tt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var _r=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function wr(){return cr(ht,_r).scale(152.63).rotate([-20,0])}function Tr(t,e){return[3/M*t*P(b*b/3-e*e),e]}function Ar(){return(0,n.A)(Tr).scale(158.837)}function kr(t){function e(e,r){if(i(i(r)-_)2)return null;var a=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+a+s);return l=p((1+l)/(1-l),1/t),[o(2*e,1-a-s)/t,L((l-1)/(l+1))]},e}function Mr(){var t=.5,e=(0,n.U)(kr),r=e(t);return r.spacing=function(r){return arguments.length?e(t=+r):t},r.scale(124.75)}Tr.invert=function(t,e){return[M/3*t/P(b*b/3-e*e),e]};var Sr=b/A;function Er(t,e){return[t*(1+P(s(e)))/2,e/(s(e/2)*s(t/6))]}function Lr(){return(0,n.A)(Er).scale(97.2672)}function Cr(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function Pr(){return(0,n.A)(Cr).scale(139.98)}function Or(t,e){return[g(t)/s(e),y(e)*s(t)]}function Ir(){return(0,n.A)(Or).scale(144.049).clipAngle(89.999)}function Dr(t){var e=s(t),r=y(w+t/2);function n(n,a){var o=a-t,s=i(o)=0;)h=(f=t[c])[0]+l*(i=h)-u*p,p=f[1]+l*p+u*i;return[h=l*(i=h)-u*p,p=l*p+u*i]}return r.invert=function(r,n){var l=20,u=r,c=n;do{for(var f,h=e,p=t[h],d=p[0],v=p[1],y=0,x=0;--h>=0;)y=d+u*(f=y)-c*x,x=v+u*x+c*f,d=(p=t[h])[0]+u*(f=d)-c*v,v=p[1]+u*v+c*f;var b,_,w=(y=d+u*(f=y)-c*x)*y+(x=v+u*x+c*f)*x;u-=b=((d=u*(f=d)-c*v-r)*y+(v=u*v+c*f-n)*x)/w,c-=_=(v*y-d*x)/w}while(i(b)+i(_)>m*m&&--l>0);if(l){var T=P(u*u+c*c),A=2*a(.5*T),k=g(A);return[o(u*k,T*s(A)),T?L(c*k/T):0]}},r}Er.invert=function(t,e){var r=i(t),n=i(e),a=m,o=_;nm||i(x)>m)&&--a>0);return a&&[r,n]},Or.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?T*P((i-P(i*i-4*r))/r):1/P(n);return[L(t*a),v(e)*C(a)]},Rr.invert=function(t,e){return[t,2.5*a(l(.8*e))-.625*b]};var Nr=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],jr=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Ur=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Vr=[[.9245,0],[0,0],[.01943,0]],Hr=[[.721316,0],[0,0],[-.00881625,-.00617325]];function qr(){return Xr(Nr,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function Gr(){return Xr(jr,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Yr(){return Xr(Ur,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function Wr(){return Xr(Vr,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function Zr(){return Xr(Hr,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Xr(t,e){var r=(0,n.A)(Br(t)).rotate(e).clipAngle(90),i=(0,_t.A)(e),a=r.center;return delete r.rotate,r.center=function(t){return arguments.length?a(i(t)):i.invert(a())},r}var Jr=P(6),Kr=P(7);function $r(t,e){var r=L(7*g(e)/(3*Jr));return[Jr*t*(2*s(2*r/3)-1)/Kr,9*g(r/3)/Kr]}function Qr(){return(0,n.A)($r).scale(164.859)}function tn(t,e){for(var r,n=(1+T)*g(e),a=e,o=0;o<25&&(a-=r=(g(a/2)+g(a)-n)/(.5*s(a/2)+s(a)),!(i(r)x&&--l>0);return[t/(.84719-.13063*(n=s*s)+(o=n*(a=n*n))*o*(.05494*n-.04515-.02326*a+.00331*o)),s]},ln.invert=function(t,e){for(var r=e/2,n=0,a=1/0;n<10&&i(a)>m;++n){var o=s(e/2);e-=a=(e-y(e/2)-r)/(1-.5/(o*o))}return[2*t/(1+s(e)),e]};var cn=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function fn(){return cr(J(1/0),cn).rotate([20,0]).scale(152.63)}function hn(t,e){var r=g(e),n=s(e),a=v(t);if(0===t||i(e)===_)return[0,e];if(0===e)return[t,0];if(i(t)===_)return[t*n,_*r];var o=b/(2*t)-2*t/b,l=2*e/b,u=(1-l*l)/(r-l),c=o*o,f=u*u,h=1+c/f,p=1+f/c,d=(o*r/u-o/2)/h,y=(f*r/c+u/2)/p,m=y*y-(f*r*r/c+u*r-1)/p;return[_*(d+P(d*d+n*n/h)*a),_*(y+P(m<0?0:m)*v(-e*o)*a)]}function pn(){return(0,n.A)(hn).scale(127.267)}hn.invert=function(t,e){var r=(t/=_)*t,n=r+(e/=_)*e,i=b*b;return[t?(n-1+P((1-n)*(1-n)+4*r))/(2*t)*_:0,Q(function(t){return n*(b*g(t)-2*t)*b+4*t*t*(e-g(t))+2*b*t-i*e},0)]};var dn=1.0148,vn=.23185,gn=-.14499,yn=.02406,mn=dn,xn=5*vn,bn=7*gn,_n=9*yn,wn=1.790857183;function Tn(t,e){var r=e*e;return[t,e*(dn+r*r*(vn+r*(gn+yn*r)))]}function An(){return(0,n.A)(Tn).scale(139.319)}function kn(t,e){if(i(e)wn?e=wn:e<-1.790857183&&(e=-1.790857183);var r,n=e;do{var a=n*n;n-=r=(n*(dn+a*a*(vn+a*(gn+yn*a)))-e)/(mn+a*a*(xn+a*(bn+_n*a)))}while(i(r)>m);return[t,n]},kn.invert=function(t,e){if(i(e)m&&--o>0);return l=y(a),[(i(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=(c=n.map(r.project),f=n.map(e.project),h=Cn(c[1],c[0]),p=Cn(f[1],f[0]),d=function(t,e){return o(t[0]*e[1]-t[1]*e[0],t[0]*e[0]+t[1]*e[1])}(h,p),v=Pn(h)/Pn(p),Ln([1,0,c[0][0],0,1,c[0][1]],Ln([v,0,0,0,v,0],Ln([s(d),g(d),0,-g(d),s(d),0],[1,0,-f[0][0],0,1,-f[0][1]]))));e.transform=r.transform?Ln(r.transform,i):i;for(var a=r.edges,l=0,u=a.length;l0?[-e[0],0]:[180-e[0],180])};var e=Bn.map(function(e){return{face:e,project:t(e)}});return[-1,0,0,1,0,1,4,5].forEach(function(t,r){var n=e[t];n&&(n.children||(n.children=[])).push(e[r])}),On(e[0],function(t,r){return e[t<-b/2?r<0?6:4:t<0?r<0?2:0:tn^p>n&&r<(h-u)*(n-c)/(p-c)+u&&(i=!i)}return i}(t[0],r))return t.push(e),!0})||t.push([e])}),ti=[],t.length?t.length>1?{type:"MultiPolygon",coordinates:t}:{type:"Polygon",coordinates:t[0]}:null}};function ii(t){var e=t(_,0)[0]-t(-_,0)[0];function r(r,n){var a=i(r)<_,o=t(a?r:r>0?r-b:r+b,n),s=(o[0]-o[1])*T,l=(o[0]+o[1])*T;if(a)return[s,l];var u=e*T,c=s>0^l>0?-1:1;return[c*s-v(l)*u,c*l-v(s)*u]}return t.invert&&(r.invert=function(r,n){var a=(r+n)*T,o=(n-r)*T,s=i(a)<.5*e&&i(o)<.5*e;if(!s){var l=e*T,u=a>0^o>0?-1:1,c=-u*r+(o>0?1:-1)*l,f=-u*n+(a>0?1:-1)*l;a=(-c-f)*T,o=(c-f)*T}var h=t.invert(a,o);return s||(h[0]+=a>0?b:-b),h}),(0,n.A)(r).rotate([-90,-90,45]).clipAngle(179.999)}function ai(){return ii(Le).scale(176.423)}function oi(){return ii(Ie).scale(111.48)}function si(t,e){if(!(0<=(e=+e)&&e<=20))throw new Error("invalid digits");function r(t){var r=t.length,n=2,i=new Array(r);for(i[0]=+t[0].toFixed(e),i[1]=+t[1].toFixed(e);n2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case"GeometryCollection":e={type:"GeometryCollection",geometries:t.geometries.map(o)};break;case"Point":e={type:"Point",coordinates:r(t.coordinates)};break;case"MultiPoint":e={type:t.type,coordinates:n(t.coordinates)};break;case"LineString":e={type:t.type,coordinates:i(t.coordinates)};break;case"MultiLineString":case"Polygon":e={type:t.type,coordinates:a(t.coordinates)};break;case"MultiPolygon":e={type:"MultiPolygon",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:"Feature",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case"Feature":return s(t);case"FeatureCollection":var l={type:"FeatureCollection",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t}function li(t){var e=g(t);function r(r,n){var i=e?y(r*e/2)/e:r/2;if(!n)return[2*i,-t];var o=2*a(i*g(n)),l=1/y(n);return[g(o)*l,n+(1-s(o))*l-t]}return r.invert=function(r,n){if(i(n+=t)m&&--c>0);var d=r*(f=y(u)),v=y(i(n)0?_:-_)*(f+o*(d-l)/2+o*o*(d-2*f+l)/2)]}function hi(){return(0,n.A)(fi).scale(152.63)}function pi(t,e){var r=function(t){function e(e,r){var n=s(r),i=(t-1)/(t-n*s(e));return[i*n*g(e),i*g(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=P(n),a=(t-P(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[o(e*a,i*P(1-a*a)),i?L(r*a/i):0]},e}(t);if(!e)return r;var n=s(e),i=g(e);function a(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return a.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},a}function di(){var t=2,e=0,r=(0,n.U)(pi),i=r(t,e);return i.distance=function(n){return arguments.length?r(t=+n,e):t},i.tilt=function(n){return arguments.length?r(t,e=n*E):e*S},i.scale(432.147).clipAngle(C(1/t)*S-1e-6)}ci.forEach(function(t){t[1]*=1.0144}),fi.invert=function(t,e){var r=e/_,n=90*r,a=h(18,i(n/5)),o=f(0,u(a));do{var s=ci[o][1],l=ci[o+1][1],c=ci[h(19,o+2)][1],p=c-s,d=c-2*l+s,v=2*(i(r)-l)/p,g=d/p,y=v*(1-g*v*(1-2*g*v));if(y>=0||1===o){n=(e>=0?5:-5)*(y+a);var m,b=50;do{y=(a=h(18,i(n)/5))-(o=u(a)),s=ci[o][1],l=ci[o+1][1],c=ci[h(19,o+2)][1],n-=(m=(e>=0?_:-_)*(l+y*(c-s)/2+y*y*(c-2*l+s)/2)-e)*S}while(i(m)>x&&--b>0);break}}while(--o>=0);var w=ci[o][0],T=ci[o+1][0],A=ci[h(19,o+2)][0];return[t/(T+y*(A-w)/2+y*y*(A-2*T+w)/2),n*E]};var vi=1e-4,gi=1e4,yi=-180,mi=yi+vi,xi=180,bi=xi-vi,_i=-90,wi=_i+vi,Ti=90,Ai=Ti-vi;function ki(t){return t.length>0}function Mi(t){return t===_i||t===Ti?[0,t]:[yi,(e=t,Math.floor(e*gi)/gi)];var e}function Si(t){var e=t[0],r=t[1],n=!1;return e<=mi?(e=yi,n=!0):e>=bi&&(e=xi,n=!0),r<=wi?(r=_i,n=!0):r>=Ai&&(r=Ti,n=!0),n?[e,r]:t}function Ei(t){return t.map(Si)}function Li(t,e,r){for(var n=0,i=t.length;n=bi||c<=wi||c>=Ai){a[o]=Si(l);for(var f=o+1;fmi&&pwi&&d=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=Mi(a[0][1]),o=-1,s=a.length}}}}function Ci(t){var e,r,n,i,a,o,s=t.length,l={},u={};for(e=0;e0?b-l:l)*S],c=(0,n.A)(t(s)).rotate(u),f=(0,_t.A)(u),h=c.center;return delete c.rotate,c.center=function(t){return arguments.length?h(f(t)):f.invert(h())},c.clipAngle(90)}function Fi(t){var e=s(t);function r(t,r){var n=(0,Rn.T)(t,r);return n[0]*=e,n}return r.invert=function(t,r){return Rn.T.invert(t/e,r)},r}function Bi(){return Ni([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Ni(t,e){return Ri(Fi,t,e)}function ji(t){if(!(t*=2))return Y.j;var e=-t/2,r=-e,n=t*t,i=y(r),a=.5/g(r);function l(i,a){var o=C(s(a)*s(i-e)),l=C(s(a)*s(i-r));return[((o*=o)-(l*=l))/(2*t),(a<0?-1:1)*P(4*n*l-(n-o+l)*(n-o+l))/(2*t)]}return l.invert=function(t,n){var l,u,c=n*n,f=s(P(c+(l=t+e)*l)),h=s(P(c+(l=t+r)*l));return[o(u=f-h,l=(f+h)*i),(n<0?-1:1)*C(P(l*l+u*u)*a)]},l}function Ui(){return Vi([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function Vi(t,e){return Ri(ji,t,e)}function Hi(t,e){if(i(e)m&&--l>0);return[v(t)*(P(a*a+4)+a)*b/4,_*s]};var ta=4*b+3*P(3),ea=2*P(2*b*P(3)/ta),ra=it(ea*P(3)/b,ea,ta/6);function na(){return(0,n.A)(ra).scale(176.84)}function ia(t,e){return[t*P(1-3*e*e/(b*b)),e]}function aa(){return(0,n.A)(ia).scale(152.63)}function oa(t,e){var r=s(e),n=s(t)*r,i=1-n,a=s(t=o(g(t)*r,-g(e))),l=g(t);return[l*(r=P(1-n*n))-a*i,-a*r-l*i]}function sa(){return(0,n.A)(oa).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)}function la(t,e){var r=R(t,e);return[(r[0]+t/_)/2,(r[1]+e)/2]}function ua(){return(0,n.A)(la).scale(158.837)}ia.invert=function(t,e){return[t/P(1-3*e*e/(b*b)),e]},oa.invert=function(t,e){var r=(t*t+e*e)/-2,n=P(-r*(2+r)),i=e*r+t*n,a=t*r-e*n,s=P(a*a+i*i);return[o(n*i,s*(1+r)),s?-L(n*a/s):0]},la.invert=function(t,e){var r=t,n=e,a=25;do{var o,l=s(n),u=g(n),c=g(2*n),f=u*u,h=l*l,p=g(r),d=s(r/2),v=g(r/2),y=v*v,x=1-h*d*d,b=x?C(l*d)*P(o=1/x):o=0,w=.5*(2*b*l*v+r/_)-t,T=.5*(b*u+n)-e,A=.5*o*(h*y+b*l*d*f)+.5/_,k=o*(p*c/4-b*u*v),M=.125*o*(c*v-b*u*h*p),S=.5*o*(f*d+b*y*l)+.5,E=k*M-S*A,L=(T*k-w*S)/E,O=(w*M-T*A)/E;r-=L,n-=O}while((i(L)>m||i(O)>m)&&--a>0);return[r,n]}},72804:function(t){t.exports=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],f=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+u*n,t[5]=o*i+c*n,t[6]=s*i+f*n,t[7]=l*i+h*n,t[8]=u*i-a*n,t[9]=c*i-o*n,t[10]=f*i-s*n,t[11]=h*i-l*n,t}},72930:function(t,e,r){"use strict";t.exports=r(59817)()?r(62019).Symbol:r(48771)},73125:function(t,e,r){"use strict";r.d(e,{Cx:function(){return c},EV:function(){return i},W8:function(){return o},ep:function(){return l},jf:function(){return a},ly:function(){return u},r8:function(){return s}});var n=r(18901);function i(t){return[(0,n.FP)(t[1],t[0]),(0,n.qR)(t[2])]}function a(t){var e=t[0],r=t[1],i=(0,n.gn)(r);return[i*(0,n.gn)(e),i*(0,n.F8)(e),(0,n.F8)(r)]}function o(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function s(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function l(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function u(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function c(t){var e=(0,n.RZ)(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}},73147:function(t,e,r){var n=r(50260),i=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(t){return"[Circular]"}default:return t}}),s=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),g(r)?n.showHidden=r:r&&e._extend(n,r),b(n.showHidden)&&(n.showHidden=!1),b(n.depth)&&(n.depth=2),b(n.colors)&&(n.colors=!1),b(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=c),h(n,t,n.depth)}function c(t,e){var r=u.styles[e];return r?"["+u.colors[r][0]+"m"+t+"["+u.colors[r][1]+"m":t}function f(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&k(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return x(i)||(i=h(t,i,n)),i}var a=function(t,e){if(b(e))return t.stylize("undefined","undefined");if(x(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return m(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}(t,r);if(a)return a;var o=Object.keys(r),s=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(o);if(t.showHidden&&(o=Object.getOwnPropertyNames(r)),A(r)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return p(r);if(0===o.length){if(k(r)){var l=r.name?": "+r.name:"";return t.stylize("[Function"+l+"]","special")}if(_(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(T(r))return t.stylize(Date.prototype.toString.call(r),"date");if(A(r))return p(r)}var u,c="",f=!1,w=["{","}"];return v(r)&&(f=!0,w=["[","]"]),k(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),_(r)&&(c=" "+RegExp.prototype.toString.call(r)),T(r)&&(c=" "+Date.prototype.toUTCString.call(r)),A(r)&&(c=" "+p(r)),0!==o.length||f&&0!=r.length?n<0?_(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=f?function(t,e,r,n,i){for(var a=[],o=0,s=e.length;o60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(u,c,w)):w[0]+c+w[1]}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(s=t.stylize("[Setter]","special")),L(n,i)||(o="["+i+"]"),s||(t.seen.indexOf(l.value)<0?(s=y(r)?h(t,l.value,null):h(t,l.value,r-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n")):s=t.stylize("[Circular]","special")),b(o)){if(a&&i.match(/^\d+$/))return s;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function v(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function y(t){return null===t}function m(t){return"number"==typeof t}function x(t){return"string"==typeof t}function b(t){return void 0===t}function _(t){return w(t)&&"[object RegExp]"===M(t)}function w(t){return"object"==typeof t&&null!==t}function T(t){return w(t)&&"[object Date]"===M(t)}function A(t){return w(t)&&("[object Error]"===M(t)||t instanceof Error)}function k(t){return"function"==typeof t}function M(t){return Object.prototype.toString.call(t)}function S(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!o[t])if(s.test(t)){var r=n.pid;o[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else o[t]=function(){};return o[t]},e.inspect=u,u.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]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(68397),e.isArray=v,e.isBoolean=g,e.isNull=y,e.isNullOrUndefined=function(t){return null==t},e.isNumber=m,e.isString=x,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=b,e.isRegExp=_,e.types.isRegExp=_,e.isObject=w,e.isDate=T,e.types.isDate=T,e.isError=A,e.types.isNativeError=A,e.isFunction=k,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(49513);var E=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function L(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[S((t=new Date).getHours()),S(t.getMinutes()),S(t.getSeconds())].join(":"),[t.getDate(),E[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(28480),e._extend=function(t,e){if(!e||!w(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var C="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function P(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(C&&t[C]){var e;if("function"!=typeof(e=t[C]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,C,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),i=[],a=0;at[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]o.width||u>o.height)&&(o=c)}return{width:o.width,height:o.height,variants:a,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}},73317:function(t,e,r){"use strict";var n=r(28209),i=r(31164),a=r(99012).axisHoverFormat,o=r(79335),s=r(72198),l=r(8357).extendFlat,u=r(7458).overrideAll,c=r(879).DASHES,f=i.line,h=i.marker,p=h.line,d=t.exports=u({x:i.x,x0:i.x0,dx:i.dx,y:i.y,y0:i.y0,dy:i.dy,xperiod:i.xperiod,yperiod:i.yperiod,xperiod0:i.xperiod0,yperiod0:i.yperiod0,xperiodalignment:i.xperiodalignment,yperiodalignment:i.yperiodalignment,xhoverformat:a("x"),yhoverformat:a("y"),text:i.text,hovertext:i.hovertext,textposition:i.textposition,textfont:i.textfont,mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"]},line:{color:f.color,width:f.width,shape:{valType:"enumerated",values:["linear","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},dash:{valType:"enumerated",values:s(c),dflt:"solid"}},marker:l({},o("marker"),{symbol:h.symbol,angle:h.angle,size:h.size,sizeref:h.sizeref,sizemin:h.sizemin,sizemode:h.sizemode,opacity:h.opacity,colorbar:h.colorbar,line:l({},o("marker.line"),{width:p.width})}),connectgaps:i.connectgaps,fill:l({},i.fill,{dflt:"none"}),fillcolor:i.fillcolor,selected:{marker:i.selected.marker,textfont:i.selected.textfont},unselected:{marker:i.unselected.marker,textfont:i.unselected.textfont},opacity:n.opacity},"calc","nested");d.x.editType=d.y.editType=d.x0.editType=d.y0.editType="calc+clearAxisTypes",d.hovertemplate=i.hovertemplate,d.texttemplate=i.texttemplate},73342:function(t,e,r){"use strict";var n=r(77371),i=1/0,a=i,o=-i,s=o,l={point:function(t,e){to&&(o=t),es&&(s=e)},lineStart:n.A,lineEnd:n.A,polygonStart:n.A,polygonEnd:n.A,result:function(){var t=[[i,a],[o,s]];return o=s=-(a=i=1/0),t}};e.A=l},73396:function(t,e,r){"use strict";var n=r(16534),i=r(5159),a=r(37070),o=r(46982),s=r(15181),l=s.strTranslate,u=r(88191),c=r(69562),f=r(3071),h=r(28730),p=r(5126).OPPOSITE_SIDE,d=/ [XY][0-9]* /;t.exports={draw:function(t,e,r){var v,g=r.propContainer,y=r.propName,m=r.placeholder,x=r.traceIndex,b=r.avoid||{},_=r.attributes,w=r.transform,T=r.containerGroup,A=t._fullLayout,k=1,M=!1,S=g.title,E=(S&&S.text?S.text:"").trim(),L=S&&S.font?S.font:{},C=L.family,P=L.size,O=L.color;"title.text"===y?v="titleText":-1!==y.indexOf("axis")?v="axisTitleText":y.indexOf(!0)&&(v="colorbarTitleText");var I=t._context.edits[v];""===E?k=0:E.replace(d," % ")===m.replace(d," % ")&&(k=.2,M=!0,I||(E="")),r._meta?E=s.templateString(E,r._meta):A._meta&&(E=s.templateString(E,A._meta));var D,z=E||I;T||(T=s.ensureSingle(A._infolayer,"g","g-"+e),D=A._hColorbarMoveTitle);var R=T.selectAll("text").data(z?[0]:[]);if(R.enter().append("text"),R.text(E).attr("class",e),R.exit().remove(),!z)return T;function F(t){s.syncOrAsync([B,N],t)}function B(e){var r;return!w&&D&&(w={}),w?(r="",w.rotate&&(r+="rotate("+[w.rotate,_.x,_.y]+")"),(w.offset||D)&&(r+=l(0,(w.offset||0)-(D||0)))):r=null,e.attr("transform",r),e.style({"font-family":C,"font-size":n.round(P,2)+"px",fill:c.rgb(O),opacity:k*c.opacity(O),"font-weight":a.fontWeight}).attr(_).call(f.convertToTspans,t),a.previousPromises(t)}function N(e){var r=n.select(e.node().parentNode);if(b&&b.selection&&b.side&&E){r.attr("transform",null);var a=p[b.side],o="left"===b.side||"top"===b.side?-1:1,c=i(b.pad)?b.pad:2,f=u.bBox(r.node()),h={t:0,b:0,l:0,r:0},d=t._fullLayout._reservedMargin;for(var v in d)for(var y in d[v]){var m=d[v][y];h[y]=Math.max(h[y],m)}var x={left:h.l,top:h.t,right:A.width-h.r,bottom:A.height-h.b},_=b.maxShift||o*(x[b.side]-f[b.side]),w=0;if(_<0)w=_;else{var T=b.offsetLeft||0,k=b.offsetTop||0;f.left-=T,f.right-=T,f.top-=k,f.bottom-=k,b.selection.each(function(){var t=u.bBox(this);s.bBoxIntersect(f,t,c)&&(w=Math.max(w,o*(t[b.side]-f[a])+c))}),w=Math.min(_,w),g._titleScoot=Math.abs(w)}if(w>0||_<0){var M={left:[-w,0],right:[w,0],top:[0,-w],bottom:[0,w]}[b.side];r.attr("transform",l(M[0],M[1]))}}}return R.call(F),I&&(E?R.on(".opacity",null):(k=0,M=!0,R.text(m).on("mouseover.opacity",function(){n.select(this).transition().duration(h.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){n.select(this).transition().duration(h.HIDE_PLACEHOLDER).style("opacity",0)})),R.call(f.makeEditable,{gd:t}).on("edit",function(e){void 0!==x?o.call("_guiRestyle",t,y,e,x):o.call("_guiRelayout",t,y,e)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(F)}).on("input",function(t){this.text(t||" ").call(f.positionText,_.x,_.y)})),R.classed("js-placeholder",M),T}}},73431:function(t,e,r){"use strict";t.exports={attributes:r(1798),supplyDefaults:r(82769),crossTraceDefaults:r(61608),calc:r(43116),plot:r(83326).plot,layerName:"contourlayer",style:r(62468),colorbar:r(60469),hoverPoints:r(55835),moduleType:"trace",name:"histogram2dcontour",basePlotModule:r(29435),categories:["cartesian","svg","2dMap","contour","histogram","showLegend"],meta:{}}},73553:function(t,e,r){"use strict";var n=r(15181),i=r(28418),a=r(52948),o=r(4868),s=r(68478),l=r(54563),u=r(46190),c=r(6680).PTS_LINESONLY,f=r(73990);function h(t,e,r,n){var i,a=n("r"),o=n("theta");if(a)o?i=Math.min(a.length,o.length):(i=a.length,n("theta0"),n("dtheta"));else{if(!o)return 0;i=e.theta.length,n("r0"),n("dr")}return e._length=i,i}t.exports={handleRThetaDefaults:h,supplyDefaults:function(t,e,r,p){function d(r,i){return n.coerce(t,e,f,r,i)}var v=h(0,e,0,d);if(v){d("thetaunit"),d("mode",v0)do{o.point(0===s||3===s?t:r,s>1?u:e)}while((s=(s+a+4)%4)!==l);else o.point(i[0],i[1])}function h(i,a){return(0,n.tn)(i[0]-t)0?0:3:(0,n.tn)(i[0]-r)0?2:1:(0,n.tn)(i[1]-e)0?1:0:a>0?3:2}function p(t,e){return d(t.x,e.x)}function d(t,e){var r=h(t,1),n=h(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(n){var h,d,v,g,y,m,x,b,_,w,T,A=n,k=(0,i.A)(),M={point:S,lineStart:function(){M.point=E,d&&d.push(v=[]),w=!0,_=!1,x=b=NaN},lineEnd:function(){h&&(E(g,y),m&&_&&k.rejoin(),h.push(k.result())),M.point=S,_&&A.lineEnd()},polygonStart:function(){A=k,h=[],d=[],T=!0},polygonEnd:function(){var e=function(){for(var e=0,r=0,n=d.length;ru&&(f-i)*(u-a)>(h-a)*(t-i)&&++e:h<=u&&(f-i)*(u-a)<(h-a)*(t-i)&&--e;return e}(),r=T&&e,i=(h=(0,o.Am)(h)).length;(r||i)&&(n.polygonStart(),r&&(n.lineStart(),f(null,null,1,n),n.lineEnd()),i&&(0,a.A)(h,p,e,f,n),n.polygonEnd()),A=n,h=d=v=null}};function S(t,e){c(t,e)&&A.point(t,e)}function E(n,i){var a=c(n,i);if(d&&v.push([n,i]),w)g=n,y=i,m=a,w=!1,a&&(A.lineStart(),A.point(n,i));else if(a&&_)A.point(n,i);else{var o=[x=Math.max(l,Math.min(s,x)),b=Math.max(l,Math.min(s,b))],f=[n=Math.max(l,Math.min(s,n)),i=Math.max(l,Math.min(s,i))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],u=0,c=1,f=e[0]-s,h=e[1]-l;if(o=r-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>c)return;o>u&&(u=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>c)return;o>u&&(u=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>c)return;o>u&&(u=o)}if(o=a-l,h||!(o<0)){if(o/=h,h<0){if(o>c)return;o>u&&(u=o)}else if(h>0){if(o0&&(t[0]=s+u*f,t[1]=l+u*h),c<1&&(e[0]=s+c*f,e[1]=l+c*h),!0}}}}}(o,f,t,e,r,u)?a&&(A.lineStart(),A.point(n,i),T=!1):(_||(A.lineStart(),A.point(o[0],o[1])),A.point(f[0],f[1]),a||A.lineEnd(),T=!1)}x=n,b=i,_=a}return M}}},74160:function(t,e,r){"use strict";var n=r(99603).readPaths,i=r(96989),a=r(7826).clearOutlineControllers,o=r(69562),s=r(88191),l=r(92444).arrayEditor,u=r(53812),c=u.getPathString;function f(t){var e=t._fullLayout;for(var r in a(t),e._selectionLayer.selectAll("path").remove(),e._plots){var n=e._plots[r].selectionLayer;n&&n.selectAll("path").remove()}for(var i=0;i=0;A--){var k=r.append("path").attr(g).style("opacity",A?.1:y).call(o.stroke,x).call(o.fill,m).call(s.dashLine,A?"solid":_,A?4+b:b);if(d(k,t,a),w){var M=l(t.layout,"selections",a);k.style({cursor:"move"});var S={element:k.node(),plotinfo:p,gd:t,editHelpers:M,isActiveSelection:!0},E=n(u,t);i(E,k,S)}else k.style("pointer-events",A?"all":"none");T[A]=k}var L=T[0];T[1].node().addEventListener("click",function(){return function(t,e){if(h(t)){var r=+e.node().getAttribute("data-index");if(r>=0){if(r===t._fullLayout._activeSelectionIndex)return void v(t);t._fullLayout._activeSelectionIndex=r,t._fullLayout._deactivateSelection=v,f(t)}}}(t,L)})}(t._fullLayout._selectionLayer)}function d(t,e,r){var n=r.xref+r.yref;s.setClipUrl(t,"clip"+e._fullLayout._uid+n,e)}function v(t){h(t)&&t._fullLayout._activeSelectionIndex>=0&&(a(t),delete t._fullLayout._activeSelectionIndex,f(t))}t.exports={draw:f,drawOne:p,activateLastSelection:function(t){if(h(t)){var e=t._fullLayout.selections.length-1;t._fullLayout._activeSelectionIndex=e,t._fullLayout._deactivateSelection=v,f(t)}}}},74176:function(t){"use strict";t.exports=function(t,e,r,n,i){var a=e-2,o=r-2;return n&&i?function(e,r,n){var i,s,l,u,c,f;e||(e=[]);var h=Math.max(0,Math.min(Math.floor(r),a)),p=Math.max(0,Math.min(Math.floor(n),o)),d=Math.max(0,Math.min(1,r-h)),v=Math.max(0,Math.min(1,n-p));h*=3,p*=3;var g=d*d,y=g*d,m=1-d,x=m*m,b=x*m,_=v*v,w=_*v,T=1-v,A=T*T,k=A*T;for(f=0;f=10)return null;for(var r=1/0,a=-1/0,o=t.length,s=0;s=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function d(t,e){e=e||{};for(var r=t.domain,o=t.range,l=o.length,u=new Array(l),c=0;c 1.5);\nbool isContext = (drwLayer < 0.5);\n\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\n\nfloat val(mat4 p, mat4 v) {\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\n}\n\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\n return y1 * (1.0 - ratio) + y2 * ratio;\n}\n\nint iMod(int a, int b) {\n return a - b * (a / b);\n}\n\nbool fOutside(float p, float lo, float hi) {\n return (lo < hi) && (lo > p || p > hi);\n}\n\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\n return (\n fOutside(p[0], lo[0], hi[0]) ||\n fOutside(p[1], lo[1], hi[1]) ||\n fOutside(p[2], lo[2], hi[2]) ||\n fOutside(p[3], lo[3], hi[3])\n );\n}\n\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\n return (\n vOutside(p[0], lo[0], hi[0]) ||\n vOutside(p[1], lo[1], hi[1]) ||\n vOutside(p[2], lo[2], hi[2]) ||\n vOutside(p[3], lo[3], hi[3])\n );\n}\n\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\n return mOutside(A, loA, hiA) ||\n mOutside(B, loB, hiB) ||\n mOutside(C, loC, hiC) ||\n mOutside(D, loD, hiD);\n}\n\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\n mat4 pnts[4];\n pnts[0] = A;\n pnts[1] = B;\n pnts[2] = C;\n pnts[3] = D;\n\n for(int i = 0; i < 4; ++i) {\n for(int j = 0; j < 4; ++j) {\n for(int k = 0; k < 4; ++k) {\n if(0 == iMod(\n int(255.0 * texture2D(maskTexture,\n vec2(\n (float(i * 2 + j / 2) + 0.5) / 8.0,\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\n ))[3]\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\n 2\n )) return true;\n }\n }\n }\n return false;\n}\n\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\n float x = 0.5 * sign(v) + 0.5;\n float y = axisY(x, A, B, C, D);\n float z = 1.0 - abs(v);\n\n z += isContext ? 0.0 : 2.0 * float(\n outsideBoundingBox(A, B, C, D) ||\n outsideRasterMask(A, B, C, D)\n );\n\n return vec4(\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\n z,\n 1.0\n );\n}\n\nvoid main() {\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\n\n float v = colors[3];\n\n gl_Position = position(isContext, v, A, B, C, D);\n\n fragColor =\n isContext ? vec4(contextColor) :\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\n}\n"]),a=n(["precision highp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nvoid main() {\n gl_FragColor = fragColor;\n}\n"]),o=r(46683).maxDimensionCount,s=r(15181),l=new Uint8Array(4),u=new Uint8Array(4),c={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function f(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function h(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var u=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],f(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),r.clearOnly||(a.count=2*u,a.offset=2*l*n,e(a),l*n+u>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;ac&&(c=t[i].dim1.canvasX,o=i);0===s&&f(A,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&n2)return u[e]=2|u[e],h.set(t,null);if(f){for(o=e;o=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-u)*(i-c)/(o-c)+u-n>t&&(s=!s),a=u,o=c}return s}};return e}},76252:function(t,e,r){"use strict";var n=r(42964);t.exports=function(t){if(!n(t))throw new TypeError("Cannot use null or undefined");return t}},76347:function(t){"use strict";t.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}},76492:function(t,e,r){"use strict";var n=r(46982),i=r(37070),a=r(93003),o=r(98248),s=r(87099).eraseActiveShape,l=r(15181),u=l._,c=t.exports={};function f(t,e){var r,i,o=e.currentTarget,s=o.getAttribute("data-attr"),l=o.getAttribute("data-val")||!0,u=t._fullLayout,c={},f=a.list(t,null,!0),h=u._cartesianSpikesEnabled;if("zoom"===s){var p,d="in"===l?.5:2,v=(1+d)/2,g=(1-d)/2;for(i=0;i4*e&&y--){var w=o+p,T=s+v,A=u+g,k=(0,l.RZ)(w*w+T*T+A*A),M=(0,l.qR)(A/=k),S=(0,l.tn)((0,l.tn)(A)-1)e||(0,l.tn)((x*P+b*O)/_-.5)>.3||o*p+s*v+u*g2?t[2]%360*l.F2:0,V()):[L*l.uj,C*l.uj,P*l.uj]},j.angle=function(t){return arguments.length?(O=t%360*l.F2,V()):O*l.uj},j.reflectX=function(t){return arguments.length?(I=t?-1:1,V()):I<0},j.reflectY=function(t){return arguments.length?(D=t?-1:1,V()):D<0},j.precision=function(t){return arguments.length?(x=v(b,N=t*t),H()):(0,l.RZ)(N)},j.fitExtent=function(t,e){return(0,f.sp)(j,t,e)},j.fitSize=function(t,e){return(0,f.Hv)(j,t,e)},j.fitWidth=function(t,e){return(0,f.G0)(j,t,e)},j.fitHeight=function(t,e){return(0,f.FL)(j,t,e)},function(){return e=t.apply(this,arguments),j.invert=e.invert&&U,V()}}},76613:function(t,e,r){"use strict";var n=r(89953);t.exports=function(t){if(!n(t))throw new TypeError(t+" is not iterable");return t}},76780:function(t,e,r){"use strict";var n=r(16534),i=r(69562),a=r(15181),o=r(95304),s=r(70394).resizeText,l=r(78999);function u(t,e,r,n,s){var u,c,f=(s||{}).hovered,h=e.data.data,p=h.i,d=h.color,v=o.isHierarchyRoot(e),g=1;if(f)u=r._hovered.marker.line.color,c=r._hovered.marker.line.width;else if(v&&d===r.root.color)g=100,u="rgba(0,0,0,0)",c=0;else if(u=a.castOption(r,p,"marker.line.color")||i.defaultLine,c=a.castOption(r,p,"marker.line.width")||0,!r._hasColorscale&&!e.onPathbar){var y=r.marker.depthfade;if(y){var m,x=i.combine(i.addOpacity(r._backgroundColor,.75),d);if(!0===y){var b=o.getMaxDepth(r);m=isFinite(b)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else m=e.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var _=0;_v&&(y=Math.max(y,Math.abs(t[a][o]-d)/(g-v))))}return y}t.exports=function(t,e){var r,i=1;for(o(t,e),r=0;r.01;r++)i=o(t,e,a(i));return i>.01&&n.log("interp2d didn't converge quickly",i),t}},77042:function(t,e,r){"use strict";var n=r(46982),i=r(15181);t.exports=function(t,e,r,a){var o=r("x"),s=r("open"),l=r("high"),u=r("low"),c=r("close");if(r("hoverlabel.split"),n.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x"],a),s&&l&&u&&c){var f=Math.min(s.length,l.length,u.length,c.length);return o&&(f=Math.min(f,i.minRowLength(o))),e._length=f,f}}},77184:function(t){"use strict";t.exports=RangeError},77196:function(t,e,r){"use strict";var n=r(46982).traceIs,i=r(50446);function a(t){return{v:"x",h:"y"}[t.orientation||"v"]}function o(t,e){var r=a(t),i=n(t,"box-violin"),o=n(t._fullInput||{},"candlestick");return i&&!o&&e===r&&void 0===t[r]&&void 0===t[r+"0"]}t.exports=function(t,e,r,s){r("autotypenumbers",s.autotypenumbersDflt),"-"===r("type",(s.splomStash||{}).type)&&(function(t,e){if("-"===t.type){var r,s=t._id,l=s.charAt(0);-1!==s.indexOf("scene")&&(s=l);var u=function(t,e,r){for(var n=0;n0&&(i["_"+r+"axes"]||{})[e])return i;if((i[r+"axis"]||r)===e){if(o(i,r))return i;if((i[r]||[]).length||i[r+"0"])return i}}}(e,s,l);if(u)if("histogram"!==u.type||l!=={v:"y",h:"x"}[u.orientation||"v"]){var c=l+"calendar",f=u[c],h={noMultiCategory:!n(u,"cartesian")||n(u,"noMultiCategory")};if("box"===u.type&&u._hasPreCompStats&&l==={h:"x",v:"y"}[u.orientation||"v"]&&(h.noMultiCategory=!0),h.autotypenumbers=t.autotypenumbers,o(u,l)){var p=a(u),d=[];for(r=0;r=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}},77656:function(t,e,r){"use strict";var n=r(15181),i=r(52543);t.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r("treemapcolorway",e.colorway),r("extendtreemapcolors")}},77828:function(t){"use strict";t.exports=function(t,e,r){return e&&r?function(e,r,n,i,a){var o,s,l,u,c,f;e||(e=[]),r*=3,n*=3;var h=i*i,p=1-i,d=p*p,v=p*i*2,g=-3*d,y=3*(d-v),m=3*(v-h),x=3*h,b=a*a,_=b*a,w=1-a,T=w*w,A=T*w;for(f=0;f-1?i(e):null;if(r&&r.name){var s,l,u,c,f=t.indexOf("%n");if(f>-1)return a>-1?(f>a?(s=o,u=a,l=r.name,c=f):(s=r.name,u=f,l=o,c=a),t.slice(0,u)+s+t.slice(u+2,c)+l+t.slice(c+2)):t.slice(0,f)+r.name+t.slice(f+2)}return a>-1?t.slice(0,a)+o+t.slice(a+2):t}},78030:function(t,e,r){"use strict";var n=r(99555),i=r(76056),a=i([n("%String.prototype.indexOf%")]);t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&a(t,".prototype.")>-1?i([r]):r}},78032:function(t,e,r){"use strict";var n=r(91300),i=r(83998),a=r(18610),o=r(13625),s=r(39555),l=r(38604),u=r(93230),c=r(34820),f=c.float32,h=c.fract32,p=r(33253),d=r(56895),v=r(94857);function g(t,e){if(!(this instanceof g))return new g(t,e);if("function"==typeof t?(e||(e={}),e.regl=t):e=t,e.length&&(e.positions=e),!(t=e.regl).hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");this.gl=t._gl,this.regl=t,this.passes=[],this.shaders=g.shaders.has(t)?g.shaders.get(t):g.shaders.set(t,g.createShaders(t)).get(t),this.update(e)}t.exports=g,g.dashMult=2,g.maxPatternLength=256,g.precisionThreshold=3e6,g.maxPoints=1e4,g.maxLines=2048,g.shaders=new p,g.createShaders=function(t){var e,r=t.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]}),n={primitive:"triangle strip",instances:t.prop("count"),count:4,offset:0,uniforms:{miterMode:function(t,e){return"round"===e.join?2:1},miterLimit:t.prop("miterLimit"),scale:t.prop("scale"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),translate:t.prop("translate"),thickness:t.prop("thickness"),dashTexture:t.prop("dashTexture"),opacity:t.prop("opacity"),pixelRatio:t.context("pixelRatio"),id:t.prop("id"),dashLength:t.prop("dashLength"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]},depth:t.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:function(t,e){return!e.overlay}},stencil:{enable:!1},scissor:{enable:!0,box:t.prop("viewport")},viewport:t.prop("viewport")},i=t(a({vert:"\nprecision highp float;\n\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\nattribute vec4 color;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\n\t// the order is important\n\treturn position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n}\n\nvoid main() {\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineOffset = lineTop * 2. - 1.;\n\n\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\n\ttangent = normalize(diff * scale * viewport.zw);\n\tvec2 normal = vec2(-tangent.y, tangent.x);\n\n\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\n\t\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\n\n\t\t+ thickness * normal * .5 * lineOffset / viewport.zw;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}\n",frag:"\nprecision highp float;\n\nuniform float dashLength, pixelRatio, thickness, opacity, id;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvoid main() {\n\tfloat alpha = 1.;\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n",attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:t.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:t.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:t.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},n));try{e=t(a({cull:{enable:!0,face:"back"},vert:"\nprecision highp float;\n\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\nattribute vec4 aColor, bColor;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, translate;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\nuniform float miterLimit, miterMode;\n\nvarying vec4 fragColor;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 tangent;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nconst float REVERSE_THRESHOLD = -.875;\nconst float MIN_DIFF = 1e-6;\n\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\n// TODO: precalculate dot products, normalize things beforehead etc.\n// TODO: refactor to rectangular algorithm\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nbool isNaN( float val ){\n return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\n}\n\nvoid main() {\n\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\n\n vec2 adjustedScale;\n adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\n adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\n\n vec2 scaleRatio = adjustedScale * viewport.zw;\n\tvec2 normalWidth = thickness / scaleRatio;\n\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineBot = 1. - lineTop;\n\n\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\n\n\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\n\n\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\n\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\n\n\n\tvec2 prevDiff = aCoord - prevCoord;\n\tvec2 currDiff = bCoord - aCoord;\n\tvec2 nextDiff = nextCoord - bCoord;\n\n\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\n\tvec2 currTangent = normalize(currDiff * scaleRatio);\n\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\n\n\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\n\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\n\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\n\n\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\n\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\n\n\t// collapsed/unidirectional segment cases\n\t// FIXME: there should be more elegant solution\n\tvec2 prevTanDiff = abs(prevTangent - currTangent);\n\tvec2 nextTanDiff = abs(nextTangent - currTangent);\n\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\n\t\tstartJoinDirection = currNormal;\n\t}\n\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\n\t\tendJoinDirection = currNormal;\n\t}\n\tif (aCoord == bCoord) {\n\t\tendJoinDirection = startJoinDirection;\n\t\tcurrNormal = prevNormal;\n\t\tcurrTangent = prevTangent;\n\t}\n\n\ttangent = currTangent;\n\n\t//calculate join shifts relative to normals\n\tfloat startJoinShift = dot(currNormal, startJoinDirection);\n\tfloat endJoinShift = dot(currNormal, endJoinDirection);\n\n\tfloat startMiterRatio = abs(1. / startJoinShift);\n\tfloat endMiterRatio = abs(1. / endJoinShift);\n\n\tvec2 startJoin = startJoinDirection * startMiterRatio;\n\tvec2 endJoin = endJoinDirection * endMiterRatio;\n\n\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\n\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\n\tstartBotJoin = -startTopJoin;\n\n\tendTopJoin = sign(endJoinShift) * endJoin * .5;\n\tendBotJoin = -endTopJoin;\n\n\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\n\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\n\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\n\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\n\n\t//miter anti-clipping\n\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\n\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\n\n\t//prevent close to reverse direction switch\n\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal);\n\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal);\n\n\tif (prevReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\n\t\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\n\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\n\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}\n",frag:"\nprecision highp float;\n\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n",attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},n))}catch(t){e=i}return{fill:t({primitive:"triangle",elements:function(t,e){return e.triangles},offset:0,vert:"\nprecision highp float;\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio, id;\nuniform vec4 viewport;\nuniform float opacity;\n\nvarying vec4 fragColor;\n\nconst float MAX_LINES = 256.;\n\nvoid main() {\n\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\n\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n\tfragColor.a *= opacity;\n}\n",frag:"\nprecision highp float;\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n}\n",uniforms:{scale:t.prop("scale"),color:t.prop("fill"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),translate:t.prop("translate"),opacity:t.prop("opacity"),pixelRatio:t.context("pixelRatio"),id:t.prop("id"),viewport:function(t,e){return[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]}},attributes:{position:{buffer:t.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:t.prop("positionFractBuffer"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:i,miter:e}},g.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},g.prototype.render=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];e.length&&(t=this).update.apply(t,e),this.draw()},g.prototype.draw=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return(e.length?e:this.passes).forEach(function(e,r){var n;if(e&&Array.isArray(e))return(n=t).draw.apply(n,e);"number"==typeof e&&(e=t.passes[e]),e&&e.count>1&&e.opacity&&(t.regl._refresh(),e.fill&&e.triangles&&e.triangles.length>2&&t.shaders.fill(e),e.thickness&&(e.scale[0]*e.viewport.width>g.precisionThreshold||e.scale[1]*e.viewport.height>g.precisionThreshold||"rect"===e.join||!e.join&&(e.thickness<=2||e.count>=g.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))}),this},g.prototype.update=function(t){var e=this;if(t){null!=t.length?"number"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);var r=this.regl,c=this.gl;if(t.forEach(function(t,p){var y=e.passes[p];if(void 0!==t)if(null!==t){if("number"==typeof t[0]&&(t={positions:t}),t=o(t,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),y||(e.passes[p]=y={id:p,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:r.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:r.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:r.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:r.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},t=a({},g.defaults,t)),null!=t.thickness&&(y.thickness=parseFloat(t.thickness)),null!=t.opacity&&(y.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(y.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(y.overlay=!!t.overlay,p=z});(O=O.slice(0,R)).push(z)}for(var F=function(t){var e=A.slice(2*D,2*O[t]).concat(z?A.slice(2*z):[]),r=(y.hole||[]).map(function(e){return e-z+(O[t]-D)}),n=l(e,r);n=n.map(function(e){return e+D+(e+D>1,c=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=256*a+t[e+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=256*o+t[e+f],f+=h,c-=8);if(0===a)a=1-u;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=u}return(p?-1:1)*o*Math.pow(2,a-n)},e.write=function(t,e,r,n,i,a){var o,s,l,u=8*a-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,u-=8);t[r+p-d]|=128*v}},78290:function(t,e,r){"use strict";t.exports=r(96361)},78463:function(t,e,r){"use strict";r.d(e,{A:function(){return o},P:function(){return a}});var n=r(76610),i=r(18901);function a(t,e){var r=e*e,n=r*r;return[t*(.8707-.131979*r+n*(n*(.003971*r-.001529*n)-.013791)),e*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))]}function o(){return(0,n.A)(a).scale(175.295)}a.invert=function(t,e){var r,n=e,a=25;do{var o=n*n,s=o*o;n-=r=(n*(1.007226+o*(.015085+s*(.028874*o-.044475-.005916*s)))-e)/(1.007226+o*(.045255+s*(.259866*o-.311325-.005916*11*s)))}while((0,i.tn)(r)>i.Ni&&--a>0);return[t/(.8707+(o=n*n)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),n]}},78475:function(t){t.exports=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],u=e[8],c=e[9],f=e[10],h=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i-u*n,t[1]=o*i-c*n,t[2]=s*i-f*n,t[3]=l*i-h*n,t[8]=a*n+u*i,t[9]=o*n+c*i,t[10]=s*n+f*i,t[11]=l*n+h*i,t}},78534:function(t,e,r){"use strict";var n=r(15181),i=r(82945),a=r(79444).N,o=r(92444),s=r(46716),l=r(74563),u=r(5005),c=r(31357),f=r(14736),h=r(25124);function p(t,e){function r(r,a){return n.coerce(t,e,i.gauge.steps,r,a)}r("color"),r("line.color"),r("line.width"),r("range"),r("thickness")}t.exports={supplyDefaults:function(t,e,r,d){function v(r,a){return n.coerce(t,e,i,r,a)}a(e,d,v),v("mode"),e._hasNumber=-1!==e.mode.indexOf("number"),e._hasDelta=-1!==e.mode.indexOf("delta"),e._hasGauge=-1!==e.mode.indexOf("gauge");var g=v("value");e._range=[0,"number"==typeof g?1.5*g:1];var y,m,x,b,_,w,T=new Array(2);function A(t,e){return n.coerce(x,b,i.gauge,t,e)}function k(t,e){return n.coerce(_,w,i.gauge.axis,t,e)}if(e._hasNumber&&(v("number.valueformat"),v("number.font.color",d.font.color),v("number.font.family",d.font.family),v("number.font.size"),void 0===e.number.font.size&&(e.number.font.size=l.defaultNumberFontSize,T[0]=!0),v("number.prefix"),v("number.suffix"),y=e.number.font.size),e._hasDelta&&(v("delta.font.color",d.font.color),v("delta.font.family",d.font.family),v("delta.font.size"),void 0===e.delta.font.size&&(e.delta.font.size=(e._hasNumber?.5:1)*(y||l.defaultNumberFontSize),T[1]=!0),v("delta.reference",e.value),v("delta.relative"),v("delta.valueformat",e.delta.relative?"2%":""),v("delta.increasing.symbol"),v("delta.increasing.color"),v("delta.decreasing.symbol"),v("delta.decreasing.color"),v("delta.position"),v("delta.prefix"),v("delta.suffix"),m=e.delta.font.size),e._scaleNumbers=(!e._hasNumber||T[0])&&(!e._hasDelta||T[1])||!1,v("title.font.color",d.font.color),v("title.font.family",d.font.family),v("title.font.size",.25*(y||m||l.defaultNumberFontSize)),v("title.text"),e._hasGauge){(x=t.gauge)||(x={}),b=o.newContainer(e,"gauge"),A("shape"),(e._isBullet="bullet"===e.gauge.shape)||v("title.align","center"),(e._isAngular="angular"===e.gauge.shape)||v("align","center"),A("bgcolor",d.paper_bgcolor),A("borderwidth"),A("bordercolor"),A("bar.color"),A("bar.line.color"),A("bar.line.width"),A("bar.thickness",l.valueThickness*("bullet"===e.gauge.shape?.5:1)),s(x,b,{name:"steps",handleItemDefaults:p}),A("threshold.value"),A("threshold.thickness"),A("threshold.line.width"),A("threshold.line.color"),_={},x&&(_=x.axis||{}),w=o.newContainer(b,"axis"),k("visible"),e._range=k("range",e._range);var M={outerTicks:!0};u(_,w,k,"linear"),h(_,w,k,"linear",M),f(_,w,k,"linear",M),c(_,w,k,M)}else v("title.align","center"),v("align","center"),e._isAngular=e._isBullet=!1;e._length=null}}},78692:function(t,e,r){"use strict";var n,i=r(50260);function a(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var o=r(59487),s=Symbol("lastResolve"),l=Symbol("lastReject"),u=Symbol("error"),c=Symbol("ended"),f=Symbol("lastPromise"),h=Symbol("handlePromise"),p=Symbol("stream");function d(t,e){return{value:t,done:e}}function v(t){var e=t[s];if(null!==e){var r=t[p].read();null!==r&&(t[f]=null,t[s]=null,t[l]=null,e(d(r,!1)))}}function g(t){i.nextTick(v,t)}var y=Object.getPrototypeOf(function(){}),m=Object.setPrototypeOf((a(n={get stream(){return this[p]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(d(void 0,!0));if(this[p].destroyed)return new Promise(function(e,r){i.nextTick(function(){t[u]?r(t[u]):e(d(void 0,!0))})});var r,n=this[f];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[c]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var a=this[p].read();if(null!==a)return Promise.resolve(d(a,!1));r=new Promise(this[h])}return this[f]=r,r}},Symbol.asyncIterator,function(){return this}),a(n,"return",function(){var t=this;return new Promise(function(e,r){t[p].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),y);t.exports=function(t){var e,r=Object.create(m,(a(e={},p,{value:t,writable:!0}),a(e,s,{value:null,writable:!0}),a(e,l,{value:null,writable:!0}),a(e,u,{value:null,writable:!0}),a(e,c,{value:t._readableState.endEmitted,writable:!0}),a(e,h,{value:function(t,e){var n=r[p].read();n?(r[f]=null,r[s]=null,r[l]=null,t(d(n,!1))):(r[s]=t,r[l]=e)},writable:!0}),e));return r[f]=null,o(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[l];return null!==e&&(r[f]=null,r[s]=null,r[l]=null,e(t)),void(r[u]=t)}var n=r[s];null!==n&&(r[f]=null,r[s]=null,r[l]=null,n(d(void 0,!0))),r[c]=!0}),t.on("readable",g.bind(null,r)),r}},78782:function(t,e,r){"use strict";r.d(e,{Ay:function(){return x},B0:function(){return h},Y7:function(){return d}});var n,i,a,o,s,l=r(62747),u=r(18901),c=r(77371),f=r(98683),h=(0,l.A)(),p=(0,l.A)(),d={point:c.A,lineStart:c.A,lineEnd:c.A,polygonStart:function(){h.reset(),d.lineStart=v,d.lineEnd=g},polygonEnd:function(){var t=+h;p.add(t<0?u.FA+t:t),this.lineStart=this.lineEnd=this.point=c.A},sphere:function(){p.add(u.FA)}};function v(){d.point=y}function g(){m(n,i)}function y(t,e){d.point=m,n=t,i=e,t*=u.F2,e*=u.F2,a=t,o=(0,u.gn)(e=e/2+u.gz),s=(0,u.F8)(e)}function m(t,e){t*=u.F2,e=(e*=u.F2)/2+u.gz;var r=t-a,n=r>=0?1:-1,i=n*r,l=(0,u.gn)(e),c=(0,u.F8)(e),f=s*c,p=o*l+f*(0,u.gn)(i),d=f*n*(0,u.F8)(i);h.add((0,u.FP)(d,p)),a=t,o=l,s=c}function x(t){return p.reset(),(0,f.A)(t,d),2*p}},78920:function(t,e,r){"use strict";var n=r(6537),i=r(97507),a=Function.prototype.call;t.exports=function(t,e){var r={},o=arguments[2];return n(e),i(t,function(t,n,i,s){r[n]=a.call(e,o,t,n,i,s)}),r}},78945:function(t){"use strict";t.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:"−"}},78999:function(t,e,r){"use strict";var n=r(88191),i=r(69562);t.exports=function(t,e,r,a,o){var s=e.data.data,l=s.i,u=o||s.color;if(l>=0){e.i=s.i;var c=r.marker;c.pattern&&c.colors&&c.pattern.shape||(c.color=u,e.color=u),n.pointStyle(t,r,a,e)}else i.fill(t,u)}},79066:function(t,e,r){var n=r(18610),i=r(9915);n(i.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"}),i.local=i.regionalOptions[""],n(i.cdate.prototype,{formatDate:function(t,e){return"string"!=typeof t&&(e=t,t=""),this._calendar.formatDate(t||"",this,e)}}),n(i.baseCalendar.prototype,{UNIX_EPOCH:i.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:i.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(t,e,r){if("string"!=typeof t&&(r=e,e=t,t=""),!e)return"";if(e.calendar()!==this)throw i.local.invalidFormat||i.regionalOptions[""].invalidFormat;t=t||this.local.dateFormat;for(var n=(r=r||{}).dayNamesShort||this.local.dayNamesShort,a=r.dayNames||this.local.dayNames,o=r.monthNumbers||this.local.monthNumbers,s=r.monthNamesShort||this.local.monthNamesShort,l=r.monthNames||this.local.monthNames,u=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;x+n1}),c=function(t,e,r,n){var i=""+e;if(u(t,n))for(;i.length1},x=function(t,r){var n=m(t,r),a=[2,3,n?4:2,n?4:2,10,11,20]["oyYJ@!".indexOf(t)+1],o=new RegExp("^-?\\d{1,"+a+"}"),s=e.substring(k).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[""].missingNumberAt).replace(/\{0\}/,k);return k+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if("function"==typeof l){m("m");var t=l.call(b,e.substring(k));return k+=t.length,t}return x("m")},w=function(t,r,n,a){for(var o=m(t,a)?n:r,s=0;s-1){p=1,d=v;for(var E=this.daysInMonth(h,p);d>E;E=this.daysInMonth(h,p))p++,d-=E}return f>-1?this.fromJD(f):this.newDate(h,p,d)},determineDate:function(t,e,r,n,i){r&&"object"!=typeof r&&(i=n,n=r,r=null),"string"!=typeof n&&(i=n,n="");var a=this;return e=e?e.newDate():null,null==t?e:"string"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch(t){}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||"d"),s=o.exec(t);return e}(t):"number"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,"d"):a.newDate(t)}})},79095:function(t,e,r){"use strict";var n=r(5159);t.exports=function(t,e){if(t>0)return Math.log(t)/Math.LN10;var r=Math.log(Math.min(e[0],e[1]))/Math.LN10;return n(r)||(r=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),r}},79130:function(t,e){"use strict";e.z=function(t,e){for(var r,n,i=0;i=c[0]&&t.x<=c[1]&&t.y>=f[0]&&t.y<=f[1]}),v=Math.ceil(d.length/p),g=0;o.forEach(function(t,r){var n=t[0].trace;u.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function x(t){return m?t.transition():t}var b=r.xaxis,_=r.yaxis,w=f[0].trace,T=w.line,A=n.select(d),k=o(A,"g","errorbars"),M=o(A,"g","lines"),S=o(A,"g","points"),E=o(A,"g","text");if(i.getComponentMethod("errorbars","plot")(t,k,r,v),!0===w.visible){var L,C;x(A).style("opacity",w.opacity);var P=w.fill.charAt(w.fill.length-1);"x"!==P&&"y"!==P&&(P=""),f[0][r.isRangePlot?"nodeRangePlot3":"node3"]=A;var O,I,D="",z=[],R=w._prevtrace;R&&(D=R._prevRevpath||"",C=R._nextFill,z=R._polygons);var F,B,N,j,U,V,H,q="",G="",Y=[],W=a.noop;if(L=w._ownFill,u.hasLines(w)||"none"!==w.fill){for(C&&C.datum(f),-1!==["hv","vh","hvh","vhv"].indexOf(T.shape)?(F=l.steps(T.shape),B=l.steps(T.shape.split("").reverse().join(""))):F=B="spline"===T.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?l.smoothclosed(t.slice(1),T.smoothing):l.smoothopen(t,T.smoothing)}:function(t){return"M"+t.join("L")},N=function(t){return B(t.reverse())},Y=c(f,{xaxis:b,yaxis:_,trace:w,connectGaps:w.connectgaps,baseTolerance:Math.max(T.width||1,3)/4,shape:T.shape,backoff:T.backoff,simplify:T.simplify,fill:w.fill}),H=w._polygons=new Array(Y.length),g=0;g0,g=f(t,e,r);(c=i.selectAll("g.trace").data(g,function(t){return t[0].trace.uid})).enter().append("g").attr("class",function(t){return"trace scatter trace"+t[0].trace.uid}).style("stroke-miterlimit",2),c.order(),function(t,e,r){e.each(function(e){var i=o(n.select(this),"g","fills");l.setClipUrl(i,r.layerClipId,t);var a=e[0].trace,u=[];a._ownfill&&u.push("_ownFill"),a._nexttrace&&u.push("_nextFill");var c=i.selectAll("g").data(u,s);c.enter().append("g"),c.exit().each(function(t){a[t]=null}).remove(),c.order().each(function(t){a[t]=o(n.select(this),"path","js-fill")})})}(t,c,e),v?(u&&(h=u()),n.transition().duration(a.duration).ease(a.easing).each("end",function(){h&&h()}).each("interrupt",function(){h&&h()}).each(function(){i.selectAll("g.trace").each(function(r,n){p(t,n,e,r,g,this,a)})})):c.each(function(r,n){p(t,n,e,r,g,this,a)}),d&&c.exit().remove(),i.selectAll("path:not([d])").remove()}},79923:function(t,e,r){"use strict";var n=r(69562),i=r(92444),a=r(15181),o=r(13516),s=r(14736),l=r(25124),u=r(31357),c=r(5005),f=r(16361),h=r(4964),p=["aaxis","baxis","caxis"];function d(t,e,r,a){var o,s,l,u=r("bgcolor"),c=r("sum");a.bgColor=n.combine(u,a.paper_bgcolor);for(var f=0;f=c&&(h.min=0,d.min=0,g.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function v(t,e,r,n){var i=h[e._name];function o(r,n){return a.coerce(t,e,i,r,n)}o("uirevision",n.uirevision),e.type="linear";var p=o("color"),d=p!==i.color.dflt?p:r.font.color,v=e._name.charAt(0).toUpperCase(),g="Component "+v,y=o("title.text",g);e._hovertitle=y===g?y:v,a.coerceFont(o,"title.font",{family:r.font.family,size:a.bigFont(r.font.size),color:d}),o("min"),c(t,e,o,"linear"),l(t,e,o,"linear"),s(t,e,o,"linear"),u(t,e,o,{outerTicks:!0}),o("showticklabels")&&(a.coerceFont(o,"tickfont",{family:r.font.family,size:r.font.size,color:d}),o("tickangle"),o("tickformat")),f(t,e,o,{dfltColor:p,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),o("hoverformat"),o("layer")}t.exports=function(t,e,r){o(t,e,r,{type:"ternary",attributes:h,handleDefaults:d,font:e.font,paper_bgcolor:e.paper_bgcolor})}},80033:function(t){function e(t,e,r){var n=[];return t.forEach(function(t){var i=(t.myFill.above?8:0)+(t.myFill.below?4:0)+(t.otherFill&&t.otherFill.above?2:0)+(t.otherFill&&t.otherFill.below?1:0);0!==e[i]&&n.push({id:r?r.segmentId():-1,start:t.start,end:t.end,myFill:{above:1===e[i],below:2===e[i]},otherFill:null})}),r&&r.selected(n),n}var r={union:function(t,r){return e(t,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],r)},intersect:function(t,r){return e(t,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],r)},difference:function(t,r){return e(t,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],r)},differenceRev:function(t,r){return e(t,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],r)},xor:function(t,r){return e(t,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],r)}};t.exports=r},80079:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"ohlc",basePlotModule:r(29435),categories:["cartesian","svg","showLegend"],meta:{},attributes:r(52270),supplyDefaults:r(49241),calc:r(23850).calc,plot:r(4824),style:r(45298),hoverPoints:r(65409).hoverPoints,selectPoints:r(44483)}},80144:function(t,e,r){"use strict";["*heatmapgl* trace is deprecated!","Please consider switching to the *heatmap* or *image* trace types.","Alternatively you could contribute/sponsor rewriting this trace type","based on cartesian features and using regl framework."].join(" "),t.exports={attributes:r(64579),supplyDefaults:r(70212),colorbar:r(62731),calc:r(60306),plot:r(86903),moduleType:"trace",name:"heatmapgl",basePlotModule:r(4562),categories:["gl","gl2d","2dMap"],meta:{}}},80177:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=r(46982),o=Math.PI/180,s=180/Math.PI,l={cursor:"pointer"},u={cursor:"auto"};function c(t,e){return n.behavior.zoom().translate(e.translate()).scale(e.scale())}function f(t,e,r){var n=t.id,o=t.graphDiv,s=o.layout,l=s[n],u=o._fullLayout,c=u[n],f={},h={};function p(t,e){f[n+"."+t]=i.nestedProperty(l,t).get(),a.call("_storeDirectGUIEdit",s,u._preGUI,f);var r=i.nestedProperty(c,t);r.get()!==e&&(r.set(e),i.nestedProperty(l,t).set(e),h[n+"."+t]=e)}r(p),p("projection.scale",e.scale()/t.fitScale),p("fitbounds",!1),o.emit("plotly_relayout",h)}function h(t,e){var r=c(0,e);function i(r){var n=e.invert(t.midPt);r("center.lon",n[0]),r("center.lat",n[1])}return r.on("zoomstart",function(){n.select(this).style(l)}).on("zoom",function(){e.scale(n.event.scale).translate(n.event.translate),t.render(!0);var r=e.invert(t.midPt);t.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":e.scale()/t.fitScale,"geo.center.lon":r[0],"geo.center.lat":r[1]})}).on("zoomend",function(){n.select(this).style(u),f(t,e,i)}),r}function p(t,e){var r,i,a,o,s,h,p,d,v,g=c(0,e);function y(t){return e.invert(t)}function m(r){var n=e.rotate(),i=e.invert(t.midPt);r("projection.rotation.lon",-n[0]),r("center.lon",i[0]),r("center.lat",i[1])}return g.on("zoomstart",function(){n.select(this).style(l),r=n.mouse(this),i=e.rotate(),a=e.translate(),o=i,s=y(r)}).on("zoom",function(){if(h=n.mouse(this),function(t){var r=y(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(r))return g.scale(e.scale()),void g.translate(e.translate());e.scale(n.event.scale),e.translate([a[0],n.event.translate[1]]),s?y(h)&&(d=y(h),p=[o[0]+(d[0]-s[0]),i[1],i[2]],e.rotate(p),o=p):s=y(r=h),v=!0,t.render(!0);var l=e.rotate(),u=e.invert(t.midPt);t.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":e.scale()/t.fitScale,"geo.center.lon":u[0],"geo.center.lat":u[1],"geo.projection.rotation.lon":-l[0]})}).on("zoomend",function(){n.select(this).style(u),v&&f(t,e,m)}),g}function d(t,e){var r,i={r:e.rotate(),k:e.scale()},a=c(0,e),h=function(t){for(var e=0,r=arguments.length,i=[];++ed?(a=(f>0?90:-90)-p,i=0):(a=Math.asin(f/d)*s-p,i=Math.sqrt(d*d-f*f));var v=180-a-2*p,y=(Math.atan2(h,c)-Math.atan2(u,i))*s,x=(Math.atan2(h,c)-Math.atan2(u,-i))*s;return g(r[0],r[1],a,y)<=g(r[0],r[1],v,x)?[a,y,r[2]]:[v,x,r[2]]}(T,r,E);isFinite(A[0])&&isFinite(A[1])&&isFinite(A[2])||(A=E),e.rotate(A),E=A}}else r=v(e,M=b);h.of(this,arguments)({type:"zoom"})}),k=h.of(this,arguments),p++||k({type:"zoomstart"})}).on("zoomend",function(){var r;n.select(this).style(u),d.call(a,"zoom",null),r=h.of(this,arguments),--p||r({type:"zoomend"}),f(t,e,y)}).on("zoom.redraw",function(){t.render(!0);var r=e.rotate();t.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":e.scale()/t.fitScale,"geo.projection.rotation.lon":-r[0],"geo.projection.rotation.lat":-r[1]})}),n.rebind(a,h,"on")}function v(t,e){var r=t.invert(e);return r&&isFinite(r[0])&&isFinite(r[1])&&function(t){var e=t[0]*o,r=t[1]*o,n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}(r)}function g(t,e,r,n){var i=y(r-t),a=y(n-e);return Math.sqrt(i*i+a*a)}function y(t){return(t%360+540)%360-180}function m(t,e,r){var n=r*o,i=t.slice(),a=0===e?1:0,s=2===e?1:2,l=Math.cos(n),u=Math.sin(n);return i[a]=t[a]*l-t[s]*u,i[s]=t[s]*l+t[a]*u,i}function x(t,e){for(var r=0,n=0,i=t.length;n_[0]._length||lt<0||lt>w[0]._length)return d.unhoverRaw(t,e)}else st="xpx"in e?e.xpx:_[0]._length/2,lt="ypx"in e?e.ypx:w[0]._length/2;if(e.pointerX=st+_[0]._offset,e.pointerY=lt+w[0]._offset,q="xval"in e?y.flat(l,e.xval):y.p2c(_,st),G="yval"in e?y.flat(l,e.yval):y.p2c(w,lt),!i(q[0])||!i(G[0]))return o.warn("Fx.hover failed",e,t),d.unhoverRaw(t,e)}var ft=1/0;function ht(t,r){for(W=0;Wrt&&(nt.splice(0,rt),ft=nt[0].distance),m&&0!==H&&0===nt.length){et.distance=H,et.index=!1;var f=X._module.hoverPoints(et,Q,tt,"closest",{hoverLayer:c._hoverlayer});if(f&&(f=f.filter(function(t){return t.spikeDistance<=H})),f&&f.length){var h,d=f.filter(function(t){return t.xa.showspikes&&"hovered data"!==t.xa.spikesnap});if(d.length){var v=d[0];i(v.x0)&&i(v.y0)&&(h=dt(v),(!at.vLinePoint||at.vLinePoint.spikeDistance>h.spikeDistance)&&(at.vLinePoint=h))}var g=f.filter(function(t){return t.ya.showspikes&&"hovered data"!==t.ya.spikesnap});if(g.length){var x=g[0];i(x.x0)&&i(x.y0)&&(h=dt(x),(!at.hLinePoint||at.hLinePoint.spikeDistance>h.spikeDistance)&&(at.hLinePoint=h))}}}}}function pt(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)kt-1;Mt--)Ct(nt[Mt]);nt=St,mt()}var Pt=t._hoverdata,Ot=[],It=U(t),Dt=V(t);for(Y=0;Y1||nt.length>1)||"closest"===I&&ot&&nt.length>1,Wt=p.combine(c.plot_bgcolor||p.background,c.paper_bgcolor),Zt=O(nt,{gd:t,hovermode:I,rotateLabels:Yt,bgColor:Wt,container:c._hoverlayer,outerContainer:c._paper.node(),commonLabelOpts:c.hoverlabel,hoverdistance:c.hoverdistance}),Xt=Zt.hoverLabels;if(y.isUnifiedHover(I)||(function(t,e,r,n){var i,a,o,s,l,u,c,f=e?"xa":"ya",h=e?"ya":"xa",p=0,d=1,v=t.size(),g=new Array(v),y=0,m=n.minX,x=n.maxX,b=n.minY,_=n.maxY,w=function(t){return t*r._invScaleX},A=function(t){return t*r._invScaleY};function k(t){var e=t[0],r=t[t.length-1];if(a=e.pmin-e.pos-e.dp+e.size,o=r.pos+r.dp+r.size-e.pmax,a>.01){for(l=t.length-1;l>=0;l--)t[l].dp+=a;i=!1}if(!(o<.01)){if(a<-.01){for(l=t.length-1;l>=0;l--)t[l].dp-=o;i=!1}if(i){var n=0;for(s=0;se.pmax&&n++;for(s=t.length-1;s>=0&&!(n<=0);s--)(u=t[s]).pos>e.pmax-1&&(u.del=!0,n--);for(s=0;s=0;l--)t[l].dp-=o;for(s=t.length-1;s>=0&&!(n<=0);s--)(u=t[s]).pos+u.dp+u.size>e.pmax&&(u.del=!0,n--)}}}for(t.each(function(t){var n=t[f],i=t[h],a="x"===n._id.charAt(0),o=n.range;0===y&&o&&o[0]>o[1]!==a&&(d=-1);var s=0,l=a?r.width:r.height;if("x"===r.hovermode||"y"===r.hovermode){var u,c,p=D(t,e),v=t.anchor,k="end"===v?-1:1;if("middle"===v)c=(u=t.crossPos+(a?A(p.y-t.by/2):w(t.bx/2+t.tx2width/2)))+(a?A(t.by):w(t.bx));else if(a)c=(u=t.crossPos+A(M+p.y)-A(t.by/2-M))+A(t.by);else{var S=w(k*M+p.x),E=S+w(k*t.bx);u=t.crossPos+Math.min(S,E),c=t.crossPos+Math.max(S,E)}a?void 0!==b&&void 0!==_&&Math.min(c,_)-Math.max(u,b)>1&&("left"===i.side?(s=i._mainLinePosition,l=r.width):l=i._mainLinePosition):void 0!==m&&void 0!==x&&Math.min(c,x)-Math.max(u,m)>1&&("top"===i.side?(s=i._mainLinePosition,l=r.height):l=i._mainLinePosition)}g[y++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(a?T:1)/2,pmin:s,pmax:l}]}),g.sort(function(t,e){return t[0].posref-e[0].posref||d*(e[0].traceIndex-t[0].traceIndex)});!i&&p<=v;){for(p++,i=!0,s=0;s.01&&L.pmin===C.pmin&&L.pmax===C.pmax){for(l=E.length-1;l>=0;l--)E[l].dp+=a;for(S.push.apply(S,E),g.splice(s+1,1),c=0,l=S.length-1;l>=0;l--)c+=S[l].dp;for(o=c/S.length,l=S.length-1;l>=0;l--)S[l].dp-=o;i=!1}else s++}g.forEach(k)}for(s=g.length-1;s>=0;s--){var P=g[s];for(l=P.length-1;l>=0;l--){var O=P[l],I=O.datum;I.offset=O.dp,I.del=O.del}}}(Xt,Yt,c,Zt.commonLabelBoundingBox),z(Xt,Yt,c._invScaleX,c._invScaleY)),s&&s.tagName){var Jt=g.getComponentMethod("annotations","hasClickToShow")(t,Ot);f(n.select(s),Jt?"pointer":"")}s&&!a&&function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Pt)&&(Pt&&t.emit("plotly_unhover",{event:e,points:Pt}),t.emit("plotly_hover",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:q,yvals:G}))}(t,e,r,a,s)})},e.loneHover=function(t,e){var r=!0;Array.isArray(t)||(r=!1,t=[t]);var i=e.gd,a=U(i),o=V(i),s=!1,l=O(t.map(function(t){var r=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,u=t.eventData;if(u){var c=Math.min(r,n),f=Math.max(r,n),h=Math.min(s,l),d=Math.max(s,l),v=t.trace;if(g.traceIs(v,"gl3d")){var y=i._fullLayout[v.scene]._scene.container,m=y.offsetLeft,x=y.offsetTop;c+=m,f+=m,h+=x,d+=x}u.bbox={x0:c+o,x1:f+o,y0:h+a,y1:d+a},e.inOut_bbox&&e.inOut_bbox.push(u.bbox)}else u=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:u}}),{gd:i,hovermode:"closest",rotateLabels:s,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}).hoverLabels,u=0,c=0;return l.sort(function(t,e){return t.y0-e.y0}).each(function(t,r){var n=t.y0-t.by/2;t.offset=n-5([\s\S]*)<\/extra>/;function O(t,e){var r=e.gd,i=r._fullLayout,a=e.hovermode,u=e.rotateLabels,f=e.bgColor,d=e.container,v=e.outerContainer,w=e.commonLabelOpts||{};if(0===t.length)return[[]];var T=e.fontFamily||m.HOVERFONT,A=e.fontSize||m.HOVERFONTSIZE,k=t[0],E=k.xa,L=k.ya,P=a.charAt(0),O=P+"Label",D=k[O];if(void 0===D&&"multicategory"===E.type)for(var z=0;zi.width-b?(g=i.width-b,e.attr("d","M"+(b-M)+",0L"+b+","+x+M+"v"+x+(2*S+m.height)+"H-"+b+"V"+x+M+"H"+(b-2*M)+"Z")):e.attr("d","M0,0L"+M+","+x+M+"H"+b+"v"+x+(2*S+m.height)+"H-"+b+"V"+x+M+"H-"+M+"Z"),W.minX=g-b,W.maxX=g+b,"top"===E.side?(W.minY=y-(2*S+m.height),W.maxY=y-S):(W.minY=y+S,W.maxY=y+(2*S+m.height))}else{var _,C,P;"right"===L.side?(_="start",C=1,P="",g=E._offset+E._length):(_="end",C=-1,P="-",g=E._offset),y=L._offset+(k.y0+k.y1)/2,l.attr("text-anchor",_),e.attr("d","M0,0L"+P+M+","+M+"V"+(S+m.height/2)+"h"+P+(2*S+m.width)+"V-"+(S+m.height/2)+"H"+P+M+"V-"+M+"Z"),W.minY=y-(S+m.height/2),W.maxY=y+(S+m.height/2),"right"===L.side?(W.minX=g+M,W.maxX=g+M+(2*S+m.width)):(W.minX=g-M-(2*S+m.width),W.maxX=g-M);var O,I=m.height/2,z=F-m.top-I,R="clip"+i._uid+"commonlabel"+L._id;if(g=0?lt:ut+ht=0?ut:bt+ht=0?ot:st+pt=0?st:_t+pt=0,"top"!==t.idealAlign&&G||!Y?G?(O+=R/2,t.anchor="start"):t.anchor="middle":(O-=R/2,t.anchor="end"),t.crossPos=O;else{if(t.pos=O,G=P+z/2+W<=B,Y=P-z/2-W>=0,"left"!==t.idealAlign&&G||!Y)if(G)P+=z/2,t.anchor="start";else{t.anchor="middle";var Z=W/2,X=P+Z-B,J=P-Z;X>0&&(P-=X),J<0&&(P+=-J)}else P-=z/2,t.anchor="end";t.crossPos=P}w.attr("text-anchor",t.anchor),E&&k.attr("text-anchor",t.anchor),e.attr("transform",s(P,O)+(u?l(_):""))}),{hoverLabels:wt,commonLabelBoundingBox:W}}function I(t,e,r,n,i,a){var s="",l="";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=o.templateString(t.name,t.trace._meta)),s=N(t.name,t.nameLength));var u=r.charAt(0),c="x"===u?"y":"x";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+="x: "+t.xLabel+"
    "),void 0!==t.yLabel&&(l+="y: "+t.yLabel+"
    "),"choropleth"!==t.trace.type&&"choroplethmapbox"!==t.trace.type&&(l+=(l?"z: ":"")+t.zLabel)):e&&t[u+"Label"]===i?l=t[c+"Label"]||"":void 0===t.xLabel?void 0!==t.yLabel&&"scattercarpet"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:"("+t.xLabel+", "+t.yLabel+")",!t.text&&0!==t.text||Array.isArray(t.text)||(l+=(l?"
    ":"")+t.text),void 0!==t.extraText&&(l+=(l?"
    ":"")+t.extraText),a&&""===l&&!t.hovertemplate&&(""===s&&a.remove(),l=s);var f=t.hovertemplate||!1;if(f){var h=t.hovertemplateLabels||t;t[u+"Label"]!==i&&(h[u+"other"]=h[u+"Val"],h[u+"otherLabel"]=h[u+"Label"]),l=(l=o.hovertemplateString(f,h,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(P,function(e,r){return s=N(r,t.nameLength),""})}return[l,s]}function D(t,e){var r=0,n=t.offset;return e&&(n*=-k,r=t.offset*A),{x:r,y:n}}function z(t,e,r,i){var a=function(t){return t*r},o=function(t){return t*i};t.each(function(t){var r=n.select(this);if(t.del)return r.remove();var i,s,l,u,f=r.select("text.nums"),p=t.anchor,d="end"===p?-1:1,v=(u=(l=(s={start:1,end:-1,middle:0}[(i=t).anchor])*(M+S))+s*(i.txwidth+S),"middle"===i.anchor&&(l-=i.tx2width/2,u+=i.txwidth/2+S),{alignShift:s,textShiftX:l,text2ShiftX:u}),g=D(t,e),y=g.x,m=g.y,x="middle"===p;r.select("path").attr("d",x?"M-"+a(t.bx/2+t.tx2width/2)+","+o(m-t.by/2)+"h"+a(t.bx)+"v"+o(t.by)+"h-"+a(t.bx)+"Z":"M0,0L"+a(d*M+y)+","+o(M+m)+"v"+o(t.by/2-M)+"h"+a(d*t.bx)+"v-"+o(t.by)+"H"+a(d*M+y)+"V"+o(m-M)+"Z");var b=y+v.textShiftX,_=m+t.ty0-t.by/2+S,w=t.textAlign||"auto";"auto"!==w&&("left"===w&&"start"!==p?(f.attr("text-anchor","start"),b=x?-t.bx/2-t.tx2width/2+S:-t.bx-S):"right"===w&&"end"!==p&&(f.attr("text-anchor","end"),b=x?t.bx/2-t.tx2width/2-S:t.bx+S)),f.call(c.positionText,a(b),o(_)),t.tx2width&&(r.select("text.name").call(c.positionText,a(v.text2ShiftX+v.alignShift*S+y),o(m+t.ty0-t.by/2+S)),r.select("rect").call(h.setRect,a(v.text2ShiftX+(v.alignShift-1)*t.tx2width/2+y),o(m-t.by/2-1),a(t.tx2width),o(t.by+2)))})}function R(t,e){var r=t.index,n=t.trace||{},a=t.cd[0],s=t.cd[r]||{};function l(t){return t||i(t)&&0===t}var u=Array.isArray(r)?function(t,e){var i=o.castOption(a,r,t);return l(i)?i:o.extractOption({},n,"",e)}:function(t,e){return o.extractOption(s,n,t,e)};function c(e,r,n){var i=u(r,n);l(i)&&(t[e]=i)}if(c("hoverinfo","hi","hoverinfo"),c("bgcolor","hbg","hoverlabel.bgcolor"),c("borderColor","hbc","hoverlabel.bordercolor"),c("fontFamily","htf","hoverlabel.font.family"),c("fontSize","hts","hoverlabel.font.size"),c("fontColor","htc","hoverlabel.font.color"),c("nameLength","hnl","hoverlabel.namelength"),c("textAlign","hta","hoverlabel.align"),t.posref="y"===e||"closest"===e&&"h"===n.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=o.constrain(t.x0,0,t.xa._length),t.x1=o.constrain(t.x1,0,t.xa._length),t.y0=o.constrain(t.y0,0,t.ya._length),t.y1=o.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel="xLabel"in t?t.xLabel:v.hoverLabelText(t.xa,t.xLabelVal,n.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel="yLabel"in t?t.yLabel:v.hoverLabelText(t.ya,t.yLabelVal,n.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||"log"===t.xa.type&&t.xerr<=0)){var f=v.tickText(t.xa,t.xa.c2l(t.xerr),"hover").text;void 0!==t.xerrneg?t.xLabel+=" +"+f+" / -"+v.tickText(t.xa,t.xa.c2l(t.xerrneg),"hover").text:t.xLabel+=" ± "+f,"x"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||"log"===t.ya.type&&t.yerr<=0)){var h=v.tickText(t.ya,t.ya.c2l(t.yerr),"hover").text;void 0!==t.yerrneg?t.yLabel+=" +"+h+" / -"+v.tickText(t.ya,t.ya.c2l(t.yerrneg),"hover").text:t.yLabel+=" ± "+h,"y"===e&&(t.distance+=1)}var p=t.hoverinfo||t.trace.hoverinfo;return p&&"all"!==p&&(-1===(p=Array.isArray(p)?p:p.split("+")).indexOf("x")&&(t.xLabel=void 0),-1===p.indexOf("y")&&(t.yLabel=void 0),-1===p.indexOf("z")&&(t.zLabel=void 0),-1===p.indexOf("text")&&(t.text=void 0),-1===p.indexOf("name")&&(t.name=void 0)),t}function F(t,e,r){var n,i,o=r.container,s=r.fullLayout,l=s._size,u=r.event,c=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(".spikeline").remove(),f||c){var d=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(c){var g,y,m=e.hLinePoint;n=m&&m.xa,"cursor"===(i=m&&m.ya).spikesnap?(g=u.pointerX,y=u.pointerY):(g=n._offset+m.x,y=i._offset+m.y);var x,b,_=a.readability(m.color,d)<1.5?p.contrast(d):m.color,w=i.spikemode,T=i.spikethickness,A=i.spikecolor||_,k=v.getPxPosition(t,i);if(-1!==w.indexOf("toaxis")||-1!==w.indexOf("across")){if(-1!==w.indexOf("toaxis")&&(x=k,b=g),-1!==w.indexOf("across")){var M=i._counterDomainMin,S=i._counterDomainMax;"free"===i.anchor&&(M=Math.min(M,i.position),S=Math.max(S,i.position)),x=l.l+M*l.w,b=l.l+S*l.w}o.insert("line",":first-child").attr({x1:x,x2:b,y1:y,y2:y,"stroke-width":T,stroke:A,"stroke-dasharray":h.dashStyle(i.spikedash,T)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:x,x2:b,y1:y,y2:y,"stroke-width":T+2,stroke:d}).classed("spikeline",!0).classed("crisp",!0)}-1!==w.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:k+("right"!==i.side?T:-T),cy:y,r:T,fill:A}).classed("spikeline",!0)}if(f){var E,L,C=e.vLinePoint;n=C&&C.xa,i=C&&C.ya,"cursor"===n.spikesnap?(E=u.pointerX,L=u.pointerY):(E=n._offset+C.x,L=i._offset+C.y);var P,O,I=a.readability(C.color,d)<1.5?p.contrast(d):C.color,D=n.spikemode,z=n.spikethickness,R=n.spikecolor||I,F=v.getPxPosition(t,n);if(-1!==D.indexOf("toaxis")||-1!==D.indexOf("across")){if(-1!==D.indexOf("toaxis")&&(P=F,O=L),-1!==D.indexOf("across")){var B=n._counterDomainMin,N=n._counterDomainMax;"free"===n.anchor&&(B=Math.min(B,n.position),N=Math.max(N,n.position)),P=l.t+(1-N)*l.h,O=l.t+(1-B)*l.h}o.insert("line",":first-child").attr({x1:E,x2:E,y1:P,y2:O,"stroke-width":z,stroke:R,"stroke-dasharray":h.dashStyle(n.spikedash,z)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:E,x2:E,y1:P,y2:O,"stroke-width":z+2,stroke:d}).classed("spikeline",!0).classed("crisp",!0)}-1!==D.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:E,cy:F-("top"!==n.side?z:-z),r:z,fill:R}).classed("spikeline",!0)}}}function B(t,e){return!e||e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint}function N(t,e){return c.plainText(t||"",{len:e,allowedTags:["br","sub","sup","b","i","em"]})}function j(t,e,r){var n=e[t+"a"],i=e[t+"Val"],a=e.cd[0];if("category"===n.type||"multicategory"===n.type)i=n._categoriesMap[i];else if("date"===n.type){var o=e.trace[t+"periodalignment"];if(o){var s=e.cd[e.index],l=s[t+"Start"];void 0===l&&(l=s[t]);var u=s[t+"End"];void 0===u&&(u=s[t]);var c=u-l;"end"===o?i+=c:"middle"===o&&(i+=c/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&("group"!==r.boxmode&&"group"!==r.violinmode||(i+=a.t.dPos)),i}function U(t){return t.offsetTop+t.clientTop}function V(t){return t.offsetLeft+t.clientLeft}function H(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.left,a=n.top,s=i+n.width,l=a+n.height,u=o.apply3DTransform(r._invTransform)(i,a),c=o.apply3DTransform(r._invTransform)(s,l),f=u[0],h=u[1],p=c[0],d=c[1];return{x:f,y:h,width:p-f,height:d-h,top:Math.min(h,d),left:Math.min(f,p),right:Math.max(f,p),bottom:Math.max(h,d)}}},80515:function(t,e,r){"use strict";var n=r(28398),i=r(86692),a=r(34802);t.exports=function(){return a(n,i,arguments)}},80594:function(t,e,r){"use strict";var n=r(15181),i=r(45728).dfltConfig,a={add:function(t,e,r,n,a){var o,s;t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},s=t.undoQueue.index,t.autoplay?t.undoQueue.inSequence||(t.autoplay=!1):(!t.undoQueue.sequence||t.undoQueue.beginSequence?(o={undo:{calls:[],args:[]},redo:{calls:[],args:[]}},t.undoQueue.queue.splice(s,t.undoQueue.queue.length-s,o),t.undoQueue.index+=1):o=t.undoQueue.queue[s-1],t.undoQueue.beginSequence=!1,o&&(o.undo.calls.unshift(e),o.undo.args.unshift(r),o.redo.calls.push(n),o.redo.args.push(a)),t.undoQueue.queue.length>i.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r0?o-4:o;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===l&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===l&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a=[],o=16383,s=0,l=n-i;sl?l:s+o));return 1===i?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)r[o]=a[o],n[a.charCodeAt(o)]=o;function s(t){var e=t.length;if(e%4>0)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){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function u(t,e,r){for(var n,i=[],a=e;a1&&(i*=y=Math.sqrt(y),s*=y);var m=i*i,x=s*s,b=(u==c?-1:1)*Math.sqrt(Math.abs((m*x-m*g*g-x*v*v)/(m*g*g+x*v*v)));b==1/0&&(b=1);var _=b*i*g/s+(t+f)/2,w=b*-s*v/i+(n+h)/2,T=Math.asin(((n-w)/s).toFixed(9)),A=Math.asin(((h-w)/s).toFixed(9));(T=t<_?e-T:T)<0&&(T=2*e+T),(A=f<_?e-A:A)<0&&(A=2*e+A),c&&T>A&&(T-=2*e),!c&&A>T&&(A-=2*e)}if(Math.abs(A-T)>r){var k=A,M=f,S=h;A=T+r*(c&&A>T?1:-1);var E=a(f=_+i*Math.cos(A),h=w+s*Math.sin(A),i,s,l,0,c,M,S,[A,k,_,w])}var L=Math.tan((A-T)/4),C=4/3*i*L,P=4/3*s*L,O=[2*t-(t+C*Math.sin(T)),2*n-(n-P*Math.cos(T)),f+C*Math.sin(A),h-P*Math.cos(A),f,h];if(p)return O;E&&(O=O.concat(E));for(var I=0;I7&&(r.push(y.splice(0,7)),y.unshift("C"));break;case"S":var x=p,b=d;"C"!=e&&"S"!=e||(x+=x-o,b+=b-l),y=["C",x,b,y[1],y[2],y[3],y[4]];break;case"T":"Q"==e||"T"==e?(f=2*p-f,h=2*d-h):(f=p,h=d),y=i(p,d,f,h,y[1],y[2]);break;case"Q":f=y[1],h=y[2],y=i(p,d,y[1],y[2],y[3],y[4]);break;case"L":y=n(p,d,y[1],y[2]);break;case"H":y=n(p,d,y[1],d);break;case"V":y=n(p,d,p,y[1]);break;case"Z":y=n(p,d,u,c)}e=m,p=y[y.length-2],d=y[y.length-1],y.length>4?(o=y[y.length-4],l=y[y.length-3]):(o=p,l=d),r.push(y)}return r}},81623:function(t,e,r){"use strict";t.exports=r(98766)()?Array.from:r(62134)},81855:function(t,e,r){"use strict";var n=r(15181),i=r(46982),a=r(92444).arrayEditor;function o(t,e){var r,n,i,a,o,l,u,c=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var r,s,l=o(t,e),u=l.on,c=l.off.concat(l.explicitOff),f={},h=t._fullLayout.annotations;if(u.length||c.length){for(r=0;r0?h+u:u;return{ppad:u,ppadplus:c?d:v,ppadminus:c?v:d}}return{ppad:u}}function c(t,e,r,n,i){var s="category"===t.type||"multicategory"===t.type?t.r2c:t.d2c;if(void 0!==e)return[s(e),s(r)];if(n){var l,u,c,f,h=1/0,p=-1/0,d=n.match(a.segmentRE);for("date"===t.type&&(s=o.decodeDate(s)),l=0;lp&&(p=f)));return p>=h?[h,p]:void 0}}t.exports=function(t){var e=t._fullLayout,r=n.filterVisible(e.shapes);if(r.length&&t._fullData.length)for(var o=0;o0}function T(t){t.each(function(t){m.stroke(n.select(this),t.line.color)}).each(function(t){m.fill(n.select(this),t.color)}).style("stroke-width",function(t){return t.line.width})}function A(t,e,r){var n=t._fullLayout,i=o.extendFlat({type:"linear",ticks:"outside",range:r,showline:!0},e),a={type:"linear",_id:"x"+e._id},s={letter:"x",font:n.font,noHover:!0,noTickson:!0};function l(t,e){return o.coerce(i,a,y,t,e)}return v(i,a,l,s,n),g(i,a,l,s),a}function k(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+"x"+r]}function M(t,e,r,i){var a=document.createElementNS("http://www.w3.org/2000/svg","text"),o=n.select(a);return o.text(t).attr("x",0).attr("y",0).attr("text-anchor",r).attr("data-unformatted",t).call(p.convertToTspans,i).call(f.font,e),f.bBox(o.node())}function S(t,e,r,n,i,a){var s="_cache"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=o.aggNums(a,null,[t[s].value,n],2);return t[s].value=l,l}t.exports=function(t,e,r,v){var g,y=t._fullLayout;w(r)&&v&&(g=v()),o.makeTraceGroups(y._indicatorlayer,e,"trace").each(function(e){var v,E,L,C,P,O=e[0].trace,I=n.select(this),D=O._hasGauge,z=O._isAngular,R=O._isBullet,F=O.domain,B={w:y._size.w*(F.x[1]-F.x[0]),h:y._size.h*(F.y[1]-F.y[0]),l:y._size.l+y._size.w*F.x[0],r:y._size.r+y._size.w*(1-F.x[1]),t:y._size.t+y._size.h*(1-F.y[1]),b:y._size.b+y._size.h*F.y[0]},N=B.l+B.w/2,j=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,H=O.align||"center";if(E=j,D){if(z&&(v=N,E=j+U/2,L=function(t){return function(t,e){return[e/Math.sqrt(t.width/2*(t.width/2)+t.height*t.height),t,e]}(t,.9*V)}),R){var q=h.bulletPadding,G=1-h.bulletNumberDomainSize+q;v=B.l+(G+(1-G)*b[H])*B.w,L=function(t){return k(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else v=B.l+b[H]*B.w,L=function(t){return k(t,B.w,B.h)};!function(t,e,r,i){var u,c,h,v=r[0].trace,g=i.numbersX,y=i.numbersY,T=v.align||"center",k=x[T],E=i.transitionOpts,L=i.onComplete,C=o.ensureSingle(e,"g","numbers"),P=[];v._hasNumber&&P.push("number"),v._hasDelta&&(P.push("delta"),"left"===v.delta.position&&P.reverse());var O=C.selectAll("text").data(P);function I(e,r,n,i){if(!e.match("s")||n>=0==i>=0||r(n).slice(-1).match(_)||r(i).slice(-1).match(_))return r;var a=e.slice().replace("s","f").replace(/\d+/,function(t){return parseInt(t)-1}),o=A(t,{tickformat:a});return function(t){return Math.abs(t)<1?d.tickText(o,t).text:r(t)}}O.enter().append("text"),O.attr("text-anchor",function(){return k}).attr("class",function(t){return t}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),O.exit().remove();var D,z=v.mode+v.align;if(v._hasDelta&&(D=function(){var e=A(t,{tickformat:v.delta.valueformat},v._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=v.delta.suffix,s=v.delta.prefix,l=function(t){return v.delta.relative?t.relativeDelta:t.delta},u=function(t,e){return 0===t||"number"!=typeof t||isNaN(t)?"-":(t>0?v.delta.increasing.symbol:v.delta.decreasing.symbol)+s+e(t)+o},h=function(t){return t.delta>=0?v.delta.increasing.color:v.delta.decreasing.color};void 0===v._deltaLastValue&&(v._deltaLastValue=l(r[0]));var g=C.select("text.delta");function y(){g.text(u(l(r[0]),i)).call(m.fill,h(r[0])).call(p.convertToTspans,t)}return g.call(f.font,v.delta.font).call(m.fill,h({delta:v._deltaLastValue})),w(E)?g.transition().duration(E.duration).ease(E.easing).tween("text",function(){var t=n.select(this),e=l(r[0]),o=v._deltaLastValue,s=I(v.delta.valueformat,i,o,e),c=a(o,e);return v._deltaLastValue=e,function(e){t.text(u(c(e),s)),t.call(m.fill,h({delta:c(e)}))}}).each("end",function(){y(),L&&L()}).each("interrupt",function(){y(),L&&L()}):y(),c=M(u(l(r[0]),i),v.delta.font,k,t),g}(),z+=v.delta.position+v.delta.font.size+v.delta.font.family+v.delta.valueformat,z+=v.delta.increasing.symbol+v.delta.decreasing.symbol,h=c),v._hasNumber&&(function(){var e=A(t,{tickformat:v.number.valueformat},v._range);e.setScale(),d.prepTicks(e);var i=function(t){return d.tickText(e,t).text},o=v.number.suffix,s=v.number.prefix,l=C.select("text.number");function c(){var e="number"==typeof r[0].y?s+i(r[0].y)+o:"-";l.text(e).call(f.font,v.number.font).call(p.convertToTspans,t)}w(E)?l.transition().duration(E.duration).ease(E.easing).each("end",function(){c(),L&&L()}).each("interrupt",function(){c(),L&&L()}).attrTween("text",function(){var t=n.select(this),e=a(r[0].lastY,r[0].y);v._lastValue=r[0].y;var l=I(v.number.valueformat,i,r[0].lastY,r[0].y);return function(r){t.text(s+l(e(r))+o)}}):c(),u=M(s+i(r[0].y)+o,v.number.font,k,t)}(),z+=v.number.font.size+v.number.font.family+v.number.valueformat+v.number.suffix+v.number.prefix,h=u),v._hasDelta&&v._hasNumber){var R,F,B=[(u.left+u.right)/2,(u.top+u.bottom)/2],N=[(c.left+c.right)/2,(c.top+c.bottom)/2],j=.75*v.delta.font.size;"left"===v.delta.position&&(R=S(v,"deltaPos",0,-1*(u.width*b[v.align]+c.width*(1-b[v.align])+j),z,Math.min),F=B[1]-N[1],h={width:u.width+c.width+j,height:Math.max(u.height,c.height),left:c.left+R,right:u.right,top:Math.min(u.top,c.top+F),bottom:Math.max(u.bottom,c.bottom+F)}),"right"===v.delta.position&&(R=S(v,"deltaPos",0,u.width*(1-b[v.align])+c.width*b[v.align]+j,z,Math.max),F=B[1]-N[1],h={width:u.width+c.width+j,height:Math.max(u.height,c.height),left:u.left,right:c.right+R,top:Math.min(u.top,c.top+F),bottom:Math.max(u.bottom,c.bottom+F)}),"bottom"===v.delta.position&&(R=null,F=c.height,h={width:Math.max(u.width,c.width),height:u.height+c.height,left:Math.min(u.left,c.left),right:Math.max(u.right,c.right),top:u.bottom-u.height,bottom:u.bottom+c.height}),"top"===v.delta.position&&(R=null,F=u.top,h={width:Math.max(u.width,c.width),height:u.height+c.height,left:Math.min(u.left,c.left),right:Math.max(u.right,c.right),top:u.bottom-u.height-c.height,bottom:u.bottom}),D.attr({dx:R,dy:F})}(v._hasNumber||v._hasDelta)&&C.attr("transform",function(){var t=i.numbersScaler(h);z+=t[2];var e,r=S(v,"numbersScale",1,t[0],z,Math.min);v._scaleNumbers||(r=1),e=v._isAngular?y-r*h.bottom:y-r*(h.top+h.bottom)/2,v._numbersTop=r*h.top+e;var n=h[T];"center"===T&&(n=(h.left+h.right)/2);var a=g-r*n;return a=S(v,"numbersTranslate",0,a,z,Math.max),l(a,e)+s(r)})}(t,I,e,{numbersX:v,numbersY:E,numbersScaler:L,transitionOpts:r,onComplete:g}),D&&(C={range:O.gauge.axis.range,color:O.gauge.bgcolor,line:{color:O.gauge.bordercolor,width:0},thickness:1},P={range:O.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:O.gauge.bordercolor,width:O.gauge.borderwidth},thickness:1});var Y=I.selectAll("g.angular").data(z?e:[]);Y.exit().remove();var W=I.selectAll("g.angularaxis").data(z?e:[]);W.exit().remove(),z&&function(t,e,r,a){var o,s,f,h,p=r[0].trace,v=a.size,g=a.radius,y=a.innerRadius,m=a.gaugeBg,x=a.gaugeOutline,b=[v.l+v.w/2,v.t+v.h/2+g/2],_=a.gauge,k=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function L(t){var e=p.gauge.axis.range[0],r=(t-e)/(p.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function C(t){return n.svg.arc().innerRadius((y+g)/2-t/2*(g-y)).outerRadius((y+g)/2+t/2*(g-y)).startAngle(-E)}function P(t){t.attr("d",function(t){return C(t.thickness).startAngle(L(t.range[0])).endAngle(L(t.range[1]))()})}_.enter().append("g").classed("angular",!0),_.attr("transform",l(b[0],b[1])),k.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),k.selectAll("g.xangularaxistick,path,text").remove(),(o=A(t,p.gauge.axis)).type="linear",o.range=p.gauge.axis.range,o._id="xangularaxis",o.ticklabeloverflow="allow",o.setScale();var O=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},I={},D=d.makeLabelFns(o,0).labelStandoff;I.xFn=function(t){var e=O(t);return Math.cos(e)*D},I.yFn=function(t){var e=O(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(D+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*c)},I.anchorFn=function(t){var e=O(t),r=Math.cos(e);return Math.abs(r)<.1?"middle":r>0?"start":"end"},I.heightFn=function(t,e,r){var n=O(t);return-.5*(1+Math.sin(n))*r};var z=function(t){return l(b[0]+g*Math.cos(t),b[1]-g*Math.sin(t))};f=function(t){return z(O(t))};if(s=d.calcTicks(o),h=d.getTickSigns(o)[2],o.visible){h="inside"===o.ticks?-1:1;var R=(o.linewidth||1)/2;d.drawTicks(t,o,{vals:s,layer:k,path:"M"+h*R+",0h"+h*o.ticklen,transFn:function(t){var e=O(t);return z(e)+"rotate("+-u(e)+")"}}),d.drawLabels(t,o,{vals:s,layer:k,transFn:f,labelFns:I})}var F=[m].concat(p.gauge.steps),B=_.selectAll("g.bg-arc").data(F);B.enter().append("g").classed("bg-arc",!0).append("path"),B.select("path").call(P).call(T),B.exit().remove();var N=C(p.gauge.bar.thickness),j=_.selectAll("g.value-arc").data([p.gauge.bar]);j.enter().append("g").classed("value-arc",!0).append("path");var U,V,H,q=j.select("path");w(M)?(q.transition().duration(M.duration).ease(M.easing).each("end",function(){S&&S()}).each("interrupt",function(){S&&S()}).attrTween("d",(U=N,V=L(r[0].lastY),H=L(r[0].y),function(){var t=i(V,H);return function(e){return U.endAngle(t(e))()}})),p._lastValue=r[0].y):q.attr("d","number"==typeof r[0].y?N.endAngle(L(r[0].y)):"M0,0Z"),q.call(T),j.exit().remove(),F=[];var G=p.gauge.threshold.value;(G||0===G)&&F.push({range:[G,G],color:p.gauge.threshold.color,line:{color:p.gauge.threshold.line.color,width:p.gauge.threshold.line.width},thickness:p.gauge.threshold.thickness});var Y=_.selectAll("g.threshold-arc").data(F);Y.enter().append("g").classed("threshold-arc",!0).append("path"),Y.select("path").call(P).call(T),Y.exit().remove();var W=_.selectAll("g.gauge-outline").data([x]);W.enter().append("g").classed("gauge-outline",!0).append("path"),W.select("path").call(P).call(T),W.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Y,layer:W,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:g});var Z=I.selectAll("g.bullet").data(R?e:[]);Z.exit().remove();var X=I.selectAll("g.bulletaxis").data(R?e:[]);X.exit().remove(),R&&function(t,e,r,n){var i,a,o,s,u,c=r[0].trace,f=n.gauge,p=n.layer,v=n.gaugeBg,g=n.gaugeOutline,y=n.size,x=c.domain,b=n.transitionOpts,_=n.onComplete;f.enter().append("g").classed("bullet",!0),f.attr("transform",l(y.l,y.t)),p.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),p.selectAll("g.xbulletaxistick,path,text").remove();var k=y.h,M=c.gauge.bar.thickness*k,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(c._hasNumber||c._hasDelta?1-h.bulletNumberDomainSize:1);function L(t){t.attr("width",function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))}).attr("x",function(t){return i.c2p(t.range[0])}).attr("y",function(t){return.5*(1-t.thickness)*k}).attr("height",function(t){return t.thickness*k})}(i=A(t,c.gauge.axis))._id="xbulletaxis",i.domain=[S,E],i.setScale(),a=d.calcTicks(i),o=d.makeTransTickFn(i),s=d.getTickSigns(i)[2],u=y.t+y.h,i.visible&&(d.drawTicks(t,i,{vals:"inside"===i.ticks?d.clipEnds(i,a):a,layer:p,path:d.makeTickPath(i,u,s),transFn:o}),d.drawLabels(t,i,{vals:a,layer:p,transFn:o,labelFns:d.makeLabelFns(i,u)}));var C=[v].concat(c.gauge.steps),P=f.selectAll("g.bg-bullet").data(C);P.enter().append("g").classed("bg-bullet",!0).append("rect"),P.select("rect").call(L).call(T),P.exit().remove();var O=f.selectAll("g.value-bullet").data([c.gauge.bar]);O.enter().append("g").classed("value-bullet",!0).append("rect"),O.select("rect").attr("height",M).attr("y",(k-M)/2).call(T),w(b)?O.select("rect").transition().duration(b.duration).ease(b.easing).each("end",function(){_&&_()}).each("interrupt",function(){_&&_()}).attr("width",Math.max(0,i.c2p(Math.min(c.gauge.axis.range[1],r[0].y)))):O.select("rect").attr("width","number"==typeof r[0].y?Math.max(0,i.c2p(Math.min(c.gauge.axis.range[1],r[0].y))):0),O.exit().remove();var I=r.filter(function(){return c.gauge.threshold.value||0===c.gauge.threshold.value}),D=f.selectAll("g.threshold-bullet").data(I);D.enter().append("g").classed("threshold-bullet",!0).append("line"),D.select("line").attr("x1",i.c2p(c.gauge.threshold.value)).attr("x2",i.c2p(c.gauge.threshold.value)).attr("y1",(1-c.gauge.threshold.thickness)/2*k).attr("y2",(1-(1-c.gauge.threshold.thickness)/2)*k).call(m.stroke,c.gauge.threshold.line.color).style("stroke-width",c.gauge.threshold.line.width),D.exit().remove();var z=f.selectAll("g.gauge-outline").data([g]);z.enter().append("g").classed("gauge-outline",!0).append("rect"),z.select("rect").call(L).call(T),z.exit().remove()}(t,0,e,{gauge:Z,layer:X,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:g});var J=I.selectAll("text.title").data(e);J.exit().remove(),J.enter().append("text").classed("title",!0),J.attr("text-anchor",function(){return R?x.right:x[O.title.align]}).text(O.title.text).call(f.font,O.title.font).call(p.convertToTspans,t),J.attr("transform",function(){var t,e=B.l+B.w*b[O.title.align],r=h.titlePadding,n=f.bBox(J.node());return D?(z&&(t=O.gauge.axis.visible?f.bBox(W.node()).top-r-n.bottom:B.t+B.h/2-U/2-n.bottom-r),R&&(t=E-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)):t=O._numbersTop-r-n.bottom,l(e,t)})})}},82339:function(t,e,r){"use strict";t.exports=r(6852)},82492:function(t){"use strict";t.exports=function(t,e){if(!e)return t;var r=1/Math.abs(e),n=r>1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf("e+")&&(n=+o)}}return n}},82706:function(t,e,r){"use strict";t.exports=r(29977)},82734:function(t){t.exports=function(t,e,r,n){var i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x,b,_,w,T,A,k,M,S,E=n[0],L=n[1],C=n[2],P=Math.sqrt(E*E+L*L+C*C);return Math.abs(P)<1e-6?null:(E*=P=1/P,L*=P,C*=P,i=Math.sin(r),o=1-(a=Math.cos(r)),s=e[0],l=e[1],u=e[2],c=e[3],f=e[4],h=e[5],p=e[6],d=e[7],v=e[8],g=e[9],y=e[10],m=e[11],x=E*E*o+a,b=L*E*o+C*i,_=C*E*o-L*i,w=E*L*o-C*i,T=L*L*o+a,A=C*L*o+E*i,k=E*C*o+L*i,M=L*C*o-E*i,S=C*C*o+a,t[0]=s*x+f*b+v*_,t[1]=l*x+h*b+g*_,t[2]=u*x+p*b+y*_,t[3]=c*x+d*b+m*_,t[4]=s*w+f*T+v*A,t[5]=l*w+h*T+g*A,t[6]=u*w+p*T+y*A,t[7]=c*w+d*T+m*A,t[8]=s*k+f*M+v*S,t[9]=l*k+h*M+g*S,t[10]=u*k+p*M+y*S,t[11]=c*k+d*M+m*S,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}},82769:function(t,e,r){"use strict";var n=r(15181),i=r(49210),a=r(5651),o=r(53125),s=r(20762),l=r(1798);t.exports=function(t,e,r,u){function c(r,i){return n.coerce(t,e,l,r,i)}i(t,e,c,u),!1!==e.visible&&(a(t,e,c,function(r){return n.coerce2(t,e,l,r)}),o(t,e,c,u),c("xhoverformat"),c("yhoverformat"),c("hovertemplate"),e.contours&&"heatmap"===e.contours.coloring&&s(c,u))}},82797:function(t){"use strict";t.exports={mod:function(t,e){var r=t%e;return r<0?r+e:r},modHalf:function(t,e){return Math.abs(t)>e/2?t-Math.round(t/e)*e:t}}},82881:function(t,e,r){"use strict";var n=r(15181),i=r(13516),a=r(46716),o=r(75958);function s(t,e,r,n){r("accesstoken",n.accessToken),r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var i=r("bounds.west"),o=r("bounds.east"),s=r("bounds.south"),u=r("bounds.north");void 0!==i&&void 0!==o&&void 0!==s&&void 0!==u||delete e.bounds,a(t,e,{name:"layers",handleItemDefaults:l}),e._input=t}function l(t,e){function r(r,i){return n.coerce(t,e,o.layers,r,i)}if(r("visible")){var i,a=r("sourcetype"),s="raster"===a||"image"===a;r("source"),r("sourceattribution"),"vector"===a&&r("sourcelayer"),"image"===a&&r("coordinates"),s&&(i="raster");var l=r("type",i);s&&"raster"!==l&&(l=e.type="raster",n.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),"circle"===l&&r("circle.radius"),"line"===l&&(r("line.width"),r("line.dash")),"fill"===l&&r("fill.outlinecolor"),"symbol"===l&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),n.coerceFont(r,"symbol.textfont"),r("symbol.textposition"),r("symbol.placement"))}}t.exports=function(t,e,r){i(t,e,r,{type:"mapbox",attributes:o,handleDefaults:s,partition:"y",accessToken:e._mapboxAccessToken})}},82945:function(t,e,r){"use strict";var n=r(8357).extendFlat,i=r(8357).extendDeep,a=r(7458).overrideAll,o=r(37565),s=r(24761),l=r(79444).u,u=r(94257),c=r(92444).templatedArray,f=r(11881),h=r(99012).descriptionOnlyNumbers,p=o({editType:"plot",colorEditType:"plot"}),d={color:{valType:"color",editType:"plot"},line:{color:{valType:"color",dflt:s.defaultLine,editType:"plot"},width:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},thickness:{valType:"number",min:0,max:1,dflt:1,editType:"plot"},editType:"calc"},v={valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},g=c("step",i({},d,{range:v}));t.exports={mode:{valType:"flaglist",editType:"calc",flags:["number","delta","gauge"],dflt:"number"},value:{valType:"number",editType:"calc",anim:!0},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},domain:l({name:"indicator",trace:!0,editType:"calc"}),title:{text:{valType:"string",editType:"plot"},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},font:n({},p,{}),editType:"plot"},number:{valueformat:{valType:"string",dflt:"",editType:"plot",description:h("value")},font:n({},p,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"plot"},delta:{reference:{valType:"number",editType:"calc"},position:{valType:"enumerated",values:["top","bottom","left","right"],dflt:"bottom",editType:"plot"},relative:{valType:"boolean",editType:"plot",dflt:!1},valueformat:{valType:"string",editType:"plot",description:h("value")},increasing:{symbol:{valType:"string",dflt:f.INCREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:f.INCREASING.COLOR,editType:"plot"},editType:"plot"},decreasing:{symbol:{valType:"string",dflt:f.DECREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:f.DECREASING.COLOR,editType:"plot"},editType:"plot"},font:n({},p,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"calc"},gauge:{shape:{valType:"enumerated",editType:"plot",dflt:"angular",values:["angular","bullet"]},bar:i({},d,{color:{dflt:"green"}}),bgcolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:s.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:1,editType:"plot"},axis:a({range:v,visible:n({},u.visible,{dflt:!0}),tickmode:u.minor.tickmode,nticks:u.nticks,tick0:u.tick0,dtick:u.dtick,tickvals:u.tickvals,ticktext:u.ticktext,ticks:n({},u.ticks,{dflt:"outside"}),ticklen:u.ticklen,tickwidth:u.tickwidth,tickcolor:u.tickcolor,ticklabelstep:u.ticklabelstep,showticklabels:u.showticklabels,labelalias:u.labelalias,tickfont:o({}),tickangle:u.tickangle,tickformat:u.tickformat,tickformatstops:u.tickformatstops,tickprefix:u.tickprefix,showtickprefix:u.showtickprefix,ticksuffix:u.ticksuffix,showticksuffix:u.showticksuffix,separatethousands:u.separatethousands,exponentformat:u.exponentformat,minexponent:u.minexponent,showexponent:u.showexponent,editType:"plot"},"plot"),steps:g,threshold:{line:{color:n({},d.line.color,{}),width:n({},d.line.width,{dflt:1}),editType:"plot"},thickness:n({},d.thickness,{dflt:.85}),value:{valType:"number",editType:"calc",dflt:!1},editType:"plot"},editType:"plot"}}},82988:function(t,e,r){"use strict";var n=r(74349),i=r(31164).line,a=r(28209),o=r(99012).axisHoverFormat,s=r(38532).rb,l=r(38532).ay,u=r(86152),c=r(8357).extendFlat,f=r(69562);function h(t){return{marker:{color:c({},n.marker.color,{arrayOk:!1,editType:"style"}),line:{color:c({},n.marker.line.color,{arrayOk:!1,editType:"style"}),width:c({},n.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}t.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:n.x,x0:n.x0,dx:n.dx,y:n.y,y0:n.y0,dy:n.dy,xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o("x"),yhoverformat:o("y"),hovertext:n.hovertext,hovertemplate:s({},{keys:u.eventDataKeys}),hoverinfo:c({},a.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:l({editType:"plot"},{keys:u.eventDataKeys.concat(["label"])}),text:n.text,textposition:n.textposition,insidetextanchor:n.insidetextanchor,textangle:n.textangle,textfont:n.textfont,insidetextfont:n.insidetextfont,outsidetextfont:n.outsidetextfont,constraintext:n.constraintext,cliponaxis:n.cliponaxis,orientation:n.orientation,offset:n.offset,width:n.width,increasing:h(),decreasing:h(),totals:h(),connector:{line:{color:c({},i.color,{dflt:f.defaultLine}),width:c({},i.width,{editType:"plot"}),dash:i.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:n.offsetgroup,alignmentgroup:n.alignmentgroup}},83002:function(t,e,r){"use strict";var n=r(5159);t.exports={count:function(t,e,r){return r[t]++,1},sum:function(t,e,r,i){var a=i[e];return n(a)?(a=Number(a),r[t]+=a,a):0},avg:function(t,e,r,i,a){var o=i[e];return n(o)&&(o=Number(o),r[t]+=o,a[t]++),0},min:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]>a){var o=a-r[t];return r[t]=a,o}}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]=e})}(e);for(var r,i=n(t).components.filter(function(t){return t.length>1}),a=1/0,o=0;o-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(k.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(k.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),k.prototype._write=function(t,e,r){r(new v("_write()"))},k.prototype._writev=null,k.prototype.end=function(t,e,r){var n=this._writableState;return"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,P(t,e),r&&(e.finished?i.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(k.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(k.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),k.prototype.destroy=f.destroy,k.prototype._undestroy=f.undestroy,k.prototype._destroy=function(t,e){e(t)}},83157:function(t,e,r){"use strict";t.exports=r(85926)},83326:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=r(88191),o=r(44236),s=r(3071),l=r(26446),u=r(18687),c=r(9168),f=r(64973),h=r(94813),p=r(29120),d=r(52003),v=r(874),g=r(47912),y=g.LABELOPTIMIZER;function m(t,e){var r,n,o,s,l,u,c="",f=0,h=t.edgepaths.map(function(t,e){return e}),p=!0;function d(t){return Math.abs(t[1]-e[0][1])<.01}function v(t){return Math.abs(t[1]-e[2][1])<.01}function g(t){return Math.abs(t[0]-e[0][0])<.01}function y(t){return Math.abs(t[0]-e[2][0])<.01}for(;h.length;){for(u=a.smoothopen(t.edgepaths[f],t.smoothing),c+=p?u:u.replace(/^M/,"L"),h.splice(h.indexOf(f),1),r=t.edgepaths[f][t.edgepaths[f].length-1],s=-1,o=0;o<4;o++){if(!r){i.log("Missing end?",f,t);break}for(d(r)&&!y(r)?n=e[1]:g(r)?n=e[0]:v(r)?n=e[3]:y(r)&&(n=e[2]),l=0;l=0&&(n=m,s=l):Math.abs(r[1]-n[1])<.01?Math.abs(r[1]-m[1])<.01&&(m[0]-r[0])*(n[0]-m[0])>=0&&(n=m,s=l):i.log("endpt to newendpt is not vert. or horz.",r,n,m)}if(r=n,s>=0)break;c+="L"+n}if(s===t.edgepaths.length){i.log("unclosed perimeter path");break}f=s,(p=-1===h.indexOf(f))&&(f=h[0],c+="Z")}for(f=0;fn.center?n.right-s:s-n.left)/(c+Math.abs(Math.sin(u)*o)),p=(l>n.middle?n.bottom-l:l-n.top)/(Math.abs(f)+Math.cos(u)*o);if(h<1||p<1)return 1/0;var d=y.EDGECOST*(1/(h-1)+1/(p-1));d+=y.ANGLECOST*u*u;for(var v=s-c,g=l-f,m=s+c,x=l+f,b=0;b2*y.MAXCOST)break;p&&(s/=2),l=(o=u-s/2)+1.5*s}if(h<=y.MAXCOST)return c},e.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,u=t.theta,c=Math.sin(u),f=Math.cos(u),h=function(t,e){return[s+t*f-e*c,l+t*c+e*f]},p=[h(-a/2,-o/2),h(-a/2,o/2),h(a/2,o/2),h(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:u,level:e.level,width:a,height:o}),n.push(p)},e.drawLabels=function(t,e,r,a,o){var l=t.selectAll("text").data(e,function(t){return t.text+","+t.x+","+t.y+","+t.theta});if(l.exit().remove(),l.enter().append("text").attr({"data-notex":1,"text-anchor":"middle"}).each(function(t){var e=t.x+Math.sin(t.theta)*t.dy,i=t.y-Math.cos(t.theta)*t.dy;n.select(this).text(t.text).attr({x:e,y:i,transform:"rotate("+180*t.theta/Math.PI+" "+e+" "+i+")"}).call(s.convertToTspans,r)}),o){for(var u="",c=0;ce},83998:function(t){"use strict";t.exports=function(t,e){if(!t||null==t.length)throw Error("Argument should be an array");e=null==e?1:Math.floor(e);for(var r=Array(2*e),n=0;ni&&(i=t[o]),t[o]r?r:t}t.exports=function(t,e,r){var y=e._fullLayout;r||(r=y.legend);var m="constant"===r.itemsizing,x=r.itemwidth,b=(x+2*p.itemGap)/2,_=o(b,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return m?n:Math.min(i,r)};function T(t,a,o){var c=t[0].trace,f=c.marker||{},h=f.line||{},p=o?c.visible&&c.type===o:i.traceIs(c,"bar"),d=n.select(a).select("g.legendpoints").selectAll("path.legend"+o).data(p?[t]:[]);d.enter().append("path").classed("legend"+o,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",_),d.exit().remove(),d.each(function(t){var i=n.select(this),a=t[0],o=w(a.mlw,f.line,5,2);i.style("stroke-width",o+"px");var p=a.mcc;if(!r._inHover&&"mc"in a){var d=u(f),v=d.mid;void 0===v&&(v=(d.max+d.min)/2),p=s.tryColorscale(f,"")(v)}var y=p||a.mc||f.color,m=f.pattern,x=m&&s.getPatternAttr(m.shape,0,"");if(x){var b=s.getPatternAttr(m.bgcolor,0,null),_=s.getPatternAttr(m.fgcolor,0,null),T=m.fgopacity,A=g(m.size,8,10),k=g(m.solidity,.5,1),M="legend-"+c.uid;i.call(s.pattern,"legend",e,M,x,A,k,p,m.fillmode,b,_,T)}else i.call(l.fill,y);o&&l.stroke(i,a.mlc||h.color)})}function A(t,r,o){var s=t[0],l=s.trace,u=o?l.visible&&l.type===o:i.traceIs(l,o),c=n.select(r).select("g.legendpoints").selectAll("path.legend"+o).data(u?[t]:[]);if(c.enter().append("path").classed("legend"+o,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",_),c.exit().remove(),c.size()){var p=l.marker||{},d=w(h(p.line.width,s.pts),p.line,5,2),v="pieLike",g=a.minExtend(l,{marker:{line:{width:d}}},v),y=a.minExtend(s,{trace:g},v);f(c,y,g,e)}}t.each(function(t){var e=n.select(this),i=a.ensureSingle(e,"g","layers");i.style("opacity",t[0].trace.opacity);var s=r.valign,l=t[0].lineHeight,u=t[0].height;if("middle"!==s&&l&&u){var c={top:1,bottom:-1}[s]*(.5*(l-u+3));i.attr("transform",o(0,c))}else i.attr("transform",null);i.selectAll("g.legendfill").data([t]).enter().append("g").classed("legendfill",!0),i.selectAll("g.legendlines").data([t]).enter().append("g").classed("legendlines",!0);var f=i.selectAll("g.legendsymbols").data([t]);f.enter().append("g").classed("legendsymbols",!0),f.selectAll("g.legendpoints").data([t]).enter().append("g").classed("legendpoints",!0)}).each(function(t){var r,i=t[0].trace,o=[];if(i.visible)switch(i.type){case"histogram2d":case"heatmap":o=[["M-15,-2V4H15V-2Z"]],r=!0;break;case"choropleth":case"choroplethmapbox":o=[["M-6,-6V6H6V-6Z"]],r=!0;break;case"densitymapbox":o=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],r="radial";break;case"cone":o=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],r=!1;break;case"streamtube":o=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],r=!1;break;case"surface":o=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],r=!0;break;case"mesh3d":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],r=!1;break;case"volume":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],r=!0;break;case"isosurface":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],r=!1}var c=n.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(o);c.enter().append("path").classed("legend3dandfriends",!0).attr("transform",_).style("stroke-miterlimit",1),c.exit().remove(),c.each(function(t,o){var c,f=n.select(this),h=u(i),p=h.colorscale,v=h.reversescale;if(p){if(!r){var g=p.length;c=0===o?p[v?g-1:0][1]:1===o?p[v?0:g-1][1]:p[Math.floor((g-1)/2)][1]}}else{var y=i.vertexcolor||i.facecolor||i.color;c=a.isArrayOrTypedArray(y)?y[o]||y[0]:y}f.attr("d",t[0]),c?f.call(l.fill,c):f.call(function(t){if(t.size()){var n="legendfill-"+i.uid;s.gradient(t,e,n,d(v,"radial"===r),p,"fill")}})})}).each(function(t){var e=t[0].trace,r="waterfall"===e.type;if(t[0]._distinct&&r){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,"waterfall")}var a=[];e.visible&&r&&(a=t[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var o=n.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(a);o.enter().append("path").classed("legendwaterfall",!0).attr("transform",_).style("stroke-miterlimit",1),o.exit().remove(),o.each(function(t){var r=n.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);r.attr("d",t[1]).style("stroke-width",a+"px").call(l.fill,i.color),a&&r.call(l.stroke,i.line.color)})}).each(function(t){T(t,this,"funnel")}).each(function(t){T(t,this)}).each(function(t){var r=t[0].trace,o=n.select(this).select("g.legendpoints").selectAll("path.legendbox").data(r.visible&&i.traceIs(r,"box-violin")?[t]:[]);o.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",_),o.exit().remove(),o.each(function(){var t=n.select(this);if("all"!==r.boxpoints&&"all"!==r.points||0!==l.opacity(r.fillcolor)||0!==l.opacity((r.line||{}).color)){var i=w(void 0,r.line,5,2);t.style("stroke-width",i+"px").call(l.fill,r.fillcolor),i&&l.stroke(t,r.line.color)}else{var u=a.minExtend(r,{marker:{size:m?12:a.constrain(r.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});o.call(s.pointStyle,u,e)}})}).each(function(t){A(t,this,"funnelarea")}).each(function(t){A(t,this,"pie")}).each(function(t){var r,i,o=v(t),l=o.showFill,f=o.showLine,h=o.showGradientLine,p=o.showGradientFill,g=o.anyFill,y=o.anyLine,m=t[0],b=m.trace,_=u(b),T=_.colorscale,A=_.reversescale,k=c.hasMarkers(b)||!g?"M5,0":y?"M5,-2":"M5,-3",M=n.select(this),S=M.select(".legendfill").selectAll("path").data(l||p?[t]:[]);if(S.enter().append("path").classed("js-fill",!0),S.exit().remove(),S.attr("d",k+"h"+x+"v6h-"+x+"z").call(function(t){if(t.size())if(l)s.fillGroupStyle(t,e);else{var r="legendfill-"+b.uid;s.gradient(t,e,r,d(A),T,"fill")}}),f||h){var E=w(void 0,b.line,10,5);i=a.minExtend(b,{line:{width:E}}),r=[a.minExtend(m,{trace:i})]}var L=M.select(".legendlines").selectAll("path").data(f||h?[r]:[]);L.enter().append("path").classed("js-line",!0),L.exit().remove(),L.attr("d",k+(h?"l"+x+",0.0001":"h"+x)).call(f?s.lineGroupStyle:function(t){if(t.size()){var r="legendline-"+b.uid;s.lineGroupStyle(t),s.gradient(t,e,r,d(A),T,"stroke")}})}).each(function(t){var r,i,o=v(t),l=o.anyFill,u=o.anyLine,f=o.showLine,h=o.showMarker,p=t[0],d=p.trace,g=!h&&!u&&!l&&c.hasText(d);function y(t,e,r,n){var i=a.nestedProperty(d,t).get(),o=a.isArrayOrTypedArray(i)&&e?e(i):i;if(m&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return p._distinct&&p.index&&t[p.index]?t[p.index]:t[0]}if(h||g||f){var b={},w={};if(h){b.mc=y("marker.color",x),b.mx=y("marker.symbol",x),b.mo=y("marker.opacity",a.mean,[.2,1]),b.mlc=y("marker.line.color",x),b.mlw=y("marker.line.width",a.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var T=y("marker.size",a.mean,[2,16],12);b.ms=T,w.marker.size=T}f&&(w.line={width:y("line.width",x,[0,10],5)}),g&&(b.tx="Aa",b.tp=y("textposition",x),b.ts=10,b.tc=y("textfont.color",x),b.tf=y("textfont.family",x)),r=[a.minExtend(p,b)],(i=a.minExtend(d,w)).selectedpoints=null,i.texttemplate=null}var A=n.select(this).select("g.legendpoints"),k=A.selectAll("path.scatterpts").data(h?r:[]);k.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",_),k.exit().remove(),k.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=A.selectAll("g.pointtext").data(g?r:[]);M.enter().append("g").classed("pointtext",!0).append("text").attr("transform",_),M.exit().remove(),M.selectAll("text").call(s.textPointStyle,i,e)}).each(function(t){var e=t[0].trace,r=n.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(e.visible&&"candlestick"===e.type?[t,t]:[]);r.enter().append("path").classed("legendcandle",!0).attr("d",function(t,e){return e?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",_).style("stroke-miterlimit",1),r.exit().remove(),r.each(function(t,r){var i=n.select(this),a=e[r?"increasing":"decreasing"],o=w(void 0,a.line,5,2);i.style("stroke-width",o+"px").call(l.fill,a.fillcolor),o&&l.stroke(i,a.line.color)})}).each(function(t){var e=t[0].trace,r=n.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(e.visible&&"ohlc"===e.type?[t,t]:[]);r.enter().append("path").classed("legendohlc",!0).attr("d",function(t,e){return e?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",_).style("stroke-miterlimit",1),r.exit().remove(),r.each(function(t,r){var i=n.select(this),a=e[r?"increasing":"decreasing"],o=w(void 0,a.line,5,2);i.style("fill","none").call(s.dashLine,a.line.dash,o),o&&l.stroke(i,a.line.color)})})}},85797:function(t,e,r){"use strict";var n,i=r(42424),a=r(38304),o=r(41365),s=r(72930),l=r(51220),u=Object.defineProperty;n=t.exports=function(t,e){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");l.call(this,t),e=e?a.call(e,"key+value")?"key+value":a.call(e,"key")?"key":"value":"value",u(this,"__kind__",o("",e))},i&&i(n,l),delete n.prototype.constructor,n.prototype=Object.create(l.prototype,{_resolve:o(function(t){return"value"===this.__kind__?this.__list__[t]:"key+value"===this.__kind__?[t,this.__list__[t]]:t})}),u(n.prototype,s.toStringTag,o("c","Array Iterator"))},85882:function(t,e,r){"use strict";var n=r(16534),i=r(69562),a=r(88191),o=r(44236);function s(t,e){var r=e[0].trace,s=e[0].node3.selectAll(".choroplethlocation"),l=r.marker||{},u=l.line||{},c=o.makeColorScaleFuncFromTrace(r);s.each(function(t){n.select(this).attr("fill",c(t.z)).call(i.stroke,t.mlc||u.color).call(a.dashLine,"",t.mlw||u.width||0).style("opacity",l.opacity)}),a.selectedPointStyle(s,r)}t.exports={style:function(t,e){e&&s(0,e)},styleOnSelect:function(t,e){var r=e[0].node3,n=e[0].trace;n.selectedpoints?a.selectedPointStyle(r.selectAll(".choroplethlocation"),n):s(0,e)}}},85926:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"barpolar",basePlotModule:r(16665),categories:["polar","bar","showLegend"],attributes:r(29245),layoutAttributes:r(28600),supplyDefaults:r(67914),supplyLayoutDefaults:r(96015),calc:r(1105).calc,crossTraceCalc:r(1105).crossTraceCalc,plot:r(89191),colorbar:r(23814),formatLabels:r(90812),style:r(18095).style,styleOnSelect:r(18095).styleOnSelect,hoverPoints:r(14476),selectPoints:r(40668),meta:{}}},86047:function(t,e,r){"use strict";var n=r(5159),i=r(78945).BADNUM,a=r(80924),o=r(66335),s=r(64433),l=r(2524).calcMarkerSize;t.exports=function(t,e){for(var r=t._fullLayout,u=e.subplot,c=r[u].realaxis,f=r[u].imaginaryaxis,h=c.makeCalcdata(e,"real"),p=f.makeCalcdata(e,"imag"),d=e._length,v=new Array(d),g=0;g=0;j--)F=M.clipsegments[j],B=i([],F.x,_.c2p),N=i([],F.y,w.c2p),B.reverse(),N.reverse(),V.push(a(B,N,F.bicubic));var H="M"+V.join("L")+"Z";!function(t,e,r,n,o,l){var u,c,f,h,p=s.ensureSingle(t,"g","contourbg").selectAll("path").data("fill"!==l||o?[]:[0]);p.enter().append("path"),p.exit().remove();var d=[];for(h=0;h=0&&(h=L,d=v):Math.abs(f[1]-h[1])=0&&(h=L,d=v):s.log("endpt to newendpt is not vert. or horz.",f,h,L)}if(d>=0)break;m+=S(f,h),f=h}if(d===e.edgepaths.length){s.log("unclosed perimeter path");break}c=d,(b=-1===x.indexOf(c))&&(c=x[0],m+=S(f,h)+"Z",f=null)}for(c=0;cv&&(n.max=v),n.len=n.max-n.min}function g(t,e){var r,n=0,o=.1;return(Math.abs(t[0]-l)9||9===s&&r>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==e&&(o=r,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===e?(o+=r-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(u)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(u,1,1).add(o,"d").toJD()},fromJD:function(t){var e=n.instance().fromJD(t),r=e.year(),i=e.dayOfYear(),a=r+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var u=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,u)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!_(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function _(t){return t===Math.round(t)&&t>=0}function w(){var t,e,r={};for(t in f(r,o),n.subplotsRegistry)if((e=n.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(e.attr))for(var i=0;i=l.length)return!1;i=(r=(n.transformsRegistry[l[u].type]||{}).attributes)&&r[e[2]],s=3}else{var c=t._module;if(c||(c=(n.modules[t.type||a.type.dflt]||{})._module),!c)return!1;if(!(i=(r=c.attributes)&&r[o])){var f=c.basePlotModule;f&&f.attributes&&(i=f.attributes[o])}i||(i=a[o])}return b(i,e,s)},e.getLayoutValObject=function(t,e){var r=function(t,e){var r,i,a,s,l=t._basePlotModules;if(l){var u;for(r=0;r_?(M=p,C="y0",S=_,P="y1"):(M=_,C="y1",S=p,P="y0"),$(n),et(l,r),function(t,e,r){var n=e.xref,i=e.yref,a=o.getFromId(r,n),s=o.getFromId(r,i),l="";"paper"===n||a.autorange||(l+=n),"paper"===i||s.autorange||(l+=i),h.setClipUrl(t,l?"clip"+r._fullLayout._uid+l:null,r)}(e,r,t),K.moveFn="move"===z?Q:tt,K.altKey=n.altKey)},doneFn:function(){b(t)||(v(e),rt(l),T(e,t,r),i.call("_guiRelayout",t,c.getUpdateObj()))},clickFn:function(){b(t)||rt(l)}};function $(r){if(b(t))z=null;else if(B)z="path"===r.target.tagName?"move":"start-point"===r.target.attributes["data-line-point"].value?"resize-over-start-point":"resize-over-end-point";else{var n=K.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!N&&i>10&&a>10&&!r.shiftKey?d.getCursor(o/i,1-s/a):"move";v(e,l),z=l.split("-")[0]}}function Q(n,i){if("path"===r.type){var a=function(t){return t},o=a,c=a;R?j("xanchor",r.xanchor=Z(w+n)):(o=function(t){return Z(Y(t)+n)},V&&"date"===V.type&&(o=y.encodeDate(o))),F?j("yanchor",r.yanchor=X(k+i)):(c=function(t){return X(W(t)+i)},q&&"date"===q.type&&(c=y.encodeDate(c))),j("path",r.path=A(D,o,c))}else R?j("xanchor",r.xanchor=Z(w+n)):(j("x0",r.x0=Z(f+n)),j("x1",r.x1=Z(x+n))),F?j("yanchor",r.yanchor=X(k+i)):(j("y0",r.y0=X(p+i)),j("y1",r.y1=X(_+i)));e.attr("d",m(t,r)),et(l,r),u(t,s,r,U)}function tt(n,i){if(N){var a=function(t){return t},o=a,c=a;R?j("xanchor",r.xanchor=Z(w+n)):(o=function(t){return Z(Y(t)+n)},V&&"date"===V.type&&(o=y.encodeDate(o))),F?j("yanchor",r.yanchor=X(k+i)):(c=function(t){return X(W(t)+i)},q&&"date"===q.type&&(c=y.encodeDate(c))),j("path",r.path=A(D,o,c))}else if(B){if("resize-over-start-point"===z){var h=f+n,d=F?p-i:p+i;j("x0",r.x0=R?h:Z(h)),j("y0",r.y0=F?d:X(d))}else if("resize-over-end-point"===z){var v=x+n,g=F?_-i:_+i;j("x1",r.x1=R?v:Z(v)),j("y1",r.y1=F?g:X(g))}}else{var b=function(t){return-1!==z.indexOf(t)},T=b("n"),H=b("s"),G=b("w"),J=b("e"),K=T?M+i:M,$=H?S+i:S,Q=G?E+n:E,tt=J?L+n:L;F&&(T&&(K=M-i),H&&($=S-i)),(!F&&$-K>10||F&&K-$>10)&&(j(C,r[C]=F?K:X(K)),j(P,r[P]=F?$:X($))),tt-Q>10&&(j(O,r[O]=R?Q:Z(Q)),j(I,r[I]=R?tt:Z(tt)))}e.attr("d",m(t,r)),et(l,r),u(t,s,r,U)}function et(t,e){(R||F)&&function(){var r="path"!==e.type,n=t.selectAll(".visual-cue").data([0]);n.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":1}).classed("visual-cue",!0);var i=Y(R?e.xanchor:a.midRange(r?[e.x0,e.x1]:y.extractPathCoords(e.path,g.paramIsX))),o=W(F?e.yanchor:a.midRange(r?[e.y0,e.y1]:y.extractPathCoords(e.path,g.paramIsY)));if(i=y.roundPositionForSharpStrokeRendering(i,1),o=y.roundPositionForSharpStrokeRendering(o,1),R&&F){var s="M"+(i-1-1)+","+(o-1-1)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";n.attr("d",s)}else if(R){var l="M"+(i-1-1)+","+(o-9-1)+"v18 h2 v-18 Z";n.attr("d",l)}else{var u="M"+(i-9-1)+","+(o-1-1)+"h18 v2 h-18 Z";n.attr("d",u)}}()}function rt(t){t.selectAll(".visual-cue").remove()}d.init(K),J.node().onmousemove=$}(t,F,c,e,r,z):!0===c.editable&&F.style("pointer-events",I||f.opacity(L)*E<=.5?"stroke":"all");F.node().addEventListener("click",function(){return function(t,e){if(_(t)){var r=+e.node().getAttribute("data-index");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void k(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=k,x(t)}}}(t,F)})}c._input&&!0===c.visible&&("below"!==c.layer?M(t._fullLayout._shapeUpperLayer):"paper"===c.xref||"paper"===c.yref?M(t._fullLayout._shapeLowerLayer):w._hadPlotinfo?M((w.mainplotinfo||w).shapelayer):M(t._fullLayout._shapeLowerLayer))}function T(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,"").replace(/[xyz][1-9]* *domain/g,"");h.setClipUrl(t,n?"clip"+e._fullLayout._uid+n:null,e)}function A(t,e,r){return t.replace(g.segmentRE,function(t){var n=0,i=t.charAt(0),a=g.paramIsX[i],o=g.paramIsY[i],s=g.numParams[i];return i+t.substr(1).replace(g.paramRE,function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t})})}function k(t){_(t)&&t._fullLayout._activeShapeIndex>=0&&(c(t),delete t._fullLayout._activeShapeIndex,x(t))}t.exports={draw:x,drawOne:w,eraseActiveShape:function(t){if(_(t)){c(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e=200?"M0,0.5L0.5,0L0,-0.5L-0.5,0Z":"")}x.symbolNumber=function(t){if(o(t))t=+t;else if("string"==typeof t){var e=0;t.indexOf("-open")>0&&(e=100,t=t.replace("-open","")),t.indexOf("-dot")>0&&(e+=200,t=t.replace("-dot","")),(t=x.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=w||t>=400?0:Math.floor(Math.max(t,0))};var A={x1:1,x2:0,y1:0,y2:0},k={x1:0,x2:0,y1:1,y2:0},M=a("~f"),S={radial:{node:"radialGradient"},radialreversed:{node:"radialGradient",reversed:!0},horizontal:{node:"linearGradient",attrs:A},horizontalreversed:{node:"linearGradient",attrs:A,reversed:!0},vertical:{node:"linearGradient",attrs:k},verticalreversed:{node:"linearGradient",attrs:k,reversed:!0}};x.gradient=function(t,e,r,a,o,l){for(var c=o.length,f=S[a],h=new Array(c),p=0;p=0&&void 0===t.i&&(t.i=o.i),e.style("opacity",n.selectedOpacityFn?n.selectedOpacityFn(t):void 0===t.mo?s.opacity:t.mo),n.ms2mrc){var c;c="various"===t.ms||"various"===s.size?3:n.ms2mrc(t.ms),t.mrc=c,n.selectedSizeFn&&(c=t.mrc=n.selectedSizeFn(t));var f=x.symbolNumber(t.mx||s.symbol)||0;t.om=f%200>=100;var h=rt(t,r),p=G(t,r);e.attr("d",T(f,c,h,p))}var d,v,g,y=!1;if(t.so)g=l.outlierwidth,v=l.outliercolor,d=s.outliercolor;else{var m=(l||{}).width;g=(t.mlw+1||m+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,v="mlc"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(l.color)?u.defaultLine:l.color,i.isArrayOrTypedArray(s.color)&&(d=u.defaultLine,y=!0),d="mc"in t?t.mcc=n.markerScale(t.mc):s.color||s.colors||"rgba(0,0,0,0)",n.selectedColorFn&&(d=n.selectedColorFn(t))}if(t.om)e.call(u.stroke,d).style({"stroke-width":(g||1)+"px",fill:"none"});else{e.style("stroke-width",(t.isBlank?0:g)+"px");var b=s.gradient,_=t.mgt;_?y=!0:_=b&&b.type,i.isArrayOrTypedArray(_)&&(_=_[0],S[_]||(_=0));var w=s.pattern,A=w&&x.getPatternAttr(w.shape,t.i,"");if(_&&"none"!==_){var k=t.mgc;k?y=!0:k=b.color;var M=r.uid;y&&(M+="-"+t.i),x.gradient(e,a,M,_,[[0,k],[1,d]],"fill")}else if(A){var E=!1,L=w.fgcolor;!L&&o&&o.color&&(L=o.color,E=!0);var C=x.getPatternAttr(L,t.i,o&&o.color||null),P=x.getPatternAttr(w.bgcolor,t.i,null),O=w.fgopacity,I=x.getPatternAttr(w.size,t.i,8),D=x.getPatternAttr(w.solidity,t.i,.3);E=E||t.mcc||i.isArrayOrTypedArray(w.shape)||i.isArrayOrTypedArray(w.bgcolor)||i.isArrayOrTypedArray(w.fgcolor)||i.isArrayOrTypedArray(w.size)||i.isArrayOrTypedArray(w.solidity);var z=r.uid;E&&(z+="-"+t.i),x.pattern(e,"point",a,z,A,I,D,t.mcc,w.fillmode,P,C,O)}else i.isArrayOrTypedArray(d)?u.fill(e,d[t.i]):u.fill(e,d);g&&u.stroke(e,v)}},x.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=x.tryColorscale(r,""),e.lineScale=x.tryColorscale(r,"line"),l.traceIs(t,"symbols")&&(e.ms2mrc=g.isBubble(t)?y(t):function(){return(r.size||6)/2}),t.selectedpoints&&i.extendFlat(e,x.makeSelectedPointStyleFns(t)),e},x.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},a=t.marker||{},o=r.marker||{},s=n.marker||{},u=a.opacity,c=o.opacity,f=s.opacity,h=void 0!==c,p=void 0!==f;(i.isArrayOrTypedArray(u)||h||p)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?h?c:e:p?f:v*e});var d=a.color,g=o.color,y=s.color;(g||y)&&(e.selectedColorFn=function(t){var e=t.mcc||d;return t.selected?g||e:y||e});var m=a.size,x=o.size,b=s.size,_=void 0!==x,w=void 0!==b;return l.traceIs(t,"symbols")&&(_||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||m/2;return t.selected?_?x/2:e:w?b/2:e}),e},x.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,c=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?l||e:c||(l?e:u.addOpacity(e,v))},e},x.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];r.selectedOpacityFn&&a.push(function(t,e){t.style("opacity",r.selectedOpacityFn(e))}),r.selectedColorFn&&a.push(function(t,e){u.fill(t,r.selectedColorFn(e))}),r.selectedSizeFn&&a.push(function(t,n){var a=n.mx||i.symbol||0,o=r.selectedSizeFn(n);t.attr("d",T(x.symbolNumber(a),o,rt(n,e),G(n,e))),n.mrc2=o}),a.length&&t.each(function(t){for(var e=n.select(this),r=0;r0?r:0}function I(t,e,r){return r&&(t=N(t)),e?z(t[1]):D(t[0])}function D(t){var e=n.round(t,2);return E=e,e}function z(t){var e=n.round(t,2);return L=e,e}function R(t,e,r,n){var i=t[0]-e[0],a=t[1]-e[1],o=r[0]-e[0],s=r[1]-e[1],l=Math.pow(i*i+a*a,.25),u=Math.pow(o*o+s*s,.25),c=(u*u*i-l*l*o)*n,f=(u*u*a-l*l*s)*n,h=3*u*(l+u),p=3*l*(l+u);return[[D(e[0]+(h&&c/h)),z(e[1]+(h&&f/h))],[D(e[0]-(p&&c/p)),z(e[1]-(p&&f/p))]]}x.textPointStyle=function(t,e,r){if(t.size()){var a;if(e.selectedpoints){var o=x.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=r._fullLayout;t.each(function(t){var o=n.select(this),u=s?i.extractOption(t,e,"txt","texttemplate"):i.extractOption(t,e,"tx","text");if(u||0===u){if(s){var c=e._module.formatLabels,f=c?c(t,e,l):{},p={};m(p,e,t.i);var d=e._meta||{};u=i.texttemplateString(u,f,l._d3locale,p,t,d)}var v=t.tp||e.textposition,g=O(t,e),y=a?a(t):t.tc||e.textfont.color;o.call(x.font,t.tf||e.textfont.family,g,y).text(u).call(h.convertToTspans,r).call(P,v,g,t.mrc)}else o.remove()})}},x.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var r=x.makeSelectedTextStyleFns(e);t.each(function(t){var i=n.select(this),a=r.selectedTextColorFn(t),o=t.tp||e.textposition,s=O(t,e);u.fill(i,a);var c=l.traceIs(e,"bar-like");P(i,o,s,t.mrc2||t.mrc,c)})}},x.smoothopen=function(t,e){if(t.length<3)return"M"+t.join("L");var r,n="M"+t[0],i=[];for(r=1;r=u||w>=f&&w<=u)&&(T<=h&&T>=c||T>=h&&T<=c)&&(t=[w,T])}return t}x.steps=function(t){var e=F[t]||B;return function(t){for(var r="M"+D(t[0][0])+","+z(t[0][1]),n=t.length,i=1;i=1e4&&(x.savedBBoxes={},j=0),r&&(x.savedBBoxes[r]=g),j++,i.extendFlat({},g)},x.setClipUrl=function(t,e,r){t.attr("clip-path",V(e,r))},x.getTranslate=function(t){var e=(t[t.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,function(t,e,r){return[e,r].join(" ")}).split(" ");return{x:+e[0]||0,y:+e[1]||0}},x.setTranslate=function(t,e,r){var n=t.attr?"attr":"getAttribute",i=t.attr?"attr":"setAttribute",a=t[n]("transform")||"";return e=e||0,r=r||0,a=a.replace(/(\btranslate\(.*?\);?)/,"").trim(),a=(a+=f(e,r)).trim(),t[i]("transform",a),a},x.getScale=function(t){var e=(t[t.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,function(t,e,r){return[e,r].join(" ")}).split(" ");return{x:+e[0]||1,y:+e[1]||1}},x.setScale=function(t,e,r){var n=t.attr?"attr":"getAttribute",i=t.attr?"attr":"setAttribute",a=t[n]("transform")||"";return e=e||1,r=r||1,a=a.replace(/(\bscale\(.*?\);?)/,"").trim(),a=(a+="scale("+e+","+r+")").trim(),t[i]("transform",a),a};var H=/\s*sc.*/;x.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?"":"scale("+e+","+r+")";t.each(function(){var t=(this.getAttribute("transform")||"").replace(H,"");t=(t+=n).trim(),this.setAttribute("transform",t)})}};var q=/translate\([^)]*\)\s*$/;function G(t,e){var r;return t&&(r=t.mf),void 0===r&&(r=e.marker&&e.marker.standoff||0),e._geo||e._xA?r:-r}x.setTextPointsScale=function(t,e,r){t&&t.each(function(){var t,i=n.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(q);t=1===e&&1===r?[]:[f(o,s),"scale("+e+","+r+")",f(-o,-s)],l&&t.push(l),i.attr("transform",t.join(""))}})},x.getMarkerStandoff=G;var Y,W,Z,X,J,K,$=Math.atan2,Q=Math.cos,tt=Math.sin;function et(t,e){var r=e[0],n=e[1];return[r*Q(t)-n*tt(t),r*tt(t)+n*Q(t)]}function rt(t,e){var r,n,i=t.ma;void 0===i&&(i=e.marker.angle||0);var a=e.marker.angleref;if("previous"===a||"north"===a){if(e._geo){var s=e._geo.project(t.lonlat);r=s[0],n=s[1]}else{var l=e._xA,u=e._yA;if(!l||!u)return 90;r=l.c2p(t.x),n=u.c2p(t.y)}if(e._geo){var c,f=t.lonlat[0],h=t.lonlat[1],p=e._geo.project([f,h+1e-5]),d=e._geo.project([f+1e-5,h]),v=$(d[1]-n,d[0]-r),g=$(p[1]-n,p[0]-r);if("north"===a)c=i/180*Math.PI;else if("previous"===a){var y=f/180*Math.PI,m=h/180*Math.PI,x=Y/180*Math.PI,b=W/180*Math.PI,_=x-y,w=Q(b)*tt(_),T=tt(b)*Q(m)-Q(b)*tt(m)*Q(_);c=-$(w,T)-Math.PI,Y=f,W=h}var A=et(v,[Q(c),0]),k=et(g,[tt(c),0]);i=$(A[1]+k[1],A[0]+k[0])/Math.PI*180,"previous"!==a||K===e.uid&&t.i===J+1||(i=null)}if("previous"===a&&!e._geo)if(K===e.uid&&t.i===J+1&&o(r)&&o(n)){var M=r-Z,S=n-X,E=e.line&&e.line.shape||"",L=E.slice(E.length-1);"h"===L&&(S=0),"v"===L&&(M=0),i+=$(S,M)/Math.PI*180+90}else i=null}return Z=r,X=n,J=t.i,K=e.uid,i}x.getMarkerAngle=rt},88273:function(t,e,r){"use strict";var n=r(50260);function i(t,e){o(t,e),a(t)}function a(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function o(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,s=this._readableState&&this._readableState.destroyed,l=this._writableState&&this._writableState.destroyed;return s||l?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(o,this,t)):n.nextTick(o,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?n.nextTick(a,r):(r._writableState.errorEmitted=!0,n.nextTick(i,r,t)):n.nextTick(i,r,t):e?(n.nextTick(a,r),e(t)):n.nextTick(a,r)}),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)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},88326:function(t,e,r){"use strict";var n=r(93003),i=r(28418),a=r(46982),o=r(51676).isUnifiedHover,s=r(32525),l=r(76492),u=r(61012).DRAW_MODES,c=r(15181).extendDeep;t.exports=function(t){var e=t._fullLayout,r=t._context,f=e._modeBar;if(r.displayModeBar||r.watermark){if(!Array.isArray(r.modeBarButtonsToRemove))throw new Error(["*modeBarButtonsToRemove* configuration options","must be an array."].join(" "));if(!Array.isArray(r.modeBarButtonsToAdd))throw new Error(["*modeBarButtonsToAdd* configuration options","must be an array."].join(" "));var h,p=r.modeBarButtons;h=Array.isArray(p)&&p.length?function(t){for(var e=c([],t),r=0;r1?(O=["toggleHover"],I=["resetViews"]):y?(P=["zoomInGeo","zoomOutGeo"],O=["hoverClosestGeo"],I=["resetGeo"]):g?(O=["hoverClosest3d"],I=["resetCameraDefault3d","resetCameraLastSave3d"]):w?(P=["zoomInMapbox","zoomOutMapbox"],O=["toggleHover"],I=["resetViewMapbox"]):b?O=["hoverClosestGl2d"]:m?O=["hoverClosestPie"]:k?(O=["hoverClosestCartesian","hoverCompareCartesian"],I=["resetViewSankey"]):O=["toggleHover"],v&&(O=["toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"]),(function(t){for(var e=0;e=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(r))for(e=0;e=55296&&g<=56319&&(v+=t[++p]),l.call(e,y,v,f),!h);++p);else u.call(t,function(t){return l.call(e,y,t,f),h})}},88870:function(t){"use strict";t.exports=function(t,e,r,n,i){var a=(t-r)/(n-r),o=a+e/(n-r),s=(a+o)/2;return"left"===i||"bottom"===i?a:"center"===i||"middle"===i?s:"right"===i||"top"===i?o:a<2/3-s?a:o>4/3-s?o:s}},88890:function(t,e,r){"use strict";e.version=r(16845).version,r(89494),r(29269);for(var n=r(46982),i=e.register=n.register,a=r(2378),o=Object.keys(a),s=0;s=0;r--){var i=e[r];n.removeLayer(c.layerIds[i])}t||n.removeSource(c.sourceIds.circle)}(t):function(t){for(var e=o.nonCluster,r=e.length-1;r>=0;r--){var i=e[r];n.removeLayer(c.layerIds[i]),t||n.removeSource(c.sourceIds[i])}}(t)}function h(t){l?function(t){t||c.addSource("circle",a.circle,e.cluster);for(var r=o.cluster,n=0;n=0;r--){var n=e[r];t.removeLayer(this.layerIds[n]),t.removeSource(this.sourceIds[n])}},t.exports=function(t,e){var r,n,a,l=e[0].trace,u=l.cluster&&l.cluster.enabled,c=!0!==l.visible,f=new s(t,l.uid,u,c),h=i(t.gd,e),p=f.below=t.belowLookup["trace-"+l.uid];if(u)for(f.addSource("circle",h.circle,l.cluster),r=0;r0?(u=o,c=l):(u=l,c=o);var f=[s.findEnclosingVertexAngles(u,t.vangles)[0],(u+c)/2,s.findEnclosingVertexAngles(c,t.vangles)[1]];return s.pathPolygonAnnulus(n,i,u,c,f,e,r)}:function(t,n,i,o){return a.pathAnnulus(t,n,i,o,e,r)}}(e),d=e.layers.frontplot.select("g.barlayer");a.makeTraceGroups(d,r,"trace bars").each(function(){var r=n.select(this),s=a.ensureSingle(r,"g","points").selectAll("g.point").data(a.identity);s.enter().append("g").style("vector-effect",l?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),s.exit().remove(),s.each(function(t){var e,r=n.select(this),o=t.rp0=f.c2p(t.s0),s=t.rp1=f.c2p(t.s1),l=t.thetag0=h.c2g(t.p0),d=t.thetag1=h.c2g(t.p1);if(i(o)&&i(s)&&i(l)&&i(d)&&o!==s&&l!==d){var v=f.c2g(t.s1),g=(l+d)/2;t.ct=[u.c2p(v*Math.cos(g)),c.c2p(v*Math.sin(g))],e=p(o,s,l,d)}else e="M0,0Z";a.ensureSingle(r,"path").attr("d",e)}),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)})}},89196:function(t,e,r){"use strict";var n=r(5159),i=r(15181),a=i.dateTime2ms,o=i.incrementMonth,s=r(78945).ONEAVGMONTH;t.exports=function(t,e,r,i){if("date"!==e.type)return{vals:i};var l=t[r+"periodalignment"];if(!l)return{vals:i};var u,c=t[r+"period"];if(n(c)){if((c=+c)<=0)return{vals:i}}else if("string"==typeof c&&"M"===c.charAt(0)){var f=+c.substring(1);if(!(f>0&&Math.round(f)===f))return{vals:i};u=f}for(var h=e.calendar,p="start"===l,d="end"===l,v=t[r+"period0"],g=a(v,h)||0,y=[],m=[],x=[],b=i.length,_=0;_k;)A=o(A,-u,h);for(;A<=k;)A=o(A,u,h);T=o(A,-u,h)}else{for(A=g+(w=Math.round((k-g)/c))*c;A>k;)A-=c;for(;A<=k;)A+=c;T=A-c}y[_]=p?T:d?A:(T+A)/2,m[_]=T,x[_]=A}return{vals:y,starts:m,ends:x}}},89318:function(t){"use strict";t.exports=Math.max},89358:function(t,e,r){"use strict";var n=r(8357).extendFlat;e.splitToPanels=function(t){var e=[0,0],r=n({},t,{key:"header",type:"header",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:n({},t.calcdata,{cells:t.calcdata.headerCells})});return[n({},t,{key:"cells1",type:"cells",page:0,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n({},t,{key:"cells2",type:"cells",page:1,prevPages:e,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),r]},e.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0;return[r,e?r+e.rows.length:0]}(t);return(t.values||[]).slice(e[0],e[1]).map(function(r,n){return{keyWithinBlock:n+("string"==typeof r&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():""),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}})}},89374:function(t,e,r){"use strict";var n=r(15181).maxRowLength;t.exports=function(t){var e,r,i,a,o,s,l,u,c=[],f={},h=[],p=t[0],d=[],v=[0,0,0],g=n(t);for(r=0;r=0;o--)(s=((f[[(r=(a=h[o])[0])-1,i=a[1]]]||v)[2]+(f[[r+1,i]]||v)[2]+(f[[r,i-1]]||v)[2]+(f[[r,i+1]]||v)[2])/20)&&(l[a]=[r,i,s],h.splice(o,1),u=!0);if(!u)throw"findEmpties iterated with no new neighbors";for(a in l)f[a]=l[a],c.push(l[a])}return c.sort(function(t,e){return e[2]-t[2]})}},89494:function(t,e,r){var n;!function(i,a){a[i]=a[i]||function(){"use strict";var t,e,r,n=Object.prototype.toString,i="undefined"!=typeof setImmediate?function(t){return setImmediate(t)}:setTimeout;try{Object.defineProperty({},"x",{}),t=function(t,e,r,n){return Object.defineProperty(t,e,{value:r,writable:!0,configurable:!1!==n})}}catch(e){t=function(t,e,r){return t[e]=r,t}}function a(t,n){r.add(t,n),e||(e=i(r.drain))}function o(t){var e,r=typeof t;return null==t||"object"!=r&&"function"!=r||(e=t.then),"function"==typeof e&&e}function s(){for(var t=0;t0&&a(s,r))}catch(t){c.call(new h(r),t)}}}function c(t){var e=this;e.triggered||(e.triggered=!0,e.def&&(e=e.def),e.msg=t,e.state=2,e.chain.length>0&&a(s,e))}function f(t,e,r,n){for(var i=0;ie[2]&&(e[2]=l[u+0]),l[u+1]>e[3]&&(e[3]=l[u+1]);return e}},89953:function(t,e,r){"use strict";var n=r(49188),i=r(42964),a=r(8374),o=r(72930).iterator,s=Array.isArray;t.exports=function(t){return!(!i(t)||!s(t)&&!a(t)&&!n(t)&&"function"!=typeof t[o])}},90057:function(t){"use strict";function e(t,r,n){var i=0|t[n];if(i<=0)return[];var a,o=new Array(i);if(n===t.length-1)for(a=0;a0)return function(t,e){var r,n;for(r=new Array(t),n=0;n2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}u("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),u("ERR_INVALID_ARG_TYPE",function(t,e,i){var a,s,l,u,f;if(void 0===o&&(o=r(14222)),o("string"==typeof t,"'name' must be a string"),"string"==typeof e&&(s="not ",e.substr(0,4)===s)?(a="must not be",e=e.replace(/^not /,"")):a="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))l="The ".concat(t," ").concat(a," ").concat(c(e,"type"));else{var h=("number"!=typeof f&&(f=0),f+1>(u=t).length||-1===u.indexOf(".",f)?"argument":"property");l='The "'.concat(t,'" ').concat(h," ").concat(a," ").concat(c(e,"type"))}return l+". Received type ".concat(n(i))},TypeError),u("ERR_INVALID_ARG_VALUE",function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===s&&(s=r(73147));var i=s.inspect(e);return i.length>128&&(i="".concat(i.slice(0,128),"...")),"The argument '".concat(t,"' ").concat(n,". Received ").concat(i)},TypeError,RangeError),u("ERR_INVALID_RETURN_VALUE",function(t,e,r){var i;return i=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(n(r)),"Expected ".concat(t,' to be returned from the "').concat(e,'"')+" function but got ".concat(i,".")},TypeError),u("ERR_MISSING_ARGS",function(){for(var t=arguments.length,e=new Array(t),n=0;n0,"At least one arg needs to be specified");var i="The ",a=e.length;switch(e=e.map(function(t){return'"'.concat(t,'"')}),a){case 1:i+="".concat(e[0]," argument");break;case 2:i+="".concat(e[0]," and ").concat(e[1]," arguments");break;default:i+=e.slice(0,a-1).join(", "),i+=", and ".concat(e[a-1]," arguments")}return"".concat(i," must be specified")},TypeError),t.exports.codes=l},90438:function(t,e,r){"use strict";var n=r(16534),i=r(38533),a=r(64815),o=r(61426),s=r(73157),l=r(94963),u=r(13616),c=r(10194),f=r(23716),h=r(23255),p=Object.keys(i),d={"ISO-3":l,"USA-states":l,"country names":function(t){for(var e=0;e0&&t[e+1][0]<0)return e;return null}switch(e="RUS"===s||"FJI"===s?function(t){var e;if(null===u(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case"MultiPolygon":for(r=0;ri&&(i=u,e=l)}else e=r;return o.default(e).geometry.coordinates}(c),n.fIn=t,n.fOut=c,s.push(c)}else u.log(["Location",n.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete i[r]}switch(r.type){case"FeatureCollection":var h=r.features;for(n=0;n100?(clearInterval(a),n("Unexpected error while fetching from "+t)):void i++},50)})}for(var o=0;oi-Math.floor(i)}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Persian",jdEpoch:1948320.5,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Dey","Bah","Esf"],dayNames:["Yekshanbeh","Doshanbeh","Seshanbeh","Chahārshanbeh","Panjshanbeh","Jom'eh","Shanbeh"],dayNamesShort:["Yek","Do","Se","Cha","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(t){return o(this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(12===r.month()&&this.leapYear(r.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);t=i.year(),e=i.month(),r=i.day();var a=0;if(t>0)for(var s=1;s0?t-1:t)+a+this.jdEpoch-1},fromJD:function(t){var e=475+((t=Math.floor(t)+.5)-this.toJD(475,1,1))/365.242197,r=Math.floor(e);r<=0&&r--,t>this.toJD(r,12,o(r)?30:29)&&0===++r&&r++;var n=t-this.toJD(r,1,1)+1,i=n<=186?Math.ceil(n/31):Math.ceil((n-6)/30),a=t-this.toJD(r,i,1)+1;return this.newDate(r,i,a)}}),n.calendars.persian=a,n.calendars.jalali=a},90508:function(t){"use strict";t.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}},90701:function(t,e,r){"use strict";var n=r(5159),i=r(78945).BADNUM,a=r(80924),o=r(66335),s=r(64433),l=r(15181)._;function u(t){return t&&"string"==typeof t}t.exports=function(t,e){var r,c=Array.isArray(e.locations),f=c?e.locations.length:e._length,h=new Array(f);r=e.geojson?function(t){return u(t)||n(t)}:u;for(var p=0;p0?1:-1}},91300:function(t,e,r){"use strict";var n=r(74443),i=r(34726),a=r(49149);t.exports=function(t,e){"float"!==e&&e||(e="array"),"uint"===e&&(e="uint8"),"uint_clamped"===e&&(e="uint8_clamped");var r=new(a(e))(4),o="uint8"!==e&&"uint8_clamped"!==e;return t.length&&"string"!=typeof t||((t=n(t))[0]/=255,t[1]/=255,t[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||0===t[0])&&(t[1]>1||0===t[1])&&(t[2]>1||0===t[2])&&(!t[3]||t[3]>1))}(t)?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:255,o&&(r[0]/=255,r[1]/=255,r[2]/=255,r[3]/=255),r):(o?(r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=null!=t[3]?t[3]:1):(r[0]=i(Math.floor(255*t[0]),0,255),r[1]=i(Math.floor(255*t[1]),0,255),r[2]=i(Math.floor(255*t[2]),0,255),r[3]=null==t[3]?255:i(Math.floor(255*t[3]),0,255)),r)}},91371:function(t){"use strict";t.exports=function(t){var e=t._fullLayout;e._glcanvas&&e._glcanvas.size()&&e._glcanvas.each(function(t){t.regl&&t.regl.clear({color:!0,depth:!0})})}},91727:function(t,e,r){"use strict";t.exports=r(13408)},91907:function(t,e,r){"use strict";var n=r(15181).isArrayOrTypedArray;t.exports=function(t,e,r,i){var a,o,s,l,u,c,f,h,p,d,v,g,y,m=n(r)?"a":"b",x=("a"===m?t.aaxis:t.baxis).smoothing,b="a"===m?t.a2i:t.b2j,_="a"===m?r:i,w="a"===m?i:r,T="a"===m?e.a.length:e.b.length,A="a"===m?e.b.length:e.a.length,k=Math.floor("a"===m?t.b2j(w):t.a2i(w)),M="a"===m?function(e){return t.evalxy([],e,k)}:function(e){return t.evalxy([],k,e)};x&&(s=Math.max(0,Math.min(A-2,k)),l=k-s,o="a"===m?function(e,r){return t.dxydi([],e,s,r,l)}:function(e,r){return t.dxydj([],s,e,l,r)});var S=b(_[0]),E=b(_[1]),L=S0?Math.floor:Math.ceil,O=L>0?Math.ceil:Math.floor,I=L>0?Math.min:Math.max,D=L>0?Math.max:Math.min,z=P(S+C),R=O(E-C),F=[[f=M(S)]];for(a=z;a*L=0&&"[object Function]"===e.call(t.callee)),n}},92169:function(t,e,r){"use strict";var n=r(79758);t.exports=function(t,e,r){var i=e.plotContainer;i.select(".scatterlayer").selectAll("*").remove();for(var a=e.xaxis,o=e.yaxis,s={xaxis:a,yaxis:o,plot:i,layerClipId:e._hasClipOnAxisFalse?e.clipIdRelative:null},l=e.layers.frontplot.select("g.scatterlayer"),u=0;ur.r2l(B)&&(j=o.tickIncrement(j,b.size,!0,p)),D.start=r.l2r(j),F||i.nestedProperty(e,y+".start").set(D.start)}var U=b.end,V=r.r2l(I.end),H=void 0!==V;if((b.endFound||H)&&V!==r.r2l(U)){var q=H?V:i.aggNums(Math.max,null,d);D.end=r.l2r(q),H||i.nestedProperty(e,y+".start").set(D.end)}var G="autobin"+s;return!1===e._input[G]&&(e._input[y]=i.extendFlat({},e[y]||{}),delete e._input[G],delete e[G]),[D,d]}t.exports={calc:function(t,e){var r,a,p,d,v=[],g=[],y="h"===e.orientation,m=o.getFromId(t,y?e.yaxis:e.xaxis),x=y?"y":"x",b={x:"y",y:"x"}[x],_=e[x+"calendar"],w=e.cumulative,T=h(t,e,m,x),A=T[0],k=T[1],M="string"==typeof A.size,S=[],E=M?S:A,L=[],C=[],P=[],O=0,I=e.histnorm,D=e.histfunc,z=-1!==I.indexOf("density");w.enabled&&z&&(I=I.replace(/ ?density$/,""),z=!1);var R,F="max"===D||"min"===D?null:0,B=l.count,N=u[I],j=!1,U=function(t){return m.r2c(t,0,_)};for(i.isArrayOrTypedArray(e[b])&&"count"!==D&&(R=e[b],j="avg"===D,B=l[D]),r=U(A.start),p=U(A.end)+(r-o.tickIncrement(r,A.size,!1,_))/1e6;r=0&&d=0;n--)s(n);else if("increasing"===e){for(n=1;n=0;n--)t[n]+=t[n+1];"exclude"===r&&(t.push(0),t.shift())}}(g,w.direction,w.currentbin);var K=Math.min(v.length,g.length),$=[],Q=0,tt=K-1;for(r=0;r=Q;r--)if(g[r]){tt=r;break}for(r=Q;r<=tt;r++)if(n(v[r])&&n(g[r])){var et={p:v[r],s:g[r],b:0};w.enabled||(et.pts=P[r],Y?et.ph0=et.ph1=P[r].length?k[P[r][0]]:v[r]:(e._computePh=!0,et.ph0=q(S[r]),et.ph1=q(S[r+1],!0))),$.push(et)}return 1===$.length&&($[0].width1=o.tickIncrement($[0].p,A.size,!1,_)-$[0].p),s($,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected($,e,X),$},calcAllAutoBins:h}},92444:function(t,e,r){"use strict";var n=r(15181),i=r(28209),a="templateitemname",o={name:{valType:"string",editType:"none"}};function s(t){return t&&"string"==typeof t}function l(t){var e=t.length-1;return"s"!==t.charAt(e)&&n.warn("bad argument to arrayDefaultKey: "+t),t.substr(0,t.length-1)+"defaults"}o[a]={valType:"string",editType:"calc"},e.templatedArray=function(t,e){return e._isLinkedToArray=t,e.name=o.name,e[a]=o[a],e},e.traceTemplater=function(t){var e,r,a={};for(e in t)r=t[e],Array.isArray(r)&&r.length&&(a[e]=0);return{newTrace:function(o){var s={type:e=n.coerce(o,{},i,"type"),_template:null};if(e in a){r=t[e];var l=a[e]%r.length;a[e]++,s._template=r[l]}return s}}},e.newContainer=function(t,e,r){var i=t._template,a=i&&(i[e]||r&&i[r]);return n.isPlainObject(a)||(a=null),t[e]={_template:a}},e.arrayTemplater=function(t,e,r){var n=t._template,i=n&&n[l(e)],o=n&&n[e];Array.isArray(o)&&o.length||(o=[]);var u={};return{newItem:function(t){var e={name:t.name,_input:t},n=e[a]=t[a];if(!s(n))return e._template=i,e;for(var l=0;l=i&&(r._input||{})._templateitemname;s&&(o=i);var l,u=e+"["+o+"]";function c(){l={},s&&(l[u]={},l[u][a]=s)}function f(t,e){s?n.nestedProperty(l[u],t).set(e):l[u+"."+t]=e}function h(){var t=l;return c(),t}return c(),{modifyBase:function(t,e){l[t]=e},modifyItem:f,getUpdateObj:h,applyUpdate:function(e,r){e&&f(e,r);var i=h();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},92446:function(t,e,r){"use strict";var n=r(16534),i=r(15181),a=r(88191),o=r(78945).BADNUM,s=r(3095),l=r(70394).clearMinTextSize;t.exports=function(t,e,r,u){var c=t._fullLayout;l("waterfall",c),s.plot(t,e,r,u,{mode:c.waterfallmode,norm:c.waterfallmode,gap:c.waterfallgap,groupgap:c.waterfallgroupgap}),function(t,e,r,s){var l=e.xaxis,u=e.yaxis;i.makeTraceGroups(s,r,"trace bars").each(function(r){var s=n.select(this),c=r[0].trace,f=i.ensureSingle(s,"g","lines");if(c.connector&&c.connector.visible){var h="h"===c.orientation,p=c.connector.mode,d=f.selectAll("g.line").data(i.identity);d.enter().append("g").classed("line",!0),d.exit().remove();var v=d.size();d.each(function(r,s){if(s===v-1||r.cNext){var c=function(t,e,r,n){var i=[],a=[],o=n?e:r,s=n?r:e;return i[0]=o.c2p(t.s0,!0),a[0]=s.c2p(t.p0,!0),i[1]=o.c2p(t.s1,!0),a[1]=s.c2p(t.p1,!0),i[2]=o.c2p(t.nextS0,!0),a[2]=s.c2p(t.nextP0,!0),n?[i,a]:[a,i]}(r,l,u,h),f=c[0],d=c[1],g="";f[0]!==o&&d[0]!==o&&f[1]!==o&&d[1]!==o&&("spanning"===p&&!r.isSum&&s>0&&(g+=h?"M"+f[0]+","+d[1]+"V"+d[0]:"M"+f[1]+","+d[0]+"H"+f[0]),"between"!==p&&(r.isSum||s0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}function c(t,e,r,n,i){n("marker.line.width")&&n("marker.line.color",i?void 0:r.paper_bgcolor);var a=n("marker.colors");l(n,"marker.pattern",a),t.marker&&!e.marker.pattern.fgcolor&&(e.marker.pattern.fgcolor=t.marker.colors),e.marker.pattern.bgcolor||(e.marker.pattern.bgcolor=r.paper_bgcolor)}t.exports={handleLabelsAndValues:u,handleMarkerDefaults:c,supplyDefaults:function(t,e,r,n){function l(r,n){return i.coerce(t,e,a,r,n)}var f=u(l("labels"),l("values")),h=f.len;if(e._hasLabels=f.hasLabels,e._hasValues=f.hasValues,!e._hasLabels&&e._hasValues&&(l("label0"),l("dlabel")),h){e._length=h,c(t,e,n,l,!0),l("scalegroup");var p,d=l("text"),v=l("texttemplate");if(v||(p=l("textinfo",Array.isArray(d)?"text+percent":"percent")),l("hovertext"),l("hovertemplate"),v||p&&"none"!==p){var g=l("textposition");s(t,e,n,l,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||"auto"===g||"outside"===g)&&l("automargin"),("inside"===g||"auto"===g||Array.isArray(g))&&l("insidetextorientation")}o(e,n,l);var y=l("hole");if(l("title.text")){var m=l("title.position",y?"middle center":"top center");y||"middle center"!==m||(e.title.position="top center"),i.coerceFont(l,"title.font",n.font)}l("sort"),l("direction"),l("rotation"),l("pull")}else e.visible=!1}}},92983:function(t,e,r){var n=r(72123);t.exports=function(t,e,r,i){var a,o,s,l,u,c,f,h,p,d,v=e[0],g=e[1],y=e[2],m=i[0],x=i[1],b=i[2],_=r[0],w=r[1],T=r[2];return Math.abs(v-_)<1e-6&&Math.abs(g-w)<1e-6&&Math.abs(y-T)<1e-6?n(t):(f=v-_,h=g-w,p=y-T,a=x*(p*=d=1/Math.sqrt(f*f+h*h+p*p))-b*(h*=d),o=b*(f*=d)-m*p,s=m*h-x*f,(d=Math.sqrt(a*a+o*o+s*s))?(a*=d=1/d,o*=d,s*=d):(a=0,o=0,s=0),l=h*s-p*o,u=p*a-f*s,c=f*o-h*a,(d=Math.sqrt(l*l+u*u+c*c))?(l*=d=1/d,u*=d,c*=d):(l=0,u=0,c=0),t[0]=a,t[1]=l,t[2]=f,t[3]=0,t[4]=o,t[5]=u,t[6]=h,t[7]=0,t[8]=s,t[9]=c,t[10]=p,t[11]=0,t[12]=-(a*v+o*g+s*y),t[13]=-(l*v+u*g+c*y),t[14]=-(f*v+h*g+p*y),t[15]=1,t)}},93003:function(t,e,r){"use strict";var n=r(46982),i=r(29278);function a(t,e){if(e&&e.length)for(var r=0;rn?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},e.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(" ")[0]},e.isLinked=function(t,e){return a(e,t._axisMatchGroups)||a(e,t._axisConstraintGroups)}},93024:function(t,e,r){"use strict";var n=r(78945).BADNUM;e.calcTraceToLineCoords=function(t){for(var e=t[0].trace.connectgaps,r=[],i=[],a=0;a0&&(r.push(i),i=[])}return i.length>0&&r.push(i),r},e.makeLine=function(t){return 1===t.length?{type:"LineString",coordinates:t[0]}:{type:"MultiLineString",coordinates:t}},e.makePolygon=function(t){if(1===t.length)return{type:"Polygon",coordinates:t};for(var e=new Array(t.length),r=0;r0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},n.prototype.read_uint16=function(t){var r=this.input;if(t+2>r.length)throw e("unexpected EOF","EBADDATA");return this.big_endian?256*r[t]+r[t+1]:r[t]+256*r[t+1]},n.prototype.read_uint32=function(t){var r=this.input;if(t+4>r.length)throw e("unexpected EOF","EBADDATA");return this.big_endian?16777216*r[t]+65536*r[t+1]+256*r[t+2]+r[t+3]:r[t]+256*r[t+1]+65536*r[t+2]+16777216*r[t+3]},n.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},n.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},n.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return this.read_uint32(e);case 9:return 0|this.read_uint32(e);default:return null}},n.prototype.scan_ifd=function(t,n,i){var a=this.read_uint16(n);n+=2;for(var o=0;othis.input.length)throw e("unexpected EOF","EBADDATA");for(var d=[],v=h,g=0;g0&&(this.ifds_to_read.push({id:s,offset:d[0]}),p=!0),!1===i({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:u,entry_offset:n+this.start,data_length:f,data_offset:h+this.start,value:d,is_subifd_link:p}))return void(this.aborted=!0);n+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(n)})},t.exports.ExifParser=n,t.exports.get_orientation=function(t){var e=0;try{return new n(t,0,t.length).each(function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1}),e}catch(t){return-1}}},93712:function(t,e,r){"use strict";var n=r(9285);t.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:n}},93746:function(t,e,r){"use strict";var n=r(15181),i=r(21669),a=r(76591),o=r(93335).IMAGE_URL_PREFIX;t.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r("source"),e.source&&!e.source.match(o)&&delete e.source,e._hasSource=!!e.source;var s,l=r("z");e._hasZ=!(void 0===l||!l.length||!l[0]||!l[0].length),e._hasZ||e._hasSource?(r("x0"),r("y0"),r("dx"),r("dy"),e._hasZ?(r("colormodel","rgb"),r("zmin",(s=a.colormodel[e.colormodel]).zminDflt||s.min),r("zmax",s.zmaxDflt||s.max)):e._hasSource&&(e.colormodel="rgba256",s=a.colormodel[e.colormodel],e.zmin=s.zminDflt,e.zmax=s.zmaxDflt),r("zsmooth"),r("text"),r("hovertext"),r("hovertemplate"),e._length=null):e.visible=!1}},93789:function(t){"use strict";function e(t,e){if("string"!=typeof t)return[t];var r=[t];"string"==typeof e||Array.isArray(e)?e={brackets:e}:e||(e={});var n=e.brackets?Array.isArray(e.brackets)?e.brackets:[e.brackets]:["{}","[]","()"],i=e.escape||"___",a=!!e.flat;n.forEach(function(t){var e=new RegExp(["\\",t[0],"[^\\",t[0],"\\",t[1],"]*\\",t[1]].join("")),n=[];function a(e,a,o){var s=r.push(e.slice(t[0].length,-t[1].length))-1;return n.push(s),i+s+i}r.forEach(function(t,n){for(var i,o=0;t!=i;)if(i=t,t=t.replace(e,a),o++>1e4)throw Error("References have circular dependency. Please, check them.");r[n]=t}),n=n.reverse(),r=r.map(function(e){return n.forEach(function(r){e=e.replace(new RegExp("(\\"+i+r+"\\"+i+")","g"),t[0]+"$1"+t[1])}),e})});var o=new RegExp("\\"+i+"([0-9]+)\\"+i);return a?r:function t(e,r,n){for(var i,a=[],s=0;i=o.exec(e);){if(s++>1e4)throw Error("Circular references in parenthesis");a.push(e.slice(0,i.index)),a.push(t(r[i[1]],r)),e=e.slice(i.index+i[0].length)}return a.push(e),a}(r[0],r)}function r(t,e){if(e&&e.flat){var r,n=e&&e.escape||"___",i=t[0];if(!i)return"";for(var a=new RegExp("\\"+n+"([0-9]+)\\"+n),o=0;i!=r;){if(o++>1e4)throw Error("Circular references in "+t);r=i,i=i.replace(a,s)}return i}return t.reduce(function t(e,r){return Array.isArray(r)&&(r=r.reduce(t,"")),e+r},"");function s(e,r){if(null==t[r])throw Error("Reference "+r+"is undefined");return t[r]}}function n(t,n){return Array.isArray(t)?r(t,n):e(t,n)}n.parse=e,n.stringify=r,t.exports=n},93950:function(t,e,r){var n,i=r(50260);self,n=function(){return function(){var t={7386:function(t,e,r){t.exports={alpha_shape:r(2350),convex_hull:r(5537),delaunay_triangulate:r(4419),gl_cone3d:r(1140),gl_error3d:r(3110),gl_heatmap2d:r(6386),gl_line3d:r(6086),gl_mesh3d:r(8116),gl_plot2d:r(2117),gl_plot3d:r(1059),gl_pointcloud2d:r(8271),gl_scatter3d:r(2182),gl_select_box:r(6623),gl_spikes2d:r(3050),gl_streamtube3d:r(7307),gl_surface3d:r(3754),ndarray:r(5050),ndarray_linear_interpolate:r(3581)}},2146:function(t,e,r){"use strict";function n(t,e){for(var r=0;rf)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,p.prototype),e}function p(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return g(t)}return d(t,e,r)}function d(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!p.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|b(t,e),n=h(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(tt(t,Uint8Array)){var e=new Uint8Array(t);return m(e.buffer,e.byteOffset,e.byteLength)}return y(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+s(t));if(tt(t,ArrayBuffer)||t&&tt(t.buffer,ArrayBuffer))return m(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(tt(t,SharedArrayBuffer)||t&&tt(t.buffer,SharedArrayBuffer)))return m(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return p.from(n,e,r);var i=function(t){if(p.isBuffer(t)){var e=0|x(t.length),r=h(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||et(t.length)?h(0):y(t):"Buffer"===t.type&&Array.isArray(t.data)?y(t.data):void 0}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return p.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+s(t))}function v(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function g(t){return v(t),h(t<0?0:0|x(t))}function y(t){for(var e=t.length<0?0:0|x(t.length),r=h(e),n=0;n=f)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+f.toString(16)+" bytes");return 0|t}function b(t,e){if(p.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||tt(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+s(t));var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return K(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return $(t).length;default:if(i)return n?-1:K(t).length;e=(""+e).toLowerCase(),i=!0}}function _(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 z(this,e,r);case"utf8":case"utf-8":return P(this,e,r);case"ascii":return I(this,e,r);case"latin1":case"binary":return D(this,e,r);case"base64":return C(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function w(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function T(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),et(r=+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=p.from(e,n)),p.isBuffer(e))return 0===e.length?-1:A(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):A(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function A(t,e,r,n,i){var a,o=1,s=t.length,l=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;o=2,s/=2,l/=2,r/=2}function u(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var c=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var f=!0,h=0;hi&&(n=i):n=i;var a,o=e.length;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function C(t,e,r){return 0===e&&r===t.length?l.fromByteArray(t):l.fromByteArray(t.slice(e,r))}function P(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:a>223?3:a>191?2:1;if(i+s<=r){var l=void 0,u=void 0,c=void 0,f=void 0;switch(s){case 1:a<128&&(o=a);break;case 2:128==(192&(l=t[i+1]))&&(f=(31&a)<<6|63&l)>127&&(o=f);break;case 3:l=t[i+1],u=t[i+2],128==(192&l)&&128==(192&u)&&(f=(15&a)<<12|(63&l)<<6|63&u)>2047&&(f<55296||f>57343)&&(o=f);break;case 4:l=t[i+1],u=t[i+2],c=t[i+3],128==(192&l)&&128==(192&u)&&128==(192&c)&&(f=(15&a)<<18|(63&l)<<12|(63&u)<<6|63&c)>65535&&f<1114112&&(o=f)}}null===o?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=s}return function(t){var e=t.length;if(e<=O)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn.length?(p.isBuffer(a)||(a=p.from(a)),a.copy(n,i)):Uint8Array.prototype.set.call(n,a,i);else{if(!p.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(n,i)}i+=a.length}return n},p.byteLength=b,p.prototype._isBuffer=!0,p.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;er&&(t+=" ... "),""},c&&(p.prototype[c]=p.prototype.inspect),p.prototype.compare=function(t,e,r,n,i){if(tt(t,Uint8Array)&&(t=p.from(t,t.offset,t.byteLength)),!p.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+s(t));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 a=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(e>>>=0),l=Math.min(a,o),u=this.slice(n,i),c=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(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 a=!1;;)switch(n){case"hex":return k(this,t,e,r);case"utf8":case"utf-8":return M(this,t,e,r);case"ascii":case"latin1":case"binary":return S(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var O=4096;function I(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",a=e;ar)throw new RangeError("Trying to access beyond buffer length")}function B(t,e,r,n,i,a){if(!p.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 N(t,e,r,n,i){W(e,n,i,t,r,7);var a=Number(e&BigInt(4294967295));t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a;var o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,r}function j(t,e,r,n,i){W(e,n,i,t,r,7);var a=Number(e&BigInt(4294967295));t[r+7]=a,a>>=8,t[r+6]=a,a>>=8,t[r+5]=a,a>>=8,t[r+4]=a;var o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=o,o>>=8,t[r+2]=o,o>>=8,t[r+1]=o,o>>=8,t[r]=o,r+8}function U(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function V(t,e,r,n,i){return e=+e,r>>>=0,i||U(t,0,r,4),u.write(t,e,r,n,23,4),r+4}function H(t,e,r,n,i){return e=+e,r>>>=0,i||U(t,0,r,8),u.write(t,e,r,n,52,8),r+8}p.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||F(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||F(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},p.prototype.readUint8=p.prototype.readUInt8=function(t,e){return t>>>=0,e||F(t,1,this.length),this[t]},p.prototype.readUint16LE=p.prototype.readUInt16LE=function(t,e){return t>>>=0,e||F(t,2,this.length),this[t]|this[t+1]<<8},p.prototype.readUint16BE=p.prototype.readUInt16BE=function(t,e){return t>>>=0,e||F(t,2,this.length),this[t]<<8|this[t+1]},p.prototype.readUint32LE=p.prototype.readUInt32LE=function(t,e){return t>>>=0,e||F(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},p.prototype.readUint32BE=p.prototype.readUInt32BE=function(t,e){return t>>>=0,e||F(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},p.prototype.readBigUInt64LE=nt(function(t){Z(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||X(t,this.length-8);var n=e+this[++t]*Math.pow(2,8)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,24),i=this[++t]+this[++t]*Math.pow(2,8)+this[++t]*Math.pow(2,16)+r*Math.pow(2,24);return BigInt(n)+(BigInt(i)<>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||X(t,this.length-8);var n=e*Math.pow(2,24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+this[++t],i=this[++t]*Math.pow(2,24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+r;return(BigInt(n)<>>=0,e>>>=0,r||F(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},p.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||F(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},p.prototype.readInt8=function(t,e){return t>>>=0,e||F(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},p.prototype.readInt16LE=function(t,e){t>>>=0,e||F(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt16BE=function(t,e){t>>>=0,e||F(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},p.prototype.readInt32LE=function(t,e){return t>>>=0,e||F(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},p.prototype.readInt32BE=function(t,e){return t>>>=0,e||F(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},p.prototype.readBigInt64LE=nt(function(t){Z(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||X(t,this.length-8);var n=this[t+4]+this[t+5]*Math.pow(2,8)+this[t+6]*Math.pow(2,16)+(r<<24);return(BigInt(n)<>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||X(t,this.length-8);var n=(e<<24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+this[++t];return(BigInt(n)<>>=0,e||F(t,4,this.length),u.read(this,t,!0,23,4)},p.prototype.readFloatBE=function(t,e){return t>>>=0,e||F(t,4,this.length),u.read(this,t,!1,23,4)},p.prototype.readDoubleLE=function(t,e){return t>>>=0,e||F(t,8,this.length),u.read(this,t,!0,52,8)},p.prototype.readDoubleBE=function(t,e){return t>>>=0,e||F(t,8,this.length),u.read(this,t,!1,52,8)},p.prototype.writeUintLE=p.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||B(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n||B(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},p.prototype.writeUint8=p.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,1,255,0),this[e]=255&t,e+1},p.prototype.writeUint16LE=p.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},p.prototype.writeUint16BE=p.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},p.prototype.writeUint32LE=p.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},p.prototype.writeUint32BE=p.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},p.prototype.writeBigUInt64LE=nt(function(t){return N(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))}),p.prototype.writeBigUInt64BE=nt(function(t){return j(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))}),p.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);B(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>>=0,!n){var i=Math.pow(2,8*r-1);B(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o|0)-s&255;return e+r},p.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},p.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},p.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},p.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},p.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||B(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},p.prototype.writeBigInt64LE=nt(function(t){return N(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),p.prototype.writeBigInt64BE=nt(function(t){return j(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),p.prototype.writeFloatLE=function(t,e,r){return V(this,t,e,!0,r)},p.prototype.writeFloatBE=function(t,e,r){return V(this,t,e,!1,r)},p.prototype.writeDoubleLE=function(t,e,r){return H(this,t,e,!0,r)},p.prototype.writeDoubleBE=function(t,e,r){return H(this,t,e,!1,r)},p.prototype.copy=function(t,e,r,n){if(!p.isBuffer(t))throw new TypeError("argument should be a Buffer");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("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(a=e;a=n+4;r-=3)e="_".concat(t.slice(r-3,r)).concat(e);return"".concat(t.slice(0,r)).concat(e)}function W(t,e,r,n,i,a){if(t>r||t3?0===e||e===BigInt(0)?">= 0".concat(s," and < 2").concat(s," ** ").concat(8*(a+1)).concat(s):">= -(2".concat(s," ** ").concat(8*(a+1)-1).concat(s,") and < 2 ** ")+"".concat(8*(a+1)-1).concat(s):">= ".concat(e).concat(s," and <= ").concat(r).concat(s),new q.ERR_OUT_OF_RANGE("value",o,t)}!function(t,e,r){Z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||X(e,t.length-(r+1))}(n,i,a)}function Z(t,e){if("number"!=typeof t)throw new q.ERR_INVALID_ARG_TYPE(e,"number",t)}function X(t,e,r){if(Math.floor(t)!==t)throw Z(t,r),new q.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new q.ERR_BUFFER_OUT_OF_BOUNDS;throw new q.ERR_OUT_OF_RANGE(r||"offset",">= ".concat(r?1:0," and <= ").concat(e),t)}G("ERR_BUFFER_OUT_OF_BOUNDS",function(t){return t?"".concat(t," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"},RangeError),G("ERR_INVALID_ARG_TYPE",function(t,e){return'The "'.concat(t,'" argument must be of type number. Received type ').concat(s(e))},TypeError),G("ERR_OUT_OF_RANGE",function(t,e,r){var n='The value of "'.concat(t,'" is out of range.'),i=r;return Number.isInteger(r)&&Math.abs(r)>Math.pow(2,32)?i=Y(String(r)):"bigint"==typeof r&&(i=String(r),(r>Math.pow(BigInt(2),BigInt(32))||r<-Math.pow(BigInt(2),BigInt(32)))&&(i=Y(i)),i+="n"),n+" It must be ".concat(e,". Received ").concat(i)},RangeError);var J=/[^+/0-9A-Za-z-_]/g;function K(t,e){var r;e=e||1/0;for(var n=t.length,i=null,a=[],o=0;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.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;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function $(t){return l.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(J,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function Q(t,e,r,n){var i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function tt(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function et(t){return t!=t}var rt=function(){for(var t="0123456789abcdef",e=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)e[n+i]=t[r]+t[i];return e}();function nt(t){return"undefined"==typeof BigInt?it:t}function it(){throw new Error("BigInt not supported")}},2321:function(t){"use strict";t.exports=i,t.exports.isMobile=i,t.exports.default=i;var e=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,r=/CrOS/,n=/android|ipad|playbook|silk/i;function i(t){t||(t={});var i=t.ua;if(i||"undefined"==typeof navigator||(i=navigator.userAgent),i&&i.headers&&"string"==typeof i.headers["user-agent"]&&(i=i.headers["user-agent"]),"string"!=typeof i)return!1;var a=e.test(i)&&!r.test(i)||!!t.tablet&&n.test(i);return!a&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==i.indexOf("Macintosh")&&-1!==i.indexOf("Safari")&&(a=!0),a}},3910:function(t,e){"use strict";e.byteLength=function(t){var e=s(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,a=s(t),o=a[0],l=a[1],u=new i(function(t,e,r){return 3*(e+r)/4-r}(0,o,l)),c=0,f=l>0?o-4:o;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===l&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===l&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a=[],o=16383,s=0,l=n-i;sl?l:s+o));return 1===i?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)r[o]=a[o],n[a.charCodeAt(o)]=o;function s(t){var e=t.length;if(e%4>0)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){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function u(t,e,r){for(var n,i=[],a=e;a>1,c=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=256*a+t[e+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=256*o+t[e+f],f+=h,c-=8);if(0===a)a=1-u;else{if(a===l)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=u}return(p?-1:1)*o*Math.pow(2,a-n)},e.write=function(t,e,r,n,i,a){var o,s,l,u=8*a-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+f>=1?h/l:h*Math.pow(2,1-f))*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(o=o<0;t[r+p]=255&o,p+=d,o/=256,u-=8);t[r+p-d]|=128*v}},1152:function(t,e,r){"use strict";t.exports=function(t){var e=(t=t||{}).eye||[0,0,1],r=t.center||[0,0,0],s=t.up||[0,1,0],l=t.distanceLimits||[0,1/0],u=t.mode||"turntable",c=n(),f=i(),h=a();return c.setDistanceLimits(l[0],l[1]),c.lookAt(0,e,r,s),f.setDistanceLimits(l[0],l[1]),f.lookAt(0,e,r,s),h.setDistanceLimits(l[0],l[1]),h.lookAt(0,e,r,s),new o({turntable:c,orbit:f,matrix:h},u)};var n=r(3440),i=r(7774),a=r(9298);function o(t,e){this._controllerNames=Object.keys(t),this._controllerList=this._controllerNames.map(function(e){return t[e]}),this._mode=e,this._active=t[e],this._active||(this._mode="turntable",this._active=t.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var s=o.prototype;s.flush=function(t){for(var e=this._controllerList,r=0;r0?u=u.ushln(f):f<0&&(c=c.ushln(-f)),s(u,c)}},234:function(t,e,r){"use strict";var n=r(3218);t.exports=function(t){return Array.isArray(t)&&2===t.length&&n(t[0])&&n(t[1])}},4275:function(t,e,r){"use strict";var n=r(1928);t.exports=function(t){return t.cmp(new n(0))}},9958:function(t,e,r){"use strict";var n=r(4275);t.exports=function(t){var e=t.length,r=t.words,i=0;if(1===e)i=r[0];else if(2===e)i=r[0]+67108864*r[1];else for(var a=0;a20?52:r+32}},3218:function(t,e,r){"use strict";r(1928),t.exports=function(t){return t&&"object"==typeof t&&Boolean(t.words)}},5514:function(t,e,r){"use strict";var n=r(1928),i=r(8362);t.exports=function(t){var e=i.exponent(t);return e<52?new n(t):new n(t*Math.pow(2,52-e)).ushln(e-52)}},8524:function(t,e,r){"use strict";var n=r(5514),i=r(4275);t.exports=function(t,e){var r=i(t),a=i(e);if(0===r)return[n(0),n(1)];if(0===a)return[n(0),n(0)];a<0&&(t=t.neg(),e=e.neg());var o=t.gcd(e);return o.cmpn(1)?[t.div(o),e.div(o)]:[t,e]}},2813:function(t,e,r){"use strict";var n=r(1928);t.exports=function(t){return new n(t)}},3962:function(t,e,r){"use strict";var n=r(8524);t.exports=function(t,e){return n(t[0].mul(e[0]),t[1].mul(e[1]))}},4951:function(t,e,r){"use strict";var n=r(4275);t.exports=function(t){return n(t[0])*n(t[1])}},4354:function(t,e,r){"use strict";var n=r(8524);t.exports=function(t,e){return n(t[0].mul(e[1]).sub(t[1].mul(e[0])),t[1].mul(e[1]))}},7999:function(t,e,r){"use strict";var n=r(9958),i=r(1112);t.exports=function(t){var e=t[0],r=t[1];if(0===e.cmpn(0))return 0;var a=e.abs().divmod(r.abs()),o=a.div,s=n(o),l=a.mod,u=e.negative!==r.negative?-1:1;if(0===l.cmpn(0))return u*s;if(s){var c=i(s)+4;return u*(s+(h=n(l.ushln(c).divRound(r)))*Math.pow(2,-c))}var f=r.bitLength()-l.bitLength()+53,h=n(l.ushln(f).divRound(r));return f<1023?u*h*Math.pow(2,-f):u*(h*=Math.pow(2,-1023))*Math.pow(2,1023-f)}},5070:function(t){"use strict";function e(t,e,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)>=0?(a=o,i=o-1):n=o+1}return a}function r(t,e,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)>0?(a=o,i=o-1):n=o+1}return a}function n(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<0?(a=o,n=o+1):i=o-1}return a}function i(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<=0?(a=o,n=o+1):i=o-1}return a}function a(t,e,r,n,i){for(;n<=i;){var a=n+i>>>1,o=t[a],s=void 0!==r?r(o,e):o-e;if(0===s)return a;s<=0?n=a+1:i=a-1}return-1}function o(t,e,r,n,i,a){return"function"==typeof r?a(t,e,r,void 0===n?0:0|n,void 0===i?t.length-1:0|i):a(t,e,void 0,void 0===r?0:0|r,void 0===n?t.length-1:0|n)}t.exports={ge:function(t,r,n,i,a){return o(t,r,n,i,a,e)},gt:function(t,e,n,i,a){return o(t,e,n,i,a,r)},lt:function(t,e,r,i,a){return o(t,e,r,i,a,n)},le:function(t,e,r,n,a){return o(t,e,r,n,a,i)},eq:function(t,e,r,n,i){return o(t,e,r,n,i,a)}}},2288:function(t,e){"use strict";function r(t){var e=32;return(t&=-t)&&e--,65535&t&&(e-=16),16711935&t&&(e-=8),252645135&t&&(e-=4),858993459&t&&(e-=2),1431655765&t&&(e-=1),e}e.INT_BITS=32,e.INT_MAX=2147483647,e.INT_MIN=-1<<31,e.sign=function(t){return(t>0)-(t<0)},e.abs=function(t){var e=t>>31;return(t^e)-e},e.min=function(t,e){return e^(t^e)&-(t65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},e.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},e.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},e.countTrailingZeros=r,e.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,1+((t|=t>>>8)|t>>>16)},e.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},e.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var n=new Array(256);!function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|n[t>>>16&255]<<8|n[t>>>24&255]},e.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},e.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},e.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},e.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},e.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>r(t)+1}},1928:function(t,e,r){!function(t,e){"use strict";function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function a(t,e,r){if(a.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var o;"object"==typeof t?t.exports=a:e.BN=a,a.BN=a,a.wordSize=26;try{o="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(6601).Buffer}catch(t){}function s(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function l(t,e,r){var n=s(t,r);return r-1>=e&&(n|=s(t,r-1)<<4),n}function u(t,e,r,n){for(var i=0,a=Math.min(t.length,r),o=e;o=49?s-49+10:s>=17?s-17+10:s}return i}a.isBN=function(t){return t instanceof a||null!==t&&"object"==typeof t&&t.constructor.wordSize===a.wordSize&&Array.isArray(t.words)},a.max=function(t,e){return t.cmp(e)>0?t:e},a.min=function(t,e){return t.cmp(e)<0?t:e},a.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(i=0,a=0;i>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n=e;n-=2)i=l(t,e,n)<=18?(a-=18,o+=1,this.words[o]|=i>>>26):a+=8;else for(n=(t.length-e)%2==0?e+1:e;n=18?(a-=18,o+=1,this.words[o]|=i>>>26):a+=8;this.strip()},a.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var a=t.length-r,o=a%n,s=Math.min(a,a-o)+r,l=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],a=0|e.words[0],o=i*a,s=67108863&o,l=o/67108864|0;r.words[0]=s;for(var u=1;u>>26,f=67108863&l,h=Math.min(u,e.length-1),p=Math.max(0,u-t.length+1);p<=h;p++){var d=u-p|0;c+=(o=(i=0|t.words[d])*(a=0|e.words[p])+f)/67108864|0,f=67108863&o}r.words[u]=0|f,l=0|c}return 0!==l?r.words[u]=0|l:r.length--,r.strip()}a.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var i=0,a=0,o=0;o>>24-i&16777215)||o!==this.length-1?c[6-l.length]+l+r:l+r,(i+=2)>=26&&(i-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=f[t],p=h[t];r="";var d=this.clone();for(d.negative=0;!d.isZero();){var v=d.modn(p).toString(t);r=(d=d.idivn(p)).isZero()?v+r:c[u-v.length]+v+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(t,e){return n(void 0!==o),this.toArrayLike(o,t,e)},a.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},a.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),a=r||Math.max(1,i);n(i<=a,"byte array longer than desired length"),n(a>0,"Requested array length <= 0"),this.strip();var o,s,l="le"===e,u=new t(a),c=this.clone();if(l){for(s=0;!c.isZero();s++)o=c.andln(255),c.iushrn(8),u[s]=o;for(;s=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},a.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},a.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},a.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},a.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},a.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},a.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},a.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},a.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},a.prototype.notn=function(t){return this.clone().inotn(t)},a.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,a=0;a>>26;for(;0!==i&&a>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;at.length?this.clone().iadd(t):t.clone().iadd(this)},a.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var a=0,o=0;o>26,this.words[o]=67108863&e;for(;0!==a&&o>26,this.words[o]=67108863&e;if(0===a&&o>>13,p=0|o[1],d=8191&p,v=p>>>13,g=0|o[2],y=8191&g,m=g>>>13,x=0|o[3],b=8191&x,_=x>>>13,w=0|o[4],T=8191&w,A=w>>>13,k=0|o[5],M=8191&k,S=k>>>13,E=0|o[6],L=8191&E,C=E>>>13,P=0|o[7],O=8191&P,I=P>>>13,D=0|o[8],z=8191&D,R=D>>>13,F=0|o[9],B=8191&F,N=F>>>13,j=0|s[0],U=8191&j,V=j>>>13,H=0|s[1],q=8191&H,G=H>>>13,Y=0|s[2],W=8191&Y,Z=Y>>>13,X=0|s[3],J=8191&X,K=X>>>13,$=0|s[4],Q=8191&$,tt=$>>>13,et=0|s[5],rt=8191&et,nt=et>>>13,it=0|s[6],at=8191&it,ot=it>>>13,st=0|s[7],lt=8191&st,ut=st>>>13,ct=0|s[8],ft=8191&ct,ht=ct>>>13,pt=0|s[9],dt=8191&pt,vt=pt>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(u+(n=Math.imul(f,U))|0)+((8191&(i=(i=Math.imul(f,V))+Math.imul(h,U)|0))<<13)|0;u=((a=Math.imul(h,V))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(d,U),i=(i=Math.imul(d,V))+Math.imul(v,U)|0,a=Math.imul(v,V);var yt=(u+(n=n+Math.imul(f,q)|0)|0)+((8191&(i=(i=i+Math.imul(f,G)|0)+Math.imul(h,q)|0))<<13)|0;u=((a=a+Math.imul(h,G)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,U),i=(i=Math.imul(y,V))+Math.imul(m,U)|0,a=Math.imul(m,V),n=n+Math.imul(d,q)|0,i=(i=i+Math.imul(d,G)|0)+Math.imul(v,q)|0,a=a+Math.imul(v,G)|0;var mt=(u+(n=n+Math.imul(f,W)|0)|0)+((8191&(i=(i=i+Math.imul(f,Z)|0)+Math.imul(h,W)|0))<<13)|0;u=((a=a+Math.imul(h,Z)|0)+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(b,U),i=(i=Math.imul(b,V))+Math.imul(_,U)|0,a=Math.imul(_,V),n=n+Math.imul(y,q)|0,i=(i=i+Math.imul(y,G)|0)+Math.imul(m,q)|0,a=a+Math.imul(m,G)|0,n=n+Math.imul(d,W)|0,i=(i=i+Math.imul(d,Z)|0)+Math.imul(v,W)|0,a=a+Math.imul(v,Z)|0;var xt=(u+(n=n+Math.imul(f,J)|0)|0)+((8191&(i=(i=i+Math.imul(f,K)|0)+Math.imul(h,J)|0))<<13)|0;u=((a=a+Math.imul(h,K)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(T,U),i=(i=Math.imul(T,V))+Math.imul(A,U)|0,a=Math.imul(A,V),n=n+Math.imul(b,q)|0,i=(i=i+Math.imul(b,G)|0)+Math.imul(_,q)|0,a=a+Math.imul(_,G)|0,n=n+Math.imul(y,W)|0,i=(i=i+Math.imul(y,Z)|0)+Math.imul(m,W)|0,a=a+Math.imul(m,Z)|0,n=n+Math.imul(d,J)|0,i=(i=i+Math.imul(d,K)|0)+Math.imul(v,J)|0,a=a+Math.imul(v,K)|0;var bt=(u+(n=n+Math.imul(f,Q)|0)|0)+((8191&(i=(i=i+Math.imul(f,tt)|0)+Math.imul(h,Q)|0))<<13)|0;u=((a=a+Math.imul(h,tt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(M,U),i=(i=Math.imul(M,V))+Math.imul(S,U)|0,a=Math.imul(S,V),n=n+Math.imul(T,q)|0,i=(i=i+Math.imul(T,G)|0)+Math.imul(A,q)|0,a=a+Math.imul(A,G)|0,n=n+Math.imul(b,W)|0,i=(i=i+Math.imul(b,Z)|0)+Math.imul(_,W)|0,a=a+Math.imul(_,Z)|0,n=n+Math.imul(y,J)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(m,J)|0,a=a+Math.imul(m,K)|0,n=n+Math.imul(d,Q)|0,i=(i=i+Math.imul(d,tt)|0)+Math.imul(v,Q)|0,a=a+Math.imul(v,tt)|0;var _t=(u+(n=n+Math.imul(f,rt)|0)|0)+((8191&(i=(i=i+Math.imul(f,nt)|0)+Math.imul(h,rt)|0))<<13)|0;u=((a=a+Math.imul(h,nt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(L,U),i=(i=Math.imul(L,V))+Math.imul(C,U)|0,a=Math.imul(C,V),n=n+Math.imul(M,q)|0,i=(i=i+Math.imul(M,G)|0)+Math.imul(S,q)|0,a=a+Math.imul(S,G)|0,n=n+Math.imul(T,W)|0,i=(i=i+Math.imul(T,Z)|0)+Math.imul(A,W)|0,a=a+Math.imul(A,Z)|0,n=n+Math.imul(b,J)|0,i=(i=i+Math.imul(b,K)|0)+Math.imul(_,J)|0,a=a+Math.imul(_,K)|0,n=n+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,tt)|0)+Math.imul(m,Q)|0,a=a+Math.imul(m,tt)|0,n=n+Math.imul(d,rt)|0,i=(i=i+Math.imul(d,nt)|0)+Math.imul(v,rt)|0,a=a+Math.imul(v,nt)|0;var wt=(u+(n=n+Math.imul(f,at)|0)|0)+((8191&(i=(i=i+Math.imul(f,ot)|0)+Math.imul(h,at)|0))<<13)|0;u=((a=a+Math.imul(h,ot)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(O,U),i=(i=Math.imul(O,V))+Math.imul(I,U)|0,a=Math.imul(I,V),n=n+Math.imul(L,q)|0,i=(i=i+Math.imul(L,G)|0)+Math.imul(C,q)|0,a=a+Math.imul(C,G)|0,n=n+Math.imul(M,W)|0,i=(i=i+Math.imul(M,Z)|0)+Math.imul(S,W)|0,a=a+Math.imul(S,Z)|0,n=n+Math.imul(T,J)|0,i=(i=i+Math.imul(T,K)|0)+Math.imul(A,J)|0,a=a+Math.imul(A,K)|0,n=n+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(_,Q)|0,a=a+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=(i=i+Math.imul(y,nt)|0)+Math.imul(m,rt)|0,a=a+Math.imul(m,nt)|0,n=n+Math.imul(d,at)|0,i=(i=i+Math.imul(d,ot)|0)+Math.imul(v,at)|0,a=a+Math.imul(v,ot)|0;var Tt=(u+(n=n+Math.imul(f,lt)|0)|0)+((8191&(i=(i=i+Math.imul(f,ut)|0)+Math.imul(h,lt)|0))<<13)|0;u=((a=a+Math.imul(h,ut)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(z,U),i=(i=Math.imul(z,V))+Math.imul(R,U)|0,a=Math.imul(R,V),n=n+Math.imul(O,q)|0,i=(i=i+Math.imul(O,G)|0)+Math.imul(I,q)|0,a=a+Math.imul(I,G)|0,n=n+Math.imul(L,W)|0,i=(i=i+Math.imul(L,Z)|0)+Math.imul(C,W)|0,a=a+Math.imul(C,Z)|0,n=n+Math.imul(M,J)|0,i=(i=i+Math.imul(M,K)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,K)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(A,Q)|0,a=a+Math.imul(A,tt)|0,n=n+Math.imul(b,rt)|0,i=(i=i+Math.imul(b,nt)|0)+Math.imul(_,rt)|0,a=a+Math.imul(_,nt)|0,n=n+Math.imul(y,at)|0,i=(i=i+Math.imul(y,ot)|0)+Math.imul(m,at)|0,a=a+Math.imul(m,ot)|0,n=n+Math.imul(d,lt)|0,i=(i=i+Math.imul(d,ut)|0)+Math.imul(v,lt)|0,a=a+Math.imul(v,ut)|0;var At=(u+(n=n+Math.imul(f,ft)|0)|0)+((8191&(i=(i=i+Math.imul(f,ht)|0)+Math.imul(h,ft)|0))<<13)|0;u=((a=a+Math.imul(h,ht)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,U),i=(i=Math.imul(B,V))+Math.imul(N,U)|0,a=Math.imul(N,V),n=n+Math.imul(z,q)|0,i=(i=i+Math.imul(z,G)|0)+Math.imul(R,q)|0,a=a+Math.imul(R,G)|0,n=n+Math.imul(O,W)|0,i=(i=i+Math.imul(O,Z)|0)+Math.imul(I,W)|0,a=a+Math.imul(I,Z)|0,n=n+Math.imul(L,J)|0,i=(i=i+Math.imul(L,K)|0)+Math.imul(C,J)|0,a=a+Math.imul(C,K)|0,n=n+Math.imul(M,Q)|0,i=(i=i+Math.imul(M,tt)|0)+Math.imul(S,Q)|0,a=a+Math.imul(S,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(A,rt)|0,a=a+Math.imul(A,nt)|0,n=n+Math.imul(b,at)|0,i=(i=i+Math.imul(b,ot)|0)+Math.imul(_,at)|0,a=a+Math.imul(_,ot)|0,n=n+Math.imul(y,lt)|0,i=(i=i+Math.imul(y,ut)|0)+Math.imul(m,lt)|0,a=a+Math.imul(m,ut)|0,n=n+Math.imul(d,ft)|0,i=(i=i+Math.imul(d,ht)|0)+Math.imul(v,ft)|0,a=a+Math.imul(v,ht)|0;var kt=(u+(n=n+Math.imul(f,dt)|0)|0)+((8191&(i=(i=i+Math.imul(f,vt)|0)+Math.imul(h,dt)|0))<<13)|0;u=((a=a+Math.imul(h,vt)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(B,q),i=(i=Math.imul(B,G))+Math.imul(N,q)|0,a=Math.imul(N,G),n=n+Math.imul(z,W)|0,i=(i=i+Math.imul(z,Z)|0)+Math.imul(R,W)|0,a=a+Math.imul(R,Z)|0,n=n+Math.imul(O,J)|0,i=(i=i+Math.imul(O,K)|0)+Math.imul(I,J)|0,a=a+Math.imul(I,K)|0,n=n+Math.imul(L,Q)|0,i=(i=i+Math.imul(L,tt)|0)+Math.imul(C,Q)|0,a=a+Math.imul(C,tt)|0,n=n+Math.imul(M,rt)|0,i=(i=i+Math.imul(M,nt)|0)+Math.imul(S,rt)|0,a=a+Math.imul(S,nt)|0,n=n+Math.imul(T,at)|0,i=(i=i+Math.imul(T,ot)|0)+Math.imul(A,at)|0,a=a+Math.imul(A,ot)|0,n=n+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ut)|0)+Math.imul(_,lt)|0,a=a+Math.imul(_,ut)|0,n=n+Math.imul(y,ft)|0,i=(i=i+Math.imul(y,ht)|0)+Math.imul(m,ft)|0,a=a+Math.imul(m,ht)|0;var Mt=(u+(n=n+Math.imul(d,dt)|0)|0)+((8191&(i=(i=i+Math.imul(d,vt)|0)+Math.imul(v,dt)|0))<<13)|0;u=((a=a+Math.imul(v,vt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(B,W),i=(i=Math.imul(B,Z))+Math.imul(N,W)|0,a=Math.imul(N,Z),n=n+Math.imul(z,J)|0,i=(i=i+Math.imul(z,K)|0)+Math.imul(R,J)|0,a=a+Math.imul(R,K)|0,n=n+Math.imul(O,Q)|0,i=(i=i+Math.imul(O,tt)|0)+Math.imul(I,Q)|0,a=a+Math.imul(I,tt)|0,n=n+Math.imul(L,rt)|0,i=(i=i+Math.imul(L,nt)|0)+Math.imul(C,rt)|0,a=a+Math.imul(C,nt)|0,n=n+Math.imul(M,at)|0,i=(i=i+Math.imul(M,ot)|0)+Math.imul(S,at)|0,a=a+Math.imul(S,ot)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ut)|0)+Math.imul(A,lt)|0,a=a+Math.imul(A,ut)|0,n=n+Math.imul(b,ft)|0,i=(i=i+Math.imul(b,ht)|0)+Math.imul(_,ft)|0,a=a+Math.imul(_,ht)|0;var St=(u+(n=n+Math.imul(y,dt)|0)|0)+((8191&(i=(i=i+Math.imul(y,vt)|0)+Math.imul(m,dt)|0))<<13)|0;u=((a=a+Math.imul(m,vt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(B,J),i=(i=Math.imul(B,K))+Math.imul(N,J)|0,a=Math.imul(N,K),n=n+Math.imul(z,Q)|0,i=(i=i+Math.imul(z,tt)|0)+Math.imul(R,Q)|0,a=a+Math.imul(R,tt)|0,n=n+Math.imul(O,rt)|0,i=(i=i+Math.imul(O,nt)|0)+Math.imul(I,rt)|0,a=a+Math.imul(I,nt)|0,n=n+Math.imul(L,at)|0,i=(i=i+Math.imul(L,ot)|0)+Math.imul(C,at)|0,a=a+Math.imul(C,ot)|0,n=n+Math.imul(M,lt)|0,i=(i=i+Math.imul(M,ut)|0)+Math.imul(S,lt)|0,a=a+Math.imul(S,ut)|0,n=n+Math.imul(T,ft)|0,i=(i=i+Math.imul(T,ht)|0)+Math.imul(A,ft)|0,a=a+Math.imul(A,ht)|0;var Et=(u+(n=n+Math.imul(b,dt)|0)|0)+((8191&(i=(i=i+Math.imul(b,vt)|0)+Math.imul(_,dt)|0))<<13)|0;u=((a=a+Math.imul(_,vt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(B,Q),i=(i=Math.imul(B,tt))+Math.imul(N,Q)|0,a=Math.imul(N,tt),n=n+Math.imul(z,rt)|0,i=(i=i+Math.imul(z,nt)|0)+Math.imul(R,rt)|0,a=a+Math.imul(R,nt)|0,n=n+Math.imul(O,at)|0,i=(i=i+Math.imul(O,ot)|0)+Math.imul(I,at)|0,a=a+Math.imul(I,ot)|0,n=n+Math.imul(L,lt)|0,i=(i=i+Math.imul(L,ut)|0)+Math.imul(C,lt)|0,a=a+Math.imul(C,ut)|0,n=n+Math.imul(M,ft)|0,i=(i=i+Math.imul(M,ht)|0)+Math.imul(S,ft)|0,a=a+Math.imul(S,ht)|0;var Lt=(u+(n=n+Math.imul(T,dt)|0)|0)+((8191&(i=(i=i+Math.imul(T,vt)|0)+Math.imul(A,dt)|0))<<13)|0;u=((a=a+Math.imul(A,vt)|0)+(i>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,n=Math.imul(B,rt),i=(i=Math.imul(B,nt))+Math.imul(N,rt)|0,a=Math.imul(N,nt),n=n+Math.imul(z,at)|0,i=(i=i+Math.imul(z,ot)|0)+Math.imul(R,at)|0,a=a+Math.imul(R,ot)|0,n=n+Math.imul(O,lt)|0,i=(i=i+Math.imul(O,ut)|0)+Math.imul(I,lt)|0,a=a+Math.imul(I,ut)|0,n=n+Math.imul(L,ft)|0,i=(i=i+Math.imul(L,ht)|0)+Math.imul(C,ft)|0,a=a+Math.imul(C,ht)|0;var Ct=(u+(n=n+Math.imul(M,dt)|0)|0)+((8191&(i=(i=i+Math.imul(M,vt)|0)+Math.imul(S,dt)|0))<<13)|0;u=((a=a+Math.imul(S,vt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(B,at),i=(i=Math.imul(B,ot))+Math.imul(N,at)|0,a=Math.imul(N,ot),n=n+Math.imul(z,lt)|0,i=(i=i+Math.imul(z,ut)|0)+Math.imul(R,lt)|0,a=a+Math.imul(R,ut)|0,n=n+Math.imul(O,ft)|0,i=(i=i+Math.imul(O,ht)|0)+Math.imul(I,ft)|0,a=a+Math.imul(I,ht)|0;var Pt=(u+(n=n+Math.imul(L,dt)|0)|0)+((8191&(i=(i=i+Math.imul(L,vt)|0)+Math.imul(C,dt)|0))<<13)|0;u=((a=a+Math.imul(C,vt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(B,lt),i=(i=Math.imul(B,ut))+Math.imul(N,lt)|0,a=Math.imul(N,ut),n=n+Math.imul(z,ft)|0,i=(i=i+Math.imul(z,ht)|0)+Math.imul(R,ft)|0,a=a+Math.imul(R,ht)|0;var Ot=(u+(n=n+Math.imul(O,dt)|0)|0)+((8191&(i=(i=i+Math.imul(O,vt)|0)+Math.imul(I,dt)|0))<<13)|0;u=((a=a+Math.imul(I,vt)|0)+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(B,ft),i=(i=Math.imul(B,ht))+Math.imul(N,ft)|0,a=Math.imul(N,ht);var It=(u+(n=n+Math.imul(z,dt)|0)|0)+((8191&(i=(i=i+Math.imul(z,vt)|0)+Math.imul(R,dt)|0))<<13)|0;u=((a=a+Math.imul(R,vt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863;var Dt=(u+(n=Math.imul(B,dt))|0)+((8191&(i=(i=Math.imul(B,vt))+Math.imul(N,dt)|0))<<13)|0;return u=((a=Math.imul(N,vt))+(i>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l[0]=gt,l[1]=yt,l[2]=mt,l[3]=xt,l[4]=bt,l[5]=_t,l[6]=wt,l[7]=Tt,l[8]=At,l[9]=kt,l[10]=Mt,l[11]=St,l[12]=Et,l[13]=Lt,l[14]=Ct,l[15]=Pt,l[16]=Ot,l[17]=It,l[18]=Dt,0!==u&&(l[19]=u,r.length++),r};function v(t,e,r){return(new g).mulp(t,e,r)}function g(t,e){this.x=t,this.y=e}Math.imul||(d=p),a.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?d(this,t,e):n<63?p(this,t,e):n<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,n=o,o=i}return 0!==n?r.words[a]=n:r.length--,r.strip()}(this,t,e):v(this,t,e),r},g.prototype.makeRBT=function(t){for(var e=new Array(t),r=a.prototype._countBits(t)-1,n=0;n>=1;return n},g.prototype.permute=function(t,e,r,n,i,a){for(var o=0;o>>=1)i++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*e;o>=26,e+=i/67108864|0,e+=a>>>26,this.words[r]=67108863&a}return 0!==e&&(this.words[r]=e,this.length++),this},a.prototype.muln=function(t){return this.clone().imuln(t)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}(t);if(0===e.length)return new a(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(e=0;e>>26-r}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0),i=e?(e-e%26)/26:0;var a=t%26,o=Math.min((t-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,u=0;u=0&&(0!==c||u>=i);u--){var f=0|this.words[u];this.words[u]=c<<26-a|f>>>a,c=f&s}return l&&0!==c&&(l.words[l.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},a.prototype.shln=function(t){return this.clone().ishln(t)},a.prototype.ushln=function(t){return this.clone().iushln(t)},a.prototype.shrn=function(t){return this.clone().ishrn(t)},a.prototype.ushrn=function(t){return this.clone().iushrn(t)},a.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},a.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(l/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),i=t,o=0|i.words[i.length-1];0!=(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,l=n.length-i.length;if("mod"!==e){(s=new a(null)).length=l+1,s.words=new Array(s.length);for(var u=0;u=0;f--){var h=67108864*(0|n.words[i.length+f])+(0|n.words[i.length+f-1]);for(h=Math.min(h/o|0,67108863),n._ishlnsubmul(i,h,f);0!==n.negative;)h--,n.negative=0,n._ishlnsubmul(i,1,f),n.isZero()||(n.negative^=1);s&&(s.words[f]=h)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},a.prototype.divmod=function(t,e,r){return n(!t.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(i=s.div.neg()),"div"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(t)),{div:i,mod:o}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):0!==(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(t)),{div:s.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new a(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new a(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new a(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,o,s},a.prototype.div=function(t){return this.divmod(t,"div",!1).div},a.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},a.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},a.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),a=r.cmp(n);return a<0||1===i&&0===a?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},a.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},a.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},a.prototype.divn=function(t){return this.clone().idivn(t)},a.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new a(1),o=new a(0),s=new a(0),l=new a(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),f=e.clone();!e.isZero();){for(var h=0,p=1;0===(e.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(e.iushrn(h);h-- >0;)(i.isOdd()||o.isOdd())&&(i.iadd(c),o.isub(f)),i.iushrn(1),o.iushrn(1);for(var d=0,v=1;0===(r.words[0]&v)&&d<26;++d,v<<=1);if(d>0)for(r.iushrn(d);d-- >0;)(s.isOdd()||l.isOdd())&&(s.iadd(c),l.isub(f)),s.iushrn(1),l.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(s),o.isub(l)):(r.isub(e),s.isub(i),l.isub(o))}return{a:s,b:l,gcd:r.iushln(u)}},a.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i,o=new a(1),s=new a(0),l=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0===(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var f=0,h=1;0===(r.words[0]&h)&&f<26;++f,h<<=1);if(f>0)for(r.iushrn(f);f-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),o.isub(s)):(r.isub(e),s.isub(o))}return(i=0===e.cmpn(1)?o:s).cmpn(0)<0&&i.iadd(t),i},a.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var a=e;e=r,r=a}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},a.prototype.invm=function(t){return this.egcd(t).a.umod(t)},a.prototype.isEven=function(){return!(1&this.words[0])},a.prototype.isOdd=function(){return!(1&~this.words[0])},a.prototype.andln=function(t){return this.words[0]&t},a.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},a.prototype.gtn=function(t){return 1===this.cmpn(t)},a.prototype.gt=function(t){return 1===this.cmp(t)},a.prototype.gten=function(t){return this.cmpn(t)>=0},a.prototype.gte=function(t){return this.cmp(t)>=0},a.prototype.ltn=function(t){return-1===this.cmpn(t)},a.prototype.lt=function(t){return-1===this.cmp(t)},a.prototype.lten=function(t){return this.cmpn(t)<=0},a.prototype.lte=function(t){return this.cmp(t)<=0},a.prototype.eqn=function(t){return 0===this.cmpn(t)},a.prototype.eq=function(t){return 0===this.cmp(t)},a.red=function(t){return new T(t)},a.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},a.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(t){return this.red=t,this},a.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},a.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},a.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},a.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},a.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},a.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},a.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},a.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},a.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var y={k256:null,p224:null,p192:null,p25519:null};function m(t,e){this.name=t,this.p=new a(e,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function x(){m.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){m.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){m.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function w(){m.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function T(t){if("string"==typeof t){var e=a._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function A(t){T.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}m.prototype._tmp=function(){var t=new a(null);return t.words=new Array(Math.ceil(this.n/13)),t},m.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},m.prototype.split=function(t,e){t.iushrn(this.n,0,e)},m.prototype.imulK=function(t){return t.imul(this.k)},i(x,m),x.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,a=o}a>>>=22,t.words[i-10]=a,0===a&&t.length>10?t.length-=10:t.length-=9},x.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},a._prime=function(t){if(y[t])return y[t];var e;if("k256"===t)e=new x;else if("p224"===t)e=new b;else if("p192"===t)e=new _;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new w}return y[t]=e,e},T.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},T.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},T.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},T.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},T.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},T.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},T.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},T.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},T.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},T.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},T.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},T.prototype.isqr=function(t){return this.imul(t,t.clone())},T.prototype.sqr=function(t){return this.mul(t,t)},T.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2==1),3===e){var r=this.m.add(new a(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),o=0;!i.isZero()&&0===i.andln(1);)o++,i.iushrn(1);n(!i.isZero());var s=new a(1).toRed(this),l=s.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new a(2*c*c).toRed(this);0!==this.pow(c,u).cmp(l);)c.redIAdd(l);for(var f=this.pow(c,i),h=this.pow(t,i.addn(1).iushrn(1)),p=this.pow(t,i),d=o;0!==p.cmp(s);){for(var v=p,g=0;0!==v.cmp(s);g++)v=v.redSqr();n(g=0;n--){for(var u=e.words[n],c=l-1;c>=0;c--){var f=u>>c&1;i!==r[0]&&(i=this.sqr(i)),0!==f||0!==o?(o<<=1,o|=f,(4===++s||0===n&&0===c)&&(i=this.mul(i,r[o]),s=0,o=0)):s=0}l=26}return i},T.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},T.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},a.mont=function(t){return new A(t)},i(A,T),A.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},A.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},A.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},A.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new a(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},A.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},2692:function(t){"use strict";t.exports=function(t){var e,r,n,i=t.length,a=0;for(e=0;e>>1;if(!(c<=0)){var f,h=i.mallocDouble(2*c*s),p=i.mallocInt32(s);if((s=l(t,c,h,p))>0){if(1===c&&n)a.init(s),f=a.sweepComplete(c,r,0,s,h,p,0,s,h,p);else{var d=i.mallocDouble(2*c*u),v=i.mallocInt32(u);(u=l(e,c,d,v))>0&&(a.init(s+u),f=1===c?a.sweepBipartite(c,r,0,s,h,p,0,u,d,v):o(c,r,n,s,h,p,u,d,v),i.free(d),i.free(v))}i.free(h),i.free(p)}return f}}}function c(t,e){n.push([t,e])}},7333:function(t,e){"use strict";function r(t){return t?function(t,e,r,n,i,a,o,s,l,u,c){return i-n>l-s?function(t,e,r,n,i,a,o,s,l,u,c){for(var f=2*t,h=n,p=f*n;hu-l?n?function(t,e,r,n,i,a,o,s,l,u,c){for(var f=2*t,h=n,p=f*n;h0;){var D=(O-=1)*b,z=w[D],R=w[D+1],F=w[D+2],B=w[D+3],N=w[D+4],j=w[D+5],U=O*_,V=T[U],H=T[U+1],q=1&j,G=!!(16&j),Y=c,W=S,Z=L,X=C;if(q&&(Y=L,W=C,Z=c,X=S),!(2&j&&R>=(F=g(t,z,R,F,Y,W,H))||4&j&&(R=y(t,z,R,F,Y,W,V))>=F)){var J=F-R,K=N-B;if(G){if(t*J*(J+K)=p0)&&!(p1>=hi)"),v=c("lo===p0"),g=c("lo>>1,h=2*t,p=f,d=s[h*f+e];u=x?(p=m,d=x):y>=_?(p=g,d=y):(p=b,d=_):x>=_?(p=m,d=x):_>=y?(p=g,d=y):(p=b,d=_);for(var w=h*(c-1),T=h*p,A=0;Ar&&i[f+e]>u;--c,f-=o){for(var h=f,p=f+o,d=0;dh;++h,l+=s)if(i[l+f]===o)if(c===h)c+=1,u+=s;else{for(var p=0;s>p;++p){var d=i[l+p];i[l+p]=i[u],i[u++]=d}var v=a[h];a[h]=a[c],a[c++]=v}return c},"loh;++h,l+=s)if(i[l+f]p;++p){var d=i[l+p];i[l+p]=i[u],i[u++]=d}var v=a[h];a[h]=a[c],a[c++]=v}return c},"lo<=p0":function(t,e,r,n,i,a,o){for(var s=2*t,l=s*r,u=l,c=r,f=t+e,h=r;n>h;++h,l+=s)if(i[l+f]<=o)if(c===h)c+=1,u+=s;else{for(var p=0;s>p;++p){var d=i[l+p];i[l+p]=i[u],i[u++]=d}var v=a[h];a[h]=a[c],a[c++]=v}return c},"hi<=p0":function(t,e,r,n,i,a,o){for(var s=2*t,l=s*r,u=l,c=r,f=t+e,h=r;n>h;++h,l+=s)if(i[l+f]<=o)if(c===h)c+=1,u+=s;else{for(var p=0;s>p;++p){var d=i[l+p];i[l+p]=i[u],i[u++]=d}var v=a[h];a[h]=a[c],a[c++]=v}return c},"lop;++p,l+=s){var d=i[l+f],v=i[l+h];if(dg;++g){var y=i[l+g];i[l+g]=i[u],i[u++]=y}var m=a[p];a[p]=a[c],a[c++]=m}}return c},"lo<=p0&&p0<=hi":function(t,e,r,n,i,a,o){for(var s=2*t,l=s*r,u=l,c=r,f=e,h=t+e,p=r;n>p;++p,l+=s){var d=i[l+f],v=i[l+h];if(d<=o&&o<=v)if(c===p)c+=1,u+=s;else{for(var g=0;s>g;++g){var y=i[l+g];i[l+g]=i[u],i[u++]=y}var m=a[p];a[p]=a[c],a[c++]=m}}return c},"!(lo>=p0)&&!(p1>=hi)":function(t,e,r,n,i,a,o,s){for(var l=2*t,u=l*r,c=u,f=r,h=e,p=t+e,d=r;n>d;++d,u+=l){var v=i[u+h],g=i[u+p];if(!(v>=o||s>=g))if(f===d)f+=1,c+=l;else{for(var y=0;l>y;++y){var m=i[u+y];i[u+y]=i[c],i[c++]=m}var x=a[d];a[d]=a[f],a[f++]=x}}return f}}},309:function(t){"use strict";t.exports=function(t,n){n<=4*e?r(0,n-1,t):u(0,n-1,t)};var e=32;function r(t,e,r){for(var n=2*(t+1),i=t+1;i<=e;++i){for(var a=r[n++],o=r[n++],s=i,l=n-2;s-- >t;){var u=r[l-2],c=r[l-1];if(ur[e+1])}function l(t,e,r,n){var i=n[t*=2];return i>1,g=v-h,y=v+h,m=p,x=g,b=v,_=y,w=d,T=t+1,A=c-1,k=0;s(m,x,f)&&(k=m,m=x,x=k),s(_,w,f)&&(k=_,_=w,w=k),s(m,b,f)&&(k=m,m=b,b=k),s(x,b,f)&&(k=x,x=b,b=k),s(m,_,f)&&(k=m,m=_,_=k),s(b,_,f)&&(k=b,b=_,_=k),s(x,w,f)&&(k=x,x=w,w=k),s(x,b,f)&&(k=x,x=b,b=k),s(_,w,f)&&(k=_,_=w,w=k);for(var M=f[2*x],S=f[2*x+1],E=f[2*_],L=f[2*_+1],C=2*m,P=2*b,O=2*w,I=2*p,D=2*v,z=2*d,R=0;R<2;++R){var F=f[C+R],B=f[P+R],N=f[O+R];f[I+R]=F,f[D+R]=B,f[z+R]=N}i(g,t,f),i(y,c,f);for(var j=T;j<=A;++j)if(l(j,M,S,f))j!==T&&n(j,T,f),++T;else if(!l(j,E,L,f))for(;;){if(l(A,E,L,f)){l(A,M,S,f)?(a(j,T,A,f),++T,--A):(n(j,A,f),--A);break}if(--A>>1;a(d,S);var E=0,L=0;for(T=0;T=o)v(c,f,L--,C=C-o|0);else if(C>=0)v(l,u,E--,C);else if(C<=-o){C=-C-o|0;for(var P=0;P>>1;a(d,E);var L=0,C=0,P=0;for(A=0;A>1==d[2*A+3]>>1&&(I=2,A+=1),O<0){for(var D=-(O>>1)-1,z=0;z>1)-1,0===I?v(l,u,L--,D):1===I?v(c,f,C--,D):2===I&&v(h,p,P--,D)}},scanBipartite:function(t,e,r,n,i,s,c,f,h,p,y,m){var x=0,b=2*t,_=e,w=e+t,T=1,A=1;n?A=o:T=o;for(var k=i;k>>1;a(d,L);var C=0;for(k=0;k=o?(O=!n,M-=o):(O=!!n,M-=1),O)g(l,u,C++,M);else{var I=m[M],D=b*M,z=y[D+e+1],R=y[D+e+1+t];t:for(var F=0;F>>1;a(d,T);var A=0;for(x=0;x=o)l[A++]=b-o;else{var M=p[b-=1],S=g*b,E=h[S+e+1],L=h[S+e+1+t];t:for(var C=0;C=0;--C)if(l[C]===b){for(D=C+1;D0;){for(var p=r.pop(),d=(c=-1,f=-1,l=o[s=r.pop()],1);d=0||(e.flip(s,p),i(t,e,r,c,s,f),i(t,e,r,s,f,c),i(t,e,r,f,p,c),i(t,e,r,p,c,f))}}},7098:function(t,e,r){"use strict";var n,i=r(5070);function a(t,e,r,n,i,a,o){this.cells=t,this.neighbor=e,this.flags=n,this.constraint=r,this.active=i,this.next=a,this.boundary=o}function o(t,e){return t[0]-e[0]||t[1]-e[1]||t[2]-e[2]}t.exports=function(t,e,r){var n=function(t,e){for(var r=t.cells(),n=r.length,i=0;i0||l.length>0;){for(;s.length>0;){var p=s.pop();if(u[p]!==-i){u[p]=i,c[p];for(var d=0;d<3;++d){var v=h[3*p+d];v>=0&&0===u[v]&&(f[3*p+d]?l.push(v):(s.push(v),u[v]=i))}}}var g=l;l=s,s=g,l.length=0,i=-i}var y=function(t,e,r){for(var n=0,i=0;i1&&i(r[h[p-2]],r[h[p-1]],a)>0;)t.push([h[p-1],h[p-2],o]),p-=1;h.length=p,h.push(o);var d=f.upperIds;for(p=d.length;p>1&&i(r[d[p-2]],r[d[p-1]],a)<0;)t.push([d[p-2],d[p-1],o]),p-=1;d.length=p,d.push(o)}}function c(t,e){var r;return(r=t.a[0]d[0]&&i.push(new o(d,p,2,l),new o(p,d,1,l))}i.sort(s);for(var v=i[0].a[0]-(1+Math.abs(i[0].a[0]))*Math.pow(2,-52),g=[new a([v,1],[v,0],-1,[],[],[],[])],y=[],m=(l=0,i.length);l=0}}(),a.removeTriangle=function(t,e,r){var n=this.stars;o(n[t],e,r),o(n[e],r,t),o(n[r],t,e)},a.addTriangle=function(t,e,r){var n=this.stars;n[t].push(e,r),n[e].push(r,t),n[r].push(t,e)},a.opposite=function(t,e){for(var r=this.stars[e],n=1,i=r.length;ne[2]?1:0)}function y(t,e,r){if(0!==t.length){if(e)for(var n=0;n=0;--a){var x=e[c=(S=n[a])[0]],b=x[0],_=x[1],w=t[b],T=t[_];if((w[0]-T[0]||w[1]-T[1])<0){var A=b;b=_,_=A}x[0]=b;var k,M=x[1]=S[1];for(i&&(k=x[2]);a>0&&n[a-1][0]===c;){var S,E=(S=n[--a])[1];i?e.push([M,E,k]):e.push([M,E]),M=E}i?e.push([M,_,k]):e.push([M,_])}return h}(t,e,h,v,r),m=d(t,g);return y(e,m,r),!!m||h.length>0||v.length>0}},5528:function(t,e,r){"use strict";t.exports=function(t,e,r,n){var a=s(e,t),f=s(n,r),h=c(a,f);if(0===o(h))return null;var p=c(f,s(t,r)),d=i(p,h),v=u(a,d);return l(t,v)};var n=r(3962),i=r(9189),a=r(4354),o=r(4951),s=r(6695),l=r(7584),u=r(4469);function c(t,e){return a(n(t[0],e[1]),n(t[1],e[0]))}},5692:function(t){t.exports={jet:[{index:0,rgb:[0,0,131]},{index:.125,rgb:[0,60,170]},{index:.375,rgb:[5,255,255]},{index:.625,rgb:[255,255,0]},{index:.875,rgb:[250,0,0]},{index:1,rgb:[128,0,0]}],hsv:[{index:0,rgb:[255,0,0]},{index:.169,rgb:[253,255,2]},{index:.173,rgb:[247,255,2]},{index:.337,rgb:[0,252,4]},{index:.341,rgb:[0,252,10]},{index:.506,rgb:[1,249,255]},{index:.671,rgb:[2,0,253]},{index:.675,rgb:[8,0,253]},{index:.839,rgb:[255,0,251]},{index:.843,rgb:[255,0,245]},{index:1,rgb:[255,0,6]}],hot:[{index:0,rgb:[0,0,0]},{index:.3,rgb:[230,0,0]},{index:.6,rgb:[255,210,0]},{index:1,rgb:[255,255,255]}],spring:[{index:0,rgb:[255,0,255]},{index:1,rgb:[255,255,0]}],summer:[{index:0,rgb:[0,128,102]},{index:1,rgb:[255,255,102]}],autumn:[{index:0,rgb:[255,0,0]},{index:1,rgb:[255,255,0]}],winter:[{index:0,rgb:[0,0,255]},{index:1,rgb:[0,255,128]}],bone:[{index:0,rgb:[0,0,0]},{index:.376,rgb:[84,84,116]},{index:.753,rgb:[169,200,200]},{index:1,rgb:[255,255,255]}],copper:[{index:0,rgb:[0,0,0]},{index:.804,rgb:[255,160,102]},{index:1,rgb:[255,199,127]}],greys:[{index:0,rgb:[0,0,0]},{index:1,rgb:[255,255,255]}],yignbu:[{index:0,rgb:[8,29,88]},{index:.125,rgb:[37,52,148]},{index:.25,rgb:[34,94,168]},{index:.375,rgb:[29,145,192]},{index:.5,rgb:[65,182,196]},{index:.625,rgb:[127,205,187]},{index:.75,rgb:[199,233,180]},{index:.875,rgb:[237,248,217]},{index:1,rgb:[255,255,217]}],greens:[{index:0,rgb:[0,68,27]},{index:.125,rgb:[0,109,44]},{index:.25,rgb:[35,139,69]},{index:.375,rgb:[65,171,93]},{index:.5,rgb:[116,196,118]},{index:.625,rgb:[161,217,155]},{index:.75,rgb:[199,233,192]},{index:.875,rgb:[229,245,224]},{index:1,rgb:[247,252,245]}],yiorrd:[{index:0,rgb:[128,0,38]},{index:.125,rgb:[189,0,38]},{index:.25,rgb:[227,26,28]},{index:.375,rgb:[252,78,42]},{index:.5,rgb:[253,141,60]},{index:.625,rgb:[254,178,76]},{index:.75,rgb:[254,217,118]},{index:.875,rgb:[255,237,160]},{index:1,rgb:[255,255,204]}],bluered:[{index:0,rgb:[0,0,255]},{index:1,rgb:[255,0,0]}],rdbu:[{index:0,rgb:[5,10,172]},{index:.35,rgb:[106,137,247]},{index:.5,rgb:[190,190,190]},{index:.6,rgb:[220,170,132]},{index:.7,rgb:[230,145,90]},{index:1,rgb:[178,10,28]}],picnic:[{index:0,rgb:[0,0,255]},{index:.1,rgb:[51,153,255]},{index:.2,rgb:[102,204,255]},{index:.3,rgb:[153,204,255]},{index:.4,rgb:[204,204,255]},{index:.5,rgb:[255,255,255]},{index:.6,rgb:[255,204,255]},{index:.7,rgb:[255,153,255]},{index:.8,rgb:[255,102,204]},{index:.9,rgb:[255,102,102]},{index:1,rgb:[255,0,0]}],rainbow:[{index:0,rgb:[150,0,90]},{index:.125,rgb:[0,0,200]},{index:.25,rgb:[0,25,255]},{index:.375,rgb:[0,152,255]},{index:.5,rgb:[44,255,150]},{index:.625,rgb:[151,255,0]},{index:.75,rgb:[255,234,0]},{index:.875,rgb:[255,111,0]},{index:1,rgb:[255,0,0]}],portland:[{index:0,rgb:[12,51,131]},{index:.25,rgb:[10,136,186]},{index:.5,rgb:[242,211,56]},{index:.75,rgb:[242,143,56]},{index:1,rgb:[217,30,30]}],blackbody:[{index:0,rgb:[0,0,0]},{index:.2,rgb:[230,0,0]},{index:.4,rgb:[230,210,0]},{index:.7,rgb:[255,255,255]},{index:1,rgb:[160,200,255]}],earth:[{index:0,rgb:[0,0,130]},{index:.1,rgb:[0,180,180]},{index:.2,rgb:[40,210,40]},{index:.4,rgb:[230,230,50]},{index:.6,rgb:[120,70,20]},{index:1,rgb:[255,255,255]}],electric:[{index:0,rgb:[0,0,0]},{index:.15,rgb:[30,0,100]},{index:.4,rgb:[120,0,100]},{index:.6,rgb:[160,90,0]},{index:.8,rgb:[230,200,0]},{index:1,rgb:[255,250,220]}],alpha:[{index:0,rgb:[255,255,255,0]},{index:1,rgb:[255,255,255,1]}],viridis:[{index:0,rgb:[68,1,84]},{index:.13,rgb:[71,44,122]},{index:.25,rgb:[59,81,139]},{index:.38,rgb:[44,113,142]},{index:.5,rgb:[33,144,141]},{index:.63,rgb:[39,173,129]},{index:.75,rgb:[92,200,99]},{index:.88,rgb:[170,220,50]},{index:1,rgb:[253,231,37]}],inferno:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[31,12,72]},{index:.25,rgb:[85,15,109]},{index:.38,rgb:[136,34,106]},{index:.5,rgb:[186,54,85]},{index:.63,rgb:[227,89,51]},{index:.75,rgb:[249,140,10]},{index:.88,rgb:[249,201,50]},{index:1,rgb:[252,255,164]}],magma:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[28,16,68]},{index:.25,rgb:[79,18,123]},{index:.38,rgb:[129,37,129]},{index:.5,rgb:[181,54,122]},{index:.63,rgb:[229,80,100]},{index:.75,rgb:[251,135,97]},{index:.88,rgb:[254,194,135]},{index:1,rgb:[252,253,191]}],plasma:[{index:0,rgb:[13,8,135]},{index:.13,rgb:[75,3,161]},{index:.25,rgb:[125,3,168]},{index:.38,rgb:[168,34,150]},{index:.5,rgb:[203,70,121]},{index:.63,rgb:[229,107,93]},{index:.75,rgb:[248,148,65]},{index:.88,rgb:[253,195,40]},{index:1,rgb:[240,249,33]}],warm:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[172,0,187]},{index:.25,rgb:[219,0,170]},{index:.38,rgb:[255,0,130]},{index:.5,rgb:[255,63,74]},{index:.63,rgb:[255,123,0]},{index:.75,rgb:[234,176,0]},{index:.88,rgb:[190,228,0]},{index:1,rgb:[147,255,0]}],cool:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[116,0,218]},{index:.25,rgb:[98,74,237]},{index:.38,rgb:[68,146,231]},{index:.5,rgb:[0,204,197]},{index:.63,rgb:[0,247,146]},{index:.75,rgb:[0,255,88]},{index:.88,rgb:[40,255,8]},{index:1,rgb:[147,255,0]}],"rainbow-soft":[{index:0,rgb:[125,0,179]},{index:.1,rgb:[199,0,180]},{index:.2,rgb:[255,0,121]},{index:.3,rgb:[255,108,0]},{index:.4,rgb:[222,194,0]},{index:.5,rgb:[150,255,0]},{index:.6,rgb:[0,255,55]},{index:.7,rgb:[0,246,150]},{index:.8,rgb:[50,167,222]},{index:.9,rgb:[103,51,235]},{index:1,rgb:[124,0,186]}],bathymetry:[{index:0,rgb:[40,26,44]},{index:.13,rgb:[59,49,90]},{index:.25,rgb:[64,76,139]},{index:.38,rgb:[63,110,151]},{index:.5,rgb:[72,142,158]},{index:.63,rgb:[85,174,163]},{index:.75,rgb:[120,206,163]},{index:.88,rgb:[187,230,172]},{index:1,rgb:[253,254,204]}],cdom:[{index:0,rgb:[47,15,62]},{index:.13,rgb:[87,23,86]},{index:.25,rgb:[130,28,99]},{index:.38,rgb:[171,41,96]},{index:.5,rgb:[206,67,86]},{index:.63,rgb:[230,106,84]},{index:.75,rgb:[242,149,103]},{index:.88,rgb:[249,193,135]},{index:1,rgb:[254,237,176]}],chlorophyll:[{index:0,rgb:[18,36,20]},{index:.13,rgb:[25,63,41]},{index:.25,rgb:[24,91,59]},{index:.38,rgb:[13,119,72]},{index:.5,rgb:[18,148,80]},{index:.63,rgb:[80,173,89]},{index:.75,rgb:[132,196,122]},{index:.88,rgb:[175,221,162]},{index:1,rgb:[215,249,208]}],density:[{index:0,rgb:[54,14,36]},{index:.13,rgb:[89,23,80]},{index:.25,rgb:[110,45,132]},{index:.38,rgb:[120,77,178]},{index:.5,rgb:[120,113,213]},{index:.63,rgb:[115,151,228]},{index:.75,rgb:[134,185,227]},{index:.88,rgb:[177,214,227]},{index:1,rgb:[230,241,241]}],"freesurface-blue":[{index:0,rgb:[30,4,110]},{index:.13,rgb:[47,14,176]},{index:.25,rgb:[41,45,236]},{index:.38,rgb:[25,99,212]},{index:.5,rgb:[68,131,200]},{index:.63,rgb:[114,156,197]},{index:.75,rgb:[157,181,203]},{index:.88,rgb:[200,208,216]},{index:1,rgb:[241,237,236]}],"freesurface-red":[{index:0,rgb:[60,9,18]},{index:.13,rgb:[100,17,27]},{index:.25,rgb:[142,20,29]},{index:.38,rgb:[177,43,27]},{index:.5,rgb:[192,87,63]},{index:.63,rgb:[205,125,105]},{index:.75,rgb:[216,162,148]},{index:.88,rgb:[227,199,193]},{index:1,rgb:[241,237,236]}],oxygen:[{index:0,rgb:[64,5,5]},{index:.13,rgb:[106,6,15]},{index:.25,rgb:[144,26,7]},{index:.38,rgb:[168,64,3]},{index:.5,rgb:[188,100,4]},{index:.63,rgb:[206,136,11]},{index:.75,rgb:[220,174,25]},{index:.88,rgb:[231,215,44]},{index:1,rgb:[248,254,105]}],par:[{index:0,rgb:[51,20,24]},{index:.13,rgb:[90,32,35]},{index:.25,rgb:[129,44,34]},{index:.38,rgb:[159,68,25]},{index:.5,rgb:[182,99,19]},{index:.63,rgb:[199,134,22]},{index:.75,rgb:[212,171,35]},{index:.88,rgb:[221,210,54]},{index:1,rgb:[225,253,75]}],phase:[{index:0,rgb:[145,105,18]},{index:.13,rgb:[184,71,38]},{index:.25,rgb:[186,58,115]},{index:.38,rgb:[160,71,185]},{index:.5,rgb:[110,97,218]},{index:.63,rgb:[50,123,164]},{index:.75,rgb:[31,131,110]},{index:.88,rgb:[77,129,34]},{index:1,rgb:[145,105,18]}],salinity:[{index:0,rgb:[42,24,108]},{index:.13,rgb:[33,50,162]},{index:.25,rgb:[15,90,145]},{index:.38,rgb:[40,118,137]},{index:.5,rgb:[59,146,135]},{index:.63,rgb:[79,175,126]},{index:.75,rgb:[120,203,104]},{index:.88,rgb:[193,221,100]},{index:1,rgb:[253,239,154]}],temperature:[{index:0,rgb:[4,35,51]},{index:.13,rgb:[23,51,122]},{index:.25,rgb:[85,59,157]},{index:.38,rgb:[129,79,143]},{index:.5,rgb:[175,95,130]},{index:.63,rgb:[222,112,101]},{index:.75,rgb:[249,146,66]},{index:.88,rgb:[249,196,65]},{index:1,rgb:[232,250,91]}],turbidity:[{index:0,rgb:[34,31,27]},{index:.13,rgb:[65,50,41]},{index:.25,rgb:[98,69,52]},{index:.38,rgb:[131,89,57]},{index:.5,rgb:[161,112,59]},{index:.63,rgb:[185,140,66]},{index:.75,rgb:[202,174,88]},{index:.88,rgb:[216,209,126]},{index:1,rgb:[233,246,171]}],"velocity-blue":[{index:0,rgb:[17,32,64]},{index:.13,rgb:[35,52,116]},{index:.25,rgb:[29,81,156]},{index:.38,rgb:[31,113,162]},{index:.5,rgb:[50,144,169]},{index:.63,rgb:[87,173,176]},{index:.75,rgb:[149,196,189]},{index:.88,rgb:[203,221,211]},{index:1,rgb:[254,251,230]}],"velocity-green":[{index:0,rgb:[23,35,19]},{index:.13,rgb:[24,64,38]},{index:.25,rgb:[11,95,45]},{index:.38,rgb:[39,123,35]},{index:.5,rgb:[95,146,12]},{index:.63,rgb:[152,165,18]},{index:.75,rgb:[201,186,69]},{index:.88,rgb:[233,216,137]},{index:1,rgb:[255,253,205]}],cubehelix:[{index:0,rgb:[0,0,0]},{index:.07,rgb:[22,5,59]},{index:.13,rgb:[60,4,105]},{index:.2,rgb:[109,1,135]},{index:.27,rgb:[161,0,147]},{index:.33,rgb:[210,2,142]},{index:.4,rgb:[251,11,123]},{index:.47,rgb:[255,29,97]},{index:.53,rgb:[255,54,69]},{index:.6,rgb:[255,85,46]},{index:.67,rgb:[255,120,34]},{index:.73,rgb:[255,157,37]},{index:.8,rgb:[241,191,57]},{index:.87,rgb:[224,220,93]},{index:.93,rgb:[218,241,142]},{index:1,rgb:[227,253,198]}]}},9156:function(t,e,r){"use strict";var n=r(5692),i=r(3578);function a(t){return[t[0]/255,t[1]/255,t[2]/255,t[3]]}function o(t){for(var e,r="#",n=0;n<3;++n)r+=("00"+(e=(e=t[n]).toString(16))).substr(e.length);return r}function s(t){return"rgba("+t.join(",")+")"}t.exports=function(t){var e,r,l,u,c,f,h,p,d,v;if(t||(t={}),p=(t.nshades||72)-1,h=t.format||"hex",(f=t.colormap)||(f="jet"),"string"==typeof f){if(f=f.toLowerCase(),!n[f])throw Error(f+" not a supported colorscale");c=n[f]}else{if(!Array.isArray(f))throw Error("unsupported colormap option",f);c=f.slice()}if(c.length>p+1)throw new Error(f+" map requires nshades to be at least size "+c.length);d=Array.isArray(t.alpha)?2!==t.alpha.length?[1,1]:t.alpha.slice():"number"==typeof t.alpha?[t.alpha,t.alpha]:[1,1],e=c.map(function(t){return Math.round(t.index*p)}),d[0]=Math.min(Math.max(d[0],0),1),d[1]=Math.min(Math.max(d[1],0),1);var g=c.map(function(t,e){var r=c[e].index,n=c[e].rgb.slice();return 4===n.length&&n[3]>=0&&n[3]<=1||(n[3]=d[0]+(d[1]-d[0])*r),n}),y=[];for(v=0;v0||l(t,e,a)?-1:1:0===s?u>0||l(t,e,r)?1:-1:i(u-s)}var f=n(t,e,r);return f>0?o>0&&n(t,e,a)>0?1:-1:f<0?o>0||n(t,e,a)>0?1:-1:n(t,e,a)>0||l(t,e,r)?1:-1};var n=r(417),i=r(7538),a=r(87),o=r(2019),s=r(9662);function l(t,e,r){var n=a(t[0],-e[0]),i=a(t[1],-e[1]),l=a(r[0],-e[0]),u=a(r[1],-e[1]),c=s(o(n,l),o(i,u));return c[c.length-1]>=0}},7538:function(t){"use strict";t.exports=function(t){return t<0?-1:t>0?1:0}},9209:function(t){t.exports=function(t,n){var i=t.length,a=t.length-n.length;if(a)return a;switch(i){case 0:return 0;case 1:return t[0]-n[0];case 2:return t[0]+t[1]-n[0]-n[1]||e(t[0],t[1])-e(n[0],n[1]);case 3:var o=t[0]+t[1],s=n[0]+n[1];if(a=o+t[2]-(s+n[2]))return a;var l=e(t[0],t[1]),u=e(n[0],n[1]);return e(l,t[2])-e(u,n[2])||e(l+t[2],o)-e(u+n[2],s);case 4:var c=t[0],f=t[1],h=t[2],p=t[3],d=n[0],v=n[1],g=n[2],y=n[3];return c+f+h+p-(d+v+g+y)||e(c,f,h,p)-e(d,v,g,y,d)||e(c+f,c+h,c+p,f+h,f+p,h+p)-e(d+v,d+g,d+y,v+g,v+y,g+y)||e(c+f+h,c+f+p,c+h+p,f+h+p)-e(d+v+g,d+v+y,d+g+y,v+g+y);default:for(var m=t.slice().sort(r),x=n.slice().sort(r),b=0;bt[r][0]&&(r=n);return er?[[r],[e]]:[[e]]}},8722:function(t,e,r){"use strict";t.exports=function(t){var e=n(t),r=e.length;if(r<=2)return[];for(var i=new Array(r),a=e[r-1],o=0;o=e[l]&&(s+=1);a[o]=s}}return t}(n(a,!0),r)}};var n=r(2183),i=r(2153)},9680:function(t){"use strict";t.exports=function(t,e,r,n,i,a){var o=i-1,s=i*i,l=o*o,u=(1+2*i)*l,c=i*l,f=s*(3-2*i),h=s*o;if(t.length){a||(a=new Array(t.length));for(var p=t.length-1;p>=0;--p)a[p]=u*t[p]+c*e[p]+f*r[p]+h*n[p];return a}return u*t+c*e+f*r+h*n},t.exports.derivative=function(t,e,r,n,i,a){var o=6*i*i-6*i,s=3*i*i-4*i+1,l=-6*i*i+6*i,u=3*i*i-2*i;if(t.length){a||(a=new Array(t.length));for(var c=t.length-1;c>=0;--c)a[c]=o*t[c]+s*e[c]+l*r[c]+u*n[c];return a}return o*t+s*e+l*r[c]+u*n}},4419:function(t,e,r){"use strict";var n=r(2183),i=r(1215);function a(t,e){this.point=t,this.index=e}function o(t,e){for(var r=t.point,n=e.point,i=r.length,a=0;a=2)return!1;t[r]=n}return!0}):_.filter(function(t){for(var e=0;e<=s;++e){var r=y[t[e]];if(r<0)return!1;t[e]=r}return!0}),1&s)for(c=0;c<_.length;++c)h=(b=_[c])[0],b[0]=b[1],b[1]=h;return _}},8362:function(t){var e=!1;if("undefined"!=typeof Float64Array){var r=new Float64Array(1),n=new Uint32Array(r.buffer);r[0]=1,e=!0,1072693248===n[1]?(t.exports=function(t){return r[0]=t,[n[0],n[1]]},t.exports.pack=function(t,e){return n[0]=t,n[1]=e,r[0]},t.exports.lo=function(t){return r[0]=t,n[0]},t.exports.hi=function(t){return r[0]=t,n[1]}):1072693248===n[0]?(t.exports=function(t){return r[0]=t,[n[1],n[0]]},t.exports.pack=function(t,e){return n[1]=t,n[0]=e,r[0]},t.exports.lo=function(t){return r[0]=t,n[1]},t.exports.hi=function(t){return r[0]=t,n[0]}):e=!1}if(!e){var i=new Buffer(8);t.exports=function(t){return i.writeDoubleLE(t,0,!0),[i.readUInt32LE(0,!0),i.readUInt32LE(4,!0)]},t.exports.pack=function(t,e){return i.writeUInt32LE(t,0,!0),i.writeUInt32LE(e,4,!0),i.readDoubleLE(0,!0)},t.exports.lo=function(t){return i.writeDoubleLE(t,0,!0),i.readUInt32LE(0,!0)},t.exports.hi=function(t){return i.writeDoubleLE(t,0,!0),i.readUInt32LE(4,!0)}}t.exports.sign=function(e){return t.exports.hi(e)>>>31},t.exports.exponent=function(e){return(t.exports.hi(e)<<1>>>21)-1023},t.exports.fraction=function(e){var r=t.exports.lo(e),n=t.exports.hi(e),i=1048575&n;return 2146435072&n&&(i+=1<<20),[r,i]},t.exports.denormalized=function(e){return!(2146435072&t.exports.hi(e))}},3094:function(t){"use strict";function e(t,r,n){var i=0|t[n];if(i<=0)return[];var a,o=new Array(i);if(n===t.length-1)for(a=0;a0)return function(t,e){var r,n;for(r=new Array(t),n=0;n=r-1){h=l.length-1;var d=t-e[r-1];for(p=0;p=r-1)for(var c=s.length-1,f=(e[r-1],0);f=0;--r)if(t[--e])return!1;return!0},s.jump=function(t){var e=this.lastT(),r=this.dimension;if(!(t0;--f)n.push(a(l[f-1],u[f-1],arguments[f])),i.push(0)}},s.push=function(t){var e=this.lastT(),r=this.dimension;if(!(t1e-6?1/s:0;this._time.push(t);for(var h=r;h>0;--h){var p=a(u[h-1],c[h-1],arguments[h]);n.push(p),i.push((p-n[o++])*f)}}},s.set=function(t){var e=this.dimension;if(!(t0;--l)r.push(a(o[l-1],s[l-1],arguments[l])),n.push(0)}},s.move=function(t){var e=this.lastT(),r=this.dimension;if(!(t<=e||arguments.length!==r+1)){var n=this._state,i=this._velocity,o=n.length-this.dimension,s=this.bounds,l=s[0],u=s[1],c=t-e,f=c>1e-6?1/c:0;this._time.push(t);for(var h=r;h>0;--h){var p=arguments[h];n.push(a(l[h-1],u[h-1],n[o++]+p)),i.push(p*f)}}},s.idle=function(t){var e=this.lastT();if(!(t=0;--f)n.push(a(l[f],u[f],n[o]+c*i[o])),i.push(0),o+=1}}},7080:function(t){"use strict";function e(t,e,r,n,i,a){this._color=t,this.key=e,this.value=r,this.left=n,this.right=i,this._count=a}function r(t){return new e(t._color,t.key,t.value,t.left,t.right,t._count)}function n(t,r){return new e(t,r.key,r.value,r.left,r.right,r._count)}function i(t){t._count=1+(t.left?t.left._count:0)+(t.right?t.right._count:0)}function a(t,e){this._compare=t,this.root=e}t.exports=function(t){return new a(t||p,null)};var o=a.prototype;function s(t,e){var r;return e.left&&(r=s(t,e.left))?r:(r=t(e.key,e.value))||(e.right?s(t,e.right):void 0)}function l(t,e,r,n){if(e(t,n.key)<=0){var i;if(n.left&&(i=l(t,e,r,n.left)))return i;if(i=r(n.key,n.value))return i}if(n.right)return l(t,e,r,n.right)}function u(t,e,r,n,i){var a,o=r(t,i.key),s=r(e,i.key);if(o<=0){if(i.left&&(a=u(t,e,r,n,i.left)))return a;if(s>0&&(a=n(i.key,i.value)))return a}if(s>0&&i.right)return u(t,e,r,n,i.right)}function c(t,e){this.tree=t,this._stack=e}Object.defineProperty(o,"keys",{get:function(){var t=[];return this.forEach(function(e,r){t.push(e)}),t}}),Object.defineProperty(o,"values",{get:function(){var t=[];return this.forEach(function(e,r){t.push(r)}),t}}),Object.defineProperty(o,"length",{get:function(){return this.root?this.root._count:0}}),o.insert=function(t,r){for(var o=this._compare,s=this.root,l=[],u=[];s;){var c=o(t,s.key);l.push(s),u.push(c),s=c<=0?s.left:s.right}l.push(new e(0,t,r,null,null,1));for(var f=l.length-2;f>=0;--f)s=l[f],u[f]<=0?l[f]=new e(s._color,s.key,s.value,l[f+1],s.right,s._count+1):l[f]=new e(s._color,s.key,s.value,s.left,l[f+1],s._count+1);for(f=l.length-1;f>1;--f){var h=l[f-1];if(s=l[f],1===h._color||1===s._color)break;var p=l[f-2];if(p.left===h)if(h.left===s){if(!(d=p.right)||0!==d._color){p._color=0,p.left=h.right,h._color=1,h.right=p,l[f-2]=h,l[f-1]=s,i(p),i(h),f>=3&&((v=l[f-3]).left===p?v.left=h:v.right=h);break}h._color=1,p.right=n(1,d),p._color=0,f-=1}else{if(!(d=p.right)||0!==d._color){h.right=s.left,p._color=0,p.left=s.right,s._color=1,s.left=h,s.right=p,l[f-2]=s,l[f-1]=h,i(p),i(h),i(s),f>=3&&((v=l[f-3]).left===p?v.left=s:v.right=s);break}h._color=1,p.right=n(1,d),p._color=0,f-=1}else if(h.right===s){if(!(d=p.left)||0!==d._color){p._color=0,p.right=h.left,h._color=1,h.left=p,l[f-2]=h,l[f-1]=s,i(p),i(h),f>=3&&((v=l[f-3]).right===p?v.right=h:v.left=h);break}h._color=1,p.left=n(1,d),p._color=0,f-=1}else{var d;if(!(d=p.left)||0!==d._color){var v;h.left=s.right,p._color=0,p.right=s.left,s._color=1,s.right=h,s.left=p,l[f-2]=s,l[f-1]=h,i(p),i(h),i(s),f>=3&&((v=l[f-3]).right===p?v.right=s:v.left=s);break}h._color=1,p.left=n(1,d),p._color=0,f-=1}}return l[0]._color=1,new a(o,l[0])},o.forEach=function(t,e,r){if(this.root)switch(arguments.length){case 1:return s(t,this.root);case 2:return l(e,this._compare,t,this.root);case 3:if(this._compare(e,r)>=0)return;return u(e,r,this._compare,t,this.root)}},Object.defineProperty(o,"begin",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.left;return new c(this,t)}}),Object.defineProperty(o,"end",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.right;return new c(this,t)}}),o.at=function(t){if(t<0)return new c(this,[]);for(var e=this.root,r=[];;){if(r.push(e),e.left){if(t=e.right._count)break;e=e.right}return new c(this,[])},o.ge=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<=0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new c(this,n)},o.gt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new c(this,n)},o.lt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new c(this,n)},o.le=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>=0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new c(this,n)},o.find=function(t){for(var e=this._compare,r=this.root,n=[];r;){var i=e(t,r.key);if(n.push(r),0===i)return new c(this,n);r=i<=0?r.left:r.right}return new c(this,[])},o.remove=function(t){var e=this.find(t);return e?e.remove():this},o.get=function(t){for(var e=this._compare,r=this.root;r;){var n=e(t,r.key);if(0===n)return r.value;r=n<=0?r.left:r.right}};var f=c.prototype;function h(t,e){t.key=e.key,t.value=e.value,t.left=e.left,t.right=e.right,t._color=e._color,t._count=e._count}function p(t,e){return te?1:0}Object.defineProperty(f,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(f,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),f.clone=function(){return new c(this.tree,this._stack.slice())},f.remove=function(){var t=this._stack;if(0===t.length)return this.tree;var o=new Array(t.length),s=t[t.length-1];o[o.length-1]=new e(s._color,s.key,s.value,s.left,s.right,s._count);for(var l=t.length-2;l>=0;--l)(s=t[l]).left===t[l+1]?o[l]=new e(s._color,s.key,s.value,o[l+1],s.right,s._count):o[l]=new e(s._color,s.key,s.value,s.left,o[l+1],s._count);if((s=o[o.length-1]).left&&s.right){var u=o.length;for(s=s.left;s.right;)o.push(s),s=s.right;var c=o[u-1];for(o.push(new e(s._color,c.key,c.value,s.left,s.right,s._count)),o[u-1].key=s.key,o[u-1].value=s.value,l=o.length-2;l>=u;--l)s=o[l],o[l]=new e(s._color,s.key,s.value,s.left,o[l+1],s._count);o[u-1].left=o[u]}if(0===(s=o[o.length-1])._color){var f=o[o.length-2];for(f.left===s?f.left=null:f.right===s&&(f.right=null),o.pop(),l=0;l=0;--l){if(e=t[l],0===l)return void(e._color=1);if((a=t[l-1]).left===e){if((o=a.right).right&&0===o.right._color)return s=(o=a.right=r(o)).right=r(o.right),a.right=o.left,o.left=a,o.right=s,o._color=a._color,e._color=1,a._color=1,s._color=1,i(a),i(o),l>1&&((u=t[l-2]).left===a?u.left=o:u.right=o),void(t[l-1]=o);if(o.left&&0===o.left._color)return s=(o=a.right=r(o)).left=r(o.left),a.right=s.left,o.left=s.right,s.left=a,s.right=o,s._color=a._color,a._color=1,o._color=1,e._color=1,i(a),i(o),i(s),l>1&&((u=t[l-2]).left===a?u.left=s:u.right=s),void(t[l-1]=s);if(1===o._color){if(0===a._color)return a._color=1,void(a.right=n(0,o));a.right=n(0,o);continue}o=r(o),a.right=o.left,o.left=a,o._color=a._color,a._color=0,i(a),i(o),l>1&&((u=t[l-2]).left===a?u.left=o:u.right=o),t[l-1]=o,t[l]=a,l+11&&((u=t[l-2]).right===a?u.right=o:u.left=o),void(t[l-1]=o);if(o.right&&0===o.right._color)return s=(o=a.left=r(o)).right=r(o.right),a.left=s.right,o.right=s.left,s.right=a,s.left=o,s._color=a._color,a._color=1,o._color=1,e._color=1,i(a),i(o),i(s),l>1&&((u=t[l-2]).right===a?u.right=s:u.left=s),void(t[l-1]=s);if(1===o._color){if(0===a._color)return a._color=1,void(a.left=n(0,o));a.left=n(0,o);continue}var u;o=r(o),a.left=o.right,o.right=a,o._color=a._color,a._color=0,i(a),i(o),l>1&&((u=t[l-2]).right===a?u.right=o:u.left=o),t[l-1]=o,t[l]=a,l+10)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(f,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(f,"index",{get:function(){var t=0,e=this._stack;if(0===e.length){var r=this.tree.root;return r?r._count:0}e[e.length-1].left&&(t=e[e.length-1].left._count);for(var n=e.length-2;n>=0;--n)e[n+1]===e[n].right&&(++t,e[n].left&&(t+=e[n].left._count));return t},enumerable:!0}),f.next=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.right)for(e=e.right;e;)t.push(e),e=e.left;else for(t.pop();t.length>0&&t[t.length-1].right===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(f,"hasNext",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].right)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].left===t[e])return!0;return!1}}),f.update=function(t){var r=this._stack;if(0===r.length)throw new Error("Can't update empty node!");var n=new Array(r.length),i=r[r.length-1];n[n.length-1]=new e(i._color,i.key,t,i.left,i.right,i._count);for(var o=r.length-2;o>=0;--o)(i=r[o]).left===r[o+1]?n[o]=new e(i._color,i.key,i.value,n[o+1],i.right,i._count):n[o]=new e(i._color,i.key,i.value,i.left,n[o+1],i._count);return new a(this.tree._compare,n[0])},f.prev=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.left)for(e=e.left;e;)t.push(e),e=e.right;else for(t.pop();t.length>0&&t[t.length-1].left===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(f,"hasPrev",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].left)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].right===t[e])return!0;return!1}})},7453:function(t,e,r){"use strict";t.exports=function(t,e){var r=new c(t);return r.update(e),r};var n=r(9557),i=r(1681),a=r(1011),o=r(2864),s=r(8468),l=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function u(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function c(t){this.gl=t,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont="sans-serif",this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=a(t)}var f=c.prototype;function h(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}f.update=function(t){function e(e,r,n){if(n in t){var i,a=t[n],o=this[n];(e?Array.isArray(a)&&Array.isArray(a[0]):Array.isArray(a))?this[n]=i=[r(a[0]),r(a[1]),r(a[2])]:this[n]=i=[r(a),r(a),r(a)];for(var s=0;s<3;++s)if(i[s]!==o[s])return!0}return!1}t=t||{};var r,a=e.bind(this,!1,Number),o=e.bind(this,!1,Boolean),l=e.bind(this,!1,String),u=e.bind(this,!0,function(t){if(Array.isArray(t)){if(3===t.length)return[+t[0],+t[1],+t[2],1];if(4===t.length)return[+t[0],+t[1],+t[2],+t[3]]}return[0,0,0,1]}),c=!1,f=!1;if("bounds"in t)for(var h=t.bounds,p=0;p<2;++p)for(var d=0;d<3;++d)h[p][d]!==this.bounds[p][d]&&(f=!0),this.bounds[p][d]=h[p][d];if("ticks"in t)for(r=t.ticks,c=!0,this.autoTicks=!1,p=0;p<3;++p)this.tickSpacing[p]=0;else a("tickSpacing")&&(this.autoTicks=!0,f=!0);if(this._firstInit&&("ticks"in t||"tickSpacing"in t||(this.autoTicks=!0),f=!0,c=!0,this._firstInit=!1),f&&this.autoTicks&&(r=s.create(this.bounds,this.tickSpacing),c=!0),c){for(p=0;p<3;++p)r[p].sort(function(t,e){return t.x-e.x});s.equal(r,this.ticks)?c=!1:this.ticks=r}o("tickEnable"),l("tickFont")&&(c=!0),a("tickSize"),a("tickAngle"),a("tickPad"),u("tickColor");var v=l("labels");l("labelFont")&&(v=!0),o("labelEnable"),a("labelSize"),a("labelPad"),u("labelColor"),o("lineEnable"),o("lineMirror"),a("lineWidth"),u("lineColor"),o("lineTickEnable"),o("lineTickMirror"),a("lineTickLength"),a("lineTickWidth"),u("lineTickColor"),o("gridEnable"),a("gridWidth"),u("gridColor"),o("zeroEnable"),u("zeroLineColor"),a("zeroLineWidth"),o("backgroundEnable"),u("backgroundColor"),this._text?this._text&&(v||c)&&this._text.update(this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont):this._text=n(this.gl,this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont),this._lines&&c&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=i(this.gl,this.bounds,this.ticks))};var p=[new h,new h,new h];function d(t,e,r,n,i){for(var a=t.primalOffset,o=t.primalMinor,s=t.mirrorOffset,l=t.mirrorMinor,u=n[e],c=0;c<3;++c)if(e!==c){var f=a,h=s,p=o,d=l;u&1<0?(p[c]=-1,d[c]=0):(p[c]=0,d[c]=1)}}var v=[0,0,0],g={model:l,view:l,projection:l,_ortho:!1};f.isOpaque=function(){return!0},f.isTransparent=function(){return!1},f.drawTransparent=function(t){};var y=[0,0,0],m=[0,0,0],x=[0,0,0];f.draw=function(t){t=t||g;for(var e=this.gl,r=t.model||l,n=t.view||l,i=t.projection||l,a=this.bounds,s=t._ortho||!1,c=o(r,n,i,a,s),f=c.cubeEdges,h=c.axis,b=n[12],_=n[13],w=n[14],T=n[15],A=(s?2:1)*this.pixelRatio*(i[3]*b+i[7]*_+i[11]*w+i[15]*T)/e.drawingBufferHeight,k=0;k<3;++k)this.lastCubeProps.cubeEdges[k]=f[k],this.lastCubeProps.axis[k]=h[k];var M=p;for(k=0;k<3;++k)d(p[k],k,this.bounds,f,h);e=this.gl;var S,E,L,C=v;for(k=0;k<3;++k)this.backgroundEnable[k]?C[k]=h[k]:C[k]=0;for(this._background.draw(r,n,i,a,C,this.backgroundColor),this._lines.bind(r,n,i,this),k=0;k<3;++k){var P=[0,0,0];h[k]>0?P[k]=a[1][k]:P[k]=a[0][k];for(var O=0;O<2;++O){var I=(k+1+O)%3,D=(k+1+(1^O))%3;this.gridEnable[I]&&this._lines.drawGrid(I,D,this.bounds,P,this.gridColor[I],this.gridWidth[I]*this.pixelRatio)}for(O=0;O<2;++O)I=(k+1+O)%3,D=(k+1+(1^O))%3,this.zeroEnable[D]&&Math.min(a[0][D],a[1][D])<=0&&Math.max(a[0][D],a[1][D])>=0&&this._lines.drawZero(I,D,this.bounds,P,this.zeroLineColor[D],this.zeroLineWidth[D]*this.pixelRatio)}for(k=0;k<3;++k){this.lineEnable[k]&&this._lines.drawAxisLine(k,this.bounds,M[k].primalOffset,this.lineColor[k],this.lineWidth[k]*this.pixelRatio),this.lineMirror[k]&&this._lines.drawAxisLine(k,this.bounds,M[k].mirrorOffset,this.lineColor[k],this.lineWidth[k]*this.pixelRatio);var z=u(y,M[k].primalMinor),R=u(m,M[k].mirrorMinor),F=this.lineTickLength;for(O=0;O<3;++O){var B=A/r[5*O];z[O]*=F[O]*B,R[O]*=F[O]*B}this.lineTickEnable[k]&&this._lines.drawAxisTicks(k,M[k].primalOffset,z,this.lineTickColor[k],this.lineTickWidth[k]*this.pixelRatio),this.lineTickMirror[k]&&this._lines.drawAxisTicks(k,M[k].mirrorOffset,R,this.lineTickColor[k],this.lineTickWidth[k]*this.pixelRatio)}function N(t){(L=[0,0,0])[t]=1}function j(t,e,r){var n=(t+1)%3,i=(t+2)%3,a=e[n],o=e[i],s=r[n],l=r[i];a>0&&l>0||a>0&&l<0||a<0&&l>0||a<0&&l<0?N(n):(o>0&&s>0||o>0&&s<0||o<0&&s>0||o<0&&s<0)&&N(i)}for(this._lines.unbind(),this._text.bind(r,n,i,this.pixelRatio),k=0;k<3;++k){var U=M[k].primalMinor,V=M[k].mirrorMinor,H=u(x,M[k].primalOffset);for(O=0;O<3;++O)this.lineTickEnable[k]&&(H[O]+=A*U[O]*Math.max(this.lineTickLength[O],0)/r[5*O]);var q=[0,0,0];if(q[k]=1,this.tickEnable[k]){for(-3600===this.tickAngle[k]?(this.tickAngle[k]=0,this.tickAlign[k]="auto"):this.tickAlign[k]=-1,E=1,"auto"===(S=[this.tickAlign[k],.5,E])[0]?S[0]=0:S[0]=parseInt(""+S[0]),L=[0,0,0],j(k,U,V),O=0;O<3;++O)H[O]+=A*U[O]*this.tickPad[O]/r[5*O];this._text.drawTicks(k,this.tickSize[k],this.tickAngle[k],H,this.tickColor[k],q,L,S)}if(this.labelEnable[k]){for(E=0,L=[0,0,0],this.labels[k].length>4&&(N(k),E=1),"auto"===(S=[this.labelAlign[k],.5,E])[0]?S[0]=0:S[0]=parseInt(""+S[0]),O=0;O<3;++O)H[O]+=A*U[O]*this.labelPad[O]/r[5*O];H[k]+=.5*(a[0][k]+a[1][k]),this._text.drawLabel(k,this.labelSize[k],this.labelAngle[k],H,this.labelColor[k],[0,0,0],L,S)}}this._text.unbind()},f.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null}},1011:function(t,e,r){"use strict";t.exports=function(t){for(var e=[],r=[],s=0,l=0;l<3;++l)for(var u=(l+1)%3,c=(l+2)%3,f=[0,0,0],h=[0,0,0],p=-1;p<=1;p+=2){r.push(s,s+2,s+1,s+1,s+2,s+3),f[l]=p,h[l]=p;for(var d=-1;d<=1;d+=2){f[u]=d;for(var v=-1;v<=1;v+=2)f[c]=v,e.push(f[0],f[1],f[2],h[0],h[1],h[2]),s+=1}var g=u;u=c,c=g}var y=n(t,new Float32Array(e)),m=n(t,new Uint16Array(r),t.ELEMENT_ARRAY_BUFFER),x=i(t,[{buffer:y,type:t.FLOAT,size:3,offset:0,stride:24},{buffer:y,type:t.FLOAT,size:3,offset:12,stride:24}],m),b=a(t);return b.attributes.position.location=0,b.attributes.normal.location=1,new o(t,y,x,b)};var n=r(5827),i=r(2944),a=r(1943).bg;function o(t,e,r,n){this.gl=t,this.buffer=e,this.vao=r,this.shader=n}var s=o.prototype;s.draw=function(t,e,r,n,i,a){for(var o=!1,s=0;s<3;++s)o=o||i[s];if(o){var l=this.gl;l.enable(l.POLYGON_OFFSET_FILL),l.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:t,view:e,projection:r,bounds:n,enable:i,colors:a},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),l.disable(l.POLYGON_OFFSET_FILL)}},s.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},2864:function(t,e,r){"use strict";t.exports=function(t,e,r,a,p){i(s,e,t),i(s,r,s);for(var m=0,x=0;x<2;++x){c[2]=a[x][2];for(var b=0;b<2;++b){c[1]=a[b][1];for(var _=0;_<2;++_)c[0]=a[_][0],h(l[m],c,s),m+=1}}var w=-1;for(x=0;x<8;++x){for(var T=l[x][3],A=0;A<3;++A)u[x][A]=l[x][A]/T;p&&(u[x][2]*=-1),T<0&&(w<0||u[x][2]E&&(w|=1<E&&(w|=1<u[x][1])&&(R=x);var F=-1;for(x=0;x<3;++x)(N=R^1<u[B][0]&&(B=N))}var j=v;j[0]=j[1]=j[2]=0,j[n.log2(F^R)]=R&F,j[n.log2(R^B)]=R&B;var U=7^B;U===w||U===z?(U=7^F,j[n.log2(B^U)]=U&B):j[n.log2(F^U)]=U&F;var V=g,H=w;for(k=0;k<3;++k)V[k]=H&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ?\n b - PI :\n b;\n}\n\nfloat look_horizontal_or_vertical(float a, float ratio) {\n // ratio controls the ratio between being horizontal to (vertical + horizontal)\n // if ratio is set to 0.5 then it is 50%, 50%.\n // when using a higher ratio e.g. 0.75 the result would\n // likely be more horizontal than vertical.\n\n float b = positive_angle(a);\n\n return\n (b < ( ratio) * HALF_PI) ? 0.0 :\n (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI :\n (b < (2.0 + ratio) * HALF_PI) ? 0.0 :\n (b < (4.0 - ratio) * HALF_PI) ? HALF_PI :\n 0.0;\n}\n\nfloat roundTo(float a, float b) {\n return float(b * floor((a + 0.5 * b) / b));\n}\n\nfloat look_round_n_directions(float a, int n) {\n float b = positive_angle(a);\n float div = TWO_PI / float(n);\n float c = roundTo(b, div);\n return look_upwards(c);\n}\n\nfloat applyAlignOption(float rawAngle, float delta) {\n return\n (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions\n (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical\n (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis\n (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards\n (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal\n rawAngle; // otherwise return back raw input angle\n}\n\nbool isAxisTitle = (axis.x == 0.0) &&\n (axis.y == 0.0) &&\n (axis.z == 0.0);\n\nvoid main() {\n //Compute world offset\n float axisDistance = position.z;\n vec3 dataPosition = axisDistance * axis + offset;\n\n float beta = angle; // i.e. user defined attributes for each tick\n\n float axisAngle;\n float clipAngle;\n float flip;\n\n if (enableAlign) {\n axisAngle = (isAxisTitle) ? HALF_PI :\n computeViewAngle(dataPosition, dataPosition + axis);\n clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir);\n\n axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0;\n clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0;\n\n flip = (dot(vec2(cos(axisAngle), sin(axisAngle)),\n vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0;\n\n beta += applyAlignOption(clipAngle, flip * PI);\n }\n\n //Compute plane offset\n vec2 planeCoord = position.xy * pixelScale;\n\n mat2 planeXform = scale * mat2(\n cos(beta), sin(beta),\n -sin(beta), cos(beta)\n );\n\n vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution;\n\n //Compute clip position\n vec3 clipPosition = project(dataPosition);\n\n //Apply text offset in clip coordinates\n clipPosition += vec3(viewOffset, 0.0);\n\n //Done\n gl_Position = vec4(clipPosition, 1.0);\n}"]),l=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform vec4 color;\nvoid main() {\n gl_FragColor = color;\n}"]);e.f=function(t){return i(t,s,l,null,[{name:"position",type:"vec3"}])};var u=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec3 normal;\n\nuniform mat4 model, view, projection;\nuniform vec3 enable;\nuniform vec3 bounds[2];\n\nvarying vec3 colorChannel;\n\nvoid main() {\n\n vec3 signAxis = sign(bounds[1] - bounds[0]);\n\n vec3 realNormal = signAxis * normal;\n\n if(dot(realNormal, enable) > 0.0) {\n vec3 minRange = min(bounds[0], bounds[1]);\n vec3 maxRange = max(bounds[0], bounds[1]);\n vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0));\n gl_Position = projection * view * model * vec4(nPosition, 1.0);\n } else {\n gl_Position = vec4(0,0,0,0);\n }\n\n colorChannel = abs(realNormal);\n}"]),c=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform vec4 colors[3];\n\nvarying vec3 colorChannel;\n\nvoid main() {\n gl_FragColor = colorChannel.x * colors[0] +\n colorChannel.y * colors[1] +\n colorChannel.z * colors[2];\n}"]);e.bg=function(t){return i(t,u,c,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},9557:function(t,e,r){"use strict";t.exports=function(t,e,r,i,o,l){var u=n(t),f=a(t,[{buffer:u,size:3}]),h=s(t);h.attributes.position.location=0;var p=new c(t,h,u,f);return p.update(e,r,i,o,l),p};var n=r(5827),a=r(2944),o=r(875),s=r(1943).f,l=window||i.global||{},u=l.__TEXT_CACHE||{};function c(t,e,r,n){this.gl=t,this.shader=e,this.buffer=r,this.vao=n,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}l.__TEXT_CACHE={};var f=c.prototype,h=[0,0];f.bind=function(t,e,r,n){this.vao.bind(),this.shader.bind();var i=this.shader.uniforms;i.model=t,i.view=e,i.projection=r,i.pixelScale=n,h[0]=this.gl.drawingBufferWidth,h[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=h},f.unbind=function(){this.vao.unbind()},f.update=function(t,e,r,n,i){var a=[];function s(t,e,r,n,i,s){var l=u[r];l||(l=u[r]={});var c=l[e];c||(c=l[e]=function(t,e){try{return o(t,e)}catch(e){return console.warn('error vectorizing text:"'+t+'" error:',e),{cells:[],positions:[]}}}(e,{triangles:!0,font:r,textAlign:"center",textBaseline:"middle",lineSpacing:i,styletags:s}));for(var f=(n||12)/12,h=c.positions,p=c.cells,d=0,v=p.length;d=0;--y){var m=h[g[y]];a.push(f*m[0],-f*m[1],t)}}for(var l=[0,0,0],c=[0,0,0],f=[0,0,0],h=[0,0,0],p={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},d=0;d<3;++d){f[d]=a.length/3|0,s(.5*(t[0][d]+t[1][d]),e[d],r[d],12,1.25,p),h[d]=(a.length/3|0)-f[d],l[d]=a.length/3|0;for(var v=0;v=0&&(i=r.length-n-1);var a=Math.pow(10,i),o=Math.round(t*e*a),s=o+"";if(s.indexOf("e")>=0)return s;var l=o/a,u=o%a;o<0?(l=0|-Math.ceil(l),u=0|-u):(l=0|Math.floor(l),u|=0);var c=""+l;if(o<0&&(c="-"+c),i){for(var f=""+u;f.length=t[0][i];--o)a.push({x:o*e[i],text:r(e[i],o)});n.push(a)}return n},e.equal=function(t,e){for(var r=0;r<3;++r){if(t[r].length!==e[r].length)return!1;for(var n=0;nr)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return t.bufferSubData(e,a,i),r}function c(t,e){for(var r=n.malloc(t.length,e),i=t.length,a=0;a=0;--n){if(e[n]!==r)return!1;r*=t[n]}return!0}(t.shape,t.stride))0===t.offset&&t.data.length===t.shape[0]?this.length=u(this.gl,this.type,this.length,this.usage,t.data,e):this.length=u(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),e);else{var s=n.malloc(t.size,r),l=a(s,t.shape);i.assign(l,t),this.length=u(this.gl,this.type,this.length,this.usage,e<0?s:s.subarray(0,t.size),e),n.free(s)}}else if(Array.isArray(t)){var f;f=this.type===this.gl.ELEMENT_ARRAY_BUFFER?c(t,"uint16"):c(t,"float32"),this.length=u(this.gl,this.type,this.length,this.usage,e<0?f:f.subarray(0,t.length),e),n.free(f)}else if("object"==typeof t&&"number"==typeof t.length)this.length=u(this.gl,this.type,this.length,this.usage,t,e);else{if("number"!=typeof t&&void 0!==t)throw new Error("gl-buffer: Invalid data type");if(e>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");(t|=0)<=0&&(t=1),this.gl.bufferData(this.type,0|t,this.usage),this.length=t}},t.exports=function(t,e,r,n){if(r=r||t.ARRAY_BUFFER,n=n||t.DYNAMIC_DRAW,r!==t.ARRAY_BUFFER&&r!==t.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(n!==t.DYNAMIC_DRAW&&n!==t.STATIC_DRAW&&n!==t.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var i=t.createBuffer(),a=new s(t,r,i,0,n);return a.update(e),a}},1140:function(t,e,r){"use strict";var n=r(2858);t.exports=function(t,e){var r=t.positions,i=t.vectors,a={positions:[],vertexIntensity:[],vertexIntensityBounds:t.vertexIntensityBounds,vectors:[],cells:[],coneOffset:t.coneOffset,colormap:t.colormap};if(0===t.positions.length)return e&&(e[0]=[0,0,0],e[1]=[0,0,0]),a;for(var o=0,s=1/0,l=-1/0,u=1/0,c=-1/0,f=1/0,h=-1/0,p=null,d=null,v=[],g=1/0,y=!1,m=0;mo&&(o=n.length(b)),m){var _=2*n.distance(p,x)/(n.length(d)+n.length(b));_?(g=Math.min(g,_),y=!1):y=!0}y||(p=x,d=b),v.push(b)}var w=[s,u,f],T=[l,c,h];e&&(e[0]=w,e[1]=T),0===o&&(o=1);var A=1/o;isFinite(g)||(g=1),a.vectorScale=g;var k=t.coneSize||.5;t.absoluteConeSize&&(k=t.absoluteConeSize*A),a.coneScale=k,m=0;for(var M=0;m=1},p.isTransparent=function(){return this.opacity<1},p.pickSlots=1,p.setPickBase=function(t){this.pickId=t},p.update=function(t){t=t||{};var e=this.gl;this.dirty=!0,"lightPosition"in t&&(this.lightPosition=t.lightPosition),"opacity"in t&&(this.opacity=t.opacity),"ambient"in t&&(this.ambientLight=t.ambient),"diffuse"in t&&(this.diffuseLight=t.diffuse),"specular"in t&&(this.specularLight=t.specular),"roughness"in t&&(this.roughness=t.roughness),"fresnel"in t&&(this.fresnel=t.fresnel),void 0!==t.tubeScale&&(this.tubeScale=t.tubeScale),void 0!==t.vectorScale&&(this.vectorScale=t.vectorScale),void 0!==t.coneScale&&(this.coneScale=t.coneScale),void 0!==t.coneOffset&&(this.coneOffset=t.coneOffset),t.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=e.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=e.LINEAR,this.texture.setPixels(function(t){for(var e=c({colormap:t,nshades:256,format:"rgba"}),r=new Uint8Array(1024),n=0;n<256;++n){for(var i=e[n],a=0;a<3;++a)r[4*n+a]=i[a];r[4*n+3]=255*i[3]}return u(r,[256,256,4],[4,0,1])}(t.colormap)),this.texture.generateMipmap());var r=t.cells,n=t.positions,i=t.vectors;if(n&&r&&i){var a=[],o=[],s=[],l=[],f=[];this.cells=r,this.positions=n,this.vectors=i;var h=t.meshColor||[1,1,1,1],p=t.vertexIntensity,d=1/0,v=-1/0;if(p)if(t.vertexIntensityBounds)d=+t.vertexIntensityBounds[0],v=+t.vertexIntensityBounds[1];else for(var g=0;g0){var v=this.triShader;v.bind(),v.uniforms=u,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()}},p.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||f,n=t.view||f,i=t.projection||f,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s={model:r,view:n,projection:i,clipBounds:a,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},l=this.pickShader;l.bind(),l.uniforms=s,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind())},p.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions[r[1]].slice(0,3),i={position:n,dataCoordinate:n,index:Math.floor(r[1]/48)};return"cone"===this.traceType?i.index=Math.floor(r[1]/48):"streamtube"===this.traceType&&(i.intensity=this.intensity[r[1]],i.velocity=this.vectors[r[1]].slice(0,3),i.divergence=this.vectors[r[1]][3],i.index=e),i},p.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()},t.exports=function(t,e,r){var s=r.shaders;1===arguments.length&&(t=(e=t).gl);var l=function(t,e){var r=n(t,e.meshShader.vertex,e.meshShader.fragment,null,e.meshShader.attributes);return r.attributes.position.location=0,r.attributes.color.location=2,r.attributes.uv.location=3,r.attributes.vector.location=4,r}(t,s),c=function(t,e){var r=n(t,e.pickShader.vertex,e.pickShader.fragment,null,e.pickShader.attributes);return r.attributes.position.location=0,r.attributes.id.location=1,r.attributes.vector.location=4,r}(t,s),f=o(t,u(new Uint8Array([255,255,255,255]),[1,1,4]));f.generateMipmap(),f.minFilter=t.LINEAR_MIPMAP_LINEAR,f.magFilter=t.LINEAR;var p=i(t),d=i(t),v=i(t),g=i(t),y=i(t),m=new h(t,f,l,c,p,d,y,v,g,a(t,[{buffer:p,type:t.FLOAT,size:4},{buffer:y,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:v,type:t.FLOAT,size:4},{buffer:g,type:t.FLOAT,size:2},{buffer:d,type:t.FLOAT,size:4}]),r.traceType||"cone");return m.update(e),m}},7234:function(t,e,r){var n=r(6832),i=n(["precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the cone vertex and normal at the given index.\n//\n// The returned vertex is for a cone with its top at origin and height of 1.0,\n// pointing in the direction of the vector attribute.\n//\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\n// These vertices are used to make up the triangles of the cone by the following:\n// segment + 0 top vertex\n// segment + 1 perimeter vertex a+1\n// segment + 2 perimeter vertex a\n// segment + 3 center base vertex\n// segment + 4 perimeter vertex a\n// segment + 5 perimeter vertex a+1\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\n// To go from index to segment, floor(index / 6)\n// To go from segment to angle, 2*pi * (segment/segmentCount)\n// To go from index to segment index, index - (segment*6)\n//\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\n\n const float segmentCount = 8.0;\n\n float index = rawIndex - floor(rawIndex /\n (segmentCount * 6.0)) *\n (segmentCount * 6.0);\n\n float segment = floor(0.001 + index/6.0);\n float segmentIndex = index - (segment*6.0);\n\n normal = -normalize(d);\n\n if (segmentIndex > 2.99 && segmentIndex < 3.01) {\n return mix(vec3(0.0), -d, coneOffset);\n }\n\n float nextAngle = (\n (segmentIndex > 0.99 && segmentIndex < 1.01) ||\n (segmentIndex > 4.99 && segmentIndex < 5.01)\n ) ? 1.0 : 0.0;\n float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\n\n vec3 v1 = mix(d, vec3(0.0), coneOffset);\n vec3 v2 = v1 - d;\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d)*0.25;\n vec3 y = v * sin(angle) * length(d)*0.25;\n vec3 v3 = v2 + x + y;\n if (segmentIndex < 3.0) {\n vec3 tx = u * sin(angle);\n vec3 ty = v * -cos(angle);\n vec3 tangent = tx + ty;\n normal = normalize(cross(v3 - v1, tangent));\n }\n\n if (segmentIndex == 0.0) {\n return mix(d, vec3(0.0), coneOffset);\n }\n return v3;\n}\n\nattribute vec3 vector;\nattribute vec4 color, position;\nattribute vec2 uv;\n\nuniform float vectorScale, coneScale, coneOffset;\nuniform mat4 model, view, projection, inverseModel;\nuniform vec3 eyePosition, lightPosition;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n // Scale the vector magnitude to stay constant with\n // model & view changes.\n vec3 normal;\n vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal);\n vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * conePosition;\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n // vec4 m_position = model * vec4(conePosition, 1.0);\n vec4 t_position = view * conePosition;\n gl_Position = projection * t_position;\n\n f_color = color;\n f_data = conePosition.xyz;\n f_position = position.xyz;\n f_uv = uv;\n}\n"]),a=n(["#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform sampler2D texture;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = f_color * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * opacity;\n}\n"]),o=n(["precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the cone vertex and normal at the given index.\n//\n// The returned vertex is for a cone with its top at origin and height of 1.0,\n// pointing in the direction of the vector attribute.\n//\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\n// These vertices are used to make up the triangles of the cone by the following:\n// segment + 0 top vertex\n// segment + 1 perimeter vertex a+1\n// segment + 2 perimeter vertex a\n// segment + 3 center base vertex\n// segment + 4 perimeter vertex a\n// segment + 5 perimeter vertex a+1\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\n// To go from index to segment, floor(index / 6)\n// To go from segment to angle, 2*pi * (segment/segmentCount)\n// To go from index to segment index, index - (segment*6)\n//\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\n\n const float segmentCount = 8.0;\n\n float index = rawIndex - floor(rawIndex /\n (segmentCount * 6.0)) *\n (segmentCount * 6.0);\n\n float segment = floor(0.001 + index/6.0);\n float segmentIndex = index - (segment*6.0);\n\n normal = -normalize(d);\n\n if (segmentIndex > 2.99 && segmentIndex < 3.01) {\n return mix(vec3(0.0), -d, coneOffset);\n }\n\n float nextAngle = (\n (segmentIndex > 0.99 && segmentIndex < 1.01) ||\n (segmentIndex > 4.99 && segmentIndex < 5.01)\n ) ? 1.0 : 0.0;\n float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\n\n vec3 v1 = mix(d, vec3(0.0), coneOffset);\n vec3 v2 = v1 - d;\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d)*0.25;\n vec3 y = v * sin(angle) * length(d)*0.25;\n vec3 v3 = v2 + x + y;\n if (segmentIndex < 3.0) {\n vec3 tx = u * sin(angle);\n vec3 ty = v * -cos(angle);\n vec3 tangent = tx + ty;\n normal = normalize(cross(v3 - v1, tangent));\n }\n\n if (segmentIndex == 0.0) {\n return mix(d, vec3(0.0), coneOffset);\n }\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform float vectorScale, coneScale, coneOffset;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n vec3 normal;\n vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal);\n vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n gl_Position = projection * view * conePosition;\n f_id = id;\n f_position = position.xyz;\n}\n"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}"]);e.meshShader={vertex:i,fragment:a,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},e.pickShader={vertex:o,fragment:s,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},1950:function(t){t.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},6603:function(t,e,r){var n=r(1950);t.exports=function(t){return n[t]}},3110:function(t,e,r){"use strict";t.exports=function(t){var e=t.gl,r=n(e),o=i(e,[{buffer:r,type:e.FLOAT,size:3,offset:0,stride:40},{buffer:r,type:e.FLOAT,size:4,offset:12,stride:40},{buffer:r,type:e.FLOAT,size:3,offset:28,stride:40}]),l=a(e);l.attributes.position.location=0,l.attributes.color.location=1,l.attributes.offset.location=2;var u=new s(e,r,o,l);return u.update(t),u};var n=r(5827),i=r(2944),a=r(7667),o=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function s(t,e,r,n){this.gl=t,this.shader=n,this.buffer=e,this.vao=r,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var l=s.prototype;function u(t,e){for(var r=0;r<3;++r)t[0][r]=Math.min(t[0][r],e[r]),t[1][r]=Math.max(t[1][r],e[r])}l.isOpaque=function(){return!this.hasAlpha},l.isTransparent=function(){return this.hasAlpha},l.drawTransparent=l.draw=function(t){var e=this.gl,r=this.shader.uniforms;this.shader.bind();var n=r.view=t.view||o,i=r.projection=t.projection||o;r.model=t.model||o,r.clipBounds=this.clipBounds,r.opacity=this.opacity;var a=n[12],s=n[13],l=n[14],u=n[15],c=(t._ortho?2:1)*this.pixelRatio*(i[3]*a+i[7]*s+i[11]*l+i[15]*u)/e.drawingBufferHeight;this.vao.bind();for(var f=0;f<3;++f)e.lineWidth(this.lineWidth[f]*this.pixelRatio),r.capSize=this.capSize[f]*c,this.lineCount[f]&&e.drawArrays(e.LINES,this.lineOffset[f],this.lineCount[f]);this.vao.unbind()};var c=function(){for(var t=new Array(3),e=0;e<3;++e){for(var r=[],n=1;n<=2;++n)for(var i=-1;i<=1;i+=2){var a=[0,0,0];a[(n+e)%3]=i,r.push(a)}t[e]=r}return t}();function f(t,e,r,n){for(var i=c[n],a=0;a0&&((p=c.slice())[s]+=d[1][s],i.push(c[0],c[1],c[2],v[0],v[1],v[2],v[3],0,0,0,p[0],p[1],p[2],v[0],v[1],v[2],v[3],0,0,0),u(this.bounds,p),o+=2+f(i,p,v,s)))}this.lineCount[s]=o-this.lineOffset[s]}this.buffer.update(i)}},l.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()}},7667:function(t,e,r){"use strict";var n=r(6832),i=r(5158),a=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position, offset;\nattribute vec4 color;\nuniform mat4 model, view, projection;\nuniform float capSize;\nvarying vec4 fragColor;\nvarying vec3 fragPosition;\n\nvoid main() {\n vec4 worldPosition = model * vec4(position, 1.0);\n worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0);\n gl_Position = projection * view * worldPosition;\n fragColor = color;\n fragPosition = position;\n}"]),o=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float opacity;\nvarying vec3 fragPosition;\nvarying vec4 fragColor;\n\nvoid main() {\n if (\n outOfRange(clipBounds[0], clipBounds[1], fragPosition) ||\n fragColor.a * opacity == 0.\n ) discard;\n\n gl_FragColor = opacity * fragColor;\n}"]);t.exports=function(t){return i(t,a,o,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},4234:function(t,e,r){"use strict";var n=r(8931);t.exports=function(t,e,r,n){i||(i=t.FRAMEBUFFER_UNSUPPORTED,a=t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,o=t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,s=t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);var u=t.getExtension("WEBGL_draw_buffers");if(!l&&u&&function(t,e){var r=t.getParameter(e.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(r+1);for(var n=0;n<=r;++n){for(var i=new Array(r),a=0;ac||r<0||r>c)throw new Error("gl-fbo: Parameters are too large for FBO");var f=1;if("color"in(n=n||{})){if((f=Math.max(0|n.color,0))<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(f>1){if(!u)throw new Error("gl-fbo: Multiple draw buffer extension not supported");if(f>t.getParameter(u.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+f+" draw buffers")}}var h=t.UNSIGNED_BYTE,p=t.getExtension("OES_texture_float");if(n.float&&f>0){if(!p)throw new Error("gl-fbo: Context does not support floating point textures");h=t.FLOAT}else n.preferFloat&&f>0&&p&&(h=t.FLOAT);var v=!0;"depth"in n&&(v=!!n.depth);var g=!1;return"stencil"in n&&(g=!!n.stencil),new d(t,e,r,h,f,v,g,u)};var i,a,o,s,l=null;function u(t){return[t.getParameter(t.FRAMEBUFFER_BINDING),t.getParameter(t.RENDERBUFFER_BINDING),t.getParameter(t.TEXTURE_BINDING_2D)]}function c(t,e){t.bindFramebuffer(t.FRAMEBUFFER,e[0]),t.bindRenderbuffer(t.RENDERBUFFER,e[1]),t.bindTexture(t.TEXTURE_2D,e[2])}function f(t){switch(t){case i:throw new Error("gl-fbo: Framebuffer unsupported");case a:throw new Error("gl-fbo: Framebuffer incomplete attachment");case o:throw new Error("gl-fbo: Framebuffer incomplete dimensions");case s:throw new Error("gl-fbo: Framebuffer incomplete missing attachment");default:throw new Error("gl-fbo: Framebuffer failed for unspecified reason")}}function h(t,e,r,i,a,o){if(!i)return null;var s=n(t,e,r,a,i);return s.magFilter=t.NEAREST,s.minFilter=t.NEAREST,s.mipSamples=1,s.bind(),t.framebufferTexture2D(t.FRAMEBUFFER,o,t.TEXTURE_2D,s.handle,0),s}function p(t,e,r,n,i){var a=t.createRenderbuffer();return t.bindRenderbuffer(t.RENDERBUFFER,a),t.renderbufferStorage(t.RENDERBUFFER,n,e,r),t.framebufferRenderbuffer(t.FRAMEBUFFER,i,t.RENDERBUFFER,a),a}function d(t,e,r,n,i,a,o,s){this.gl=t,this._shape=[0|e,0|r],this._destroyed=!1,this._ext=s,this.color=new Array(i);for(var d=0;d1&&s.drawBuffersWEBGL(l[o]);var m=r.getExtension("WEBGL_depth_texture");m?d?t.depth=h(r,i,a,m.UNSIGNED_INT_24_8_WEBGL,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):v&&(t.depth=h(r,i,a,r.UNSIGNED_SHORT,r.DEPTH_COMPONENT,r.DEPTH_ATTACHMENT)):v&&d?t._depth_rb=p(r,i,a,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):v?t._depth_rb=p(r,i,a,r.DEPTH_COMPONENT16,r.DEPTH_ATTACHMENT):d&&(t._depth_rb=p(r,i,a,r.STENCIL_INDEX,r.STENCIL_ATTACHMENT));var x=r.checkFramebufferStatus(r.FRAMEBUFFER);if(x!==r.FRAMEBUFFER_COMPLETE){for(t._destroyed=!0,r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteFramebuffer(t.handle),t.handle=null,t.depth&&(t.depth.dispose(),t.depth=null),t._depth_rb&&(r.deleteRenderbuffer(t._depth_rb),t._depth_rb=null),y=0;yi||r<0||r>i)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");t._shape[0]=e,t._shape[1]=r;for(var a=u(n),o=0;o>8*p&255;this.pickOffset=r,i.bind();var d=i.uniforms;d.viewTransform=t,d.pickOffset=e,d.shape=this.shape;var v=i.attributes;return this.positionBuffer.bind(),v.position.pointer(),this.weightBuffer.bind(),v.weight.pointer(s.UNSIGNED_BYTE,!1),this.idBuffer.bind(),v.pickId.pointer(s.UNSIGNED_BYTE,!1),s.drawArrays(s.TRIANGLES,0,o),r+this.shape[0]*this.shape[1]}}}(),f.pick=function(t,e,r){var n=this.pickOffset,i=this.shape[0]*this.shape[1];if(r=n+i)return null;var a=r-n,o=this.xData,s=this.yData;return{object:this,pointId:a,dataCoord:[o[a%this.shape[0]],s[a/this.shape[0]|0]]}},f.update=function(t){var e=(t=t||{}).shape||[0,0],r=t.x||i(e[0]),o=t.y||i(e[1]),s=t.z||new Float32Array(e[0]*e[1]),l=!1!==t.zsmooth;this.xData=r,this.yData=o;var u,c,f,p,d=t.colorLevels||[0],v=t.colorValues||[0,0,0,1],g=d.length,y=this.bounds;l?(u=y[0]=r[0],c=y[1]=o[0],f=y[2]=r[r.length-1],p=y[3]=o[o.length-1]):(u=y[0]=r[0]+(r[1]-r[0])/2,c=y[1]=o[0]+(o[1]-o[0])/2,f=y[2]=r[r.length-1]+(r[r.length-1]-r[r.length-2])/2,p=y[3]=o[o.length-1]+(o[o.length-1]-o[o.length-2])/2);var m=1/(f-u),x=1/(p-c),b=e[0],_=e[1];this.shape=[b,_];var w=(l?(b-1)*(_-1):b*_)*(h.length>>>1);this.numVertices=w;for(var T=a.mallocUint8(4*w),A=a.mallocFloat32(2*w),k=a.mallocUint8(2*w),M=a.mallocUint32(w),S=0,E=l?b-1:b,L=l?_-1:_,C=0;C max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform sampler2D dashTexture;\nuniform float dashScale;\nuniform float opacity;\n\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\nvarying vec4 fragColor;\n\nvoid main() {\n if (\n outOfRange(clipBounds[0], clipBounds[1], worldPosition) ||\n fragColor.a * opacity == 0.\n ) discard;\n\n float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r;\n if(dashWeight < 0.5) {\n discard;\n }\n gl_FragColor = fragColor * opacity;\n}\n"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\n#define FLOAT_MAX 1.70141184e38\n#define FLOAT_MIN 1.17549435e-38\n\n// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl\nvec4 packFloat(float v) {\n float av = abs(v);\n\n //Handle special cases\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\n }\n\n vec4 c = vec4(0,0,0,0);\n\n //Compute exponent and mantissa\n float e = floor(log2(av));\n float m = av * pow(2.0, -e) - 1.0;\n\n //Unpack mantissa\n c[1] = floor(128.0 * m);\n m -= c[1] / 128.0;\n c[2] = floor(32768.0 * m);\n m -= c[2] / 32768.0;\n c[3] = floor(8388608.0 * m);\n\n //Unpack exponent\n float ebias = e + 127.0;\n c[0] = floor(ebias / 2.0);\n ebias -= c[0] * 2.0;\n c[1] += floor(ebias) * 128.0;\n\n //Unpack sign bit\n c[0] += 128.0 * step(0.0, -v);\n\n //Scale back to range\n return c / 255.0;\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform float pickId;\nuniform vec3 clipBounds[2];\n\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\nvarying vec4 fragColor;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard;\n\n gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz);\n}"]),l=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];e.createShader=function(t){return i(t,a,o,null,l)},e.createPickShader=function(t){return i(t,a,s,null,l)}},6086:function(t,e,r){"use strict";t.exports=function(t){var e=t.gl||t.scene&&t.scene.gl,r=f(e);r.attributes.position.location=0,r.attributes.nextPosition.location=1,r.attributes.arcLength.location=2,r.attributes.lineWidth.location=3,r.attributes.color.location=4;var o=h(e);o.attributes.position.location=0,o.attributes.nextPosition.location=1,o.attributes.arcLength.location=2,o.attributes.lineWidth.location=3,o.attributes.color.location=4;for(var s=n(e),l=i(e,[{buffer:s,size:3,offset:0,stride:48},{buffer:s,size:3,offset:12,stride:48},{buffer:s,size:1,offset:24,stride:48},{buffer:s,size:1,offset:28,stride:48},{buffer:s,size:4,offset:32,stride:48}]),c=u(new Array(1024),[256,1,4]),p=0;p<1024;++p)c.data[p]=255;var d=a(e,c);d.wrap=e.REPEAT;var v=new y(e,r,o,s,l,d);return v.update(t),v};var n=r(5827),i=r(2944),a=r(8931),o=new Uint8Array(4),s=new Float32Array(o.buffer),l=r(5070),u=r(5050),c=r(248),f=c.createShader,h=c.createPickShader,p=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function d(t,e){for(var r=0,n=0;n<3;++n){var i=t[n]-e[n];r+=i*i}return Math.sqrt(r)}function v(t){for(var e=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],r=0;r<3;++r)e[0][r]=Math.max(t[0][r],e[0][r]),e[1][r]=Math.min(t[1][r],e[1][r]);return e}function g(t,e,r,n){this.arcLength=t,this.position=e,this.index=r,this.dataCoordinate=n}function y(t,e,r,n,i,a){this.gl=t,this.shader=e,this.pickShader=r,this.buffer=n,this.vao=i,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=a,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var m=y.prototype;m.isTransparent=function(){return this.hasAlpha},m.isOpaque=function(){return!this.hasAlpha},m.pickSlots=1,m.setPickBase=function(t){this.pickId=t},m.drawTransparent=m.draw=function(t){if(this.vertexCount){var e=this.gl,r=this.shader,n=this.vao;r.bind(),r.uniforms={model:t.model||p,view:t.view||p,projection:t.projection||p,clipBounds:v(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()}},m.drawPick=function(t){if(this.vertexCount){var e=this.gl,r=this.pickShader,n=this.vao;r.bind(),r.uniforms={model:t.model||p,view:t.view||p,projection:t.projection||p,pickId:this.pickId,clipBounds:v(this.clipBounds),screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()}},m.update=function(t){var e,r;this.dirty=!0;var n=!!t.connectGaps;"dashScale"in t&&(this.dashScale=t.dashScale),this.hasAlpha=!1,"opacity"in t&&(this.opacity=+t.opacity,this.opacity<1&&(this.hasAlpha=!0));var i=[],a=[],o=[],s=0,c=0,f=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],h=t.position||t.positions;if(h){var p=t.color||t.colors||[0,0,0,1],v=t.lineWidth||1,g=!1;t:for(e=1;e0){for(var w=0;w<24;++w)i.push(i[i.length-12]);c+=2,g=!0}continue t}f[0][r]=Math.min(f[0][r],b[r],_[r]),f[1][r]=Math.max(f[1][r],b[r],_[r])}Array.isArray(p[0])?(y=p.length>e-1?p[e-1]:p.length>0?p[p.length-1]:[0,0,0,1],m=p.length>e?p[e]:p.length>0?p[p.length-1]:[0,0,0,1]):y=m=p,3===y.length&&(y=[y[0],y[1],y[2],1]),3===m.length&&(m=[m[0],m[1],m[2],1]),!this.hasAlpha&&y[3]<1&&(this.hasAlpha=!0),x=Array.isArray(v)?v.length>e-1?v[e-1]:v.length>0?v[v.length-1]:[0,0,0,1]:v;var T=s;if(s+=d(b,_),g){for(r=0;r<2;++r)i.push(b[0],b[1],b[2],_[0],_[1],_[2],T,x,y[0],y[1],y[2],y[3]);c+=2,g=!1}i.push(b[0],b[1],b[2],_[0],_[1],_[2],T,x,y[0],y[1],y[2],y[3],b[0],b[1],b[2],_[0],_[1],_[2],T,-x,y[0],y[1],y[2],y[3],_[0],_[1],_[2],b[0],b[1],b[2],s,-x,m[0],m[1],m[2],m[3],_[0],_[1],_[2],b[0],b[1],b[2],s,x,m[0],m[1],m[2],m[3]),c+=4}}if(this.buffer.update(i),a.push(s),o.push(h[h.length-1].slice()),this.bounds=f,this.vertexCount=c,this.points=o,this.arcLength=a,"dashes"in t){var A=t.dashes.slice();for(A.unshift(0),e=1;e1.0001)return null;y+=g[f]}return Math.abs(y-1)>.001?null:[h,s(t,g),g]}},2056:function(t,e,r){var n=r(6832),i=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position, normal;\nattribute vec4 color;\nattribute vec2 uv;\n\nuniform mat4 model\n , view\n , projection\n , inverseModel;\nuniform vec3 eyePosition\n , lightPosition;\n\nvarying vec3 f_normal\n , f_lightDirection\n , f_eyeDirection\n , f_data;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvec4 project(vec3 p) {\n return projection * view * model * vec4(p, 1.0);\n}\n\nvoid main() {\n gl_Position = project(position);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * vec4(position , 1.0);\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n f_color = color;\n f_data = position;\n f_uv = uv;\n}\n"]),a=n(["#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\n//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness\n , fresnel\n , kambient\n , kdiffuse\n , kspecular;\nuniform sampler2D texture;\n\nvarying vec3 f_normal\n , f_lightDirection\n , f_eyeDirection\n , f_data;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (f_color.a == 0.0 ||\n outOfRange(clipBounds[0], clipBounds[1], f_data)\n ) discard;\n\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d\n\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * f_color.a;\n}\n"]),o=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 uv;\n\nuniform mat4 model, view, projection;\n\nvarying vec4 f_color;\nvarying vec3 f_data;\nvarying vec2 f_uv;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n f_color = color;\n f_data = position;\n f_uv = uv;\n}"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform sampler2D texture;\nuniform float opacity;\n\nvarying vec4 f_color;\nvarying vec3 f_data;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard;\n\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\n}"]),l=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 uv;\nattribute float pointSize;\n\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0);\n } else {\n gl_Position = projection * view * model * vec4(position, 1.0);\n }\n gl_PointSize = pointSize;\n f_color = color;\n f_uv = uv;\n}"]),u=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D texture;\nuniform float opacity;\n\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5);\n if(dot(pointR, pointR) > 0.25) {\n discard;\n }\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\n}"]),c=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n f_id = id;\n f_position = position;\n}"]),f=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}"]),h=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute float pointSize;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\n } else {\n gl_Position = projection * view * model * vec4(position, 1.0);\n gl_PointSize = pointSize;\n }\n f_id = id;\n f_position = position;\n}"]),p=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\n\nuniform mat4 model, view, projection;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n}"]),d=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform vec3 contourColor;\n\nvoid main() {\n gl_FragColor = vec4(contourColor, 1.0);\n}\n"]);e.meshShader={vertex:i,fragment:a,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},e.wireShader={vertex:o,fragment:s,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},e.pointShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},e.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},e.pointPickShader={vertex:h,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},e.contourShader={vertex:p,fragment:d,attributes:[{name:"position",type:"vec3"}]}},8116:function(t,e,r){"use strict";var n=r(5158),i=r(5827),a=r(2944),o=r(8931),s=r(115),l=r(104),u=r(7437),c=r(5050),f=r(9156),h=r(7212),p=r(5306),d=r(2056),v=r(4340),g=d.meshShader,y=d.wireShader,m=d.pointShader,x=d.pickShader,b=d.pointPickShader,_=d.contourShader,w=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function T(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x,b,_,T,A,k,M,S){this.gl=t,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=e,this.dirty=!0,this.triShader=r,this.lineShader=n,this.pointShader=i,this.pickShader=a,this.pointPickShader=o,this.contourShader=s,this.trianglePositions=l,this.triangleColors=c,this.triangleNormals=h,this.triangleUVs=f,this.triangleIds=u,this.triangleVAO=p,this.triangleCount=0,this.lineWidth=1,this.edgePositions=d,this.edgeColors=g,this.edgeUVs=y,this.edgeIds=v,this.edgeVAO=m,this.edgeCount=0,this.pointPositions=x,this.pointColors=_,this.pointUVs=T,this.pointSizes=A,this.pointIds=b,this.pointVAO=k,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=M,this.contourVAO=S,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=w,this._view=w,this._projection=w,this._resolution=[1,1]}var A=T.prototype;function k(t,e){if(!e)return 1;if(!e.length)return 1;for(var r=0;rt&&r>0){var n=(e[r][0]-t)/(e[r][0]-e[r-1][0]);return e[r][1]*(1-n)+n*e[r-1][1]}}return 1}function M(t){var e=n(t,m.vertex,m.fragment);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.pointSize.location=4,e}function S(t){var e=n(t,x.vertex,x.fragment);return e.attributes.position.location=0,e.attributes.id.location=1,e}function E(t){var e=n(t,b.vertex,b.fragment);return e.attributes.position.location=0,e.attributes.id.location=1,e.attributes.pointSize.location=4,e}function L(t){var e=n(t,_.vertex,_.fragment);return e.attributes.position.location=0,e}A.isOpaque=function(){return!this.hasAlpha},A.isTransparent=function(){return this.hasAlpha},A.pickSlots=1,A.setPickBase=function(t){this.pickId=t},A.highlight=function(t){if(t&&this.contourEnable){for(var e=h(this.cells,this.intensity,t.intensity),r=e.cells,n=e.vertexIds,i=e.vertexWeights,a=r.length,o=p.mallocFloat32(6*a),s=0,l=0;l0&&((f=this.triShader).bind(),f.uniforms=s,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&this.lineWidth>0&&((f=this.lineShader).bind(),f.uniforms=s,this.edgeVAO.bind(),e.lineWidth(this.lineWidth*this.pixelRatio),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((f=this.pointShader).bind(),f.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind()),this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((f=this.contourShader).bind(),f.uniforms=s,this.contourVAO.bind(),e.drawArrays(e.LINES,0,this.contourCount),this.contourVAO.unbind())},A.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||w,n=t.view||w,i=t.projection||w,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s,l={model:r,view:n,projection:i,clipBounds:a,pickId:this.pickId/255};(s=this.pickShader).bind(),s.uniforms=l,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),e.lineWidth(this.lineWidth*this.pixelRatio),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((s=this.pointPickShader).bind(),s.uniforms=l,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind())},A.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;for(var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions,i=new Array(r.length),a=0;ai[A]&&(r.uniforms.dataAxis=u,r.uniforms.screenOffset=c,r.uniforms.color=g[t],r.uniforms.angle=y[t],a.drawArrays(a.TRIANGLES,i[A],i[k]-i[A]))),m[t]&&T&&(c[1^t]-=M*p*x[t],r.uniforms.dataAxis=f,r.uniforms.screenOffset=c,r.uniforms.color=b[t],r.uniforms.angle=_[t],a.drawArrays(a.TRIANGLES,w,T)),c[1^t]=M*s[2+(1^t)]-1,d[t+2]&&(c[1^t]+=M*p*v[t+2],Ai[A]&&(r.uniforms.dataAxis=u,r.uniforms.screenOffset=c,r.uniforms.color=g[t+2],r.uniforms.angle=y[t+2],a.drawArrays(a.TRIANGLES,i[A],i[k]-i[A]))),m[t+2]&&T&&(c[1^t]+=M*p*x[t+2],r.uniforms.dataAxis=f,r.uniforms.screenOffset=c,r.uniforms.color=b[t+2],r.uniforms.angle=_[t+2],a.drawArrays(a.TRIANGLES,w,T))}),v.drawTitle=function(){var t=[0,0],e=[0,0];return function(){var r=this.plot,n=this.shader,i=r.gl,a=r.screenBox,o=r.titleCenter,s=r.titleAngle,l=r.titleColor,u=r.pixelRatio;if(this.titleCount){for(var c=0;c<2;++c)e[c]=2*(o[c]*u-a[c])/(a[2+c]-a[c])-1;n.bind(),n.uniforms.dataAxis=t,n.uniforms.screenOffset=e,n.uniforms.angle=s,n.uniforms.color=l,i.drawArrays(i.TRIANGLES,this.titleOffset,this.titleCount)}}}(),v.bind=(h=[0,0],p=[0,0],d=[0,0],function(){var t=this.plot,e=this.shader,r=t._tickBounds,n=t.dataBox,i=t.screenBox,a=t.viewBox;e.bind();for(var o=0;o<2;++o){var s=r[o],l=r[o+2]-s,u=.5*(n[o+2]+n[o]),c=n[o+2]-n[o],f=a[o],v=a[o+2]-f,g=i[o],y=i[o+2]-g;p[o]=2*l/c*v/y,h[o]=2*(s-u)/c*v/y}d[1]=2*t.pixelRatio/(i[3]-i[1]),d[0]=d[1]*(i[3]-i[1])/(i[2]-i[0]),e.uniforms.dataScale=p,e.uniforms.dataShift=h,e.uniforms.textScale=d,this.vbo.bind(),e.attributes.textCoordinate.pointer()}),v.update=function(t){var e,r,n,i,o,s=[],l=t.ticks,u=t.bounds;for(o=0;o<2;++o){var c=[Math.floor(s.length/3)],f=[-1/0],h=l[o];for(e=0;e=0){var v=e[d]-n[d]*(e[d+2]-e[d])/(n[d+2]-n[d]);0===d?o.drawLine(v,e[1],v,e[3],p[d],h[d]):o.drawLine(e[0],v,e[2],v,p[d],h[d])}}for(d=0;d=0;--t)this.objects[t].dispose();for(this.objects.length=0,t=this.overlays.length-1;t>=0;--t)this.overlays[t].dispose();this.overlays.length=0,this.gl=null},u.addObject=function(t){this.objects.indexOf(t)<0&&(this.objects.push(t),this.setDirty())},u.removeObject=function(t){for(var e=this.objects,r=0;rMath.abs(e))u.rotate(a,0,0,-t*r*Math.PI*d.rotateSpeed/window.innerWidth);else if(!d._ortho){var o=-d.zoomSpeed*i*e/window.innerHeight*(a-u.lastT())/20;u.pan(a,0,0,f*(Math.exp(o)-1))}}},!0)},d.enableMouseListeners(),d};var n=r(8161),i=r(1152),a=r(6145),o=r(6475),s=r(2565),l=r(5233)},8245:function(t,e,r){var n=r(6832),i=r(5158),a=n(["precision mediump float;\n#define GLSLIFY 1\nattribute vec2 position;\nvarying vec2 uv;\nvoid main() {\n uv = position;\n gl_Position = vec4(position, 0, 1);\n}"]),o=n(["precision mediump float;\n#define GLSLIFY 1\n\nuniform sampler2D accumBuffer;\nvarying vec2 uv;\n\nvoid main() {\n vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0));\n gl_FragColor = min(vec4(1,1,1,1), accum);\n}"]);t.exports=function(t){return i(t,a,o,null,[{name:"position",type:"vec2"}])}},1059:function(t,e,r){"use strict";var n=r(4296),i=r(7453),a=r(2771),o=r(6496),s=r(2611),l=r(4234),u=r(8126),c=r(6145),f=r(1120),h=r(5268),p=r(8245),d=r(2321)({tablet:!0,featureDetect:!0});function v(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function g(t){var e=Math.round(Math.log(Math.abs(t))/Math.log(10));if(e<0){var r=Math.round(Math.pow(10,-e));return Math.ceil(t*r)/r}return e>0?(r=Math.round(Math.pow(10,e)),Math.ceil(t/r)*r):Math.ceil(t)}function y(t){return"boolean"!=typeof t||t}t.exports={createScene:function(t){(t=t||{}).camera=t.camera||{};var e=t.canvas;e||(e=document.createElement("canvas"),t.container?t.container.appendChild(e):document.body.appendChild(e));var r=t.gl;if(r||(t.glOptions&&(d=!!t.glOptions.preserveDrawingBuffer),r=function(t,e){var r=null;try{(r=t.getContext("webgl",e))||(r=t.getContext("experimental-webgl",e))}catch(t){return null}return r}(e,t.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:d})),!r)throw new Error("webgl not supported");var m=t.bounds||[[-10,-10,-10],[10,10,10]],x=new v,b=l(r,r.drawingBufferWidth,r.drawingBufferHeight,{preferFloat:!d}),_=p(r),w=t.cameraObject&&!0===t.cameraObject._ortho||t.camera.projection&&"orthographic"===t.camera.projection.type||!1,T={eye:t.camera.eye||[2,0,0],center:t.camera.center||[0,0,0],up:t.camera.up||[0,1,0],zoomMin:t.camera.zoomMax||.1,zoomMax:t.camera.zoomMin||100,mode:t.camera.mode||"turntable",_ortho:w},A=t.axes||{},k=i(r,A);k.enable=!A.disable;var M=t.spikes||{},S=o(r,M),E=[],L=[],C=[],P=[],O=!0,I=!0,D={view:null,projection:new Array(16),model:new Array(16),_ortho:!1},z=(I=!0,[r.drawingBufferWidth,r.drawingBufferHeight]),R=t.cameraObject||n(e,T),F={gl:r,contextLost:!1,pixelRatio:t.pixelRatio||1,canvas:e,selection:x,camera:R,axes:k,axesPixels:null,spikes:S,bounds:m,objects:E,shape:z,aspect:t.aspectRatio||[1,1,1],pickRadius:t.pickRadius||10,zNear:t.zNear||.01,zFar:t.zFar||1e3,fovy:t.fovy||Math.PI/4,clearColor:t.clearColor||[0,0,0,0],autoResize:y(t.autoResize),autoBounds:y(t.autoBounds),autoScale:!!t.autoScale,autoCenter:y(t.autoCenter),clipToBounds:y(t.clipToBounds),snapToData:!!t.snapToData,onselect:t.onselect||null,onrender:t.onrender||null,onclick:t.onclick||null,cameraParams:D,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(t){this.aspect[0]=t.x,this.aspect[1]=t.y,this.aspect[2]=t.z,I=!0},setBounds:function(t,e){this.bounds[0][t]=e.min,this.bounds[1][t]=e.max},setClearColor:function(t){this.clearColor=t},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},B=[r.drawingBufferWidth/F.pixelRatio|0,r.drawingBufferHeight/F.pixelRatio|0];function N(){if(!F._stopped&&F.autoResize){var t=e.parentNode,r=1,n=1;t&&t!==document.body?(r=t.clientWidth,n=t.clientHeight):(r=window.innerWidth,n=window.innerHeight);var i=0|Math.ceil(r*F.pixelRatio),a=0|Math.ceil(n*F.pixelRatio);if(i!==e.width||a!==e.height){e.width=i,e.height=a;var o=e.style;o.position=o.position||"absolute",o.left="0px",o.top="0px",o.width=r+"px",o.height=n+"px",O=!0}}}function j(){for(var t=E.length,e=P.length,n=0;n0&&0===C[e-1];)C.pop(),P.pop().dispose()}function U(){if(F.contextLost)return!0;r.isContextLost()&&(F.contextLost=!0,F.mouseListener.enabled=!1,F.selection.object=null,F.oncontextloss&&F.oncontextloss())}F.autoResize&&N(),window.addEventListener("resize",N),F.update=function(t){F._stopped||(t=t||{},O=!0,I=!0)},F.add=function(t){F._stopped||(t.axes=k,E.push(t),L.push(-1),O=!0,I=!0,j())},F.remove=function(t){if(!F._stopped){var e=E.indexOf(t);e<0||(E.splice(e,1),L.pop(),O=!0,I=!0,j())}},F.dispose=function(){if(!F._stopped&&(F._stopped=!0,window.removeEventListener("resize",N),e.removeEventListener("webglcontextlost",U),F.mouseListener.enabled=!1,!F.contextLost)){k.dispose(),S.dispose();for(var t=0;tx.distance)continue;for(var u=0;u 1.0) {\n discard;\n }\n baseColor = mix(borderColor, color, step(radius, centerFraction));\n gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\n }\n}\n"]),e.pickVertex=n(["precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\nattribute vec4 pickId;\n\nuniform mat3 matrix;\nuniform float pointSize;\nuniform vec4 pickOffset;\n\nvarying vec4 fragId;\n\nvoid main() {\n vec3 hgPosition = matrix * vec3(position, 1);\n gl_Position = vec4(hgPosition.xy, 0, hgPosition.z);\n gl_PointSize = pointSize;\n\n vec4 id = pickId + pickOffset;\n id.y += floor(id.x / 256.0);\n id.x -= floor(id.x / 256.0) * 256.0;\n\n id.z += floor(id.y / 256.0);\n id.y -= floor(id.y / 256.0) * 256.0;\n\n id.w += floor(id.z / 256.0);\n id.z -= floor(id.z / 256.0) * 256.0;\n\n fragId = id;\n}\n"]),e.pickFragment=n(["precision mediump float;\n#define GLSLIFY 1\n\nvarying vec4 fragId;\n\nvoid main() {\n float radius = length(2.0 * gl_PointCoord.xy - 1.0);\n if(radius > 1.0) {\n discard;\n }\n gl_FragColor = fragId / 255.0;\n}\n"])},8271:function(t,e,r){"use strict";var n=r(5158),i=r(5827),a=r(5306),o=r(8023);function s(t,e,r,n,i){this.plot=t,this.offsetBuffer=e,this.pickBuffer=r,this.shader=n,this.pickShader=i,this.sizeMin=.5,this.sizeMinCap=2,this.sizeMax=20,this.areaRatio=1,this.pointCount=0,this.color=[1,0,0,1],this.borderColor=[0,0,0,1],this.blend=!1,this.pickOffset=0,this.points=null}t.exports=function(t,e){var r=t.gl,a=new s(t,i(r),i(r),n(r,o.pointVertex,o.pointFragment),n(r,o.pickVertex,o.pickFragment));return a.update(e),t.addObject(a),a};var l,u,c=s.prototype;c.dispose=function(){this.shader.dispose(),this.pickShader.dispose(),this.offsetBuffer.dispose(),this.pickBuffer.dispose(),this.plot.removeObject(this)},c.update=function(t){var e;function r(e,r){return e in t?t[e]:r}t=t||{},this.sizeMin=r("sizeMin",.5),this.sizeMax=r("sizeMax",20),this.color=r("color",[1,0,0,1]).slice(),this.areaRatio=r("areaRatio",1),this.borderColor=r("borderColor",[0,0,0,1]).slice(),this.blend=r("blend",!1);var n=t.positions.length>>>1,i=t.positions instanceof Float32Array,o=t.idToIndex instanceof Int32Array&&t.idToIndex.length>=n,s=t.positions,l=i?s:a.mallocFloat32(s.length),u=o?t.idToIndex:a.mallocInt32(n);if(i||l.set(s),!o)for(l.set(s),e=0;e>>1;for(r=0;r=e[0]&&a<=e[2]&&o>=e[1]&&o<=e[3]&&n++}return n}(this.points,i),c=this.plot.pickPixelRatio*Math.max(Math.min(this.sizeMinCap,this.sizeMin),Math.min(this.sizeMax,this.sizeMax/Math.pow(s,.33333)));l[0]=2/a,l[4]=2/o,l[6]=-2*i[0]/a-1,l[7]=-2*i[1]/o-1,this.offsetBuffer.bind(),r.bind(),r.attributes.position.pointer(),r.uniforms.matrix=l,r.uniforms.color=this.color,r.uniforms.borderColor=this.borderColor,r.uniforms.pointCloud=c<5,r.uniforms.pointSize=c,r.uniforms.centerFraction=Math.min(1,Math.max(0,Math.sqrt(1-this.areaRatio))),e&&(u[0]=255&t,u[1]=t>>8&255,u[2]=t>>16&255,u[3]=t>>24&255,this.pickBuffer.bind(),r.attributes.pickId.pointer(n.UNSIGNED_BYTE),r.uniforms.pickOffset=u,this.pickOffset=t);var f=n.getParameter(n.BLEND),h=n.getParameter(n.DITHER);return f&&!this.blend&&n.disable(n.BLEND),h&&n.disable(n.DITHER),n.drawArrays(n.POINTS,0,this.pointCount),f&&!this.blend&&n.enable(n.BLEND),h&&n.enable(n.DITHER),t+this.pointCount}),c.draw=c.unifiedDraw,c.drawPick=c.unifiedDraw,c.pick=function(t,e,r){var n=this.pickOffset,i=this.pointCount;if(r=n+i)return null;var a=r-n,o=this.points;return{object:this,pointId:a,dataCoord:[o[2*a],o[2*a+1]]}}},6093:function(t){t.exports=function(t,e,r,n){var i,a,o,s,l,u=e[0],c=e[1],f=e[2],h=e[3],p=r[0],d=r[1],v=r[2],g=r[3];return(a=u*p+c*d+f*v+h*g)<0&&(a=-a,p=-p,d=-d,v=-v,g=-g),1-a>1e-6?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,l=Math.sin(n*i)/o):(s=1-n,l=n),t[0]=s*u+l*p,t[1]=s*c+l*d,t[2]=s*f+l*v,t[3]=s*h+l*g,t}},8240:function(t){"use strict";t.exports=function(t){return t||0===t?t.toString():""}},4123:function(t,e,r){"use strict";var n=r(875);t.exports=function(t,e,r){var a=i[e];if(a||(a=i[e]={}),t in a)return a[t];var o={textAlign:"center",textBaseline:"middle",lineHeight:1,font:e,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},triangles:!0},s=n(t,o);o.triangles=!1;var l,u,c=n(t,o);if(r&&1!==r){for(l=0;l max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform vec4 highlightId;\nuniform float highlightScale;\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float scale = 1.0;\n if(distance(highlightId, id) < 0.0001) {\n scale = highlightScale;\n }\n\n vec4 worldPosition = model * vec4(position, 1);\n vec4 viewPosition = view * worldPosition;\n viewPosition = viewPosition / viewPosition.w;\n vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0));\n\n gl_Position = clipPosition;\n interpColor = color;\n pickId = id;\n dataCoordinate = position;\n }\n}"]),o=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform vec2 screenSize;\nuniform vec3 clipBounds[2];\nuniform float highlightScale, pixelRatio;\nuniform vec4 highlightId;\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float scale = pixelRatio;\n if(distance(highlightId.bgr, id.bgr) < 0.001) {\n scale *= highlightScale;\n }\n\n vec4 worldPosition = model * vec4(position, 1.0);\n vec4 viewPosition = view * worldPosition;\n vec4 clipPosition = projection * viewPosition;\n clipPosition /= clipPosition.w;\n\n gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0);\n interpColor = color;\n pickId = id;\n dataCoordinate = position;\n }\n}"]),s=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform float highlightScale;\nuniform vec4 highlightId;\nuniform vec3 axes[2];\nuniform mat4 model, view, projection;\nuniform vec2 screenSize;\nuniform vec3 clipBounds[2];\nuniform float scale, pixelRatio;\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float lscale = pixelRatio * scale;\n if(distance(highlightId, id) < 0.0001) {\n lscale *= highlightScale;\n }\n\n vec4 clipCenter = projection * view * model * vec4(position, 1);\n vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y;\n vec4 clipPosition = projection * view * model * vec4(dataPosition, 1);\n\n gl_Position = clipPosition;\n interpColor = color;\n pickId = id;\n dataCoordinate = dataPosition;\n }\n}\n"]),l=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 fragClipBounds[2];\nuniform float opacity;\n\nvarying vec4 interpColor;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (\n outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) ||\n interpColor.a * opacity == 0.\n ) discard;\n gl_FragColor = interpColor * opacity;\n}\n"]),u=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 fragClipBounds[2];\nuniform float pickGroup;\n\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard;\n\n gl_FragColor = vec4(pickGroup, pickId.bgr);\n}"]),c=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],f={vertex:a,fragment:l,attributes:c},h={vertex:o,fragment:l,attributes:c},p={vertex:s,fragment:l,attributes:c},d={vertex:a,fragment:u,attributes:c},v={vertex:o,fragment:u,attributes:c},g={vertex:s,fragment:u,attributes:c};function y(t,e){var r=n(t,e),i=r.attributes;return i.position.location=0,i.color.location=1,i.glyph.location=2,i.id.location=3,r}e.createPerspective=function(t){return y(t,f)},e.createOrtho=function(t){return y(t,h)},e.createProject=function(t){return y(t,p)},e.createPickPerspective=function(t){return y(t,d)},e.createPickOrtho=function(t){return y(t,v)},e.createPickProject=function(t){return y(t,g)}},2182:function(t,e,r){"use strict";var n=r(3596),i=r(5827),a=r(2944),o=r(5306),s=r(104),l=r(9282),u=r(4123),c=r(8240),f=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function h(t,e){var r=t[0],n=t[1],i=t[2],a=t[3];return t[0]=e[0]*r+e[4]*n+e[8]*i+e[12]*a,t[1]=e[1]*r+e[5]*n+e[9]*i+e[13]*a,t[2]=e[2]*r+e[6]*n+e[10]*i+e[14]*a,t[3]=e[3]*r+e[7]*n+e[11]*i+e[15]*a,t}function p(t,e,r,n){return h(n,n),h(n,n),h(n,n)}function d(t,e){this.index=t,this.dataCoordinate=this.position=e}function v(t){return!0===t||t>1?1:t}function g(t,e,r,n,i,a,o,s,l,u,c,f){this.gl=t,this.pixelRatio=1,this.shader=e,this.orthoShader=r,this.projectShader=n,this.pointBuffer=i,this.colorBuffer=a,this.glyphBuffer=o,this.idBuffer=s,this.vao=l,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[2/3,2/3,2/3],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=u,this.pickOrthoShader=c,this.pickProjectShader=f,this.points=[],this._selectResult=new d(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}t.exports=function(t){var e=t.gl,r=l.createPerspective(e),n=l.createOrtho(e),o=l.createProject(e),s=l.createPickPerspective(e),u=l.createPickOrtho(e),c=l.createPickProject(e),f=i(e),h=i(e),p=i(e),d=i(e),v=new g(e,r,n,o,f,h,p,d,a(e,[{buffer:f,size:3,type:e.FLOAT},{buffer:h,size:4,type:e.FLOAT},{buffer:p,size:2,type:e.FLOAT},{buffer:d,size:4,type:e.UNSIGNED_BYTE,normalized:!0}]),s,u,c);return v.update(t),v};var y=g.prototype;y.pickSlots=1,y.setPickBase=function(t){this.pickId=t},y.isTransparent=function(){if(this.hasAlpha)return!0;for(var t=0;t<3;++t)if(this.axesProject[t]&&this.projectHasAlpha)return!0;return!1},y.isOpaque=function(){if(!this.hasAlpha)return!0;for(var t=0;t<3;++t)if(this.axesProject[t]&&!this.projectHasAlpha)return!0;return!1};var m=[0,0],x=[0,0,0],b=[0,0,0],_=[0,0,0,1],w=[0,0,0,1],T=f.slice(),A=[0,0,0],k=[[0,0,0],[0,0,0]];function M(t){return t[0]=t[1]=t[2]=0,t}function S(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=1,t}function E(t,e,r,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[r]=n,t}var L=[[-1e8,-1e8,-1e8],[1e8,1e8,1e8]];function C(t,e,r,n,i,a,o){var l=r.gl;if((a===r.projectHasAlpha||o)&&function(t,e,r,n){var i,a=e.axesProject,o=e.gl,l=t.uniforms,u=r.model||f,c=r.view||f,h=r.projection||f,d=e.axesBounds,v=function(t){for(var e=k,r=0;r<2;++r)for(var n=0;n<3;++n)e[r][n]=Math.max(Math.min(t[r][n],1e8),-1e8);return e}(e.clipBounds);i=e.axes&&e.axes.lastCubeProps?e.axes.lastCubeProps.axis:[1,1,1],m[0]=2/o.drawingBufferWidth,m[1]=2/o.drawingBufferHeight,t.bind(),l.view=c,l.projection=h,l.screenSize=m,l.highlightId=e.highlightId,l.highlightScale=e.highlightScale,l.clipBounds=v,l.pickGroup=e.pickId/255,l.pixelRatio=n;for(var g=0;g<3;++g)if(a[g]){l.scale=e.projectScale[g],l.opacity=e.projectOpacity[g];for(var y=T,L=0;L<16;++L)y[L]=0;for(L=0;L<4;++L)y[5*L]=1;y[5*g]=0,i[g]<0?y[12+g]=d[0][g]:y[12+g]=d[1][g],s(y,u,y),l.model=y;var C=(g+1)%3,P=(g+2)%3,O=M(x),I=M(b);O[C]=1,I[P]=1;var D=p(0,0,0,S(_,O)),z=p(0,0,0,S(w,I));if(Math.abs(D[1])>Math.abs(z[1])){var R=D;D=z,z=R,R=O,O=I,I=R;var F=C;C=P,P=F}D[0]<0&&(O[C]=-1),z[1]>0&&(I[P]=-1);var B=0,N=0;for(L=0;L<4;++L)B+=Math.pow(u[4*C+L],2),N+=Math.pow(u[4*P+L],2);O[C]/=Math.sqrt(B),I[P]/=Math.sqrt(N),l.axes[0]=O,l.axes[1]=I,l.fragClipBounds[0]=E(A,v[0],g,-1e8),l.fragClipBounds[1]=E(A,v[1],g,1e8),e.vao.bind(),e.vao.draw(o.TRIANGLES,e.vertexCount),e.lineWidth>0&&(o.lineWidth(e.lineWidth*n),e.vao.draw(o.LINES,e.lineVertexCount,e.vertexCount)),e.vao.unbind()}}(e,r,n,i),a===r.hasAlpha||o){t.bind();var u=t.uniforms;u.model=n.model||f,u.view=n.view||f,u.projection=n.projection||f,m[0]=2/l.drawingBufferWidth,m[1]=2/l.drawingBufferHeight,u.screenSize=m,u.highlightId=r.highlightId,u.highlightScale=r.highlightScale,u.fragClipBounds=L,u.clipBounds=r.axes.bounds,u.opacity=r.opacity,u.pickGroup=r.pickId/255,u.pixelRatio=i,r.vao.bind(),r.vao.draw(l.TRIANGLES,r.vertexCount),r.lineWidth>0&&(l.lineWidth(r.lineWidth*i),r.vao.draw(l.LINES,r.lineVertexCount,r.vertexCount)),r.vao.unbind()}}function P(t,e,r,i){var a;a=Array.isArray(t)?e=this.pointCount||e<0)return null;var r=this.points[e],n=this._selectResult;n.index=e;for(var i=0;i<3;++i)n.position[i]=n.dataCoordinate[i]=r[i];return n},y.highlight=function(t){if(t){var e=t.index,r=255&e,n=e>>8&255,i=e>>16&255;this.highlightId=[r/255,n/255,i/255,0]}else this.highlightId=[1,1,1,1]},y.update=function(t){if("perspective"in(t=t||{})&&(this.useOrtho=!t.perspective),"orthographic"in t&&(this.useOrtho=!!t.orthographic),"lineWidth"in t&&(this.lineWidth=t.lineWidth),"project"in t)if(Array.isArray(t.project))this.axesProject=t.project;else{var e=!!t.project;this.axesProject=[e,e,e]}if("projectScale"in t)if(Array.isArray(t.projectScale))this.projectScale=t.projectScale.slice();else{var r=+t.projectScale;this.projectScale=[r,r,r]}if(this.projectHasAlpha=!1,"projectOpacity"in t){Array.isArray(t.projectOpacity)?this.projectOpacity=t.projectOpacity.slice():(r=+t.projectOpacity,this.projectOpacity=[r,r,r]);for(var n=0;n<3;++n)this.projectOpacity[n]=v(this.projectOpacity[n]),this.projectOpacity[n]<1&&(this.projectHasAlpha=!0)}this.hasAlpha=!1,"opacity"in t&&(this.opacity=v(t.opacity),this.opacity<1&&(this.hasAlpha=!0)),this.dirty=!0;var i,a,s=t.position,l=t.font||"normal",u=t.alignment||[0,0];if(2===u.length)i=u[0],a=u[1];else for(i=[],a=[],n=0;n0){var I=0,D=x,z=[0,0,0,1],R=[0,0,0,1],F=Array.isArray(p)&&Array.isArray(p[0]),B=Array.isArray(y)&&Array.isArray(y[0]);t:for(n=0;n<_;++n){for(m+=1,w=s[n],T=0;T<3;++T){if(isNaN(w[T])||!isFinite(w[T]))continue t;f[T]=Math.max(f[T],w[T]),c[T]=Math.min(c[T],w[T])}A=(N=P(h,n,l,this.pixelRatio)).mesh,k=N.lines,M=N.bounds;var N,j=N.visible;if(j)if(Array.isArray(p)){if(3===(U=F?n0?1-M[0][0]:Y<0?1+M[1][0]:1,W*=W>0?1-M[0][1]:W<0?1+M[1][1]:1],X=A.cells||[],J=A.positions||[];for(T=0;T0){var y=r*c;o.drawBox(f-y,h-y,p+y,h+y,a),o.drawBox(f-y,d-y,p+y,d+y,a),o.drawBox(f-y,h-y,f+y,d+y,a),o.drawBox(p-y,h-y,p+y,d+y,a)}}}},s.update=function(t){t=t||{},this.innerFill=!!t.innerFill,this.outerFill=!!t.outerFill,this.innerColor=(t.innerColor||[0,0,0,.5]).slice(),this.outerColor=(t.outerColor||[0,0,0,.5]).slice(),this.borderColor=(t.borderColor||[0,0,0,1]).slice(),this.borderWidth=t.borderWidth||0,this.selectBox=(t.selectBox||this.selectBox).slice()},s.dispose=function(){this.boxBuffer.dispose(),this.boxShader.dispose(),this.plot.removeOverlay(this)}},2611:function(t,e,r){"use strict";t.exports=function(t,e){var r=e[0],a=e[1];return new l(t,n(t,r,a,{}),i.mallocUint8(r*a*4))};var n=r(4234),i=r(5306),a=r(5050),o=r(2288).nextPow2;function s(t,e,r,n,i){this.coord=[t,e],this.id=r,this.value=n,this.distance=i}function l(t,e,r){this.gl=t,this.fbo=e,this.buffer=r,this._readTimeout=null;var n=this;this._readCallback=function(){n.gl&&(e.bind(),t.readPixels(0,0,e.shape[0],e.shape[1],t.RGBA,t.UNSIGNED_BYTE,n.buffer),n._readTimeout=null)}}var u=l.prototype;Object.defineProperty(u,"shape",{get:function(){return this.gl?this.fbo.shape.slice():[0,0]},set:function(t){if(this.gl){this.fbo.shape=t;var e=this.fbo.shape[0],r=this.fbo.shape[1];if(r*e*4>this.buffer.length){i.free(this.buffer);for(var n=this.buffer=i.mallocUint8(o(r*e*4)),a=0;ar)for(t=r;te)for(t=e;t=0){for(var T=0|w.type.charAt(w.type.length-1),A=new Array(T),k=0;k=0;)M+=1;_[m]=M}var S=new Array(r.length);function E(){h.program=o.program(p,h._vref,h._fref,b,_);for(var t=0;t=0){if((d=h.charCodeAt(h.length-1)-48)<2||d>4)throw new n("","Invalid data type for attribute "+f+": "+h);s(t,e,p[0],i,d,a,f)}else{if(!(h.indexOf("mat")>=0))throw new n("","Unknown data type for attribute "+f+": "+h);var d;if((d=h.charCodeAt(h.length-1)-48)<2||d>4)throw new n("","Invalid data type for attribute "+f+": "+h);l(t,e,p,i,d,a,f)}}}return a};var n=r(9068);function i(t,e,r,n,i,a){this._gl=t,this._wrapper=e,this._index=r,this._locations=n,this._dimension=i,this._constFunc=a}var a=i.prototype;a.pointer=function(t,e,r,n){var i=this,a=i._gl,o=i._locations[i._index];a.vertexAttribPointer(o,i._dimension,t||a.FLOAT,!!e,r||0,n||0),a.enableVertexAttribArray(o)},a.set=function(t,e,r,n){return this._constFunc(this._locations[this._index],t,e,r,n)},Object.defineProperty(a,"location",{get:function(){return this._locations[this._index]},set:function(t){return t!==this._locations[this._index]&&(this._locations[this._index]=0|t,this._wrapper.program=null),0|t}});var o=[function(t,e,r){return void 0===r.length?t.vertexAttrib1f(e,r):t.vertexAttrib1fv(e,r)},function(t,e,r,n){return void 0===r.length?t.vertexAttrib2f(e,r,n):t.vertexAttrib2fv(e,r)},function(t,e,r,n,i){return void 0===r.length?t.vertexAttrib3f(e,r,n,i):t.vertexAttrib3fv(e,r)},function(t,e,r,n,i,a){return void 0===r.length?t.vertexAttrib4f(e,r,n,i,a):t.vertexAttrib4fv(e,r)}];function s(t,e,r,n,a,s,l){var u=o[a],c=new i(t,e,r,n,a,u);Object.defineProperty(s,l,{set:function(e){return t.disableVertexAttribArray(n[r]),u(t,n[r],e),e},get:function(){return c},enumerable:!0})}function l(t,e,r,n,i,a,o){for(var l=new Array(i),u=new Array(i),c=0;c4)throw new i("","Invalid uniform dimension type for matrix "+name+": "+m);t["uniformMatrix"+y+"fv"](s[f],!1,h);break}throw new i("","Unknown uniform data type for "+name+": "+m)}if((y=m.charCodeAt(m.length-1)-48)<2||y>4)throw new i("","Invalid data type");switch(m.charAt(0)){case"b":case"i":t["uniform"+y+"iv"](s[f],h);break;case"v":t["uniform"+y+"fv"](s[f],h);break;default:throw new i("","Unrecognized data type for vector "+name+": "+m)}}}}}}function u(t,e){if("object"!=typeof e)return[[t,e]];var r=[];for(var n in e){var i=e[n],a=t;parseInt(n)+""===n?a+="["+n+"]":a+="."+n,"object"==typeof i?r.push.apply(r,u(a,i)):r.push([a,i])}return r}function c(t,e,n){if("object"==typeof n){var u=f(n);Object.defineProperty(t,e,{get:a(u),set:l(n),enumerable:!0,configurable:!1})}else s[n]?Object.defineProperty(t,e,{get:(c=n,function(t,e,r){return t.getUniform(e.program,r[c])}),set:l(n),enumerable:!0,configurable:!1}):t[e]=function(t){switch(t){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":case"float":return 0;default:var e=t.indexOf("vec");if(0<=e&&e<=1&&t.length===4+e){if((r=t.charCodeAt(t.length-1)-48)<2||r>4)throw new i("","Invalid data type");return"b"===t.charAt(0)?o(r,!1):o(r,0)}if(0===t.indexOf("mat")&&4===t.length){var r;if((r=t.charCodeAt(t.length-1)-48)<2||r>4)throw new i("","Invalid uniform dimension type for matrix "+name+": "+t);return o(r*r,0)}throw new i("","Unknown uniform data type for "+name+": "+t)}}(r[n].type);var c}function f(t){var e;if(Array.isArray(t)){e=new Array(t.length);for(var r=0;r1){s[0]in a||(a[s[0]]=[]),a=a[s[0]];for(var l=1;l1)for(var l=0;l 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the tube vertex and normal at the given index.\n//\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\n//\n// Each tube segment is made up of a ring of vertices.\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\n// The indexes of tube segments run from 0 to 8.\n//\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\n float segmentCount = 8.0;\n\n float angle = 2.0 * 3.14159 * (index / segmentCount);\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d);\n vec3 y = v * sin(angle) * length(d);\n vec3 v3 = x + y;\n\n normal = normalize(v3);\n\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 color, position;\nattribute vec2 uv;\n\nuniform float vectorScale, tubeScale;\nuniform mat4 model, view, projection, inverseModel;\nuniform vec3 eyePosition, lightPosition;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n // Scale the vector magnitude to stay constant with\n // model & view changes.\n vec3 normal;\n vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\n vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * tubePosition;\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n // vec4 m_position = model * vec4(tubePosition, 1.0);\n vec4 t_position = view * tubePosition;\n gl_Position = projection * t_position;\n\n f_color = color;\n f_data = tubePosition.xyz;\n f_position = position.xyz;\n f_uv = uv;\n}\n"]),a=n(["#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform sampler2D texture;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = f_color * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * opacity;\n}\n"]),o=n(["precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the tube vertex and normal at the given index.\n//\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\n//\n// Each tube segment is made up of a ring of vertices.\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\n// The indexes of tube segments run from 0 to 8.\n//\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\n float segmentCount = 8.0;\n\n float angle = 2.0 * 3.14159 * (index / segmentCount);\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d);\n vec3 y = v * sin(angle) * length(d);\n vec3 v3 = x + y;\n\n normal = normalize(v3);\n\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform float tubeScale;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n vec3 normal;\n vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\n vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n gl_Position = projection * view * tubePosition;\n f_id = id;\n f_position = position.xyz;\n}\n"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}"]);e.meshShader={vertex:i,fragment:a,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},e.pickShader={vertex:o,fragment:s,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7307:function(t,e,r){"use strict";var n=r(2858),i=r(4020),a=["xyz","xzy","yxz","yzx","zxy","zyx"],o=function(t,e){var r,n=t.length;for(r=0;re)return r-1}return r},s=function(t,e,r){return tr?r:t},l=function(t){var e=1/0;t.sort(function(t,e){return t-e});for(var r=t.length,n=1;nf-1||m>h-1||x>p-1)return n.create();var b,_,w,T,A,k,M=a[0][d],S=a[0][y],E=a[1][v],L=a[1][m],C=a[2][g],P=(l-M)/(S-M),O=(u-E)/(L-E),I=(c-C)/(a[2][x]-C);switch(isFinite(P)||(P=.5),isFinite(O)||(O=.5),isFinite(I)||(I=.5),r.reversedX&&(d=f-1-d,y=f-1-y),r.reversedY&&(v=h-1-v,m=h-1-m),r.reversedZ&&(g=p-1-g,x=p-1-x),r.filled){case 5:A=g,k=x,w=v*p,T=m*p,b=d*p*h,_=y*p*h;break;case 4:A=g,k=x,b=d*p,_=y*p,w=v*p*f,T=m*p*f;break;case 3:w=v,T=m,A=g*h,k=x*h,b=d*h*p,_=y*h*p;break;case 2:w=v,T=m,b=d*h,_=y*h,A=g*h*f,k=x*h*f;break;case 1:b=d,_=y,A=g*f,k=x*f,w=v*f*p,T=m*f*p;break;default:b=d,_=y,w=v*f,T=m*f,A=g*f*h,k=x*f*h}var D=i[b+w+A],z=i[b+w+k],R=i[b+T+A],F=i[b+T+k],B=i[_+w+A],N=i[_+w+k],j=i[_+T+A],U=i[_+T+k],V=n.create(),H=n.create(),q=n.create(),G=n.create();n.lerp(V,D,B,P),n.lerp(H,z,N,P),n.lerp(q,R,j,P),n.lerp(G,F,U,P);var Y=n.create(),W=n.create();n.lerp(Y,V,q,O),n.lerp(W,H,G,O);var Z=n.create();return n.lerp(Z,Y,W,I),Z}(e,t,p)},v=t.getDivergence||function(t,e){var r=n.create(),i=1e-4;n.add(r,t,[i,0,0]);var a=d(r);n.subtract(a,a,e),n.scale(a,a,1/i),n.add(r,t,[0,i,0]);var o=d(r);n.subtract(o,o,e),n.scale(o,o,1/i),n.add(r,t,[0,0,i]);var s=d(r);return n.subtract(s,s,e),n.scale(s,s,1/i),n.add(r,a,o),n.add(r,r,s),r},g=[],y=e[0][0],m=e[0][1],x=e[0][2],b=e[1][0],_=e[1][1],w=e[1][2],T=function(t){var e=t[0],r=t[1],n=t[2];return!(eb||r_||nw)},A=10*n.distance(e[0],e[1])/u,k=A*A,M=1,S=0,E=r.length;E>1&&(M=function(t){for(var e=[],r=[],n=[],i={},a={},o={},s=t.length,u=0;uS&&(S=F),z.push(F),g.push({points:P,velocities:O,divergences:z});for(var B=0;B<100*u&&P.lengthk&&n.scale(N,N,A/Math.sqrt(j)),n.add(N,N,C),I=d(N),n.squaredDistance(D,N)-k>-1e-4*k&&(P.push(N),D=N,O.push(I),R=v(N,I),F=n.length(R),isFinite(F)&&F>S&&(S=F),z.push(F)),C=N}}var U=function(t,e,r,a){for(var o=0,s=0;s0)for(T=0;T<8;T++){var A=(T+1)%8;u.push(h[T],p[T],p[A],p[A],h[A],h[T]),f.push(m,y,y,y,m,m),d.push(v,g,g,g,v,v);var k=u.length;c.push([k-6,k-5,k-4],[k-3,k-2,k-1])}var M=h;h=p,p=M;var S=m;m=y,y=S;var E=v;v=g,g=E}return{positions:u,cells:c,vectors:f,vertexIntensity:d}}(t,r,a,o)}),f=[],h=[],p=[],d=[];for(s=0;s max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 lowerBound, upperBound;\nuniform float contourTint;\nuniform vec4 contourColor;\nuniform sampler2D colormap;\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform float vertexColor;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n if (\n kill > 0.0 ||\n vColor.a == 0.0 ||\n outOfRange(clipBounds[0], clipBounds[1], worldCoordinate)\n ) discard;\n\n vec3 N = normalize(surfaceNormal);\n vec3 V = normalize(eyeDirection);\n vec3 L = normalize(lightDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = max(beckmannSpecular(L, V, N, roughness), 0.);\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n //decide how to interpolate color — in vertex or in fragment\n vec4 surfaceColor =\n step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) +\n step(.5, vertexColor) * vColor;\n\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;\n}\n"]),s=i(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec4 uv;\nattribute float f;\n\nuniform vec3 objectOffset;\nuniform mat3 permutation;\nuniform mat4 model, view, projection;\nuniform float height, zOffset;\nuniform sampler2D colormap;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n vec3 dataCoordinate = permutation * vec3(uv.xy, height);\n worldCoordinate = objectOffset + dataCoordinate;\n vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\n\n vec4 clipPosition = projection * view * worldPosition;\n clipPosition.z += zOffset;\n\n gl_Position = clipPosition;\n value = f + objectOffset.z;\n kill = -1.0;\n planeCoordinate = uv.zw;\n\n vColor = texture2D(colormap, vec2(value, value));\n\n //Don't do lighting for contours\n surfaceNormal = vec3(1,0,0);\n eyeDirection = vec3(0,1,0);\n lightDirection = vec3(0,0,1);\n}\n"]),l=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec2 shape;\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 surfaceNormal;\n\nvec2 splitFloat(float v) {\n float vh = 255.0 * v;\n float upper = floor(vh);\n float lower = fract(vh);\n return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);\n}\n\nvoid main() {\n if ((kill > 0.0) ||\n (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard;\n\n vec2 ux = splitFloat(planeCoordinate.x / shape.x);\n vec2 uy = splitFloat(planeCoordinate.y / shape.y);\n gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));\n}\n"]);e.createShader=function(t){var e=n(t,a,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},e.createPickShader=function(t){var e=n(t,a,l,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},e.createContourShader=function(t){var e=n(t,s,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e},e.createPickContourShader=function(t){var e=n(t,s,l,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e}},3754:function(t,e,r){"use strict";t.exports=function(t){var e=t.gl,r=m(e),n=b(e),s=x(e),l=_(e),u=i(e),c=a(e,[{buffer:u,size:4,stride:w,offset:0},{buffer:u,size:3,stride:w,offset:16},{buffer:u,size:3,stride:w,offset:28}]),f=i(e),h=a(e,[{buffer:f,size:4,stride:20,offset:0},{buffer:f,size:1,stride:20,offset:16}]),p=i(e),d=a(e,[{buffer:p,size:2,type:e.FLOAT}]),v=o(e,1,S,e.RGBA,e.UNSIGNED_BYTE);v.minFilter=e.LINEAR,v.magFilter=e.LINEAR;var g=new E(e,[0,0],[[0,0,0],[0,0,0]],r,n,u,c,v,s,l,f,h,p,d,[0,0,0]),y={levels:[[],[],[]]};for(var T in t)y[T]=t[T];return y.colormap=y.colormap||"jet",g.update(y),g};var n=r(2288),i=r(5827),a=r(2944),o=r(8931),s=r(5306),l=r(9156),u=r(7498),c=r(7382),f=r(5050),h=r(4162),p=r(104),d=r(7437),v=r(5070),g=r(9144),y=r(9054),m=y.createShader,x=y.createContourShader,b=y.createPickShader,_=y.createPickContourShader,w=40,T=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],k=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];function M(t,e,r,n,i){this.position=t,this.index=e,this.uv=r,this.level=n,this.dataCoordinate=i}!function(){for(var t=0;t<3;++t){var e=k[t],r=(t+2)%3;e[(t+1)%3+0]=1,e[r+3]=1,e[t+6]=1}}();var S=256;function E(t,e,r,n,i,a,o,l,u,c,h,p,d,v,g){this.gl=t,this.shape=e,this.bounds=r,this.objectOffset=g,this.intensityBounds=[],this._shader=n,this._pickShader=i,this._coordinateBuffer=a,this._vao=o,this._colorMap=l,this._contourShader=u,this._contourPickShader=c,this._contourBuffer=h,this._contourVAO=p,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new M([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=d,this._dynamicVAO=v,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[f(s.mallocFloat(1024),[0,0]),f(s.mallocFloat(1024),[0,0]),f(s.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var L=E.prototype;L.genColormap=function(t,e){var r=!1,n=c([l({colormap:t,nshades:S,format:"rgba"}).map(function(t,n){var i=e?function(t,e){if(!e)return 1;if(!e.length)return 1;for(var r=0;rt&&r>0){var n=(e[r][0]-t)/(e[r][0]-e[r-1][0]);return e[r][1]*(1-n)+n*e[r-1][1]}}return 1}(n/255,e):t[3];return i<1&&(r=!0),[t[0],t[1],t[2],255*i]})]);return u.divseq(n,255),this.hasAlphaScale=r,n},L.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},L.isOpaque=function(){return!this.isTransparent()},L.pickSlots=1,L.setPickBase=function(t){this.pickId=t};var C=[0,0,0],P={showSurface:!1,showContour:!1,projections:[T.slice(),T.slice(),T.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function O(t,e){var r,n,i,a=e.axes&&e.axes.lastCubeProps.axis||C,o=e.showSurface,s=e.showContour;for(r=0;r<3;++r)for(o=o||e.surfaceProject[r],n=0;n<3;++n)s=s||e.contourProject[r][n];for(r=0;r<3;++r){var l=P.projections[r];for(n=0;n<16;++n)l[n]=0;for(n=0;n<4;++n)l[5*n]=1;l[5*r]=0,l[12+r]=e.axesBounds[+(a[r]>0)][r],p(l,t.model,l);var u=P.clipBounds[r];for(i=0;i<2;++i)for(n=0;n<3;++n)u[i][n]=t.clipBounds[i][n];u[0][r]=-1e8,u[1][r]=1e8}return P.showSurface=o,P.showContour=s,P}var I={model:T,view:T,projection:T,inverseModel:T.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},D=T.slice(),z=[1,0,0,0,1,0,0,0,1];function R(t,e){t=t||{};var r=this.gl;r.disable(r.CULL_FACE),this._colorMap.bind(0);var n=I;n.model=t.model||T,n.view=t.view||T,n.projection=t.projection||T,n.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],n.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],n.objectOffset=this.objectOffset,n.contourColor=this.contourColor[0],n.inverseModel=d(n.inverseModel,n.model);for(var i=0;i<2;++i)for(var a=n.clipBounds[i],o=0;o<3;++o)a[o]=Math.min(Math.max(this.clipBounds[i][o],-1e8),1e8);n.kambient=this.ambientLight,n.kdiffuse=this.diffuseLight,n.kspecular=this.specularLight,n.roughness=this.roughness,n.fresnel=this.fresnel,n.opacity=this.opacity,n.height=0,n.permutation=z,n.vertexColor=this.vertexColor;var s=D;for(p(s,n.view,n.model),p(s,n.projection,s),d(s,s),i=0;i<3;++i)n.eyePosition[i]=s[12+i]/s[15];var l=s[15];for(i=0;i<3;++i)l+=this.lightPosition[i]*s[4*i+3];for(i=0;i<3;++i){var u=s[12+i];for(o=0;o<3;++o)u+=s[4*o+i]*this.lightPosition[o];n.lightPosition[i]=u/l}var c=O(n,this);if(c.showSurface){for(this._shader.bind(),this._shader.uniforms=n,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(r.TRIANGLES,this._vertexCount),i=0;i<3;++i)this.surfaceProject[i]&&this.vertexCount&&(this._shader.uniforms.model=c.projections[i],this._shader.uniforms.clipBounds=c.clipBounds[i],this._vao.draw(r.TRIANGLES,this._vertexCount));this._vao.unbind()}if(c.showContour){var f=this._contourShader;n.kambient=1,n.kdiffuse=0,n.kspecular=0,n.opacity=1,f.bind(),f.uniforms=n;var h=this._contourVAO;for(h.bind(),i=0;i<3;++i)for(f.uniforms.permutation=k[i],r.lineWidth(this.contourWidth[i]*this.pixelRatio),o=0;o>4)/16)/255,i=Math.floor(n),a=n-i,o=e[1]*(t.value[1]+(15&t.value[2])/16)/255,s=Math.floor(o),l=o-s;i+=1,s+=1;var u=r.position;u[0]=u[1]=u[2]=0;for(var c=0;c<2;++c)for(var f=c?a:1-a,h=0;h<2;++h)for(var p=i+c,d=s+h,g=f*(h?l:1-l),y=0;y<3;++y)u[y]+=this._field[y].get(p,d)*g;for(var m=this._pickResult.level,x=0;x<3;++x)if(m[x]=v.le(this.contourLevels[x],u[x]),m[x]<0)this.contourLevels[x].length>0&&(m[x]=0);else if(m[x]Math.abs(_-u[x])&&(m[x]+=1)}for(r.index[0]=a<.5?i:i+1,r.index[1]=l<.5?s:s+1,r.uv[0]=n/e[0],r.uv[1]=o/e[1],y=0;y<3;++y)r.dataCoordinate[y]=this._field[y].get(r.index[0],r.index[1]);return r},L.padField=function(t,e){var r=e.shape.slice(),n=t.shape.slice();u.assign(t.lo(1,1).hi(r[0],r[1]),e),u.assign(t.lo(1).hi(r[0],1),e.hi(r[0],1)),u.assign(t.lo(1,n[1]-1).hi(r[0],1),e.lo(0,r[1]-1).hi(r[0],1)),u.assign(t.lo(0,1).hi(1,r[1]),e.hi(1)),u.assign(t.lo(n[0]-1,1).hi(1,r[1]),e.lo(r[0]-1)),t.set(0,0,e.get(0,0)),t.set(0,n[1]-1,e.get(0,r[1]-1)),t.set(n[0]-1,0,e.get(r[0]-1,0)),t.set(n[0]-1,n[1]-1,e.get(r[0]-1,r[1]-1))},L.update=function(t){t=t||{},this.objectOffset=t.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in t&&(this.contourWidth=B(t.contourWidth,Number)),"showContour"in t&&(this.showContour=B(t.showContour,Boolean)),"showSurface"in t&&(this.showSurface=!!t.showSurface),"contourTint"in t&&(this.contourTint=B(t.contourTint,Boolean)),"contourColor"in t&&(this.contourColor=j(t.contourColor)),"contourProject"in t&&(this.contourProject=B(t.contourProject,function(t){return B(t,Boolean)})),"surfaceProject"in t&&(this.surfaceProject=t.surfaceProject),"dynamicColor"in t&&(this.dynamicColor=j(t.dynamicColor)),"dynamicTint"in t&&(this.dynamicTint=B(t.dynamicTint,Number)),"dynamicWidth"in t&&(this.dynamicWidth=B(t.dynamicWidth,Number)),"opacity"in t&&(this.opacity=t.opacity),"opacityscale"in t&&(this.opacityscale=t.opacityscale),"colorBounds"in t&&(this.colorBounds=t.colorBounds),"vertexColor"in t&&(this.vertexColor=t.vertexColor?1:0),"colormap"in t&&this._colorMap.setPixels(this.genColormap(t.colormap,this.opacityscale));var e=t.field||t.coords&&t.coords[2]||null,r=!1;if(e||(e=this._field[2].shape[0]||this._field[2].shape[2]?this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):this._field[2].hi(0,0)),"field"in t||"coords"in t){var i=(e.shape[0]+2)*(e.shape[1]+2);i>this._field[2].data.length&&(s.freeFloat(this._field[2].data),this._field[2].data=s.mallocFloat(n.nextPow2(i))),this._field[2]=f(this._field[2].data,[e.shape[0]+2,e.shape[1]+2]),this.padField(this._field[2],e),this.shape=e.shape.slice();for(var a=this.shape,o=0;o<2;++o)this._field[2].size>this._field[o].data.length&&(s.freeFloat(this._field[o].data),this._field[o].data=s.mallocFloat(this._field[2].size)),this._field[o]=f(this._field[o].data,[a[0]+2,a[1]+2]);if(t.coords){var l=t.coords;if(!Array.isArray(l)||3!==l.length)throw new Error("gl-surface: invalid coordinates for x/y");for(o=0;o<2;++o){var u=l[o];for(y=0;y<2;++y)if(u.shape[y]!==a[y])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[o],u)}}else if(t.ticks){var c=t.ticks;if(!Array.isArray(c)||2!==c.length)throw new Error("gl-surface: invalid ticks");for(o=0;o<2;++o){var p=c[o];if((Array.isArray(p)||p.length)&&(p=f(p)),p.shape[0]!==a[o])throw new Error("gl-surface: invalid tick length");var d=f(p.data,a);d.stride[o]=p.stride[0],d.stride[1^o]=0,this.padField(this._field[o],d)}}else{for(o=0;o<2;++o){var v=[0,0];v[o]=1,this._field[o]=f(this._field[o].data,[a[0]+2,a[1]+2],v,0)}this._field[0].set(0,0,0);for(var y=0;y0){for(var xt=0;xt<5;++xt)$.pop();U-=1}continue t}$.push(nt[0],nt[1],ot[0],ot[1],nt[2]),U+=1}}rt.push(U)}this._contourOffsets[Q]=et,this._contourCounts[Q]=rt}var bt=s.mallocFloat($.length);for(o=0;o<$.length;++o)bt[o]=$[o];this._contourBuffer.update(bt),s.freeFloat(bt)}},L.dispose=function(){this._shader.dispose(),this._vao.dispose(),this._coordinateBuffer.dispose(),this._colorMap.dispose(),this._contourBuffer.dispose(),this._contourVAO.dispose(),this._contourShader.dispose(),this._contourPickShader.dispose(),this._dynamicBuffer.dispose(),this._dynamicVAO.dispose();for(var t=0;t<3;++t)s.freeFloat(this._field[t].data)},L.highlight=function(t){var e,r;if(!t)return this._dynamicCounts=[0,0,0],this.dyanamicLevel=[NaN,NaN,NaN],void(this.highlightLevel=[-1,-1,-1]);for(e=0;e<3;++e)this.enableHighlight[e]?this.highlightLevel[e]=t.level[e]:this.highlightLevel[e]=-1;for(r=this.snapToData?t.dataCoordinate:t.position,e=0;e<3;++e)r[e]-=this.objectOffset[e];if(this.enableDynamic[0]&&r[0]!==this.dynamicLevel[0]||this.enableDynamic[1]&&r[1]!==this.dynamicLevel[1]||this.enableDynamic[2]&&r[2]!==this.dynamicLevel[2]){for(var n=0,i=this.shape,a=s.mallocFloat(12*i[0]*i[1]),o=0;o<3;++o)if(this.enableDynamic[o]){this.dynamicLevel[o]=r[o];var l=(o+1)%3,u=(o+2)%3,c=this._field[o],f=this._field[l],p=this._field[u],d=h(c,r[o]),v=d.cells,g=d.positions;for(this._dynamicOffsets[o]=n,e=0;es||o[1]<0||o[1]>s)throw new Error("gl-texture2d: Invalid texture size");var l=d(o,e.stride.slice()),u=0;"float32"===r?u=t.FLOAT:"float64"===r?(u=t.FLOAT,l=!1,r="float32"):"uint8"===r?u=t.UNSIGNED_BYTE:(u=t.UNSIGNED_BYTE,l=!1,r="uint8");var f,p,g=0;if(2===o.length)g=t.LUMINANCE,o=[o[0],o[1],1],e=n(e.data,o,[e.stride[0],e.stride[1],1],e.offset);else{if(3!==o.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===o[2])g=t.ALPHA;else if(2===o[2])g=t.LUMINANCE_ALPHA;else if(3===o[2])g=t.RGB;else{if(4!==o[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");g=t.RGBA}}u!==t.FLOAT||t.getExtension("OES_texture_float")||(u=t.UNSIGNED_BYTE,l=!1);var y=e.size;if(l)f=0===e.offset&&e.data.length===y?e.data:e.data.subarray(e.offset,e.offset+y);else{var m=[o[2],o[2]*o[0],1];p=a.malloc(y,r);var x=n(p,o,m,0);"float32"!==r&&"float64"!==r||u!==t.UNSIGNED_BYTE?i.assign(x,e):c(x,e),f=p.subarray(0,y)}var b=v(t);return t.texImage2D(t.TEXTURE_2D,0,g,o[0],o[1],0,g,u,f),l||a.free(p),new h(t,b,o[0],o[1],g,u)}(t,e)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")};var o=null,s=null,l=null;function u(t){return"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement||"undefined"!=typeof ImageData&&t instanceof ImageData}var c=function(t,e){i.muls(t,e,255)};function f(t,e,r){var n=t.gl,i=n.getParameter(n.MAX_TEXTURE_SIZE);if(e<0||e>i||r<0||r>i)throw new Error("gl-texture2d: Invalid texture size");return t._shape=[e,r],t.bind(),n.texImage2D(n.TEXTURE_2D,0,t.format,e,r,0,t.format,t.type,null),t._mipLevels=[0],t}function h(t,e,r,n,i,a){this.gl=t,this.handle=e,this.format=i,this.type=a,this._shape=[r,n],this._mipLevels=[0],this._magFilter=t.NEAREST,this._minFilter=t.NEAREST,this._wrapS=t.CLAMP_TO_EDGE,this._wrapT=t.CLAMP_TO_EDGE,this._anisoSamples=1;var o=this,s=[this._wrapS,this._wrapT];Object.defineProperties(s,[{get:function(){return o._wrapS},set:function(t){return o.wrapS=t}},{get:function(){return o._wrapT},set:function(t){return o.wrapT=t}}]),this._wrapVector=s;var l=[this._shape[0],this._shape[1]];Object.defineProperties(l,[{get:function(){return o._shape[0]},set:function(t){return o.width=t}},{get:function(){return o._shape[1]},set:function(t){return o.height=t}}]),this._shapeVector=l}var p=h.prototype;function d(t,e){return 3===t.length?1===e[2]&&e[1]===t[0]*t[2]&&e[0]===t[2]:1===e[0]&&e[1]===t[0]}function v(t){var e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}function g(t,e,r,n,i){var a=t.getParameter(t.MAX_TEXTURE_SIZE);if(e<0||e>a||r<0||r>a)throw new Error("gl-texture2d: Invalid texture shape");if(i===t.FLOAT&&!t.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var o=v(t);return t.texImage2D(t.TEXTURE_2D,0,n,e,r,0,n,i,null),new h(t,o,e,r,n,i)}Object.defineProperties(p,{minFilter:{get:function(){return this._minFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension("OES_texture_float_linear")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),this._minFilter=t}},magFilter:{get:function(){return this._magFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension("OES_texture_float_linear")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),this._magFilter=t}},mipSamples:{get:function(){return this._anisoSamples},set:function(t){var e=this._anisoSamples;if(this._anisoSamples=0|Math.max(t,1),e!==this._anisoSamples){var r=this.gl.getExtension("EXT_texture_filter_anisotropic");r&&this.gl.texParameterf(this.gl.TEXTURE_2D,r.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,t),this._wrapS=t}},wrapT:{get:function(){return this._wrapT},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,t),this._wrapT=t}},wrap:{get:function(){return this._wrapVector},set:function(t){if(Array.isArray(t)||(t=[t,t]),2!==t.length)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var e=0;e<2;++e)if(l.indexOf(t[e])<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);this._wrapS=t[0],this._wrapT=t[1];var r=this.gl;return this.bind(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,this._wrapS),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,this._wrapT),t}},shape:{get:function(){return this._shapeVector},set:function(t){if(Array.isArray(t)){if(2!==t.length)throw new Error("gl-texture2d: Invalid texture shape")}else t=[0|t,0|t];return f(this,0|t[0],0|t[1]),[0|t[0],0|t[1]]}},width:{get:function(){return this._shape[0]},set:function(t){return f(this,t|=0,this._shape[1]),t}},height:{get:function(){return this._shape[1]},set:function(t){return t|=0,f(this,this._shape[0],t),t}}}),p.bind=function(t){var e=this.gl;return void 0!==t&&e.activeTexture(e.TEXTURE0+(0|t)),e.bindTexture(e.TEXTURE_2D,this.handle),void 0!==t?0|t:e.getParameter(e.ACTIVE_TEXTURE)-e.TEXTURE0},p.dispose=function(){this.gl.deleteTexture(this.handle)},p.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var t=Math.min(this._shape[0],this._shape[1]),e=0;t>0;++e,t>>>=1)this._mipLevels.indexOf(e)<0&&this._mipLevels.push(e)},p.setPixels=function(t,e,r,o){var s=this.gl;this.bind(),Array.isArray(e)?(o=r,r=0|e[1],e=0|e[0]):(e=e||0,r=r||0),o=o||0;var l=u(t)?t:t.raw;if(l)this._mipLevels.indexOf(o)<0?(s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,this.type,l),this._mipLevels.push(o)):s.texSubImage2D(s.TEXTURE_2D,o,e,r,this.format,this.type,l);else{if(!(t.shape&&t.stride&&t.data))throw new Error("gl-texture2d: Unsupported data type");if(t.shape.length<2||e+t.shape[1]>this._shape[1]>>>o||r+t.shape[0]>this._shape[0]>>>o||e<0||r<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");!function(t,e,r,o,s,l,u,f){var h=f.dtype,p=f.shape.slice();if(p.length<2||p.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var v=0,g=0,y=d(p,f.stride.slice());if("float32"===h?v=t.FLOAT:"float64"===h?(v=t.FLOAT,y=!1,h="float32"):"uint8"===h?v=t.UNSIGNED_BYTE:(v=t.UNSIGNED_BYTE,y=!1,h="uint8"),2===p.length)g=t.LUMINANCE,p=[p[0],p[1],1],f=n(f.data,p,[f.stride[0],f.stride[1],1],f.offset);else{if(3!==p.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===p[2])g=t.ALPHA;else if(2===p[2])g=t.LUMINANCE_ALPHA;else if(3===p[2])g=t.RGB;else{if(4!==p[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");g=t.RGBA}p[2]}if(g!==t.LUMINANCE&&g!==t.ALPHA||s!==t.LUMINANCE&&s!==t.ALPHA||(g=s),g!==s)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var m=f.size,x=u.indexOf(o)<0;if(x&&u.push(o),v===l&&y)0===f.offset&&f.data.length===m?x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,f.data):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,f.data):x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,f.data.subarray(f.offset,f.offset+m)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,f.data.subarray(f.offset,f.offset+m));else{var b;b=l===t.FLOAT?a.mallocFloat32(m):a.mallocUint8(m);var _=n(b,p,[p[2],p[2]*p[0],1]);v===t.FLOAT&&l===t.UNSIGNED_BYTE?c(_,f):i.assign(_,f),x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,b.subarray(0,m)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,b.subarray(0,m)),l===t.FLOAT?a.freeFloat32(b):a.freeUint8(b)}}(s,e,r,o,this.format,this.type,this._mipLevels,t)}}},3056:function(t){"use strict";t.exports=function(t,e,r){e?e.bind():t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null);var n=0|t.getParameter(t.MAX_VERTEX_ATTRIBS);if(r){if(r.length>n)throw new Error("gl-vao: Too many vertex attributes");for(var i=0;i1?0:Math.acos(s)};var n=r(5415),i=r(899),a=r(9305)},8827:function(t){t.exports=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}},7622:function(t){t.exports=function(t){var e=new Float32Array(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},8782:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},8501:function(t){t.exports=function(){var t=new Float32Array(3);return t[0]=0,t[1]=0,t[2]=0,t}},903:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t}},5981:function(t,e,r){t.exports=r(8288)},8288:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(r*r+n*n+i*i)}},8629:function(t,e,r){t.exports=r(7979)},7979:function(t){t.exports=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}},9305:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},154:function(t){t.exports=1e-6},4932:function(t,e,r){t.exports=function(t,e){var r=t[0],i=t[1],a=t[2],o=e[0],s=e[1],l=e[2];return Math.abs(r-o)<=n*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-s)<=n*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(a-l)<=n*Math.max(1,Math.abs(a),Math.abs(l))};var n=r(154)},5777:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},3306:function(t){t.exports=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}},7447:function(t,e,r){t.exports=function(t,e,r,i,a,o){var s,l;for(e||(e=3),r||(r=0),l=i?Math.min(i*e+r,t.length):t.length,s=r;s0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a),t}},6660:function(t){t.exports=function(t,e){e=e||1;var r=2*Math.random()*Math.PI,n=2*Math.random()-1,i=Math.sqrt(1-n*n)*e;return t[0]=Math.cos(r)*i,t[1]=Math.sin(r)*i,t[2]=n*e,t}},392:function(t){t.exports=function(t,e,r,n){var i=r[1],a=r[2],o=e[1]-i,s=e[2]-a,l=Math.sin(n),u=Math.cos(n);return t[0]=e[0],t[1]=i+o*u-s*l,t[2]=a+o*l+s*u,t}},3222:function(t){t.exports=function(t,e,r,n){var i=r[0],a=r[2],o=e[0]-i,s=e[2]-a,l=Math.sin(n),u=Math.cos(n);return t[0]=i+s*l+o*u,t[1]=e[1],t[2]=a+s*u-o*l,t}},3388:function(t){t.exports=function(t,e,r,n){var i=r[0],a=r[1],o=e[0]-i,s=e[1]-a,l=Math.sin(n),u=Math.cos(n);return t[0]=i+o*u-s*l,t[1]=a+o*l+s*u,t[2]=e[2],t}},1624:function(t){t.exports=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}},5685:function(t){t.exports=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}},6722:function(t){t.exports=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}},831:function(t){t.exports=function(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}},5294:function(t,e,r){t.exports=r(6403)},3303:function(t,e,r){t.exports=r(4337)},6403:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}},4337:function(t){t.exports=function(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}},8921:function(t,e,r){t.exports=r(911)},911:function(t){t.exports=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}},9908:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2];return t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8],t}},3255:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[3]*n+r[7]*i+r[11]*a+r[15];return o=o||1,t[0]=(r[0]*n+r[4]*i+r[8]*a+r[12])/o,t[1]=(r[1]*n+r[5]*i+r[9]*a+r[13])/o,t[2]=(r[2]*n+r[6]*i+r[10]*a+r[14])/o,t}},6568:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2],u=r[3],c=u*n+s*a-l*i,f=u*i+l*n-o*a,h=u*a+o*i-s*n,p=-o*n-s*i-l*a;return t[0]=c*u+p*-o+f*-l-h*-s,t[1]=f*u+p*-s+h*-o-c*-l,t[2]=h*u+p*-l+c*-s-f*-o,t}},3433:function(t){t.exports=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}},1413:function(t){t.exports=function(t){var e=new Float32Array(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}},3470:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}},5313:function(t){t.exports=function(){var t=new Float32Array(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}},5446:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return Math.sqrt(r*r+n*n+i*i+a*a)}},205:function(t){t.exports=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}},4242:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}},5680:function(t){t.exports=function(t,e,r,n){var i=new Float32Array(4);return i[0]=t,i[1]=e,i[2]=r,i[3]=n,i}},4020:function(t,e,r){t.exports={create:r(5313),clone:r(1413),fromValues:r(5680),copy:r(3470),set:r(6453),add:r(3433),subtract:r(2705),multiply:r(746),divide:r(205),min:r(2170),max:r(3030),scale:r(5510),scaleAndAdd:r(4224),distance:r(5446),squaredDistance:r(1542),length:r(8177),squaredLength:r(9037),negate:r(6459),inverse:r(8057),normalize:r(381),dot:r(4242),lerp:r(8746),random:r(3770),transformMat4:r(6342),transformQuat:r(5022)}},8057:function(t){t.exports=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}},8177:function(t){t.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3];return Math.sqrt(e*e+r*r+n*n+i*i)}},8746:function(t){t.exports=function(t,e,r,n){var i=e[0],a=e[1],o=e[2],s=e[3];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t[2]=o+n*(r[2]-o),t[3]=s+n*(r[3]-s),t}},3030:function(t){t.exports=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t}},2170:function(t){t.exports=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t}},746:function(t){t.exports=function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}},6459:function(t){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}},381:function(t){t.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o),t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=a*o),t}},3770:function(t,e,r){var n=r(381),i=r(5510);t.exports=function(t,e){return e=e||1,t[0]=Math.random(),t[1]=Math.random(),t[2]=Math.random(),t[3]=Math.random(),n(t,t),i(t,t,e),t}},5510:function(t){t.exports=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}},4224:function(t){t.exports=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t}},6453:function(t){t.exports=function(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}},1542:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return r*r+n*n+i*i+a*a}},9037:function(t){t.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}},2705:function(t){t.exports=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}},6342:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}},5022:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2],u=r[3],c=u*n+s*a-l*i,f=u*i+l*n-o*a,h=u*a+o*i-s*n,p=-o*n-s*i-l*a;return t[0]=c*u+p*-o+f*-l-h*-s,t[1]=f*u+p*-s+h*-o-c*-l,t[2]=h*u+p*-l+c*-s-f*-o,t[3]=e[3],t}},9365:function(t,e,r){var n=r(8096),i=r(7896);t.exports=function(t){for(var e=Array.isArray(t)?t:n(t),r=0;r0)continue;r=t.slice(0,1).join("")}return N(r),P+=r.length,(S=S.slice(r.length)).length}}function W(){return/[^a-fA-F0-9]/.test(e)?(N(S.join("")),M=l,A):(S.push(e),r=e,A+1)}function Z(){return"."===e||/[eE]/.test(e)?(S.push(e),M=v,r=e,A+1):"x"===e&&1===S.length&&"0"===S[0]?(M=_,S.push(e),r=e,A+1):/[^\d]/.test(e)?(N(S.join("")),M=l,A):(S.push(e),r=e,A+1)}function X(){return"f"===e&&(S.push(e),r=e,A+=1),/[eE]/.test(e)?(S.push(e),r=e,A+1):("-"!==e&&"+"!==e||!/[eE]/.test(r))&&/[^\d]/.test(e)?(N(S.join("")),M=l,A):(S.push(e),r=e,A+1)}function J(){if(/[^\d\w_]/.test(e)){var t=S.join("");return M=B[t]?m:F[t]?y:g,N(S.join("")),M=l,A}return S.push(e),r=e,A+1}};var n=r(399),i=r(9746),a=r(9525),o=r(9458),s=r(3585),l=999,u=9999,c=0,f=1,h=2,p=3,d=4,v=5,g=6,y=7,m=8,x=9,b=10,_=11,w=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"]},3585:function(t,e,r){var n=r(9525);n=n.slice().filter(function(t){return!/^(gl\_|texture)/.test(t)}),t.exports=n.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},9525:function(t){t.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},9458:function(t,e,r){var n=r(399);t.exports=n.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},399:function(t){t.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},9746:function(t){t.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},8096:function(t,e,r){var n=r(3193);t.exports=function(t,e){var r=n(e),i=[];return(i=i.concat(r(t))).concat(r(null))}},6832:function(t){t.exports=function(t){"string"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n0;)for(var s=(t=o.pop()).adjacent,l=0;l<=r;++l){var u=s[l];if(u.boundary&&!(u.lastVisited<=-n)){for(var c=u.vertices,f=0;f<=r;++f){var h=c[f];i[f]=h<0?e:a[h]}var p=this.orient();if(p>0)return u;u.lastVisited=-n,0===p&&o.push(u)}}return null},c.walk=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,a=this.tuple,o=e?this.interior.length*Math.random()|0:this.interior.length-1,s=this.interior[o];t:for(;!s.boundary;){for(var l=s.vertices,u=s.adjacent,c=0;c<=n;++c)a[c]=i[l[c]];for(s.lastVisited=r,c=0;c<=n;++c){var f=u[c];if(!(f.lastVisited>=r)){var h=a[c];a[c]=t;var p=this.orient();if(a[c]=h,p<0){s=f;continue t}f.boundary?f.lastVisited=-r:f.lastVisited=r}}return}return s},c.addPeaks=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,l=this.tuple,u=this.interior,c=this.simplices,f=[e];e.lastVisited=r,e.vertices[e.vertices.indexOf(-1)]=r,e.boundary=!1,u.push(e);for(var h=[];f.length>0;){var p=(e=f.pop()).vertices,d=e.adjacent,v=p.indexOf(r);if(!(v<0))for(var g=0;g<=n;++g)if(g!==v){var y=d[g];if(y.boundary&&!(y.lastVisited>=r)){var m=y.vertices;if(y.lastVisited!==-r){for(var x=0,b=0;b<=n;++b)m[b]<0?(x=b,l[b]=t):l[b]=i[m[b]];if(this.orient()>0){m[x]=r,y.boundary=!1,u.push(y),f.push(y),y.lastVisited=r;continue}y.lastVisited=-r}var _=y.adjacent,w=p.slice(),T=d.slice(),A=new a(w,T,!0);c.push(A);var k=_.indexOf(e);if(!(k<0))for(_[k]=A,T[v]=y,w[g]=-1,T[g]=e,d[g]=A,A.flip(),b=0;b<=n;++b){var M=w[b];if(!(M<0||M===r)){for(var S=new Array(n-1),E=0,L=0;L<=n;++L){var C=w[L];C<0||L===b||(S[E++]=C)}h.push(new o(S,A,b))}}}}}for(h.sort(s),g=0;g+1=0?o[l++]=s[c]:u=1&c;if(u===(1&t)){var f=o[0];o[0]=o[1],o[1]=f}e.push(o)}}return e}},9014:function(t,e,r){"use strict";var n=r(5070);function i(t,e,r,n,i){this.mid=t,this.left=e,this.right=r,this.leftPoints=n,this.rightPoints=i,this.count=(e?e.count:0)+(r?r.count:0)+n.length}t.exports=function(t){return t&&0!==t.length?new y(g(t)):new y(null)};var a=i.prototype;function o(t,e){t.mid=e.mid,t.left=e.left,t.right=e.right,t.leftPoints=e.leftPoints,t.rightPoints=e.rightPoints,t.count=e.count}function s(t,e){var r=g(e);t.mid=r.mid,t.left=r.left,t.right=r.right,t.leftPoints=r.leftPoints,t.rightPoints=r.rightPoints,t.count=r.count}function l(t,e){var r=t.intervals([]);r.push(e),s(t,r)}function u(t,e){var r=t.intervals([]),n=r.indexOf(e);return n<0?0:(r.splice(n,1),s(t,r),1)}function c(t,e,r){for(var n=0;n=0&&t[n][1]>=e;--n){var i=r(t[n]);if(i)return i}}function h(t,e){for(var r=0;r>1],a=[],o=[],s=[];for(r=0;r3*(e+1)?l(this,t):this.left.insert(t):this.left=g([t]);else if(t[0]>this.mid)this.right?4*(this.right.count+1)>3*(e+1)?l(this,t):this.right.insert(t):this.right=g([t]);else{var r=n.ge(this.leftPoints,t,d),i=n.ge(this.rightPoints,t,v);this.leftPoints.splice(r,0,t),this.rightPoints.splice(i,0,t)}},a.remove=function(t){var e=this.count-this.leftPoints;if(t[1]3*(e-1)?u(this,t):2===(s=this.left.remove(t))?(this.left=null,this.count-=1,1):(1===s&&(this.count-=1),s):0;if(t[0]>this.mid)return this.right?4*(this.left?this.left.count:0)>3*(e-1)?u(this,t):2===(s=this.right.remove(t))?(this.right=null,this.count-=1,1):(1===s&&(this.count-=1),s):0;if(1===this.count)return this.leftPoints[0]===t?2:0;if(1===this.leftPoints.length&&this.leftPoints[0]===t){if(this.left&&this.right){for(var r=this,i=this.left;i.right;)r=i,i=i.right;if(r===this)i.right=this.right;else{var a=this.left,s=this.right;r.count-=i.count,r.right=i.left,i.left=a,i.right=s}o(this,i),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?o(this,this.left):o(this,this.right);return 1}for(a=n.ge(this.leftPoints,t,d);athis.mid?this.right&&(r=this.right.queryPoint(t,e))?r:f(this.rightPoints,t,e):h(this.leftPoints,e);var r},a.queryInterval=function(t,e,r){var n;return tthis.mid&&this.right&&(n=this.right.queryInterval(t,e,r))?n:ethis.mid?f(this.rightPoints,t,r):h(this.leftPoints,r)};var m=y.prototype;m.insert=function(t){this.root?this.root.insert(t):this.root=new i(t[0],null,null,[t],[t])},m.remove=function(t){if(this.root){var e=this.root.remove(t);return 2===e&&(this.root=null),0!==e}return!1},m.queryPoint=function(t,e){if(this.root)return this.root.queryPoint(t,e)},m.queryInterval=function(t,e,r){if(t<=e&&this.root)return this.root.queryInterval(t,e,r)},Object.defineProperty(m,"count",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(m,"intervals",{get:function(){return this.root?this.root.intervals([]):[]}})},9560:function(t){"use strict";t.exports=function(t){for(var e=new Array(t),r=0;r13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},3578:function(t){t.exports=function(t,e,r){return t*(1-r)+e*r}},7191:function(t,e,r){var n=r(4690),i=r(9823),a=r(7332),o=r(7787),s=r(7437),l=r(2142),u={length:r(4693),normalize:r(899),dot:r(9305),cross:r(903)},c=i(),f=i(),h=[0,0,0,0],p=[[0,0,0],[0,0,0],[0,0,0]],d=[0,0,0];function v(t,e,r,n,i){t[0]=e[0]*n+r[0]*i,t[1]=e[1]*n+r[1]*i,t[2]=e[2]*n+r[2]*i}t.exports=function(t,e,r,i,g,y){if(e||(e=[0,0,0]),r||(r=[0,0,0]),i||(i=[0,0,0]),g||(g=[0,0,0,1]),y||(y=[0,0,0,1]),!n(c,t))return!1;if(a(f,c),f[3]=0,f[7]=0,f[11]=0,f[15]=1,Math.abs(o(f)<1e-8))return!1;var m,x,b,_,w,T,A,k=c[3],M=c[7],S=c[11],E=c[12],L=c[13],C=c[14],P=c[15];if(0!==k||0!==M||0!==S){if(h[0]=k,h[1]=M,h[2]=S,h[3]=P,!s(f,f))return!1;l(f,f),m=g,b=f,_=(x=h)[0],w=x[1],T=x[2],A=x[3],m[0]=b[0]*_+b[4]*w+b[8]*T+b[12]*A,m[1]=b[1]*_+b[5]*w+b[9]*T+b[13]*A,m[2]=b[2]*_+b[6]*w+b[10]*T+b[14]*A,m[3]=b[3]*_+b[7]*w+b[11]*T+b[15]*A}else g[0]=g[1]=g[2]=0,g[3]=1;if(e[0]=E,e[1]=L,e[2]=C,function(t,e){t[0][0]=e[0],t[0][1]=e[1],t[0][2]=e[2],t[1][0]=e[4],t[1][1]=e[5],t[1][2]=e[6],t[2][0]=e[8],t[2][1]=e[9],t[2][2]=e[10]}(p,c),r[0]=u.length(p[0]),u.normalize(p[0],p[0]),i[0]=u.dot(p[0],p[1]),v(p[1],p[1],p[0],1,-i[0]),r[1]=u.length(p[1]),u.normalize(p[1],p[1]),i[0]/=r[1],i[1]=u.dot(p[0],p[2]),v(p[2],p[2],p[0],1,-i[1]),i[2]=u.dot(p[1],p[2]),v(p[2],p[2],p[1],1,-i[2]),r[2]=u.length(p[2]),u.normalize(p[2],p[2]),i[1]/=r[2],i[2]/=r[2],u.cross(d,p[1],p[2]),u.dot(p[0],d)<0)for(var O=0;O<3;O++)r[O]*=-1,p[O][0]*=-1,p[O][1]*=-1,p[O][2]*=-1;return y[0]=.5*Math.sqrt(Math.max(1+p[0][0]-p[1][1]-p[2][2],0)),y[1]=.5*Math.sqrt(Math.max(1-p[0][0]+p[1][1]-p[2][2],0)),y[2]=.5*Math.sqrt(Math.max(1-p[0][0]-p[1][1]+p[2][2],0)),y[3]=.5*Math.sqrt(Math.max(1+p[0][0]+p[1][1]+p[2][2],0)),p[2][1]>p[1][2]&&(y[0]=-y[0]),p[0][2]>p[2][0]&&(y[1]=-y[1]),p[1][0]>p[0][1]&&(y[2]=-y[2]),!0}},4690:function(t){t.exports=function(t,e){var r=e[15];if(0===r)return!1;for(var n=1/r,i=0;i<16;i++)t[i]=e[i]*n;return!0}},7649:function(t,e,r){var n=r(1868),i=r(1102),a=r(7191),o=r(7787),s=r(1116),l=f(),u=f(),c=f();function f(){return{translate:h(),scale:h(1),skew:h(),perspective:[0,0,0,1],quaternion:[0,0,0,1]}}function h(t){return[t||0,t||0,t||0]}t.exports=function(t,e,r,f){if(0===o(e)||0===o(r))return!1;var h=a(e,l.translate,l.scale,l.skew,l.perspective,l.quaternion),p=a(r,u.translate,u.scale,u.skew,u.perspective,u.quaternion);return!(!h||!p||(n(c.translate,l.translate,u.translate,f),n(c.skew,l.skew,u.skew,f),n(c.scale,l.scale,u.scale,f),n(c.perspective,l.perspective,u.perspective,f),s(c.quaternion,l.quaternion,u.quaternion,f),i(t,c.translate,c.scale,c.skew,c.perspective,c.quaternion),0))}},1102:function(t,e,r){var n={identity:r(9947),translate:r(998),multiply:r(104),create:r(9823),scale:r(3668),fromRotationTranslation:r(7280)},i=(n.create(),n.create());t.exports=function(t,e,r,a,o,s){return n.identity(t),n.fromRotationTranslation(t,s,e),t[3]=o[0],t[7]=o[1],t[11]=o[2],t[15]=o[3],n.identity(i),0!==a[2]&&(i[9]=a[2],n.multiply(t,t,i)),0!==a[1]&&(i[9]=0,i[8]=a[1],n.multiply(t,t,i)),0!==a[0]&&(i[8]=0,i[4]=a[0],n.multiply(t,t,i)),n.scale(t,t,r),t}},9298:function(t,e,r){"use strict";var n=r(5070),i=r(7649),a=r(7437),o=r(6109),s=r(7115),l=r(5240),u=r(3012),c=r(998),f=(r(3668),r(899)),h=[0,0,0];function p(t){this._components=t.slice(),this._time=[0],this.prevMatrix=t.slice(),this.nextMatrix=t.slice(),this.computedMatrix=t.slice(),this.computedInverse=t.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}t.exports=function(t){return new p((t=t||{}).matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])};var d=p.prototype;d.recalcMatrix=function(t){var e=this._time,r=n.le(e,t),o=this.computedMatrix;if(!(r<0)){var s=this._components;if(r===e.length-1)for(var l=16*r,u=0;u<16;++u)o[u]=s[l++];else{var c=e[r+1]-e[r],h=(l=16*r,this.prevMatrix),p=!0;for(u=0;u<16;++u)h[u]=s[l++];var d=this.nextMatrix;for(u=0;u<16;++u)d[u]=s[l++],p=p&&h[u]===d[u];if(c<1e-6||p)for(u=0;u<16;++u)o[u]=h[u];else i(o,h,d,(t-e[r])/c)}var v=this.computedUp;v[0]=o[1],v[1]=o[5],v[2]=o[9],f(v,v);var g=this.computedInverse;a(g,o);var y=this.computedEye,m=g[15];y[0]=g[12]/m,y[1]=g[13]/m,y[2]=g[14]/m;var x=this.computedCenter,b=Math.exp(this.computedRadius[0]);for(u=0;u<3;++u)x[u]=y[u]-o[2+4*u]*b}},d.idle=function(t){if(!(t1&&n(t[o[c-2]],t[o[c-1]],u)<=0;)c-=1,o.pop();for(o.push(l),c=s.length;c>1&&n(t[s[c-2]],t[s[c-1]],u)>=0;)c-=1,s.pop();s.push(l)}r=new Array(s.length+o.length-2);for(var f=0,h=(i=0,o.length);i0;--p)r[f++]=s[p];return r};var n=r(417)[3]},6145:function(t,e,r){"use strict";t.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return"altKey"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),"shiftKey"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),"ctrlKey"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),"metaKey"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function u(t,s){var u=n.x(s),c=n.y(s);"buttons"in s&&(t=0|s.buttons),(t!==r||u!==i||c!==a||l(s))&&(r=0|t,i=u||0,a=c||0,e&&e(r,i,a,o))}function c(t){u(0,t)}function f(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function h(t){l(t)&&e&&e(r,i,a,o)}function p(t){0===n.buttons(t)?u(0,t):u(r,t)}function d(t){u(r|n.buttons(t),t)}function v(t){u(r&~n.buttons(t),t)}function g(){s||(s=!0,t.addEventListener("mousemove",p),t.addEventListener("mousedown",d),t.addEventListener("mouseup",v),t.addEventListener("mouseleave",c),t.addEventListener("mouseenter",c),t.addEventListener("mouseout",c),t.addEventListener("mouseover",c),t.addEventListener("blur",f),t.addEventListener("keyup",h),t.addEventListener("keydown",h),t.addEventListener("keypress",h),t!==window&&(window.addEventListener("blur",f),window.addEventListener("keyup",h),window.addEventListener("keydown",h),window.addEventListener("keypress",h)))}g();var y={element:t};return Object.defineProperties(y,{enabled:{get:function(){return s},set:function(e){e?g():s&&(s=!1,t.removeEventListener("mousemove",p),t.removeEventListener("mousedown",d),t.removeEventListener("mouseup",v),t.removeEventListener("mouseleave",c),t.removeEventListener("mouseenter",c),t.removeEventListener("mouseout",c),t.removeEventListener("mouseover",c),t.removeEventListener("blur",f),t.removeEventListener("keyup",h),t.removeEventListener("keydown",h),t.removeEventListener("keypress",h),t!==window&&(window.removeEventListener("blur",f),window.removeEventListener("keyup",h),window.removeEventListener("keydown",h),window.removeEventListener("keypress",h)))},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),y};var n=r(4110)},2565:function(t){var e={left:0,top:0};t.exports=function(t,r,n){r=r||t.currentTarget||t.srcElement,Array.isArray(n)||(n=[0,0]);var i,a=t.clientX||0,o=t.clientY||0,s=(i=r)===window||i===document||i===document.body?e:i.getBoundingClientRect();return n[0]=a-s.left,n[1]=o-s.top,n}},4110:function(t,e){"use strict";function r(t){return t.target||t.srcElement||window}e.buttons=function(t){if("object"==typeof t){if("buttons"in t)return t.buttons;if("which"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1< 0"),"function"!=typeof t.vertex&&e("Must specify vertex creation function"),"function"!=typeof t.cell&&e("Must specify cell creation function"),"function"!=typeof t.phase&&e("Must specify phase function");for(var o=t.getters||[],s=new Array(a),l=0;l=0?s[l]=!0:s[l]=!1;return function(t,e,r,a,o,s){var l=[s,o].join(",");return(0,i[l])(t,e,r,n.mallocUint32,n.freeUint32)}(t.vertex,t.cell,t.phase,0,r,s)};var i={"false,0,1":function(t,e,r,n,i){return function(a,o,s,l){var u,c=0|a.shape[0],f=0|a.shape[1],h=a.data,p=0|a.offset,d=0|a.stride[0],v=0|a.stride[1],g=p,y=0|-d,m=0,x=0|-v,b=0,_=-d-v|0,w=0,T=0|d,A=v-d*c|0,k=0,M=0,S=0,E=2*c|0,L=n(E),C=n(E),P=0,O=0,I=-1,D=-1,z=0,R=0|-c,F=0|c,B=0,N=-c-1|0,j=c-1|0,U=0,V=0,H=0;for(k=0;k0){if(M=1,L[P++]=r(h[g],o,s,l),g+=T,c>0)for(k=1,u=h[g],O=L[P]=r(u,o,s,l),z=L[P+I],B=L[P+R],U=L[P+N],O===z&&O===B&&O===U||(m=h[g+y],b=h[g+x],w=h[g+_],t(k,M,u,m,b,w,O,z,B,U,o,s,l),V=C[P]=S++),P+=1,g+=T,k=2;k0)for(k=1,u=h[g],O=L[P]=r(u,o,s,l),z=L[P+I],B=L[P+R],U=L[P+N],O===z&&O===B&&O===U||(m=h[g+y],b=h[g+x],w=h[g+_],t(k,M,u,m,b,w,O,z,B,U,o,s,l),V=C[P]=S++,U!==B&&e(C[P+R],V,b,w,B,U,o,s,l)),P+=1,g+=T,k=2;k0){if(k=1,L[P++]=r(h[g],o,s,l),g+=T,f>0)for(M=1,u=h[g],O=L[P]=r(u,o,s,l),B=L[P+R],z=L[P+I],U=L[P+N],O===B&&O===z&&O===U||(m=h[g+y],b=h[g+x],w=h[g+_],t(k,M,u,m,b,w,O,B,z,U,o,s,l),V=C[P]=S++),P+=1,g+=T,M=2;M0)for(M=1,u=h[g],O=L[P]=r(u,o,s,l),B=L[P+R],z=L[P+I],U=L[P+N],O===B&&O===z&&O===U||(m=h[g+y],b=h[g+x],w=h[g+_],t(k,M,u,m,b,w,O,B,z,U,o,s,l),V=C[P]=S++,U!==B&&e(C[P+R],V,w,m,U,B,o,s,l)),P+=1,g+=T,M=2;M2&&a[1]>2&&n(i.pick(-1,-1).lo(1,1).hi(a[0]-2,a[1]-2),t.pick(-1,-1,0).lo(1,1).hi(a[0]-2,a[1]-2),t.pick(-1,-1,1).lo(1,1).hi(a[0]-2,a[1]-2)),a[1]>2&&(r(i.pick(0,-1).lo(1).hi(a[1]-2),t.pick(0,-1,1).lo(1).hi(a[1]-2)),e(t.pick(0,-1,0).lo(1).hi(a[1]-2))),a[1]>2&&(r(i.pick(a[0]-1,-1).lo(1).hi(a[1]-2),t.pick(a[0]-1,-1,1).lo(1).hi(a[1]-2)),e(t.pick(a[0]-1,-1,0).lo(1).hi(a[1]-2))),a[0]>2&&(r(i.pick(-1,0).lo(1).hi(a[0]-2),t.pick(-1,0,0).lo(1).hi(a[0]-2)),e(t.pick(-1,0,1).lo(1).hi(a[0]-2))),a[0]>2&&(r(i.pick(-1,a[1]-1).lo(1).hi(a[0]-2),t.pick(-1,a[1]-1,0).lo(1).hi(a[0]-2)),e(t.pick(-1,a[1]-1,1).lo(1).hi(a[0]-2))),t.set(0,0,0,0),t.set(0,0,1,0),t.set(a[0]-1,0,0,0),t.set(a[0]-1,0,1,0),t.set(0,a[1]-1,0,0),t.set(0,a[1]-1,1,0),t.set(a[0]-1,a[1]-1,0,0),t.set(a[0]-1,a[1]-1,1,0),t}}t.exports=function(t,e,r){return Array.isArray(r)||(r=n(e.dimension,"string"==typeof r?r:"clamp")),0===e.size?t:0===e.dimension?(t.set(0),t):function(t){var e=t.join();if(a=c[e])return a;for(var r=t.length,n=[f,h],i=1;i<=r;++i)n.push(p(i));var a=d.apply(void 0,n);return c[e]=a,a}(r)(t,e)}},3581:function(t){"use strict";function e(t,e){var r=Math.floor(e),n=e-r,i=0<=r&&r0;){x<64?(l=x,x=0):(l=64,x-=64);for(var b=0|t[1];b>0;){b<64?(u=b,b=0):(u=64,b-=64),n=y+x*f+b*h,o=m+x*d+b*v;var _=0,w=0,T=0,A=p,k=f-c*p,M=h-l*f,S=g,E=d-c*g,L=v-l*d;for(T=0;T0;){v<64?(l=v,v=0):(l=64,v-=64);for(var g=0|t[0];g>0;){g<64?(s=g,g=0):(s=64,g-=64),n=p+v*c+g*u,o=d+v*h+g*f;var y=0,m=0,x=c,b=u-l*c,_=h,w=f-l*h;for(m=0;m0;){m<64?(u=m,m=0):(u=64,m-=64);for(var x=0|t[0];x>0;){x<64?(s=x,x=0):(s=64,x-=64);for(var b=0|t[1];b>0;){b<64?(l=b,b=0):(l=64,b-=64),n=g+m*h+x*c+b*f,o=y+m*v+x*p+b*d;var _=0,w=0,T=0,A=h,k=c-u*h,M=f-s*c,S=v,E=p-u*v,L=d-s*p;for(T=0;Tr;){y=0,m=v-o;e:for(g=0;gb)break e;m+=f,y+=h}for(y=v,m=v-o,g=0;g>1,q=H-j,G=H+j,Y=U,W=q,Z=H,X=G,J=V,K=i+1,$=a-1,Q=!0,tt=0,et=0,rt=0,nt=f,it=e(nt),at=e(nt);k=l*Y,M=l*W,N=s;t:for(A=0;A0){g=Y,Y=W,W=g;break t}if(rt<0)break t;N+=p}k=l*X,M=l*J,N=s;t:for(A=0;A0){g=X,X=J,J=g;break t}if(rt<0)break t;N+=p}k=l*Y,M=l*Z,N=s;t:for(A=0;A0){g=Y,Y=Z,Z=g;break t}if(rt<0)break t;N+=p}k=l*W,M=l*Z,N=s;t:for(A=0;A0){g=W,W=Z,Z=g;break t}if(rt<0)break t;N+=p}k=l*Y,M=l*X,N=s;t:for(A=0;A0){g=Y,Y=X,X=g;break t}if(rt<0)break t;N+=p}k=l*Z,M=l*X,N=s;t:for(A=0;A0){g=Z,Z=X,X=g;break t}if(rt<0)break t;N+=p}k=l*W,M=l*J,N=s;t:for(A=0;A0){g=W,W=J,J=g;break t}if(rt<0)break t;N+=p}k=l*W,M=l*Z,N=s;t:for(A=0;A0){g=W,W=Z,Z=g;break t}if(rt<0)break t;N+=p}k=l*X,M=l*J,N=s;t:for(A=0;A0){g=X,X=J,J=g;break t}if(rt<0)break t;N+=p}for(k=l*Y,M=l*W,S=l*Z,E=l*X,L=l*J,C=l*U,P=l*H,O=l*V,B=0,N=s,A=0;A0)){if(rt<0){for(k=l*b,M=l*K,S=l*$,N=s,A=0;A0)for(;;){for(_=s+$*l,B=0,A=0;A0)){for(_=s+$*l,B=0,A=0;AV){t:for(;;){for(_=s+K*l,B=0,N=s,A=0;A1&&n?s(r,n[0],n[1]):s(r)}(t,e,l);return n(l,u)}},8729:function(t,e,r){"use strict";var n=r(8139),i={};t.exports=function(t){var e=t.order,r=t.dtype,a=[e,r].join(":"),o=i[a];return o||(i[a]=o=n(e,r)),o(t),t}},5050:function(t,e,r){var n=r(4780),i="undefined"!=typeof Float64Array;function a(t,e){return t[0]-e[0]}function o(){var t,e=this.stride,r=new Array(e.length);for(t=0;t=0&&(e+=a*(r=0|t),i-=r),new n(this.data,i,a,e)},i.step=function(t){var e=this.shape[0],r=this.stride[0],i=this.offset,a=0,o=Math.ceil;return"number"==typeof t&&((a=0|t)<0?(i+=r*(e-1),e=o(-e/a)):e=o(e/a),r*=a),new n(this.data,e,r,i)},i.transpose=function(t){t=void 0===t?0:0|t;var e=this.shape,r=this.stride;return new n(this.data,e[t],r[t],this.offset)},i.pick=function(t){var r=[],n=[],i=this.offset;return"number"==typeof t&&t>=0?i=i+this.stride[0]*t|0:(r.push(this.shape[0]),n.push(this.stride[0])),(0,e[r.length+1])(this.data,r,n,i)},function(t,e,r,i){return new n(t,e[0],r[0],i)}},2:function(t,e,r){function n(t,e,r,n,i,a){this.data=t,this.shape=[e,r],this.stride=[n,i],this.offset=0|a}var i=n.prototype;return i.dtype=t,i.dimension=2,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(i,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),i.set=function(e,r,n){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r,n):this.data[this.offset+this.stride[0]*e+this.stride[1]*r]=n},i.get=function(e,r){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r):this.data[this.offset+this.stride[0]*e+this.stride[1]*r]},i.index=function(t,e){return this.offset+this.stride[0]*t+this.stride[1]*e},i.hi=function(t,e){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,this.stride[0],this.stride[1],this.offset)},i.lo=function(t,e){var r=this.offset,i=0,a=this.shape[0],o=this.shape[1],s=this.stride[0],l=this.stride[1];return"number"==typeof t&&t>=0&&(r+=s*(i=0|t),a-=i),"number"==typeof e&&e>=0&&(r+=l*(i=0|e),o-=i),new n(this.data,a,o,s,l,r)},i.step=function(t,e){var r=this.shape[0],i=this.shape[1],a=this.stride[0],o=this.stride[1],s=this.offset,l=0,u=Math.ceil;return"number"==typeof t&&((l=0|t)<0?(s+=a*(r-1),r=u(-r/l)):r=u(r/l),a*=l),"number"==typeof e&&((l=0|e)<0?(s+=o*(i-1),i=u(-i/l)):i=u(i/l),o*=l),new n(this.data,r,i,a,o,s)},i.transpose=function(t,e){t=void 0===t?0:0|t,e=void 0===e?1:0|e;var r=this.shape,i=this.stride;return new n(this.data,r[t],r[e],i[t],i[e],this.offset)},i.pick=function(t,r){var n=[],i=[],a=this.offset;return"number"==typeof t&&t>=0?a=a+this.stride[0]*t|0:(n.push(this.shape[0]),i.push(this.stride[0])),"number"==typeof r&&r>=0?a=a+this.stride[1]*r|0:(n.push(this.shape[1]),i.push(this.stride[1])),(0,e[n.length+1])(this.data,n,i,a)},function(t,e,r,i){return new n(t,e[0],e[1],r[0],r[1],i)}},3:function(t,e,r){function n(t,e,r,n,i,a,o,s){this.data=t,this.shape=[e,r,n],this.stride=[i,a,o],this.offset=0|s}var i=n.prototype;return i.dtype=t,i.dimension=3,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(i,"order",{get:function(){var t=Math.abs(this.stride[0]),e=Math.abs(this.stride[1]),r=Math.abs(this.stride[2]);return t>e?e>r?[2,1,0]:t>r?[1,2,0]:[1,0,2]:t>r?[2,0,1]:r>e?[0,1,2]:[0,2,1]}}),i.set=function(e,r,n,i){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n,i):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n]=i},i.get=function(e,r,n){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n]},i.index=function(t,e,r){return this.offset+this.stride[0]*t+this.stride[1]*e+this.stride[2]*r},i.hi=function(t,e,r){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,"number"!=typeof r||r<0?this.shape[2]:0|r,this.stride[0],this.stride[1],this.stride[2],this.offset)},i.lo=function(t,e,r){var i=this.offset,a=0,o=this.shape[0],s=this.shape[1],l=this.shape[2],u=this.stride[0],c=this.stride[1],f=this.stride[2];return"number"==typeof t&&t>=0&&(i+=u*(a=0|t),o-=a),"number"==typeof e&&e>=0&&(i+=c*(a=0|e),s-=a),"number"==typeof r&&r>=0&&(i+=f*(a=0|r),l-=a),new n(this.data,o,s,l,u,c,f,i)},i.step=function(t,e,r){var i=this.shape[0],a=this.shape[1],o=this.shape[2],s=this.stride[0],l=this.stride[1],u=this.stride[2],c=this.offset,f=0,h=Math.ceil;return"number"==typeof t&&((f=0|t)<0?(c+=s*(i-1),i=h(-i/f)):i=h(i/f),s*=f),"number"==typeof e&&((f=0|e)<0?(c+=l*(a-1),a=h(-a/f)):a=h(a/f),l*=f),"number"==typeof r&&((f=0|r)<0?(c+=u*(o-1),o=h(-o/f)):o=h(o/f),u*=f),new n(this.data,i,a,o,s,l,u,c)},i.transpose=function(t,e,r){t=void 0===t?0:0|t,e=void 0===e?1:0|e,r=void 0===r?2:0|r;var i=this.shape,a=this.stride;return new n(this.data,i[t],i[e],i[r],a[t],a[e],a[r],this.offset)},i.pick=function(t,r,n){var i=[],a=[],o=this.offset;return"number"==typeof t&&t>=0?o=o+this.stride[0]*t|0:(i.push(this.shape[0]),a.push(this.stride[0])),"number"==typeof r&&r>=0?o=o+this.stride[1]*r|0:(i.push(this.shape[1]),a.push(this.stride[1])),"number"==typeof n&&n>=0?o=o+this.stride[2]*n|0:(i.push(this.shape[2]),a.push(this.stride[2])),(0,e[i.length+1])(this.data,i,a,o)},function(t,e,r,i){return new n(t,e[0],e[1],e[2],r[0],r[1],r[2],i)}},4:function(t,e,r){function n(t,e,r,n,i,a,o,s,l,u){this.data=t,this.shape=[e,r,n,i],this.stride=[a,o,s,l],this.offset=0|u}var i=n.prototype;return i.dtype=t,i.dimension=4,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(i,"order",{get:r}),i.set=function(e,r,n,i,a){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i,a):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i]=a},i.get=function(e,r,n,i){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i]},i.index=function(t,e,r,n){return this.offset+this.stride[0]*t+this.stride[1]*e+this.stride[2]*r+this.stride[3]*n},i.hi=function(t,e,r,i){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,"number"!=typeof r||r<0?this.shape[2]:0|r,"number"!=typeof i||i<0?this.shape[3]:0|i,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},i.lo=function(t,e,r,i){var a=this.offset,o=0,s=this.shape[0],l=this.shape[1],u=this.shape[2],c=this.shape[3],f=this.stride[0],h=this.stride[1],p=this.stride[2],d=this.stride[3];return"number"==typeof t&&t>=0&&(a+=f*(o=0|t),s-=o),"number"==typeof e&&e>=0&&(a+=h*(o=0|e),l-=o),"number"==typeof r&&r>=0&&(a+=p*(o=0|r),u-=o),"number"==typeof i&&i>=0&&(a+=d*(o=0|i),c-=o),new n(this.data,s,l,u,c,f,h,p,d,a)},i.step=function(t,e,r,i){var a=this.shape[0],o=this.shape[1],s=this.shape[2],l=this.shape[3],u=this.stride[0],c=this.stride[1],f=this.stride[2],h=this.stride[3],p=this.offset,d=0,v=Math.ceil;return"number"==typeof t&&((d=0|t)<0?(p+=u*(a-1),a=v(-a/d)):a=v(a/d),u*=d),"number"==typeof e&&((d=0|e)<0?(p+=c*(o-1),o=v(-o/d)):o=v(o/d),c*=d),"number"==typeof r&&((d=0|r)<0?(p+=f*(s-1),s=v(-s/d)):s=v(s/d),f*=d),"number"==typeof i&&((d=0|i)<0?(p+=h*(l-1),l=v(-l/d)):l=v(l/d),h*=d),new n(this.data,a,o,s,l,u,c,f,h,p)},i.transpose=function(t,e,r,i){t=void 0===t?0:0|t,e=void 0===e?1:0|e,r=void 0===r?2:0|r,i=void 0===i?3:0|i;var a=this.shape,o=this.stride;return new n(this.data,a[t],a[e],a[r],a[i],o[t],o[e],o[r],o[i],this.offset)},i.pick=function(t,r,n,i){var a=[],o=[],s=this.offset;return"number"==typeof t&&t>=0?s=s+this.stride[0]*t|0:(a.push(this.shape[0]),o.push(this.stride[0])),"number"==typeof r&&r>=0?s=s+this.stride[1]*r|0:(a.push(this.shape[1]),o.push(this.stride[1])),"number"==typeof n&&n>=0?s=s+this.stride[2]*n|0:(a.push(this.shape[2]),o.push(this.stride[2])),"number"==typeof i&&i>=0?s=s+this.stride[3]*i|0:(a.push(this.shape[3]),o.push(this.stride[3])),(0,e[a.length+1])(this.data,a,o,s)},function(t,e,r,i){return new n(t,e[0],e[1],e[2],e[3],r[0],r[1],r[2],r[3],i)}},5:function(t,e,r){function n(t,e,r,n,i,a,o,s,l,u,c,f){this.data=t,this.shape=[e,r,n,i,a],this.stride=[o,s,l,u,c],this.offset=0|f}var i=n.prototype;return i.dtype=t,i.dimension=5,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(i,"order",{get:r}),i.set=function(e,r,n,i,a,o){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a,o):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a]=o},i.get=function(e,r,n,i,a){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a]},i.index=function(t,e,r,n,i){return this.offset+this.stride[0]*t+this.stride[1]*e+this.stride[2]*r+this.stride[3]*n+this.stride[4]*i},i.hi=function(t,e,r,i,a){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,"number"!=typeof r||r<0?this.shape[2]:0|r,"number"!=typeof i||i<0?this.shape[3]:0|i,"number"!=typeof a||a<0?this.shape[4]:0|a,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},i.lo=function(t,e,r,i,a){var o=this.offset,s=0,l=this.shape[0],u=this.shape[1],c=this.shape[2],f=this.shape[3],h=this.shape[4],p=this.stride[0],d=this.stride[1],v=this.stride[2],g=this.stride[3],y=this.stride[4];return"number"==typeof t&&t>=0&&(o+=p*(s=0|t),l-=s),"number"==typeof e&&e>=0&&(o+=d*(s=0|e),u-=s),"number"==typeof r&&r>=0&&(o+=v*(s=0|r),c-=s),"number"==typeof i&&i>=0&&(o+=g*(s=0|i),f-=s),"number"==typeof a&&a>=0&&(o+=y*(s=0|a),h-=s),new n(this.data,l,u,c,f,h,p,d,v,g,y,o)},i.step=function(t,e,r,i,a){var o=this.shape[0],s=this.shape[1],l=this.shape[2],u=this.shape[3],c=this.shape[4],f=this.stride[0],h=this.stride[1],p=this.stride[2],d=this.stride[3],v=this.stride[4],g=this.offset,y=0,m=Math.ceil;return"number"==typeof t&&((y=0|t)<0?(g+=f*(o-1),o=m(-o/y)):o=m(o/y),f*=y),"number"==typeof e&&((y=0|e)<0?(g+=h*(s-1),s=m(-s/y)):s=m(s/y),h*=y),"number"==typeof r&&((y=0|r)<0?(g+=p*(l-1),l=m(-l/y)):l=m(l/y),p*=y),"number"==typeof i&&((y=0|i)<0?(g+=d*(u-1),u=m(-u/y)):u=m(u/y),d*=y),"number"==typeof a&&((y=0|a)<0?(g+=v*(c-1),c=m(-c/y)):c=m(c/y),v*=y),new n(this.data,o,s,l,u,c,f,h,p,d,v,g)},i.transpose=function(t,e,r,i,a){t=void 0===t?0:0|t,e=void 0===e?1:0|e,r=void 0===r?2:0|r,i=void 0===i?3:0|i,a=void 0===a?4:0|a;var o=this.shape,s=this.stride;return new n(this.data,o[t],o[e],o[r],o[i],o[a],s[t],s[e],s[r],s[i],s[a],this.offset)},i.pick=function(t,r,n,i,a){var o=[],s=[],l=this.offset;return"number"==typeof t&&t>=0?l=l+this.stride[0]*t|0:(o.push(this.shape[0]),s.push(this.stride[0])),"number"==typeof r&&r>=0?l=l+this.stride[1]*r|0:(o.push(this.shape[1]),s.push(this.stride[1])),"number"==typeof n&&n>=0?l=l+this.stride[2]*n|0:(o.push(this.shape[2]),s.push(this.stride[2])),"number"==typeof i&&i>=0?l=l+this.stride[3]*i|0:(o.push(this.shape[3]),s.push(this.stride[3])),"number"==typeof a&&a>=0?l=l+this.stride[4]*a|0:(o.push(this.shape[4]),s.push(this.stride[4])),(0,e[o.length+1])(this.data,o,s,l)},function(t,e,r,i){return new n(t,e[0],e[1],e[2],e[3],e[4],r[0],r[1],r[2],r[3],r[4],i)}}};function l(t,e){var r=-1===e?"T":String(e),n=s[r];return-1===e?n(t):0===e?n(t,u[t][0]):n(t,u[t],o)}var u={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};t.exports=function(t,e,r,a){if(void 0===t)return(0,u.array[0])([]);"number"==typeof t&&(t=[t]),void 0===e&&(e=[t.length]);var o=e.length;if(void 0===r){r=new Array(o);for(var s=o-1,c=1;s>=0;--s)r[s]=c,c*=e[s]}if(void 0===a)for(a=0,s=0;s>>0;t.exports=function(t,e){if(isNaN(t)||isNaN(e))return NaN;if(t===e)return t;if(0===t)return e<0?-i:i;var r=n.hi(t),o=n.lo(t);return e>t==t>0?o===a?(r+=1,o=0):o+=1:0===o?(o=a,r-=1):o-=1,n.pack(o,r)}},115:function(t,e){e.vertexNormals=function(t,e,r){for(var n=e.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;oa){var b=i[u],_=1/Math.sqrt(g*m);for(x=0;x<3;++x){var w=(x+1)%3,T=(x+2)%3;b[x]+=_*(y[w]*v[T]-y[T]*v[w])}}}for(o=0;oa)for(_=1/Math.sqrt(A),x=0;x<3;++x)b[x]*=_;else for(x=0;x<3;++x)b[x]=0}return i},e.faceNormals=function(t,e,r){for(var n=t.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;oa?1/Math.sqrt(p):0,u=0;u<3;++u)h[u]*=p;i[o]=h}return i}},567:function(t){"use strict";t.exports=function(t,e,r,n,i,a,o,s,l,u){var c=e+a+u;if(f>0){var f=Math.sqrt(c+1);t[0]=.5*(o-l)/f,t[1]=.5*(s-n)/f,t[2]=.5*(r-a)/f,t[3]=.5*f}else{var h=Math.max(e,a,u);f=Math.sqrt(2*h-c+1),e>=h?(t[0]=.5*f,t[1]=.5*(i+r)/f,t[2]=.5*(s+n)/f,t[3]=.5*(o-l)/f):a>=h?(t[0]=.5*(r+i)/f,t[1]=.5*f,t[2]=.5*(l+o)/f,t[3]=.5*(s-n)/f):(t[0]=.5*(n+s)/f,t[1]=.5*(o+l)/f,t[2]=.5*f,t[3]=.5*(r-i)/f)}return t}},7774:function(t,e,r){"use strict";t.exports=function(t){var e=(t=t||{}).center||[0,0,0],r=t.rotation||[0,0,0,1],n=t.radius||1;e=[].slice.call(e,0,3),c(r=[].slice.call(r,0,4),r);var i=new f(r,e,Math.log(n));return i.setDistanceLimits(t.zoomMin,t.zoomMax),("eye"in t||"up"in t)&&i.lookAt(0,t.eye,t.center,t.up),i};var n=r(8444),i=r(3012),a=r(5950),o=r(7437),s=r(567);function l(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function u(t,e,r,n){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2)+Math.pow(n,2))}function c(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=u(r,n,i,a);o>1e-6?(t[0]=r/o,t[1]=n/o,t[2]=i/o,t[3]=a/o):(t[0]=t[1]=t[2]=0,t[3]=1)}function f(t,e,r){this.radius=n([r]),this.center=n(e),this.rotation=n(t),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var h=f.prototype;h.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},h.recalcMatrix=function(t){this.radius.curve(t),this.center.curve(t),this.rotation.curve(t);var e=this.computedRotation;c(e,e);var r=this.computedMatrix;a(r,e);var n=this.computedCenter,i=this.computedEye,o=this.computedUp,s=Math.exp(this.computedRadius[0]);i[0]=n[0]+s*r[2],i[1]=n[1]+s*r[6],i[2]=n[2]+s*r[10],o[0]=r[1],o[1]=r[5],o[2]=r[9];for(var l=0;l<3;++l){for(var u=0,f=0;f<3;++f)u+=r[l+4*f]*i[f];r[12+l]=-u}},h.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r},h.idle=function(t){this.center.idle(t),this.radius.idle(t),this.rotation.idle(t)},h.flush=function(t){this.center.flush(t),this.radius.flush(t),this.rotation.flush(t)},h.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=i[1],o=i[5],s=i[9],u=l(a,o,s);a/=u,o/=u,s/=u;var c=i[0],f=i[4],h=i[8],p=c*a+f*o+h*s,d=l(c-=a*p,f-=o*p,h-=s*p);c/=d,f/=d,h/=d;var v=i[2],g=i[6],y=i[10],m=v*a+g*o+y*s,x=v*c+g*f+y*h,b=l(v-=m*a+x*c,g-=m*o+x*f,y-=m*s+x*h);v/=b,g/=b,y/=b;var _=c*e+a*r,w=f*e+o*r,T=h*e+s*r;this.center.move(t,_,w,T);var A=Math.exp(this.computedRadius[0]);A=Math.max(1e-4,A+n),this.radius.set(t,Math.log(A))},h.rotate=function(t,e,r,n){this.recalcMatrix(t),e=e||0,r=r||0;var i=this.computedMatrix,a=i[0],o=i[4],s=i[8],c=i[1],f=i[5],h=i[9],p=i[2],d=i[6],v=i[10],g=e*a+r*c,y=e*o+r*f,m=e*s+r*h,x=-(d*m-v*y),b=-(v*g-p*m),_=-(p*y-d*g),w=Math.sqrt(Math.max(0,1-Math.pow(x,2)-Math.pow(b,2)-Math.pow(_,2))),T=u(x,b,_,w);T>1e-6?(x/=T,b/=T,_/=T,w/=T):(x=b=_=0,w=1);var A=this.computedRotation,k=A[0],M=A[1],S=A[2],E=A[3],L=k*w+E*x+M*_-S*b,C=M*w+E*b+S*x-k*_,P=S*w+E*_+k*b-M*x,O=E*w-k*x-M*b-S*_;if(n){x=p,b=d,_=v;var I=Math.sin(n)/l(x,b,_);x*=I,b*=I,_*=I,O=O*(w=Math.cos(e))-(L=L*w+O*x+C*_-P*b)*x-(C=C*w+O*b+P*x-L*_)*b-(P=P*w+O*_+L*b-C*x)*_}var D=u(L,C,P,O);D>1e-6?(L/=D,C/=D,P/=D,O/=D):(L=C=P=0,O=1),this.rotation.set(t,L,C,P,O)},h.lookAt=function(t,e,r,n){this.recalcMatrix(t),r=r||this.computedCenter,e=e||this.computedEye,n=n||this.computedUp;var a=this.computedMatrix;i(a,e,r,n);var o=this.computedRotation;s(o,a[0],a[1],a[2],a[4],a[5],a[6],a[8],a[9],a[10]),c(o,o),this.rotation.set(t,o[0],o[1],o[2],o[3]);for(var l=0,u=0;u<3;++u)l+=Math.pow(r[u]-e[u],2);this.radius.set(t,.5*Math.log(Math.max(l,1e-6))),this.center.set(t,r[0],r[1],r[2])},h.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},h.setMatrix=function(t,e){var r=this.computedRotation;s(r,e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]),c(r,r),this.rotation.set(t,r[0],r[1],r[2],r[3]);var n=this.computedMatrix;o(n,e);var i=n[15];if(Math.abs(i)>1e-6){var a=n[12]/i,l=n[13]/i,u=n[14]/i;this.recalcMatrix(t);var f=Math.exp(this.computedRadius[0]);this.center.set(t,a-n[2]*f,l-n[6]*f,u-n[10]*f),this.radius.idle(t)}else this.center.idle(t),this.radius.idle(t)},h.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},h.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},h.getDistanceLimits=function(t){var e=this.radius.bounds;return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},h.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},h.fromJSON=function(t){var e=this.lastT(),r=t.center;r&&this.center.set(e,r[0],r[1],r[2]);var n=t.rotation;n&&this.rotation.set(e,n[0],n[1],n[2],n[3]);var i=t.distance;i&&i>0&&this.radius.set(e,Math.log(i)),this.setDistanceLimits(t.zoomMin,t.zoomMax)}},4930:function(t,e,r){"use strict";var n=r(6184);t.exports=function(t,e,r){return n(r=void 0!==r?r+"":" ",e)+t}},4405:function(t){t.exports=function(t,e){e||(e=[0,""]),t=String(t);var r=parseFloat(t,10);return e[0]=r,e[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",e}},4166:function(t,e,r){"use strict";t.exports=function(t,e){for(var r=0|e.length,i=t.length,a=[new Array(r),new Array(r)],o=0;o0){o=a[c][r][0],l=c;break}s=o[1^l];for(var f=0;f<2;++f)for(var h=a[f][r],p=0;p0&&(o=d,s=v,l=f)}return i||o&&u(o,l),s}function f(t,r){var i=a[r][t][0],o=[t];u(i,r);for(var s=i[1^r];;){for(;s!==t;)o.push(s),s=c(o[o.length-2],s,!1);if(a[0][t].length+a[1][t].length===0)break;var l=o[o.length-1],f=t,h=o[1],p=c(l,f,!0);if(n(e[l],e[f],e[h],e[p])<0)break;o.push(t),s=c(l,f)}return o}function h(t,e){return e[1]===e[e.length-1]}for(o=0;o0;){a[0][o].length;var v=f(o,p);h(0,v)?d.push.apply(d,v):(d.length>0&&l.push(d),d=v)}d.length>0&&l.push(d)}return l};var n=r(9398)},3959:function(t,e,r){"use strict";t.exports=function(t,e){for(var r=n(t,e.length),i=new Array(e.length),a=new Array(e.length),o=[],s=0;s0;){i[p=o.pop()]=!1;var u=r[p];for(s=0;s0})).length,g=new Array(v),y=new Array(v);for(p=0;p0;){var B=R.pop(),N=E[B];l(N,function(t,e){return t-e});var j,U=N.length,V=F[B];for(0===V&&(j=[H=d[B]]),p=0;p=0||(F[q]=1^V,R.push(q),0===V&&(z(H=d[q])||(H.reverse(),j.push(H))))}0===V&&r.push(j)}return r};var n=r(8348),i=r(4166),a=r(211),o=r(9660),s=r(9662),l=r(1215),u=r(3959);function c(t,e){for(var r=new Array(t),n=0;n0&&e[i]===r[0]))return 1;a=t[i-1]}for(var s=1;a;){var l=a.key,u=n(r,l[0],l[1]);if(l[0][0]0))return 0;s=-1,a=a.right}else if(u>0)a=a.left;else{if(!(u<0))return 0;s=1,a=a.right}}return s}}(y.slabs,y.coordinates);return 0===a.length?m:function(t,e){return function(r){return t(r[0],r[1])?0:e(r)}}(l(a),m)};var n=r(417)[3],i=r(4385),a=r(9014),o=r(5070);function s(){return!0}function l(t){for(var e={},r=0;r=u?(A=1,m=u+2*h+d):m=h*(A=-h/u)+d):(A=0,p>=0?(k=0,m=d):-p>=f?(k=1,m=f+2*p+d):m=p*(k=-p/f)+d);else if(k<0)k=0,h>=0?(A=0,m=d):-h>=u?(A=1,m=u+2*h+d):m=h*(A=-h/u)+d;else{var M=1/T;m=(A*=M)*(u*A+c*(k*=M)+2*h)+k*(c*A+f*k+2*p)+d}else A<0?(b=f+p)>(x=c+h)?(_=b-x)>=(w=u-2*c+f)?(A=1,k=0,m=u+2*h+d):m=(A=_/w)*(u*A+c*(k=1-A)+2*h)+k*(c*A+f*k+2*p)+d:(A=0,b<=0?(k=1,m=f+2*p+d):p>=0?(k=0,m=d):m=p*(k=-p/f)+d):k<0?(b=u+h)>(x=c+p)?(_=b-x)>=(w=u-2*c+f)?(k=1,A=0,m=f+2*p+d):m=(A=1-(k=_/w))*(u*A+c*k+2*h)+k*(c*A+f*k+2*p)+d:(k=0,b<=0?(A=1,m=u+2*h+d):h>=0?(A=0,m=d):m=h*(A=-h/u)+d):(_=f+p-c-h)<=0?(A=0,k=1,m=f+2*p+d):_>=(w=u-2*c+f)?(A=1,k=0,m=u+2*h+d):m=(A=_/w)*(u*A+c*(k=1-A)+2*h)+k*(c*A+f*k+2*p)+d;var S=1-A-k;for(l=0;l0){var u=t[r-1];if(0===n(s,u)&&a(u)!==l){r-=1;continue}}t[r++]=s}}return t.length=r,t}},6184:function(t){"use strict";var e,r="";t.exports=function(t,n){if("string"!=typeof t)throw new TypeError("expected a string");if(1===n)return t;if(2===n)return t+t;var i=t.length*n;if(e!==t||void 0===e)e=t,r="";else if(r.length>=i)return r.substr(0,i);for(;i>r.length&&n>1;)1&n&&(r+=t),n>>=1,t+=t;return r=(r+=t).substr(0,i)}},8161:function(t,e,r){t.exports=r.g.performance&&r.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},402:function(t){"use strict";t.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r;(l=(s=t[i])-((r=a+s)-a))&&(t[--n]=r,r=l)}var o=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],u=r[1]-n[1],c=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*u,v=o*l,g=o*s,y=i*u,m=i*l,x=a*s,b=c*(d-v)+f*(g-y)+p*(m-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(v))*Math.abs(c)+(Math.abs(g)+Math.abs(y))*Math.abs(f)+(Math.abs(m)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=c(t.length)),e.apply(void 0,t)}function v(t,e,r,n,i,a,o){return function(e,r,s,l,u){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,u)}for(var c=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);return!(s>0&&l>0||s<0&&l<0)&&(0!==a||0!==o||0!==s||0!==l||function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),u=r[i],c=n[i],f=Math.min(u,c);if(Math.max(u,c)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,u=e[2*l+1];if(u===a)return l;a>1,u=e[2*l+1];if(u===a)return l;a>1,u=e[2*l+1];if(u===a)return l;a0)-(t<0)},e.abs=function(t){var e=t>>31;return(t^e)-e},e.min=function(t,e){return e^(t^e)&-(t65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},e.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},e.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},e.countTrailingZeros=r,e.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,1+((t|=t>>>8)|t>>>16)},e.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},e.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var n=new Array(256);!function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|n[t>>>16&255]<<8|n[t>>>24&255]},e.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},e.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},e.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},e.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},e.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>r(t)+1}},6656:function(t,e,r){"use strict";var n=r(9392),i=r(9521);function a(t,e){var r=t.length,n=t.length-e.length,i=Math.min;if(n)return n;switch(r){case 0:return 0;case 1:return t[0]-e[0];case 2:return(s=t[0]+t[1]-e[0]-e[1])||i(t[0],t[1])-i(e[0],e[1]);case 3:var a=t[0]+t[1],o=e[0]+e[1];if(s=a+t[2]-(o+e[2]))return s;var s,l=i(t[0],t[1]),u=i(e[0],e[1]);return(s=i(l,t[2])-i(u,e[2]))||i(l+t[2],a)-i(u+e[2],o);default:var c=t.slice(0);c.sort();var f=e.slice(0);f.sort();for(var h=0;h>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function c(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[g],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>c&1&&u.push(i[c]);e.push(u)}return s(e)},e.skeleton=f,e.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=y(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=m(t);if(!(r>=0&&e0){var t=A[0];return g(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=A[t];return u[r]===e?t:(u[r]=-1/0,b(t),_(),u[r]=e,b((M+=1)-1))}function T(t){if(!c[t]){c[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),k[e]>=0&&w(k[e],v(e)),k[r]>=0&&w(k[r],v(r))}}var A=[],k=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||u[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=k[e],i=k[r];n!==i&&C.push([n,i])}}),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=r(417),i=r(6656)},6638:function(t,e,r){"use strict";t.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),u=n(r,a,o);if(l<0){if(u<=0)return l}else if(l>0){if(u>=0)return l}else if(u)return u;if(l=n(s,o,a),u=n(s,o,r),l<0){if(u<=0)return l}else if(l>0){if(u>=0)return l}else if(u)return u;return a[0]-s[0]};var n=r(417);function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),u=Math.min(e[0][1],e[1][1]),c=Math.max(e[0][1],e[1][1]);return lc?s-c:l-c}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=u(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=u(t.right,e))return l;t=t.left}}return r}function c(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=u(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var c=u(this.slabs[e-1],t);c&&(s?o(c.key,s)>0&&(s=c.key,i=c.value):(i=c.value,s=c.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},4670:function(t,e,r){"use strict";var n=r(9130),i=r(9662);function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&c<0){var f=o(s,c,l,i);r.push(f),n.push(f.slice())}c<0?n.push(l.slice()):c>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=c}return{positive:r,negative:n}},t.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&u<0)&&r.push(o(i,u,s,n)),u>=0&&r.push(s.slice()),n=u}return r},t.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&u<0)&&r.push(o(i,u,s,n)),u<=0&&r.push(s.slice()),n=u}return r}},8974:function(t,e,r){var n;!function(){"use strict";var i={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function a(t){return function(t,e){var r,n,o,s,l,u,c,f,h,p=1,d=t.length,v="";for(n=0;n=0),s.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,s.width?parseInt(s.width):0);break;case"e":r=s.precision?parseFloat(r).toExponential(s.precision):parseFloat(r).toExponential();break;case"f":r=s.precision?parseFloat(r).toFixed(s.precision):parseFloat(r);break;case"g":r=s.precision?String(Number(r.toPrecision(s.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}i.json.test(s.type)?v+=r:(!i.number.test(s.type)||f&&!s.sign?h="":(h=f?"+":"-",r=r.toString().replace(i.sign,"")),u=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",c=s.width-(h+r).length,l=s.width&&c>0?u.repeat(c):"",v+=s.align?h+r+l:"0"===u?h+l+r:l+h+r)}return v}(function(t){if(s[t])return s[t];for(var e,r=t,n=[],a=0;r;){if(null!==(e=i.text.exec(r)))n.push(e[0]);else if(null!==(e=i.modulo.exec(r)))n.push("%");else{if(null===(e=i.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(e[2]){a|=1;var o=[],l=e[2],u=[];if(null===(u=i.key.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(u[1]);""!==(l=l.substring(u[0].length));)if(null!==(u=i.key_access.exec(l)))o.push(u[1]);else{if(null===(u=i.index_access.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(u[1])}e[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:e[0],param_no:e[1],keys:e[2],sign:e[3],pad_char:e[4],align:e[5],width:e[6],precision:e[7],type:e[8]})}r=r.substring(e[0].length)}return s[t]=n}(t),arguments)}function o(t,e){return a.apply(null,[t].concat(e||[]))}var s=Object.create(null);e.sprintf=a,e.vsprintf=o,"undefined"!=typeof window&&(window.sprintf=a,window.vsprintf=o,void 0===(n=function(){return{sprintf:a,vsprintf:o}}.call(e,r,e,t))||(t.exports=n))}()},4162:function(t,e,r){"use strict";t.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,u,c,f,h){var p=(0|o)+(s<<1)+(l<<2)+(u<<3)|0;if(0!==p&&15!==p)switch(p){case 0:case 15:c.push([t-.5,e-.5]);break;case 1:c.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:c.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:c.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:c.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:c.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:c.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:c.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:c.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:c.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:c.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:c.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:c.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:c.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:c.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}},o={}},6946:function(t,e,r){"use strict";t.exports=function t(e,r,i){i=i||{};var a=o[e];a||(a=o[e]={" ":{data:new Float32Array(0),shape:.2}});var s=a[r];if(!s)if(r.length<=1||!/\d/.test(r))s=a[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(c),d=0,v=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var u=0;u<16;++u)this.computedMatrix[u]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),c=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,c+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(c);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],v=this.computedAngle[1],g=Math.cos(d),y=Math.sin(d),m=Math.cos(v),x=Math.sin(v),b=this.computedCenter,_=g*m,w=y*m,T=x,A=-g*x,k=-y*x,M=m,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=A*r[a]+k*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],O=E[9],I=E[2],D=E[6],z=E[10],R=P*z-O*D,F=O*I-C*z,B=C*D-P*I,N=u(R,F,B);for(R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B,a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){c=0;for(var j=0;j<3;++j)c+=E[a+4*j]*S[j];E[12+a]=-c}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,u=0;u<3;++u)i[4*u]=o[u],i[4*u+1]=s[u],i[4*u+2]=l[u];for(a(i,i,n,d),u=0;u<3;++u)o[u]=i[4*u],s[u]=i[4*u+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=u(a,o,s);a/=l,o/=l,s/=l;var c=i[0],f=i[4],h=i[8],p=c*a+f*o+h*s,d=u(c-=a*p,f-=o*p,h-=s*p),v=(c/=d)*e+a*r,g=(f/=d)*e+o*r,y=(h/=d)*e+s*r;this.center.move(t,v,g,y);var m=Math.exp(this.computedRadius[0]);m=Math.max(1e-4,m+n),this.radius.set(t,Math.log(m))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;"number"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),v=Math.max(h,p,d);h===v?(s=s<0?-1:1,l=f=0):d===v?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var g=u(s,l,f);s/=g,l/=g,f/=g}var y,m,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=u(x-=s*w,b-=l*w,_-=f*w),A=l*(_/=T)-f*(b/=T),k=f*(x/=T)-s*_,M=s*b-l*x,S=u(A,k,M);if(A/=S,k/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,O=E*A+L*k+C*M;y=R<0?-Math.PI/2:Math.PI/2,m=Math.atan2(O,P)}else{var I=e[2],D=e[6],z=e[10],R=I*s+D*l+z*f,F=I*x+D*b+z*_,B=I*A+D*k+z*M;y=Math.asin(c(R)),m=Math.atan2(B,F)}this.angle.jump(t,m,y),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=u(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=u(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,v=d[0],g=d[1],y=d[2],m=i*v+a*g+o*y,x=u(v-=m*i,g-=m*a,y-=m*o);if(!(x<.01&&(x=u(v=a*h-o*f,g=o*l-i*h,y=i*f-a*l))<1e-6)){v/=x,g/=x,y/=x,this.up.set(t,i,a,o),this.right.set(t,v,g,y),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*y-o*g,_=o*v-i*y,w=i*g-a*v,T=u(b,_,w),A=i*l+a*f+o*h,k=v*l+g*f+y*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(c(A)),E=Math.atan2(M,k),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var O=Math.abs(C+2*Math.PI-E),I=Math.abs(C-E),D=Math.abs(C-2*Math.PI-E);O0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function v(t){return new Uint16Array(p(2*t),0,t)}function g(t){return new Uint32Array(p(4*t),0,t)}function y(t){return new Int8Array(p(t),0,t)}function m(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function A(t){return l?new BigInt64Array(p(8*t),0,t):null}function k(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}e.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);c[r].push(t)}},e.freeUint8=e.freeUint16=e.freeUint32=e.freeBigUint64=e.freeInt8=e.freeInt16=e.freeInt32=e.freeBigInt64=e.freeFloat32=e.freeFloat=e.freeFloat64=e.freeDouble=e.freeUint8Clamped=e.freeDataView=function(t){h(t.buffer)},e.freeArrayBuffer=h,e.freeBuffer=function(t){f[n.log2(t.length)].push(t)},e.malloc=function(t,e){if(void 0===e||"arraybuffer"===e)return p(t);switch(e){case"uint8":return d(t);case"uint16":return v(t);case"uint32":return g(t);case"int8":return y(t);case"int16":return m(t);case"int32":return x(t);case"float":case"float32":return b(t);case"double":case"float64":return _(t);case"uint8_clamped":return w(t);case"bigint64":return A(t);case"biguint64":return T(t);case"buffer":return M(t);case"data":case"dataview":return k(t);default:return null}return null},e.mallocArrayBuffer=p,e.mallocUint8=d,e.mallocUint16=v,e.mallocUint32=g,e.mallocInt8=y,e.mallocInt16=m,e.mallocInt32=x,e.mallocFloat32=e.mallocFloat=b,e.mallocFloat64=e.mallocDouble=_,e.mallocUint8Clamped=w,e.mallocBigUint64=T,e.mallocBigInt64=A,e.mallocDataView=k,e.mallocBuffer=M,e.clearCache=function(){for(var t=0;t<32;++t)u.UINT8[t].length=0,u.UINT16[t].length=0,u.UINT32[t].length=0,u.INT8[t].length=0,u.INT16[t].length=0,u.INT32[t].length=0,u.FLOAT[t].length=0,u.DOUBLE[t].length=0,u.BIGUINT64[t].length=0,u.BIGINT64[t].length=0,u.UINT8C[t].length=0,c[t].length=0,f[t].length=0}},1731:function(t){"use strict";function e(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts)),r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+"px",n.font].filter(function(t){return t}).join(" "),r.textAlign="start",r.textBaseline="alphabetic",r.direction="ltr",w(function(t,e,r,n,a,o){r=r.replace(/\n/g,""),r=!0===o.breaklines?r.replace(/\/g,"\n"):r.replace(/\/g," ");var s="",l=[];for(T=0;T-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(F(),"?px "),M*=Math.pow(.75,l-s),n=n.replace("?px ",F())),k+=.25*L*(l-s)}if(!0===o.superscripts){var u=t.indexOf(d),f=r.indexOf(d),p=u>-1?parseInt(t[1+u]):0,v=f>-1?parseInt(r[1+f]):0;p!==v&&(n=n.replace(F(),"?px "),M*=Math.pow(.75,v-p),n=n.replace("?px ",F())),k-=.25*L*(v-p)}if(!0===o.bolds){var g=t.indexOf(c)>-1,m=r.indexOf(c)>-1;!g&&m&&(n=x?n.replace("italic ","italic bold "):"bold "+n),g&&!m&&(n=n.replace("bold ",""))}if(!0===o.italics){var x=t.indexOf(h)>-1,b=r.indexOf(h)>-1;!x&&b&&(n="italic "+n),x&&!b&&(n=n.replace("italic ",""))}e.font=n}for(w=0;w",a="",o=i.length,s=a.length,l=e[0]===d||e[0]===y,u=0,c=-s;u>-1&&-1!==(u=r.indexOf(i,u))&&-1!==(c=r.indexOf(a,u+o))&&!(c<=u);){for(var f=u;f=c)n[f]=null,r=r.substr(0,f)+" "+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=u+o,v=r.substr(p,c-p).indexOf(i);u=-1!==v?v:c+s}return n}function b(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function _(t,e,r,n){var i=b(t,n),a=function(t,e,r){for(var n=e.textAlign||"start",i=e.textBaseline||"alphabetic",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i})},has___:{value:x(function(e){var n=m(e);return n?r in n:t.indexOf(e)>=0})},set___:{value:x(function(n,i){var a,o=m(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this})},delete___:{value:x(function(n){var i,a,o=m(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0||(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,0))})}})};v.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),"function"==typeof r?function(){function n(){this instanceof v||b();var t,n=new r,i=void 0,a=!1;return t=e?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new v),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new v),i.set___(t,e)}else n.set(t,e);return this},Object.create(v.prototype,{get___:{value:x(function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)})},has___:{value:x(function(t){return n.has(t)||!!i&&i.has___(t)})},set___:{value:x(t)},delete___:{value:x(function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e})},permitHostObjects___:{value:x(function(t){if(t!==g)throw new Error("bogus call to permitHostObjects___");a=!0})}})}e&&"undefined"!=typeof Proxy&&(Proxy=void 0),n.prototype=v.prototype,t.exports=n,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():("undefined"!=typeof Proxy&&(Proxy=void 0),t.exports=v)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function y(t){return!(t.substr(0,8)==l&&"___"===t.substr(t.length-3))}function m(t){if(t!==Object(t))throw new TypeError("Not an object: "+t);var e=t[u];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,u,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function x(t){return t.prototype=null,Object.freeze(t)}function b(){p||"undefined"==typeof console||(p=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}}()},9222:function(t,e,r){var n=r(7178);t.exports=function(){var t={};return function(e){if(("object"!=typeof e||null===e)&&"function"!=typeof e)throw new Error("Weakmap-shim: Key must be object");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},7178:function(t){t.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,"valueOf",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},4037:function(t,e,r){var n=r(9222);t.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty("value")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return"value"in t(e)},delete:function(e){return delete t(e).value}}}},6183:function(t){"use strict";t.exports=function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],u=s;n|=0;var c=0,f=s;for(c=0;c=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}}.bind(void 0,{funcName:"zeroCrossings"}))},9584:function(t,e,r){"use strict";t.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=r(6183)},6601:function(){}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={id:n,loaded:!1,exports:{}};return t[n].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r(7386)}()},t.exports=n()},93952:function(t){"use strict";t.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}},94018:function(t){"use strict";t.exports=function(t,e){return{start:{valType:"any",editType:"calc"},end:{valType:"any",editType:"calc"},size:{valType:"any",editType:"calc"},editType:"calc"}}},94153:function(t,e,r){"use strict";var n=r(5159),i=r(80740).isArrayOrTypedArray;e.aggNums=function(t,r,a,o){var s,l;if((!o||o>a.length)&&(o=a.length),n(r)||(r=!1),i(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},94213:function(t,e,r){"use strict";var n=r(15181),i=r(26446),a=r(3071),o=r(88191),s=r(99603).readPaths,l=r(53812),u=l.getPathString,c=r(12367),f=r(5126).FROM_TL;t.exports=function(t,e,r,h){if(h.selectAll(".shape-label").remove(),r.label.text||r.label.texttemplate){var p;if(r.label.texttemplate){var d={};if("path"!==r.type){var v=i.getFromId(t,r.xref),g=i.getFromId(t,r.yref);for(var y in c){var m=c[y](r,v,g);void 0!==m&&(d[y]=m)}}p=n.texttemplateStringForShapes(r.label.texttemplate,{},t._fullLayout._d3locale,d)}else p=r.label.text;var x,b,_,w,T={"data-index":e},A=r.label.font,k=h.append("g").attr(T).classed("shape-label",!0).append("text").attr({"data-notex":1}).classed("shape-label-text",!0).text(p);if(r.path){var M=u(t,r),S=s(M,t);x=1/0,_=1/0,b=-1/0,w=-1/0;for(var E=0;E=t?e-n:n-e,-180/Math.PI*Math.atan2(i,a)}(x,_,b,w):0),k.call(function(e){return e.call(o.font,A).attr({}),a.convertToTspans(e,t),e});var U=function(t,e,r,n,i,a,o){var s,l,u,c,h=i.label.textposition,p=i.label.textangle,d=i.label.padding,v=i.type,g=Math.PI/180*a,y=Math.sin(g),m=Math.cos(g),x=i.label.xanchor,b=i.label.yanchor;if("line"===v){"start"===h?(s=t,l=e):"end"===h?(s=r,l=n):(s=(t+r)/2,l=(e+n)/2),"auto"===x&&(x="start"===h?"auto"===p?r>t?"left":rt?"right":rt?"right":rt?"left":r20&&e?208===t||1114===t?n=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==i.BOTTOMSTART.indexOf(t)?a=1:-1!==i.LEFTSTART.indexOf(t)?n=1:-1!==i.TOPSTART.indexOf(t)?a=-1:n=-1,[n,a]}(h,r,e),d=[l(t,e,[-p[0],-p[1]])],v=t.z.length,g=t.z[0].length,y=e.slice(),m=p.slice();for(c=0;c<1e4;c++){if(h>20?(h=i.CHOOSESADDLE[h][(p[0]||p[1])<0?0:1],t.crossings[f]=i.SADDLEREMAINDER[h]):delete t.crossings[f],!(p=i.NEWDELTA[h])){n.log("Found bad marching index:",h,e,t.level);break}d.push(l(t,e,p)),e[0]+=p[0],e[1]+=p[1],f=e.join(","),a(d[d.length-1],d[d.length-2],s,u)&&d.pop();var x=p[0]&&(e[0]<0||e[0]>g-2)||p[1]&&(e[1]<0||e[1]>v-2);if(e[0]===y[0]&&e[1]===y[1]&&p[0]===m[0]&&p[1]===m[1]||r&&x)break;h=t.crossings[f]}1e4===c&&n.log("Infinite loop in contour?");var b,_,w,T,A,k,M,S,E,L,C,P=a(d[0],d[d.length-1],s,u),O=0,I=.2*t.smoothing,D=[],z=0;for(c=1;c=z;c--)if((b=D[c])=z&&b+D[_]S&&E--,t.edgepaths[E]=C.concat(d,L));break}N||(t.edgepaths[S]=d.concat(L))}for(S=0;S=Math.min(O,I)&&w<=Math.max(O,I)?0:1/0}if(f=Math.min(D,z)&&T<=Math.max(D,z)?0:1/0}d=Math.sqrt(f*f+h*h),s=i[c]}}}else for(c=i.length-1;c>-1;c--)l=b[a=i[c]],u=_[a],f=m.c2p(l)-w,h=x.c2p(u)-T,(p=Math.sqrt(f*f+h*h))m&&(y=Math.max(y-1,1)),g._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(y,p),!v){var r;try{r=new MouseEvent("click",e)}catch(t){var n=f(e);(r=document.createEvent("MouseEvents")).initMouseEvent("click",e.bubbles,e.cancelable,e.view,e.detail,e.screenX,e.screenY,n[0],n[1],e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget)}d.dispatchEvent(r)}g._dragging=!1,g._dragged=!1}else g._dragged=!1}},l.coverSlip=c},95304:function(t,e,r){"use strict";var n=r(15181),i=r(69562),a=r(71467),o=r(10088);function s(t){return t.data.data.pid}e.findEntryWithLevel=function(t,r){var n;return r&&t.eachAfter(function(t){if(e.getPtId(t)===r)return n=t.copy()}),n||t},e.findEntryWithChild=function(t,r){var n;return t.eachAfter(function(t){for(var i=t.children||[],a=0;a0)},e.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},e.isHeader=function(t,r){return!(e.isLeaf(t)||t.depth===r._maxDepth-1)},e.getParent=function(t,r){return e.findEntryWithLevel(t,s(r))},e.listPath=function(t,r){var n=t.parent;if(!n)return[];var i=r?[n.data[r]]:[n];return e.listPath(n,r).concat(i)},e.getPath=function(t){return e.listPath(t,"label").join("/")+"/"},e.formatValue=o.formatPieValue,e.formatPercent=function(t,e){var r=n.formatPercent(t,0);return"0%"===r&&(r=o.formatPiePercent(t,e)),r}},95495:function(t,e,r){"use strict";var n=r(79335),i=r(38532).rb,a=r(28209),o=r(49061),s=r(8357).extendFlat;t.exports=s({lon:o.lon,lat:o.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:o.text,hovertext:o.hovertext,hoverinfo:s({},a.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:i(),showlegend:s({},a.showlegend,{dflt:!1})},n("",{cLetter:"z",editTypeOverride:"calc"}))},95663:function(t,e,r){"use strict";var n=r(10097),i=r(15181).ensureArray;function a(t,e,r){var n=-.5*r[0]+1.5*e[0],i=-.5*r[1]+1.5*e[1];return[(2*n+t[0])/3,(2*i+t[1])/3]}t.exports=function(t,e,r,o,s,l){var u,c,f,h,p,d,v,g,y,m,x=r[0].length,b=r.length,_=s?3*x-2:x,w=l?3*b-2:b;for(t=i(t,w),e=i(e,w),f=0;f1&&(c=v[m-1],h=g[m-1],d=y[m-1]),e=0;ec?"-":"+")+"x")).replace("y",(f>h?"-":"+")+"y")).replace("z",(p>d?"-":"+")+"z");var L=function(){m=0,M=[],S=[],E=[]};(!m||m=0;)e+=r[n].value;else e=1;t.value=e}function l(t,e){var r,n,i,a,o,s=new h(t),l=+t.value&&(s.value=t.value),c=[s];for(null==e&&(e=u);r=c.pop();)if(l&&(r.value=+r.data.value),(i=e(r.data))&&(o=i.length))for(r.children=new Array(o),a=o-1;a>=0;--a)c.push(n=r.children[a]=new h(i[a])),n.parent=r,n.depth=r.depth+1;return s.eachBefore(f)}function u(t){return t.children}function c(t){t.data=t.data.data}function f(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function h(t){this.data=t,this.depth=this.height=0,this.parent=null}r.r(e),r.d(e,{cluster:function(){return o},hierarchy:function(){return l},pack:function(){return O},packEnclose:function(){return d},packSiblings:function(){return S},partition:function(){return B},stratify:function(){return q},tree:function(){return K},treemap:function(){return rt},treemapBinary:function(){return nt},treemapDice:function(){return F},treemapResquarify:function(){return at},treemapSlice:function(){return $},treemapSliceDice:function(){return it},treemapSquarify:function(){return et}}),h.prototype=l.prototype={constructor:h,count:function(){return this.eachAfter(s)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;for(t=r.pop(),e=n.pop();t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each(function(e){t.push(e)}),t},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e},copy:function(){return l(this).eachBefore(c)}};var p=Array.prototype.slice;function d(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(p.call(t))).length,a=[];n0&&r*r>n*n+i*i}function m(t,e){for(var r=0;r(o*=o)?(n=(u+o-i)/(2*u),a=Math.sqrt(Math.max(0,o/u-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(u+i-o)/(2*u),a=Math.sqrt(Math.max(0,i/u-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function T(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function A(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function k(t){this._=t,this.next=null,this.previous=null}function M(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,u,c,f;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;w(r,e,n=t[2]),e=new k(e),r=new k(r),n=new k(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;s0)throw new Error("cycle");return a}return r.id=function(e){return arguments.length?(t=E(e),r):t},r.parentId=function(t){return arguments.length?(e=E(t),r):e},r}function G(t,e){return t.parent===e.parent?1:2}function Y(t){var e=t.children;return e?e[0]:t.t}function W(t){var e=t.children;return e?e[e.length-1]:t.t}function Z(t,e,r){var n=r/(e.i-t.i);e.c-=n,e.s+=r,t.c+=n,e.z+=r,e.m+=r}function X(t,e,r){return t.a.parent===e.parent?t.a:r}function J(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function K(){var t=G,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new J(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new J(n[i],i)),r.parent=e;return(o.parent=new J(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var u=i,c=i,f=i;i.eachBefore(function(t){t.xc.x&&(c=t),t.depth>f.depth&&(f=t)});var h=u===c?1:t(u,c)/2,p=h-u.x,d=e/(c.x+h+p),v=r/(f.depth||1);i.eachBefore(function(t){t.x=(t.x+p)*d,t.y=t.depth*v})}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],u=a.m,c=o.m,f=s.m,h=l.m;s=W(s),a=Y(a),s&&a;)l=Y(l),(o=W(o)).a=e,(i=s.z+f-a.z-u+t(s._,a._))>0&&(Z(X(s,e,n),e,i),u+=i,c+=i),f+=s.m,u+=a.m,h+=l.m,c+=o.m;s&&!W(o)&&(o.t=s,o.m+=f-c),a&&!Y(l)&&(l.t=a,l.m+=u-h,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i}function $(t,e,r,n,i){for(var a,o=t.children,s=-1,l=o.length,u=t.value&&(i-r)/t.value;++sh&&(h=s),g=c*c*v,(p=Math.max(h/g,g/f))>d){c-=s;break}d=p}y.push(o={value:c,dice:l1?e:1)},r}(Q);function rt(){var t=et,e=!1,r=1,n=1,i=[0],a=L,o=L,s=L,l=L,u=L;function c(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(R),t}function f(e){var r=i[e.depth],n=e.x0+r,c=e.y0+r,f=e.x1-r,h=e.y1-r;f=r-1){var c=s[e];return c.x0=i,c.y0=a,c.x1=o,void(c.y1=l)}for(var f=u[e],h=n/2+f,p=e+1,d=r-1;p>>1;u[v]l-a){var m=(i*y+o*g)/n;t(e,p,g,i,a,m,l),t(p,r,y,m,a,o,l)}else{var x=(a*y+l*g)/n;t(e,p,g,i,a,o,x),t(p,r,y,i,x,o,l)}}(0,l,t.value,e,r,n,i)}function it(t,e,r,n,i){(1&t.depth?$:F)(t,e,r,n,i)}var at=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,u,c,f=-1,h=o.length,p=t.value;++f1?e:1)},r}(Q)},96303:function(t,e,r){"use strict";var n=r(16534),i=r(46982),a=r(51676).appendArrayPointValue,o=r(93441),s=r(15181),l=r(90720),u=r(95304),c=r(10088).formatPieValue;function f(t,e,r){for(var n=t.data.data,i={curveNumber:e.index,pointNumber:n.i,data:e._input,fullData:e},o=0;o"),name:k||D("name")?m.name:void 0,color:A("hoverlabel.bgcolor")||x.color,borderColor:A("hoverlabel.bordercolor"),fontFamily:A("hoverlabel.font.family"),fontSize:A("hoverlabel.font.size"),fontColor:A("hoverlabel.font.color"),nameLength:A("hoverlabel.namelength"),textAlign:A("hoverlabel.align"),hovertemplate:k,hovertemplateLabels:P,eventData:l};g&&(F.x0=E-i.rInscribed*i.rpx1,F.x1=E+i.rInscribed*i.rpx1,F.idealAlign=i.pxmid[0]<0?"left":"right"),y&&(F.x=E,F.idealAlign=E<0?"left":"right");var B=[];o.loneHover(F,{container:a._hoverlayer.node(),outerContainer:a._paper.node(),gd:r,inOut_bbox:B}),l[0].bbox=B[0],d._hasHoverLabel=!0}if(y){var N=t.select("path.surface");h.styleOne(N,i,m,r,{hovered:!0})}d._hasHoverEvent=!0,r.emit("plotly_hover",{points:l||[f(i,m,h.eventDataKeys)],event:n.event})}}),t.on("mouseout",function(e){var i=r._fullLayout,a=r._fullData[d.index],s=n.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=n.event,r.emit("plotly_unhover",{points:[f(s,a,h.eventDataKeys)],event:n.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(o.loneUnhover(i._hoverlayer.node()),d._hasHoverLabel=!1),y){var l=t.select("path.surface");h.styleOne(l,s,a,r,{hovered:!1})}}),t.on("click",function(t){var e=r._fullLayout,a=r._fullData[d.index],s=g&&(u.isHierarchyRoot(t)||u.isLeaf(t)),c=u.getPtId(t),p=u.isEntry(t)?u.findEntryWithChild(v,c):u.findEntryWithLevel(v,c),y=u.getPtId(p),m={points:[f(t,a,h.eventDataKeys)],event:n.event};s||(m.nextLevel=y);var x=l.triggerHandler(r,"plotly_"+d.type+"click",m);if(!1!==x&&e.hovermode&&(r._hoverdata=[f(t,a,h.eventDataKeys)],o.click(r,n.event)),!s&&!1!==x&&!r._dragging&&!r._transitioning){i.call("_storeDirectGUIEdit",a,e._tracePreGUI[a.uid],{level:a.level});var b={data:[{level:y}],traces:[d.index]},_={frame:{redraw:!1,duration:h.transitionTime},transition:{duration:h.transitionTime,easing:h.transitionEasing},mode:"immediate",fromcurrent:!0};o.loneUnhover(e._hoverlayer.node()),i.call("animate",r,b,_)}})}},96361:function(t,e,r){"use strict";t.exports={attributes:r(72292),layoutAttributes:r(68047),supplyDefaults:r(70515).supplyDefaults,crossTraceDefaults:r(70515).crossTraceDefaults,supplyLayoutDefaults:r(30792),calc:r(18660),crossTraceCalc:r(96207),plot:r(84934),style:r(56156).style,hoverPoints:r(35059),eventData:r(43192),selectPoints:r(40668),moduleType:"trace",name:"funnel",basePlotModule:r(29435),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}},96402:function(t){t.exports=function(){throw new Error("Readable.from is not available in the browser")}},96568:function(t,e,r){"use strict";var n=r(49188),i=r(8374),a=r(85797),o=r(56859),s=r(76613),l=r(72930).iterator;t.exports=function(t){return"function"==typeof s(t)[l]?t[l]():n(t)?new a(t):i(t)?new o(t):new a(t)}},96757:function(t,e,r){"use strict";var n;if(!Object.keys){var i=Object.prototype.hasOwnProperty,a=Object.prototype.toString,o=r(92107),s=Object.prototype.propertyIsEnumerable,l=!s.call({toString:null},"toString"),u=s.call(function(){},"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],f=function(t){var e=t.constructor;return e&&e.prototype===t},h={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},p=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!h["$"+t]&&i.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{f(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();n=function(t){var e=null!==t&&"object"==typeof t,r="[object Function]"===a.call(t),n=o(t),s=e&&"[object String]"===a.call(t),h=[];if(!e&&!r&&!n)throw new TypeError("Object.keys called on a non-object");var d=u&&r;if(s&&t.length>0&&!i.call(t,0))for(var v=0;v0)for(var g=0;g1&&(2!==t.length||"Z"!==t[1][0])&&(0===C&&(t[0][0]="M"),e[L]=t,k(),M())}}()}}function V(t,r){!function(t,r){if(e.length)for(var n=0;nr.duration?(function(){for(var r={},n=0;n rect").call(o.setTranslate,0,0).call(o.setScale,1,1),t.plot.call(o.setTranslate,e._offset,r._offset).call(o.setScale,1,1);var n=t.plot.selectAll(".scatterlayer .trace");n.selectAll(".point").call(o.setPointGroupScale,1,1),n.selectAll(".textpoint").call(o.setTextPointsScale,1,1),n.call(o.hideOutsideRangePoints,t)}function g(e,r){var n=e.plotinfo,i=n.xaxis,l=n.yaxis,u=i._length,c=l._length,f=!!e.xr1,h=!!e.yr1,p=[];if(f){var d=a.simpleMap(e.xr0,i.r2l),v=a.simpleMap(e.xr1,i.r2l),g=d[1]-d[0],y=v[1]-v[0];p[0]=(d[0]*(1-r)+r*v[0]-d[0])/(d[1]-d[0])*u,p[2]=u*(1-r+r*y/g),i.range[0]=i.l2r(d[0]*(1-r)+r*v[0]),i.range[1]=i.l2r(d[1]*(1-r)+r*v[1])}else p[0]=0,p[2]=u;if(h){var m=a.simpleMap(e.yr0,l.r2l),x=a.simpleMap(e.yr1,l.r2l),b=m[1]-m[0],_=x[1]-x[0];p[1]=(m[1]*(1-r)+r*x[1]-m[1])/(m[0]-m[1])*c,p[3]=c*(1-r+r*_/b),l.range[0]=i.l2r(m[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(m[1]*(1-r)+r*x[1])}else p[1]=0,p[3]=c;s.drawOne(t,i,{skipTitle:!0}),s.drawOne(t,l,{skipTitle:!0}),s.redrawComponents(t,[i._id,l._id]);var w=f?u/p[2]:1,T=h?c/p[3]:1,A=f?p[0]:0,k=h?p[1]:0,M=f?p[0]/p[2]*u:0,S=h?p[1]/p[3]*c:0,E=i._offset-M,L=l._offset-S;n.clipRect.call(o.setTranslate,A,k).call(o.setScale,1/w,1/T),n.plot.call(o.setTranslate,E,L).call(o.setScale,w,T),o.setPointGroupScale(n.zoomScalePts,1/w,1/T),o.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}s.redrawComponents(t)}},97261:function(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var i=function(t){var e,n;function i(e,n,i){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,i))||this}return n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,i}(n);i.prototype.name=n.name,i.prototype.code=t,e[t]=i}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var i,a,o,s,l;if("string"==typeof e&&(a="not ",e.substr(0,4)===a)?(i="must not be",e=e.replace(/^not /,"")):i="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))o="The ".concat(t," ").concat(i," ").concat(n(e,"type"));else{var u=("number"!=typeof l&&(l=0),l+1>(s=t).length||-1===s.indexOf(".",l)?"argument":"property");o='The "'.concat(t,'" ').concat(u," ").concat(i," ").concat(n(e,"type"))}return o+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},97456:function(t){var e=/[\'\"]/;t.exports=function(t){return t?(e.test(t.charAt(0))&&(t=t.substr(1)),e.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):""}},97469:function(t,e,r){"use strict";r.d(e,{A:function(){return c},y:function(){return o}});var n=r(10335),i=r(18901);function a(t,e){return[(0,i.tn)(t)>i.pi?t+Math.round(-t/i.FA)*i.FA:t,e]}function o(t,e,r){return(t%=i.FA)?e||r?(0,n.A)(l(t),u(e,r)):l(t):e||r?u(e,r):a}function s(t){return function(e,r){return[(e+=t)>i.pi?e-i.FA:e<-i.pi?e+i.FA:e,r]}}function l(t){var e=s(t);return e.invert=s(-t),e}function u(t,e){var r=(0,i.gn)(t),n=(0,i.F8)(t),a=(0,i.gn)(e),o=(0,i.F8)(e);function s(t,e){var s=(0,i.gn)(e),l=(0,i.gn)(t)*s,u=(0,i.F8)(t)*s,c=(0,i.F8)(e),f=c*r+l*n;return[(0,i.FP)(u*a-f*o,l*r-c*n),(0,i.qR)(f*a+u*o)]}return s.invert=function(t,e){var s=(0,i.gn)(e),l=(0,i.gn)(t)*s,u=(0,i.F8)(t)*s,c=(0,i.F8)(e),f=c*a-u*o;return[(0,i.FP)(u*a+c*o,l*r+f*n),(0,i.qR)(f*r-l*n)]},s}function c(t){function e(e){return(e=t(e[0]*i.F2,e[1]*i.F2))[0]*=i.uj,e[1]*=i.uj,e}return t=o(t[0]*i.F2,t[1]*i.F2,t.length>2?t[2]*i.F2:0),e.invert=function(e){return(e=t.invert(e[0]*i.F2,e[1]*i.F2))[0]*=i.uj,e[1]*=i.uj,e},e}a.invert=a},97499:function(t,e,r){"use strict";var n=r(16534),i=r(46982),a=r(37070),o=r(69562),s=r(88191),l=r(15181),u=l.strTranslate,c=r(3071),f=r(93003),h=r(5126),p=h.LINE_SPACING,d=h.FROM_TL,v=h.FROM_BR,g=r(63184),y=r(93291);function m(t){return t._id}function x(t,e,r){var n=l.ensureSingle(t,"rect","selector-rect",function(t){t.attr("shape-rendering","crispEdges")});n.attr({rx:g.rx,ry:g.ry}),n.call(o.stroke,e.bordercolor).call(o.fill,function(t,e){return e._isActive||e._isHovered?t.activecolor:t.bgcolor}(e,r)).style("stroke-width",e.borderwidth+"px")}function b(t,e,r,n){var i,a;l.ensureSingle(t,"text","selector-text",function(t){t.attr("text-anchor","middle")}).call(s.font,e.font).text((i=r,a=n._fullLayout._meta,i.label?a?l.templateString(i.label,a):i.label:"all"===i.step?"all":i.count+i.step.charAt(0))).call(function(t){c.convertToTspans(t,n)})}t.exports=function(t){var e=t._fullLayout._infolayer.selectAll(".rangeselector").data(function(t){for(var e=f.list(t,"x",!0),r=[],n=0;n",""," ",""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}},98333:function(t){"use strict";t.exports=function(t,e,r,n){if("category"===e.type){var i,a=t.categoryarray,o=Array.isArray(a)&&a.length>0;o&&(i="array");var s,l=r("categoryorder",i);"array"===l&&(s=r("categoryarray")),o||"array"!==l||(l=e.categoryorder="trace"),"trace"===l?e._initialCategories=[]:"array"===l?e._initialCategories=s.slice():(s=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;n"),name:f.hovertemplate||-1!==h.indexOf("name")?f.name:void 0,idealAlign:t.pxmid[0]<0?"left":"right",color:g.castOption(_.bgcolor,t.pts)||t.color,borderColor:g.castOption(_.bordercolor,t.pts),fontFamily:g.castOption(w.family,t.pts),fontSize:g.castOption(w.size,t.pts),fontColor:g.castOption(w.color,t.pts),nameLength:g.castOption(_.namelength,t.pts),textAlign:g.castOption(_.align,t.pts),hovertemplate:g.castOption(f.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[y(t,f)]},{container:r._hoverlayer.node(),outerContainer:r._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],u._hasHoverLabel=!0}u._hasHoverEvent=!0,e.emit("plotly_hover",{points:[y(t,f)],event:n.event})}}),t.on("mouseout",function(t){var r=e._fullLayout,i=e._fullData[u.index],o=n.select(this).datum();u._hasHoverEvent&&(t.originalEvent=n.event,e.emit("plotly_unhover",{points:[y(o,i)],event:n.event}),u._hasHoverEvent=!1),u._hasHoverLabel&&(a.loneUnhover(r._hoverlayer.node()),u._hasHoverLabel=!1)}),t.on("click",function(t){var r=e._fullLayout,i=e._fullData[u.index];e._dragging||!1===r.hovermode||(e._hoverdata=[y(t,i)],a.click(e,n.event))})}function b(t,e,r){var n=g.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=g.castOption(t._input.textfont.color,e.pts));var i=g.castOption(t.insidetextfont.family,e.pts)||g.castOption(t.textfont.family,e.pts)||r.family,a=g.castOption(t.insidetextfont.size,e.pts)||g.castOption(t.textfont.size,e.pts)||r.size;return{color:n||o.contrast(e.color),family:i,size:a}}function _(t,e){for(var r,n,i=0;ie&&e>n||r=-4;g-=2)y(Math.PI*g,"tan");for(g=4;g>=-4;g-=2)y(Math.PI*(g+1),"tan")}if(f||p){for(g=4;g>=-4;g-=2)y(Math.PI*(g+1.5),"rad");for(g=4;g>=-4;g-=2)y(Math.PI*(g+.5),"rad")}}if(s||d||f){var m=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/m,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;v.push(a)}(d||p)&&((a=T(t,n,o,l,u)).textPosAngle=(e.startangle+e.stopangle)/2,v.push(a)),(d||h)&&((a=A(t,n,o,l,u)).textPosAngle=(e.startangle+e.stopangle)/2,v.push(a));for(var x=0,b=0,_=0;_=1)break}return v[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*v);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:k(a,o/e),rotate:M(i)}}function A(t,e,r,n,i){e=Math.max(0,e-2*v);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:k(a,o/e),rotate:M(i+Math.PI/2)}}function k(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function L(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function C(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=O(a),-1!==a.title.position.indexOf("top")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf("bottom")&&(o.y+=(1+i)*t.r);var l,u=t.r/(void 0===(l=t.trace.aspectratio)?1:l),c=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf("left")?(c+=u,o.x-=(1+i)*u,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf("center")?c*=2:-1!==a.title.position.indexOf("right")&&(c+=u,o.x+=(1+i)*u,s.tx-=t.titleBox.width/2),r=c/t.titleBox.width,n=P(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function P(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function O(t){var e,r=t.pull;if(!r)return 0;if(Array.isArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function I(t,e){for(var r=[],n=0;n1?c=(u=r.r)/i.aspectratio:u=(c=r.r)*i.aspectratio,l=(u*=(1+i.baseratio)/2)*c}o=Math.min(o,l/r.vTotal)}for(n=0;n")}if(a){var x=l.castOption(i,e.i,"texttemplate");if(x){var b=function(t){return{label:t.label,value:t.v,valueLabel:g.formatPieValue(t.v,n.separators),percent:t.v/r.vTotal,percentLabel:g.formatPiePercent(t.v/r.vTotal,n.separators),color:t.color,text:t.text,customdata:l.castOption(i,t.i,"customdata")}}(e),_=g.getFirstFilled(i.text,e.pts);(m(_)||""===_)&&(b.text=_),e.text=l.texttemplateString(x,b,t._fullLayout._d3locale,b,i._meta||{})}else e.text=""}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}t.exports={plot:function(t,e){var r=t._context.staticPlot,a=t._fullLayout,h=a._size;d("pie",a),_(e,t),I(e,h);var v=l.makeTraceGroups(a._pielayer,e,"trace").each(function(e){var d=n.select(this),v=e[0],y=v.trace;!function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=g.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,u="px0",c="px1";if("counterclockwise"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))}(e),d.attr("stroke-linejoin","round"),d.each(function(){var m=n.select(this).selectAll("g.slice").data(e);m.enter().append("g").classed("slice",!0),m.exit().remove();var _=[[[],[]],[[],[]]],T=!1;m.each(function(i,o){if(i.hidden)n.select(this).selectAll("path,g").remove();else{i.pointNumber=i.i,i.curveNumber=y.index,_[i.pxmid[1]<0?0:1][i.pxmid[0]<0?0:1].push(i);var u=v.cx,c=v.cy,h=n.select(this),d=h.selectAll("path.surface").data([i]);if(d.enter().append("path").classed("surface",!0).style({"pointer-events":r?"none":"all"}),h.call(x,t,e),y.pull){var m=+g.castOption(y.pull,i.pts)||0;m>0&&(u+=m*i.pxmid[0],c+=m*i.pxmid[1])}i.cxFinal=u,i.cyFinal=c;var A=y.hole;if(i.v===v.vTotal){var k="M"+(u+i.px0[0])+","+(c+i.px0[1])+P(i.px0,i.pxmid,!0,1)+P(i.pxmid,i.px0,!0,1)+"Z";A?d.attr("d","M"+(u+A*i.px0[0])+","+(c+A*i.px0[1])+P(i.px0,i.pxmid,!1,A)+P(i.pxmid,i.px0,!1,A)+"Z"+k):d.attr("d",k)}else{var M=P(i.px0,i.px1,!0,1);if(A){var S=1-A;d.attr("d","M"+(u+A*i.px1[0])+","+(c+A*i.px1[1])+P(i.px1,i.px0,!1,A)+"l"+S*i.px0[0]+","+S*i.px0[1]+M+"Z")}else d.attr("d","M"+u+","+c+"l"+i.px0[0]+","+i.px0[1]+M+"Z")}z(t,i,v);var E=g.castOption(y.textposition,i.pts),C=h.selectAll("g.slicetext").data(i.text&&"none"!==E?[0]:[]);C.enter().append("g").classed("slicetext",!0),C.exit().remove(),C.each(function(){var r=l.ensureSingle(n.select(this),"text","",function(t){t.attr("data-notex",1)}),h=l.ensureUniformFontSize(t,"outside"===E?function(t,e,r){return{color:g.castOption(t.outsidetextfont.color,e.pts)||g.castOption(t.textfont.color,e.pts)||r.color,family:g.castOption(t.outsidetextfont.family,e.pts)||g.castOption(t.textfont.family,e.pts)||r.family,size:g.castOption(t.outsidetextfont.size,e.pts)||g.castOption(t.textfont.size,e.pts)||r.size}}(y,i,a.font):b(y,i,a.font));r.text(i.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(s.font,h).call(f.convertToTspans,t);var d,m=s.bBox(r.node());if("outside"===E)d=L(m,i);else if(d=w(m,i,v),"auto"===E&&d.scale<1){var x=l.ensureUniformFontSize(t,y.outsidetextfont);r.call(s.font,x),d=L(m=s.bBox(r.node()),i)}var _=d.textPosAngle,A=void 0===_?i.pxmid:D(v.r,_);if(d.targetX=u+A[0]*d.rCenter+(d.x||0),d.targetY=c+A[1]*d.rCenter+(d.y||0),R(d,m),d.outside){var k=d.targetY;i.yLabelMin=k-m.height/2,i.yLabelMid=k,i.yLabelMax=k+m.height/2,i.labelExtraX=0,i.labelExtraY=0,T=!0}d.fontSize=h.size,p(y.type,d,a),e[o].transform=d,l.setTransormAndDisplay(r,d)})}function P(t,e,r,n){var a=n*(e[0]-t[0]),o=n*(e[1]-t[1]);return"a"+n*v.r+","+n*v.r+" 0 "+i.largeArc+(r?" 1 ":" 0 ")+a+","+o}});var A=n.select(this).selectAll("g.titletext").data(y.title.text?[0]:[]);if(A.enter().append("g").classed("titletext",!0),A.exit().remove(),A.each(function(){var e,r=l.ensureSingle(n.select(this),"text","",function(t){t.attr("data-notex",1)}),i=y.title.text;y._meta&&(i=l.templateString(i,y._meta)),r.text(i).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(s.font,y.title.font).call(f.convertToTspans,t),e="middle center"===y.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(v):C(v,h),r.attr("transform",c(e.x,e.y)+u(Math.min(1,e.scale))+c(e.tx,e.ty))}),T&&function(t,e){var r,n,i,a,o,s,l,u,c,f,h,p,d;function v(t,e){return t.pxmid[1]-e.pxmid[1]}function y(t,e){return e.pxmid[1]-t.pxmid[1]}function m(t,r){r||(r={});var i,u,c,h,p=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),d=n?t.yLabelMin:t.yLabelMax,v=n?t.yLabelMax:t.yLabelMin,y=t.cyFinal+o(t.px0[1],t.px1[1]),m=p-d;if(m*l>0&&(t.labelExtraY=m),Array.isArray(e.pull))for(u=0;u=(g.castOption(e.pull,c.pts)||0)||((t.pxmid[1]-c.pxmid[1])*l>0?(m=c.cyFinal+o(c.px0[1],c.px1[1])-d-t.labelExtraY)*l>0&&(t.labelExtraY+=m):(v+t.labelExtraY-y)*l>0&&(i=3*s*Math.abs(u-f.indexOf(t)),(h=c.cxFinal+a(c.px0[0],c.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*s>0&&(t.labelExtraX+=h)))}for(n=0;n<2;n++)for(i=n?v:y,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,(u=t[n][r]).sort(i),c=t[1-n][r],f=c.concat(u),p=[],h=0;hMath.abs(f)?s+="l"+f*t.pxmid[0]/t.pxmid[1]+","+f+"H"+(a+t.labelExtraX+u):s+="l"+t.labelExtraX+","+c+"v"+(f-c)+"h"+u}else s+="V"+(t.yLabelMid+t.labelExtraY)+"h"+u;l.ensureSingle(r,"path","textline").call(o.stroke,e.outsidetextfont.color).attr({"stroke-width":Math.min(2,e.outsidetextfont.size/8),d:s,fill:"none"})}else r.select("path.textline").remove()})}(m,y),T&&y.automargin){var k=s.bBox(d.node()),M=y.domain,S=h.w*(M.x[1]-M.x[0]),E=h.h*(M.y[1]-M.y[0]),P=(.5*S-v.r)/h.w,O=(.5*E-v.r)/h.h;i.autoMargin(t,"pie."+y.uid+".automargin",{xl:M.x[0]-P,xr:M.x[1]+P,yb:M.y[0]-O,yt:M.y[1]+O,l:Math.max(v.cx-v.r-k.left,0),r:Math.max(k.right-(v.cx+v.r),0),b:Math.max(k.bottom-(v.cy+v.r),0),t:Math.max(v.cy-v.r-k.top,0),pad:5})}})});setTimeout(function(){v.selectAll("tspan").each(function(){var t=n.select(this);t.attr("dy")&&t.attr("dy",t.attr("dy"))})},0)},formatSliceLabel:z,transformInsideText:w,determineInsideTextFont:b,positionTitleOutside:C,prerenderTitles:_,layoutAreas:I,attachFxHandlers:x,computeTransform:R}},98379:function(t,e){"use strict";e.isGrouped=function(t){return-1!==(t.traceorder||"").indexOf("grouped")},e.isVertical=function(t){return"h"!==t.orientation},e.isReversed=function(t){return-1!==(t.traceorder||"").indexOf("reversed")}},98409:function(t,e,r){"use strict";function n(t){return t}function i(t,e){return"string"==typeof e&&(e=t.objects[e]),"GeometryCollection"===e.type?{type:"FeatureCollection",features:e.geometries.map(function(e){return a(t,e)})}:a(t,e)}function a(t,e){var r=e.id,i=e.bbox,a=null==e.properties?{}:e.properties,o=function(t,e){var r=function(t){if(null==t)return n;var e,r,i=t.scale[0],a=t.scale[1],o=t.translate[0],s=t.translate[1];return function(t,n){n||(e=r=0);var l=2,u=t.length,c=new Array(u);for(c[0]=(e+=t[0])*i+o,c[1]=(r+=t[1])*a+s;l>>1;e.dtype||(e.dtype="array"),"string"==typeof e.dtype?d=new(f(e.dtype))(g):e.dtype&&(d=e.dtype,Array.isArray(d)&&(d.length=g));for(var y=0;yr||s>1073741824){for(var h=0;hr+i||M>n+i||S=C||o===s)){var l=m[a];void 0===s&&(s=l.length);for(var u=o;u=g&&f<=w&&h>=y&&h<=T&&P.push(c)}var p=x[a],d=p[4*o+0],v=p[4*o+1],b=p[4*o+2],_=p[4*o+3],A=function(t,e){for(var r=null,n=0;null===r;)if(r=t[4*e+n],++n>t.length)return null;return r}(p,o+1),E=.5*i,O=a+1;e(r,n,E,O,d,v||b||_||A),e(r,n+E,E,O,v,b||_||A),e(r+E,n,E,O,b,_||A),e(r+E,n+E,E,O,_,A)}}(0,0,1,0,0,1),P},d;function E(t,e,r){for(var n=1,i=.5,a=.5,o=.5,s=0;s0)return 1<=0)return 1<=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(tr._length||y+b<0)return;c=g+b,p=y+b;break;case l:if(x="col-resize",g+b>r._length)return;c=g+b,p=y;break;case u:if(x="col-resize",y+b<0)return;c=g,p=y+b;break;default:x="ew-resize",c=v,p=v+b}if(p=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Pt,s:Ot,S:$,u:Q,U:tt,V:rt,w:nt,W:it,x:null,X:null,y:at,Y:st,Z:ut,"%":Ct},Ft={a:function(t){return p[t.getUTCDay()]},A:function(t){return h[t.getUTCDay()]},b:function(t){return v[t.getUTCMonth()]},B:function(t){return d[t.getUTCMonth()]},c:null,d:ct,e:ct,f:vt,g:Mt,G:Et,H:ft,I:ht,j:pt,L:dt,m:gt,M:yt,p:function(t){return l[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Pt,s:Ot,S:mt,u:xt,U:bt,V:wt,w:Tt,W:At,x:null,X:null,y:kt,Y:St,Z:Lt,"%":Ct},Bt={a:function(t,e,r){var n=_.exec(e.slice(r));return n?(t.w=et[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=x.exec(e.slice(r));return n?(t.w=b[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=Dt.exec(e.slice(r));return n?(t.m=zt[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=_t.exec(e.slice(r));return n?(t.m=It[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,r,n){return Ut(t,e,r,n)},d:D,e:D,f:j,g:C,G:L,H:R,I:R,j:z,L:N,m:I,M:F,p:function(t,e,r){var n=y.exec(e.slice(r));return n?(t.p=m[n[0].toLowerCase()],r+n[0].length):-1},q:O,Q:V,s:H,S:B,u:k,U:M,V:S,w:A,W:E,x:function(t,e,n){return Ut(t,r,e,n)},X:function(t,e,r){return Ut(t,s,e,r)},y:C,Y:L,Z:P,"%":U};function Nt(t,e){return function(r){var n,i,a,o=[],s=-1,l=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++s53)return null;"w"in h||(h.w=1),"Z"in h?(l=(s=c(f(h.y,0,1))).getUTCDay(),s=l>4||0===l?n.rt.ceil(s):(0,n.rt)(s),s=i.A.offset(s,7*(h.V-1)),h.y=s.getUTCFullYear(),h.m=s.getUTCMonth(),h.d=s.getUTCDate()+(h.w+6)%7):(l=(s=u(f(h.y,0,1))).getDay(),s=l>4||0===l?a.By.ceil(s):(0,a.By)(s),s=o.A.offset(s,7*(h.V-1)),h.y=s.getFullYear(),h.m=s.getMonth(),h.d=s.getDate()+(h.w+6)%7)}else("W"in h||"U"in h)&&("w"in h||(h.w="u"in h?h.u%7:"W"in h?1:0),l="Z"in h?c(f(h.y,0,1)).getUTCDay():u(f(h.y,0,1)).getDay(),h.m=0,h.d="W"in h?(h.w+6)%7+7*h.W-(l+5)%7:h.w+7*h.U-(l+6)%7);return"Z"in h?(h.H+=h.Z/100|0,h.M+=h.Z%100,c(h)):u(h)}}function Ut(t,e,r,n){for(var i,a,o=0,s=e.length,l=r.length;o=l)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Bt[i in g?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Rt.x=Nt(r,Rt),Rt.X=Nt(s,Rt),Rt.c=Nt(e,Rt),Ft.x=Nt(r,Ft),Ft.X=Nt(s,Ft),Ft.c=Nt(e,Ft),{format:function(t){var e=Nt(t+="",Rt);return e.toString=function(){return t},e},parse:function(t){var e=jt(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=Nt(t+="",Ft);return e.toString=function(){return t},e},utcParse:function(t){var e=jt(t+="",!0);return e.toString=function(){return t},e}}}var p,d,v,g={"-":"",_:" ",0:"0"},y=/^\s*\d+/,m=/^%/,x=/[\\^$*+?|[\]().{}]/g;function b(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function P(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function O(t,e,r){var n=y.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function I(t,e,r){var n=y.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function D(t,e,r){var n=y.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function z(t,e,r){var n=y.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function R(t,e,r){var n=y.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function F(t,e,r){var n=y.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function B(t,e,r){var n=y.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function N(t,e,r){var n=y.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function j(t,e,r){var n=y.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function U(t,e,r){var n=m.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function V(t,e,r){var n=y.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function H(t,e,r){var n=y.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function q(t,e){return b(t.getDate(),e,2)}function G(t,e){return b(t.getHours(),e,2)}function Y(t,e){return b(t.getHours()%12||12,e,2)}function W(t,e){return b(1+o.A.count((0,s.A)(t),t),e,3)}function Z(t,e){return b(t.getMilliseconds(),e,3)}function X(t,e){return Z(t,e)+"000"}function J(t,e){return b(t.getMonth()+1,e,2)}function K(t,e){return b(t.getMinutes(),e,2)}function $(t,e){return b(t.getSeconds(),e,2)}function Q(t){var e=t.getDay();return 0===e?7:e}function tt(t,e){return b(a.fz.count((0,s.A)(t)-1,t),e,2)}function et(t){var e=t.getDay();return e>=4||0===e?(0,a.dt)(t):a.dt.ceil(t)}function rt(t,e){return t=et(t),b(a.dt.count((0,s.A)(t),t)+(4===(0,s.A)(t).getDay()),e,2)}function nt(t){return t.getDay()}function it(t,e){return b(a.By.count((0,s.A)(t)-1,t),e,2)}function at(t,e){return b(t.getFullYear()%100,e,2)}function ot(t,e){return b((t=et(t)).getFullYear()%100,e,2)}function st(t,e){return b(t.getFullYear()%1e4,e,4)}function lt(t,e){var r=t.getDay();return b((t=r>=4||0===r?(0,a.dt)(t):a.dt.ceil(t)).getFullYear()%1e4,e,4)}function ut(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+b(e/60|0,"0",2)+b(e%60,"0",2)}function ct(t,e){return b(t.getUTCDate(),e,2)}function ft(t,e){return b(t.getUTCHours(),e,2)}function ht(t,e){return b(t.getUTCHours()%12||12,e,2)}function pt(t,e){return b(1+i.A.count((0,l.A)(t),t),e,3)}function dt(t,e){return b(t.getUTCMilliseconds(),e,3)}function vt(t,e){return dt(t,e)+"000"}function gt(t,e){return b(t.getUTCMonth()+1,e,2)}function yt(t,e){return b(t.getUTCMinutes(),e,2)}function mt(t,e){return b(t.getUTCSeconds(),e,2)}function xt(t){var e=t.getUTCDay();return 0===e?7:e}function bt(t,e){return b(n.Hl.count((0,l.A)(t)-1,t),e,2)}function _t(t){var e=t.getUTCDay();return e>=4||0===e?(0,n.pT)(t):n.pT.ceil(t)}function wt(t,e){return t=_t(t),b(n.pT.count((0,l.A)(t),t)+(4===(0,l.A)(t).getUTCDay()),e,2)}function Tt(t){return t.getUTCDay()}function At(t,e){return b(n.rt.count((0,l.A)(t)-1,t),e,2)}function kt(t,e){return b(t.getUTCFullYear()%100,e,2)}function Mt(t,e){return b((t=_t(t)).getUTCFullYear()%100,e,2)}function St(t,e){return b(t.getUTCFullYear()%1e4,e,4)}function Et(t,e){var r=t.getUTCDay();return b((t=r>=4||0===r?(0,n.pT)(t):n.pT.ceil(t)).getUTCFullYear()%1e4,e,4)}function Lt(){return"+0000"}function Ct(){return"%"}function Pt(t){return+t}function Ot(t){return Math.floor(+t/1e3)}p=h({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),d=p.format,p.parse,v=p.utcFormat,p.utcParse},99256:function(t){"use strict";t.exports=function(t,e,r,n,i){if(t.x="xVal"in e?e.xVal:e.x,t.y="yVal"in e?e.yVal:e.y,"zLabelVal"in e&&(t.z=e.zLabelVal),e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),!(r.cumulative||{}).enabled){var a,o=Array.isArray(i)?n[0].pts[i[0]][i[1]]:n[i].pts;if(t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex,r._indexToPoints){a=[];for(var s=0;s1&&"boolean"!=typeof e)throw new c('"allowMissing" argument must be a boolean');if(null===H(/^%?[^%]*%?$/,t))throw new u("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=V(t,0,1),r=V(t,-1);if("%"===e&&"%"!==r)throw new u("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new u("invalid intrinsic syntax, expected opening `%`");var n=[];return U(t,q,function(t,e,r,i){n[n.length]=r?U(i,G,"$1"):e||t}),n}(t),n=r.length>0?r[0]:"",i=Y("%"+n+"%",e),a=i.name,o=i.value,s=!1,l=i.alias;l&&(n=l[0],j(r,N([0,1],l)));for(var f=1,h=!0;f=r.length){var g=_(o,p);o=(h=!!g)&&"get"in g&&!("originalValue"in g.get)?g.get:o[p]}else h=B(o,p),o=o[p];h&&!s&&(I[a]=o)}}return o}},99572:function(t,e,r){"use strict";var n=r(50207),i=r(95028).calcHover;t.exports={hoverPoints:function(t,e,r){var a=t.cd[0].trace,o=t.scene.matrixOptions.cdata,s=t.xa,l=t.ya,u=s.c2p(e),c=l.c2p(r),f=t.distance,h=n.getDimIndex(a,s),p=n.getDimIndex(a,l);if(!1===h||!1===p)return[t];for(var d,v,g=o[h],y=o[p],m=f,x=0;x0&&lo._length&&(S=S.slice(0,o._length));var L,C=o.tickvals;function P(t,e){return{val:t,text:L[e]}}function O(t,e){return t.val-e.val}if(Array.isArray(C)&&C.length){L=o.ticktext,Array.isArray(L)&&L.length?L.length>C.length?L=L.slice(0,C.length):C.length>L.length&&(C=C.slice(0,L.length)):L=C.map(a(o.tickformat));for(var I=1;I=r||l>=i)return;var u=t.lineLayer.readPixel(s,i-1-l),c=0!==u[3],f=c?u[2]+256*(u[1]+256*u[0]):null,h={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:f};f!==N&&(c?a.hover(h):a.unhover&&a.unhover(h),N=f)}}),B.style("opacity",function(t){return t.pick?0:1}),p.style("background","rgba(255, 255, 255, 0)");var j=p.selectAll("."+m.cn.parcoords).data(F,d);j.exit().remove(),j.enter().append("g").classed(m.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),j.attr("transform",function(t){return u(t.model.translateX,t.model.translateY)});var U=j.selectAll("."+m.cn.parcoordsControlView).data(v,d);U.enter().append("g").classed(m.cn.parcoordsControlView,!0),U.attr("transform",function(t){return u(t.model.pad.l,t.model.pad.t)});var V=U.selectAll("."+m.cn.yAxis).data(function(t){return t.dimensions},d);V.enter().append("g").classed(m.cn.yAxis,!0),U.each(function(t){I(V,t,T)}),B.each(function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=b(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}}),V.attr("transform",function(t){return u(t.xScale(t.xIndex),0)}),V.call(n.behavior.drag().origin(function(t){return t}).on("drag",function(t){var e=t.parent;R.linePickActive(!1),t.x=Math.max(-m.overdrag,Math.min(t.model.width+m.overdrag,n.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,V.sort(function(t,e){return t.x-e.x}).each(function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio}),I(V,e,T),V.filter(function(e){return 0!==Math.abs(t.xIndex-e.xIndex)}).attr("transform",function(t){return u(t.xScale(t.xIndex),0)}),n.select(this).attr("transform",u(t.x,0)),V.each(function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)}),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)}).on("dragend",function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,I(V,e,T),n.select(this).attr("transform",function(t){return u(t.x,0)}),e.contextLayer&&e.contextLayer.render(e.panels,!1,!E(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),R.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map(function(t){return t.crossfilterDimensionIndex}))})),V.exit().remove();var H=V.selectAll("."+m.cn.axisOverlays).data(v,d);H.enter().append("g").classed(m.cn.axisOverlays,!0),H.selectAll("."+m.cn.axis).remove();var q=H.selectAll("."+m.cn.axis).data(v,d);q.enter().append("g").classed(m.cn.axis,!0),q.each(function(t){var e=t.model.height/t.model.tickDistance,r=t.domainScale,i=r.domain();n.select(this).call(n.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat(function(e){return y.isOrdinal(t)?e:D(t.model.dimensions[t.visibleIndex],e)}).scale(r)),f.font(q.selectAll("text"),t.model.tickFont)}),q.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),q.selectAll("text").style("text-shadow",c.makeTextShadow(k)).style("cursor","default");var G=H.selectAll("."+m.cn.axisHeading).data(v,d);G.enter().append("g").classed(m.cn.axisHeading,!0);var Y=G.selectAll("."+m.cn.axisTitle).data(v,d);Y.enter().append("text").classed(m.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",o?"none":"auto"),Y.text(function(t){return t.label}).each(function(e){var r=n.select(this);f.font(r,e.model.labelFont),c.convertToTspans(r,t)}).attr("transform",function(t){var e=O(t.model.labelAngle,t.model.labelSide),r=m.axisTitleOffset;return(e.dir>0?"":u(0,2*r+t.model.height))+l(e.degrees)+u(-r*e.dx,-r*e.dy)}).attr("text-anchor",function(t){var e=O(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?"start":"end":"middle"});var W=H.selectAll("."+m.cn.axisExtent).data(v,d);W.enter().append("g").classed(m.cn.axisExtent,!0);var Z=W.selectAll("."+m.cn.axisExtentTop).data(v,d);Z.enter().append("g").classed(m.cn.axisExtentTop,!0),Z.attr("transform",u(0,-m.axisExtentOffset));var X=Z.selectAll("."+m.cn.axisExtentTopText).data(v,d);X.enter().append("text").classed(m.cn.axisExtentTopText,!0).call(P),X.text(function(t){return z(t,!0)}).each(function(t){f.font(n.select(this),t.model.rangeFont)});var J=W.selectAll("."+m.cn.axisExtentBottom).data(v,d);J.enter().append("g").classed(m.cn.axisExtentBottom,!0),J.attr("transform",function(t){return u(0,t.model.height+m.axisExtentOffset)});var K=J.selectAll("."+m.cn.axisExtentBottomText).data(v,d);K.enter().append("text").classed(m.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(P),K.text(function(t){return z(t,!1)}).each(function(t){f.font(n.select(this),t.model.rangeFont)}),x.ensureAxisBrush(H,k,t)}}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={exports:{}};return t[n].call(a.exports,a,a.exports,r),a.exports}return r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(23120)}()}); \ No newline at end of file diff --git a/docs/articles/cohort_dynamics_and_diffusion_files/typedarray-0.1/typedarray.min.js b/docs/articles/cohort_dynamics_and_diffusion_files/typedarray-0.1/typedarray.min.js new file mode 100644 index 000000000..8e25a3c8d --- /dev/null +++ b/docs/articles/cohort_dynamics_and_diffusion_files/typedarray-0.1/typedarray.min.js @@ -0,0 +1 @@ +(function(global){"use strict";var undefined=void 0;var MAX_ARRAY_LENGTH=1e5;function Type(v){switch(typeof v){case"undefined":return"undefined";case"boolean":return"boolean";case"number":return"number";case"string":return"string";default:return v===null?"null":"object"}}function Class(v){return Object.prototype.toString.call(v).replace(/^\[object *|\]$/g,"")}function IsCallable(o){return typeof o==="function"}function ToObject(v){if(v===null||v===undefined)throw TypeError();return Object(v)}function ToInt32(v){return v>>0}function ToUint32(v){return v>>>0}var LN2=Math.LN2,abs=Math.abs,floor=Math.floor,log=Math.log,max=Math.max,min=Math.min,pow=Math.pow,round=Math.round;(function(){var orig=Object.defineProperty;var dom_only=!function(){try{return Object.defineProperty({},"x",{})}catch(_){return false}}();if(!orig||dom_only){Object.defineProperty=function(o,prop,desc){if(orig)try{return orig(o,prop,desc)}catch(_){}if(o!==Object(o))throw TypeError("Object.defineProperty called on non-object");if(Object.prototype.__defineGetter__&&"get"in desc)Object.prototype.__defineGetter__.call(o,prop,desc.get);if(Object.prototype.__defineSetter__&&"set"in desc)Object.prototype.__defineSetter__.call(o,prop,desc.set);if("value"in desc)o[prop]=desc.value;return o}}})();function makeArrayAccessors(obj){if(obj.length>MAX_ARRAY_LENGTH)throw RangeError("Array too large for polyfill");function makeArrayAccessor(index){Object.defineProperty(obj,index,{get:function(){return obj._getter(index)},set:function(v){obj._setter(index,v)},enumerable:true,configurable:false})}var i;for(i=0;i>s}function as_unsigned(value,bits){var s=32-bits;return value<>>s}function packI8(n){return[n&255]}function unpackI8(bytes){return as_signed(bytes[0],8)}function packU8(n){return[n&255]}function unpackU8(bytes){return as_unsigned(bytes[0],8)}function packU8Clamped(n){n=round(Number(n));return[n<0?0:n>255?255:n&255]}function packI16(n){return[n>>8&255,n&255]}function unpackI16(bytes){return as_signed(bytes[0]<<8|bytes[1],16)}function packU16(n){return[n>>8&255,n&255]}function unpackU16(bytes){return as_unsigned(bytes[0]<<8|bytes[1],16)}function packI32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackI32(bytes){return as_signed(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packU32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackU32(bytes){return as_unsigned(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packIEEE754(v,ebits,fbits){var bias=(1<.5)return w+1;return w%2?w+1:w}if(v!==v){e=(1<=pow(2,1-bias)){e=min(floor(log(v)/LN2),1023);f=roundToEven(v/pow(2,e)*pow(2,fbits));if(f/pow(2,fbits)>=2){e=e+1;f=1}if(e>bias){e=(1<>1}}bits.reverse();str=bits.join("");bias=(1<0){return s*pow(2,e-bias)*(1+f/pow(2,fbits))}else if(f!==0){return s*pow(2,-(bias-1))*(f/pow(2,fbits))}else{return s<0?-0:0}}function unpackF64(b){return unpackIEEE754(b,11,52)}function packF64(v){return packIEEE754(v,11,52)}function unpackF32(b){return unpackIEEE754(b,8,23)}function packF32(v){return packIEEE754(v,8,23)}(function(){function ArrayBuffer(length){length=ToInt32(length);if(length<0)throw RangeError("ArrayBuffer size is not a small enough positive integer.");Object.defineProperty(this,"byteLength",{value:length});Object.defineProperty(this,"_bytes",{value:Array(length)});for(var i=0;i=1&&Type(arguments[0])==="object"&&arguments[0]instanceof $TypedArray$){return function(typedArray){if(this.constructor!==typedArray.constructor)throw TypeError();var byteLength=typedArray.length*this.BYTES_PER_ELEMENT;Object.defineProperty(this,"buffer",{value:new ArrayBuffer(byteLength)});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:0});Object.defineProperty(this,"length",{value:typedArray.length});for(var i=0;i=1&&Type(arguments[0])==="object"&&!(arguments[0]instanceof $TypedArray$)&&!(arguments[0]instanceof ArrayBuffer||Class(arguments[0])==="ArrayBuffer")){return function(array){var byteLength=array.length*this.BYTES_PER_ELEMENT;Object.defineProperty(this,"buffer",{value:new ArrayBuffer(byteLength)});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:0});Object.defineProperty(this,"length",{value:array.length});for(var i=0;i=1&&Type(arguments[0])==="object"&&(arguments[0]instanceof ArrayBuffer||Class(arguments[0])==="ArrayBuffer")){return function(buffer,byteOffset,length){byteOffset=ToUint32(byteOffset);if(byteOffset>buffer.byteLength)throw RangeError("byteOffset out of range");if(byteOffset%this.BYTES_PER_ELEMENT)throw RangeError("buffer length minus the byteOffset is not a multiple of the element size.");if(length===undefined){var byteLength=buffer.byteLength-byteOffset;if(byteLength%this.BYTES_PER_ELEMENT)throw RangeError("length of buffer minus byteOffset not a multiple of the element size");length=byteLength/this.BYTES_PER_ELEMENT}else{length=ToUint32(length);byteLength=length*this.BYTES_PER_ELEMENT}if(byteOffset+byteLength>buffer.byteLength)throw RangeError("byteOffset and length reference an area beyond the end of the buffer");Object.defineProperty(this,"buffer",{value:buffer});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:byteOffset});Object.defineProperty(this,"length",{value:length})}.apply(this,arguments)}throw TypeError()}Object.defineProperty($TypedArray$,"from",{value:function(iterable){return new this(iterable)}});Object.defineProperty($TypedArray$,"of",{value:function(){return new this(arguments)}});var $TypedArrayPrototype$={};$TypedArray$.prototype=$TypedArrayPrototype$;Object.defineProperty($TypedArray$.prototype,"_getter",{value:function(index){if(arguments.length<1)throw SyntaxError("Not enough arguments");index=ToUint32(index);if(index>=this.length)return undefined;var bytes=[],i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i=this.length)return;var bytes=this._pack(value),i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i0){o._setter(to,o._getter(from));from=from+direction;to=to+direction;count=count-1}return o}});Object.defineProperty($TypedArray$.prototype,"every",{value:function(callbackfn){if(this===undefined||this===null)throw TypeError();var t=Object(this);var len=ToUint32(t.length);if(!IsCallable(callbackfn))throw TypeError();var thisArg=arguments[1];for(var i=0;i1?arguments[1]:undefined;var k=0;while(k1?arguments[1]:undefined;var k=0;while(k0){n=Number(arguments[1]);if(n!==n){n=0}else if(n!==0&&n!==1/0&&n!==-(1/0)){n=(n>0||-1)*floor(abs(n))}}if(n>=len)return-1;var k=n>=0?n:max(len-abs(n),0);for(;k1){n=Number(arguments[1]);if(n!==n){n=0}else if(n!==0&&n!==1/0&&n!==-(1/0)){n=(n>0||-1)*floor(abs(n))}}var k=n>=0?min(n,len-1):len-abs(n);for(;k>=0;k--){if(t._getter(k)===searchElement)return k}return-1}});Object.defineProperty($TypedArray$.prototype,"map",{value:function(callbackfn){if(this===undefined||this===null)throw TypeError();var t=Object(this);var len=ToUint32(t.length);if(!IsCallable(callbackfn))throw TypeError();var res=[];res.length=len;var thisp=arguments[1];for(var i=0;i=2){accumulator=arguments[1]}else{accumulator=t._getter(k++)}while(k=2){accumulator=arguments[1]}else{accumulator=t._getter(k--)}while(k>=0){accumulator=callbackfn.call(undefined,accumulator,t._getter(k),k,t);k--}return accumulator}});Object.defineProperty($TypedArray$.prototype,"reverse",{value:function(){if(this===undefined||this===null)throw TypeError();var t=Object(this);var len=ToUint32(t.length);var half=floor(len/2);for(var i=0,j=len-1;ithis.length){throw RangeError("Offset plus length of array is out of range")}byteOffset=this.byteOffset+offset*this.BYTES_PER_ELEMENT;byteLength=array.length*this.BYTES_PER_ELEMENT;if(array.buffer===this.buffer){tmp=[];for(i=0,s=array.byteOffset;ithis.length){throw RangeError("Offset plus length of array is out of range")}for(i=0;imax?max:v}start=ToInt32(start);end=ToInt32(end);if(arguments.length<1){start=0}if(arguments.length<2){end=this.length}if(start<0){start=this.length+start}if(end<0){end=this.length+end}start=clamp(start,0,this.length);end=clamp(end,0,this.length);var len=end-start;if(len<0){len=0}return new this.constructor(this.buffer,this.byteOffset+start*this.BYTES_PER_ELEMENT,len)}});function makeTypedArray(elementSize,pack,unpack){var TypedArray=function(){Object.defineProperty(this,"constructor",{value:TypedArray});$TypedArray$.apply(this,arguments);makeArrayAccessors(this)};if("__proto__"in TypedArray){TypedArray.__proto__=$TypedArray$}else{TypedArray.from=$TypedArray$.from;TypedArray.of=$TypedArray$.of}TypedArray.BYTES_PER_ELEMENT=elementSize;var TypedArrayPrototype=function(){};TypedArrayPrototype.prototype=$TypedArrayPrototype$;TypedArray.prototype=new TypedArrayPrototype;Object.defineProperty(TypedArray.prototype,"BYTES_PER_ELEMENT",{value:elementSize});Object.defineProperty(TypedArray.prototype,"_pack",{value:pack});Object.defineProperty(TypedArray.prototype,"_unpack",{value:unpack});return TypedArray}var Int8Array=makeTypedArray(1,packI8,unpackI8);var Uint8Array=makeTypedArray(1,packU8,unpackU8);var Uint8ClampedArray=makeTypedArray(1,packU8Clamped,unpackU8);var Int16Array=makeTypedArray(2,packI16,unpackI16);var Uint16Array=makeTypedArray(2,packU16,unpackU16);var Int32Array=makeTypedArray(4,packI32,unpackI32);var Uint32Array=makeTypedArray(4,packU32,unpackU32);var Float32Array=makeTypedArray(4,packF32,unpackF32);var Float64Array=makeTypedArray(8,packF64,unpackF64);global.Int8Array=global.Int8Array||Int8Array;global.Uint8Array=global.Uint8Array||Uint8Array;global.Uint8ClampedArray=global.Uint8ClampedArray||Uint8ClampedArray;global.Int16Array=global.Int16Array||Int16Array;global.Uint16Array=global.Uint16Array||Uint16Array;global.Int32Array=global.Int32Array||Int32Array;global.Uint32Array=global.Uint32Array||Uint32Array;global.Float32Array=global.Float32Array||Float32Array;global.Float64Array=global.Float64Array||Float64Array})();(function(){function r(array,index){return IsCallable(array.get)?array.get(index):array[index]}var IS_BIG_ENDIAN=function(){var u16array=new Uint16Array([4660]),u8array=new Uint8Array(u16array.buffer);return r(u8array,0)===18}();function DataView(buffer,byteOffset,byteLength){if(!(buffer instanceof ArrayBuffer||Class(buffer)==="ArrayBuffer"))throw TypeError();byteOffset=ToUint32(byteOffset);if(byteOffset>buffer.byteLength)throw RangeError("byteOffset out of range");if(byteLength===undefined)byteLength=buffer.byteLength-byteOffset;else byteLength=ToUint32(byteLength);if(byteOffset+byteLength>buffer.byteLength)throw RangeError("byteOffset and length reference an area beyond the end of the buffer");Object.defineProperty(this,"buffer",{value:buffer});Object.defineProperty(this,"byteLength",{value:byteLength});Object.defineProperty(this,"byteOffset",{value:byteOffset})}function makeGetter(arrayType){return function GetViewValue(byteOffset,littleEndian){byteOffset=ToUint32(byteOffset);if(byteOffset+arrayType.BYTES_PER_ELEMENT>this.byteLength)throw RangeError("Array index out of range");byteOffset+=this.byteOffset;var uint8Array=new Uint8Array(this.buffer,byteOffset,arrayType.BYTES_PER_ELEMENT),bytes=[];for(var i=0;ithis.byteLength)throw RangeError("Array index out of range");var typeArray=new arrayType([value]),byteArray=new Uint8Array(typeArray.buffer),bytes=[],i,byteView;for(i=0;i + @@ -31,7 +31,7 @@
    mizer - 2.5.4 + 2.5.4.9125
  • Writing the predator mass as \(w\) and the prey mass as \(w_p\), the feeding kernel is 1 if \(w/w_p\) is between ppmr_min and -ppmr_max and zero otherwise. The parameters need to be given in the -species parameter dataframe in the columns ppmr_min and -ppmr_max.

    +ppmr_max inclusive and zero otherwise. ppmr_min must be strictly smaller +than ppmr_max. The parameters need to be given in the species parameter +dataframe in the columns ppmr_min and ppmr_max.

    See also

    @@ -130,7 +139,7 @@

    Examplesspecies_params(params)$ppmr_max <- 4000 species_params(params)$ppmr_min <- 200 species_params(params)$pred_kernel_type <- "box" -plot(w_full(params), getPredKernel(params)["Cod", 10, ], type="l", log="x") +plot(w_full(params), getPredKernel(params)["Cod", 10, ], type="l", log="x")

    diff --git a/docs/reference/calc_selectivity.html b/docs/reference/calc_selectivity.html index 06d07d8a6..1876f9770 100644 --- a/docs/reference/calc_selectivity.html +++ b/docs/reference/calc_selectivity.html @@ -5,11 +5,19 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - +not set by the user. The returned array is initialised to zero, so +gear-species combinations that are not listed in gear_params(params) remain +zero. For each listed combination the function named in sel_func is called +with w = params@w, the corresponding species parameters, and the +selectivity parameters from the matching row in gear_params(params)."> Skip to contents @@ -17,7 +25,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Clears the session's extension registry. You can then create a new +extension chain with registerExtensions().

    +
    + +
    +

    Usage

    +
    clearExtensionChain()
    +
    + +
    +

    Value

    +

    Invisibly, an empty character vector.

    +
    + + +
    + + +
    + + + + + + + diff --git a/docs/reference/coerceToExtensionClass.html b/docs/reference/coerceToExtensionClass.html new file mode 100644 index 000000000..58ca215ee --- /dev/null +++ b/docs/reference/coerceToExtensionClass.html @@ -0,0 +1,150 @@ + +Coerce a mizer object to its registered extension class — coerceToExtensionClass • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Coerces a MizerParams or MizerSim object to the S4 marker class +corresponding to the object's own extension chain. For MizerSim, the +extension chain is read from sim@params@extensions.

    +
    + +
    +

    Usage

    +
    coerceToExtensionClass(object, extensions = objectExtensions(object))
    +
    + +
    +

    Arguments

    + + +
    object
    +

    A MizerParams or MizerSim object.

    + + +
    extensions
    +

    Optional extension chain. Defaults to the chain stored in +object, or in object@params for MizerSim.

    + +
    +
    +

    Value

    +

    The same object coerced to the appropriate marker class, or to the +base class for an empty extension chain.

    +
    + + +
    + + +
    + + + + + + + diff --git a/docs/reference/compareExtensionChains.html b/docs/reference/compareExtensionChains.html new file mode 100644 index 000000000..563245b71 --- /dev/null +++ b/docs/reference/compareExtensionChains.html @@ -0,0 +1,131 @@ + +Compare two extension chains — compareExtensionChains • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Compare two extension chains

    +
    + +
    +

    Usage

    +
    compareExtensionChains(old, new)
    +
    + +
    +

    Arguments

    + + +
    old
    +

    Named character vector for the previously registered chain.

    + + +
    new
    +

    Named character vector for the proposed chain.

    + +
    +
    +

    Value

    +

    One of "identical", "new_is_suffix", "old_is_suffix", or +"incompatible".

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/compareParams.html b/docs/reference/compareParams.html index f4b218c2b..c331d5556 100644 --- a/docs/reference/compareParams.html +++ b/docs/reference/compareParams.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - + Skip to contents @@ -13,7 +13,7 @@ mizer - 2.5.4 + 2.5.4.9125 - - - - - -
    -
    -
    - -
    -

    Values of other ecosystem components at end of simulation

    -
    - -
    -

    Usage

    -
    finalNOther(sim)
    -
    - -
    -

    Arguments

    - - -
    sim
    -

    A MizerSim object

    - -
    -
    -

    Value

    -

    A named list holding the values of other ecosystem components at the -end of the simulation

    -
    - -
    - - -
    - - - - - - + + + + + + + diff --git a/docs/reference/formatExtensionChain.html b/docs/reference/formatExtensionChain.html new file mode 100644 index 000000000..566c31106 --- /dev/null +++ b/docs/reference/formatExtensionChain.html @@ -0,0 +1,127 @@ + +Format an extension chain as a human-readable string — formatExtensionChain • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Format an extension chain as a human-readable string

    +
    + +
    +

    Usage

    +
    formatExtensionChain(extensions)
    +
    + +
    +

    Arguments

    + + +
    extensions
    +

    Named character vector of extensions.

    + +
    +
    +

    Value

    +

    A character string such as "mizerExtB -> mizerExtA", or +"<empty>" for a zero-length chain.

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/gear_params.html b/docs/reference/gear_params.html index 93aaa7437..8161cafc9 100644 --- a/docs/reference/gear_params.html +++ b/docs/reference/gear_params.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 - - - - - -
    -
    -
    - -
    -

    Get information about other ecosystem components

    -
    - -
    -

    Usage

    -
    getComponent(params, component)
    -
    - -
    -

    Arguments

    - - -
    params
    -

    A MizerParams object

    - - -
    component
    -

    Name of the component of interest. If missing, a list of -all components will be returned.

    - -
    -
    -

    Value

    -

    A list with the entries initial_value, dynamics_fun, -encounter_fun, mort_fun, component_params for the requested -component. If the requested component does not exist, NULL is returned. -If no component argument is given, then a list of lists for all -components is returned.

    -
    - -
    - - -
    - - - - - - + + + + + + + diff --git a/docs/reference/getCriticalFeedingLevel.html b/docs/reference/getCriticalFeedingLevel.html index 5f7c807ea..fb875ec7e 100644 --- a/docs/reference/getCriticalFeedingLevel.html +++ b/docs/reference/getCriticalFeedingLevel.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Calculates the diffusion rate \(D_i(w)\) (grams^2/year) for each species. +This is the rate at which the abundance density is diffused along the +size axis due to the variability in prey sizes. This is the diffusion +term from the jump-growth equation.

    +
    + +
    +

    Usage

    +
    getDiffusion(
    +  params,
    +  n = initialN(params),
    +  n_pp = initialNResource(params),
    +  n_other = initialNOther(params),
    +  t = 0,
    +  ...
    +)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + + +
    n
    +

    A matrix of species abundances (species x size). Defaults to the +initial abundances in params.

    + + +
    n_pp
    +

    A vector of the resource abundance by size. Defaults to the +initial resource abundances in params.

    + + +
    n_other
    +

    A list of abundances for other dynamical components.

    + + +
    t
    +

    The time for which to do the calculation.

    + + +
    ...
    +

    Unused

    + +
    +
    +

    Value

    +

    An array of dimensions species x size holding the diffusion rates.

    +
    +
    +

    References

    +

    Datta, S., Delius, G. W. and Law, R. (2010). A jump-growth model for +predator-prey dynamics: derivation and application to marine ecosystems. +Bulletin of Mathematical Biology, 72(6):1361–1382

    +
    + + +
    + + +
    + + + + + + + diff --git a/docs/reference/getEGrowth.html b/docs/reference/getEGrowth.html index 7814ee5b5..ee4f860e0 100644 --- a/docs/reference/getEGrowth.html +++ b/docs/reference/getEGrowth.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Calculates the flux \(J_i(w)\) (numbers/year) entering each size class +from the one below it. This is composed of an advective flux from somatic +growth and a diffusive flux from the redistribution of individuals.

    +
    + +
    +

    Usage

    +
    getFlux(
    +  params,
    +  n = initialN(params),
    +  n_pp = initialNResource(params),
    +  n_other = initialNOther(params),
    +  t = 0,
    +  ...
    +)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + + +
    n
    +

    A matrix of species abundances (species x size).

    + + +
    n_pp
    +

    A vector of the resource abundance by size

    + + +
    n_other
    +

    A list of abundances for other dynamical components of the +ecosystem

    + + +
    t
    +

    The time for which to do the calculation (Not used by standard +mizer rate functions but useful for extensions with time-dependent +parameters.)

    + + +
    ...
    +

    Unused

    + +
    +
    +

    Value

    +

    An ArraySpeciesBySize object (species x size) with the flux of individuals +entering each size class (numbers/year).

    +
    +
    +

    Details

    +

    At the recruitment size, the flux is simply the recruitment rate +\(R_{dd,i}\) (see getRDD()). For sizes below the recruitment size +the flux is zero.

    +
    + + +
    +

    Examples

    +
    # \donttest{
    +params <- NS_params
    +# Project with constant fishing effort for all gears for 20 time steps
    +sim <- project(params, t_max = 20, effort = 0.5)
    +# Get the flux at a particular time step
    +flux <- getFlux(params, n = N(sim)[15, , ], n_pp = NResource(sim)[15, ], t = 15)
    +# Flux for Sprat of size 2g
    +flux["Sprat", "2"]
    +#> [1] 45461076783
    +# }
    +
    +
    +
    + + +
    + + + + + + + diff --git a/docs/reference/getGrowthCurves.html b/docs/reference/getGrowthCurves.html index 70a181bc6..97dda07c7 100644 --- a/docs/reference/getGrowthCurves.html +++ b/docs/reference/getGrowthCurves.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - + Skip to contents @@ -13,7 +13,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Get the registered mizer extension chain

    +
    + +
    +

    Usage

    +
    getRegisteredExtensions()
    +
    + +
    +

    Value

    +

    A named character vector giving the maximal extension chain +registered for this R session.

    +
    + + +
    + + +
    + + + + + + + diff --git a/docs/reference/getReproductionLevel.html b/docs/reference/getReproductionLevel.html index c805a1a59..746857f72 100644 --- a/docs/reference/getReproductionLevel.html +++ b/docs/reference/getReproductionLevel.html @@ -5,10 +5,8 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -17,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    [Experimental] +Calculates the trophic level of individuals of each species at each size, +assuming the system is in a steady state. The trophic level of an individual +is defined as 1 more than the consumption-rate-weighted average trophic level +of all the prey it has consumed during its lifetime up to the current size. +The trophic level of the primary resource is set to 0.

    +
    + +
    +

    Usage

    +
    getTrophicLevel(
    +  params,
    +  n = initialN(params),
    +  n_pp = initialNResource(params),
    +  n_other = initialNOther(params),
    +  ...
    +)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + + +
    n
    +

    A matrix of species abundances (species x size).

    + + +
    n_pp
    +

    A vector of the resource abundance by size

    + + +
    n_other
    +

    A list of abundances for other dynamical components of the +ecosystem

    + +
    +
    +

    Value

    +

    An ArraySpeciesBySize object (species x size) with the trophic +level of individuals at each size. Entries below the egg size of each +species are NA.

    +
    +
    +

    Details

    +

    In the traditional non-size-resolved approach, all individuals of a species +have the same diet composition \(D_{ij}\), defined as the proportion of +total biomass intake of species \(i\) that comes from species \(j\). +The trophic levels then satisfy +$$T_i = 1 + \sum_j D_{ij}\,T_j,$$ +which is solved as a linear system \((I - D)\,\mathbf{T} = \mathbf{1}\).

    +

    In mizer, diet composition changes as an individual grows, so we must +integrate over the individual's lifetime. Assuming a steady state so that +the growth rate \(g_i(w)\) and prey densities depend only on size and not +on time, we can replace the integral over time since birth by an integral +over weight using \(dt = dw / g_i(w)\). The trophic level +\(T_i(w)\) of an individual of species \(i\) at weight \(w\) is +then +$$ +T_i(w) = 1 + \frac{ + \int_{w_0}^{w} \frac{1}{g_i(w')} \sum_j \int r_{ij}(w', w_p)\, T_j(w_p)\, dw_p\, dw' +}{ + \int_{w_0}^{w} \frac{1}{g_i(w')} \sum_j \int r_{ij}(w', w_p)\, dw_p\, dw' +}, +$$ +where \(w_0\) is the egg size and \(r_{ij}(w, w_p)\) is the rate at +which a predator of species \(i\) at weight \(w\) consumes biomass from +prey species \(j\) at weight \(w_p\): +$$ +r_{ij}(w, w_p) = \theta_{ij}\,\gamma_i(w)\,(1 - f_i(w))\,\phi_i(w/w_p)\, + N_j(w_p)\,w_p. +$$ +The sum over \(j\) runs over all species. The resource is excluded from +the numerator because its trophic level is 0, but is included in the +denominator (which equals the total biomass consumed over the predator's +lifetime from egg size to current weight \(w\)).

    +

    This equation can be viewed as a linear system +\((I - D)\,\mathbf{T} = \mathbf{1}\) in which the entries of +\(\mathbf{T}\) are indexed by \((i, w)\) and the matrix \(D\) encodes +the lifetime-integrated diet composition. The system is solved iteratively +from small to large sizes, exploiting the fact that prey are typically much +smaller than the predator (large predator-to-prey mass ratio), so that the +trophic levels of all relevant prey sizes are already known when computing +\(T_i(w)\).

    +
    + + +
    +

    Examples

    +
    tl <- getTrophicLevel(NS_params)
    +plot(tl)
    +
    +
    +
    +
    + + +
    + + + + + + + diff --git a/docs/reference/getTrophicLevelBySpecies.html b/docs/reference/getTrophicLevelBySpecies.html new file mode 100644 index 000000000..fc670efa1 --- /dev/null +++ b/docs/reference/getTrophicLevelBySpecies.html @@ -0,0 +1,197 @@ + +Get mean trophic level of each species — getTrophicLevelBySpecies • mizer + Skip to contents + + +
    +
    +
    + +
    +

    [Experimental] +Calculates the consumption-rate-weighted mean trophic level of each species, +defined as +$$ + T_i = \frac{\int r_i(w)\,N_i(w)\,T_i(w)\,dw} + {\int r_i(w)\,N_i(w)\,dw}, +$$ +where \(r_i(w) = (1 - f_i(w))\,E_i(w)\) is the consumption rate of an +individual of species \(i\) at weight \(w\), \(N_i(w)\) is the +abundance density, and \(T_i(w)\) is the size-resolved trophic level +from getTrophicLevel().

    +
    + +
    +

    Usage

    +
    getTrophicLevelBySpecies(
    +  params,
    +  n = initialN(params),
    +  n_pp = initialNResource(params),
    +  n_other = initialNOther(params),
    +  ...
    +)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + + +
    n
    +

    A matrix of species abundances (species x size).

    + + +
    n_pp
    +

    A vector of the resource abundance by size

    + + +
    n_other
    +

    A list of abundances for other dynamical components of the +ecosystem

    + +
    +
    +

    Value

    +

    A named vector with the mean trophic level for each species.

    +
    + + +
    +

    Examples

    +
    getTrophicLevelBySpecies(NS_params)
    +#>    Sprat  Sandeel   N.pout  Herring      Dab  Whiting     Sole  Gurnard 
    +#> 1.000097 1.000046 1.215283 1.005033 1.278265 1.525713 1.217122 1.044212 
    +#>   Plaice  Haddock      Cod   Saithe 
    +#> 1.146182 1.151806 2.074701 1.602743 
    +
    +
    +
    + + +
    + + + + + + + diff --git a/docs/reference/getYield.html b/docs/reference/getYield.html index 5fa93d91a..b2d304fe6 100644 --- a/docs/reference/getYield.html +++ b/docs/reference/getYield.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -15,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    This function calculates the steady state abundance by solving the +transport equation with given growth and mortality rates. It sets up a +tri-diagonal system and solves it.

    +
    + +
    +

    Usage

    +
    get_steady_state_n(params, g, mu, N0)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + + +
    g
    +

    A matrix of growth rates (species x size)

    + + +
    mu
    +

    A matrix of mortality rates (species x size)

    + + +
    N0
    +

    A vector with the abundance at the smallest size for each species

    + +
    +
    +

    Value

    +

    A matrix with the steady state abundance

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/get_time_elements.html b/docs/reference/get_time_elements.html index 15f9bd580..470063bb9 100644 --- a/docs/reference/get_time_elements.html +++ b/docs/reference/get_time_elements.html @@ -1,13 +1,13 @@ -Get_time_elements — get_time_elements • mizer + Skip to contents @@ -15,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Test if an object is a ArraySpeciesBySize

    +
    + +
    +

    Usage

    +
    is.ArraySpeciesBySize(x)
    +
    + +
    +

    Arguments

    + + +
    x
    +

    An object to test.

    + +
    +
    +

    Value

    +

    TRUE if x is an ArraySpeciesBySize object, FALSE otherwise.

    +
    + +
    +

    Examples

    +
    is.ArraySpeciesBySize(getEncounter(NS_params))
    +#> [1] TRUE
    +is.ArraySpeciesBySize(matrix(1:4, nrow = 2))
    +#> [1] FALSE
    +
    +
    +
    + + +
    + + + + + + + diff --git a/docs/reference/is.ArraySpeciesByTime.html b/docs/reference/is.ArraySpeciesByTime.html new file mode 100644 index 000000000..6eef6bf2e --- /dev/null +++ b/docs/reference/is.ArraySpeciesByTime.html @@ -0,0 +1,134 @@ + +Test if an object is a ArraySpeciesByTime — is.ArraySpeciesByTime • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Test if an object is a ArraySpeciesByTime

    +
    + +
    +

    Usage

    +
    is.ArraySpeciesByTime(x)
    +
    + +
    +

    Arguments

    + + +
    x
    +

    An object to test.

    + +
    +
    +

    Value

    +

    TRUE if x is an ArraySpeciesByTime object, FALSE otherwise.

    +
    + +
    +

    Examples

    +
    is.ArraySpeciesByTime(getBiomass(NS_sim))
    +#> [1] TRUE
    +is.ArraySpeciesByTime(matrix(1:4, nrow = 2))
    +#> [1] FALSE
    +
    +
    +
    + + +
    + + + + + + + diff --git a/docs/reference/isSuffixChain.html b/docs/reference/isSuffixChain.html new file mode 100644 index 000000000..63be8f3a8 --- /dev/null +++ b/docs/reference/isSuffixChain.html @@ -0,0 +1,133 @@ + +Test whether one extension chain is a suffix of another — isSuffixChain • mizer + Skip to contents + + +
    +
    +
    + +
    +

    An empty candidate is always a suffix. Order and values must match +exactly for the overlapping tail.

    +
    + +
    +

    Usage

    +
    isSuffixChain(candidate, chain)
    +
    + +
    +

    Arguments

    + + +
    candidate
    +

    Named character vector to test.

    + + +
    chain
    +

    Named character vector that may contain candidate as a tail.

    + +
    +
    +

    Value

    +

    TRUE if candidate is a suffix of chain, FALSE otherwise.

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/isVersionRequirement.html b/docs/reference/isVersionRequirement.html new file mode 100644 index 000000000..d08c56568 --- /dev/null +++ b/docs/reference/isVersionRequirement.html @@ -0,0 +1,126 @@ + +Test whether a requirement string is a dotted version number — isVersionRequirement • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Test whether a requirement string is a dotted version number

    +
    + +
    +

    Usage

    +
    isVersionRequirement(requirement)
    +
    + +
    +

    Arguments

    + + +
    requirement
    +

    Character string.

    + +
    +
    +

    Value

    +

    TRUE if requirement matches "X.Y.Z..." (digits and dots only).

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/knife_edge.html b/docs/reference/knife_edge.html index fc2dac0e5..f675d40c0 100644 --- a/docs/reference/knife_edge.html +++ b/docs/reference/knife_edge.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Marks the specified set of species as background species by setting the +is_background column in their species parameters to TRUE. Background +species are handled differently in plots (displayed in grey) and their +abundances can be automatically adjusted to keep the community close to the +Sheldon spectrum (see adjustBackgroundSpecies() in the mizerExperimental +package).

    +
    + +
    +

    Usage

    +
    markBackground(object, species = NULL)
    +
    + +
    +

    Arguments

    + + +
    object
    +

    An object of class MizerParams or +MizerSim.

    + + +
    species
    +

    The species to be selected. Optional. By default all target +species are selected. A vector of species names, or a +numeric vector with the species indices, or a logical vector indicating for +each species whether it is to be selected (TRUE) or not.

    + +
    +
    +

    Value

    +

    An object of the same class as the object argument

    +
    +
    +

    See also

    + +
    + +
    +

    Examples

    +
    params <- markBackground(NS_params,
    +                         species = c("Sprat", "Sandeel", "N.pout"))
    +any(species_params(params)$is_background)
    +#> [1] TRUE
    +
    +
    +
    + + +
    + + + + + + + diff --git a/docs/reference/matchBiomasses-1.png b/docs/reference/matchBiomasses-1.png index a54f6befb96ffeb6c7a3c09aef322806050b521c..45b746e2632ded8aacc836eb38385d68e9f52293 100644 GIT binary patch delta 88984 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

    ae!G|;?cR>JW% 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 delta 89785 zcmaI8Wmr^g8#O$DfPx50gMb)xNSA<;0srku(z?{L^x3Ktja&{qQ6G#vVRbhKWf zu|Ll3v~`9*E(!Ep+@o*n6z(afIcj-^+}+2`VtCiAo}u$+=NV{3O9xbl4u_3hUxZ&^M z{!3d+>tyB&J}mO-2eCMvL|2{!_oJwxyO~;HL{9tr`{cqd+;{KZWznsfST#~MDvUDh z2=7Z%q>&1ymiO@RP?5O%pXc`?NJ1w<#GaNiaTzYf((zuosw`#R4rp$G9tA%Wt8~~L zDK;l%R?B^BX;nFiXfv4GhOUKRLJk}6J0m%qoSpl!-*LsetTEmrByewaicO5A(4CoiLH#1|R3-v?8!1^IztTa7~OUlNNh9)*zu$z z&FboEW|w8YI=}r2fm}Gthn<;v10y3&j|-=Xi3z9c%VWrNtcXz>ai0+$KWee`mD1`x zxWmS1p-+r;O;r6C>_Ve1im!N-Et8JZoA&zr0nMKWHIDpOl4=^8%>&XD6X;l2Zi9t| zwFJ}j3}h%r3Bs9XXJ?t*NX_mfj}dN->^*q@OI@#tKh}(Suc&`>o*~hg!k`n@Lvt8>2f&l8GOA>E+!_1&c?=uINz$h z_Hfvq>Iz`5X*JKQUP>n?$>G)h&^aj$EP@|tm1{Ye4ay}Cl z&U2lLetBp-k|Y@bi{vpU0TW`YF~O?$lq^!fj*h)*2OWk>!tz=O@qf;W7lB$>C?qp@ zYT>|zImE59Ttynh>vsy~0%X)19U zci&*x71jRtu!3#jyQatXGKbhshZ!u6YPLFBownnoq=Ev%%Cmtm) z#E&2zylvba>!*;$3`g{tEF}6+qtDFLf5|k=#(&GcLn16g!E2#DYln`3f!5mHt@{5T z>7o%%I%@U`u ztlnG+R_ADA6vMO4AoC#BrFv>rRtx6n=;(QmvN9!wxFl-_T+yx@3y%V(?Q$IqgFS%B zNW6IaE!xGBIU&xnQ#B!7XC{u@6uJlVxkHt?BOs~2UA3=JJpbQ0ylJB%k8b@2Uekgm z&OQFVD@rPeg2Q_18O*Bo(g6ntXXofB_rT4el1fr3c1q1YtR^8LVP5_D^I5Z{?CfmL z<<8bt2DpwS5&Pp|=}gg%RK)~^{#1GAIY0W=o}SvZld7s`)b7xMQdM=e^Fg2VAmY(~ z<8715sWZFfuy!JTvo~(4l=q7}G#C|@ckcVEJ|0%fBz4l())sKud7zpVc85xEr;Bfz zfQAMNZq~C2%vWd8s<8K4?1%tQNXe#M(KJ=<+OaYI-!MZfG5Dvix@$kPb76V#J4tFX=LX}A3@cvq?UFk2e(dOzVB_SAOaC3ptBQ4$vQnWB`>gJy

    ?p-KA|1>IlR7me2k5g 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�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 diff --git a/docs/reference/matchBiomasses.html b/docs/reference/matchBiomasses.html index e9691f643..2f87d7825 100644 --- a/docs/reference/matchBiomasses.html +++ b/docs/reference/matchBiomasses.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + +

    + + + +
    +
    +
    + +
    +

    Calculates the diffusion rate \(D_i(w)\) (grams^2/year) for each species. +This diffusion rate has two components:

    1. Thethe diffusion due due to the variability in prey sizes. This is the +diffusion term from the jump-growth equation.

    2. +
    3. Any externally specified diffusion, which is added via setExtDiffusion()

    4. +

    You would not usually call this function directly but instead use +getDiffusion(), which then calls this function unless an alternative +diffusion rate function has been registered, see setRateFunction().

    +
    + +
    +

    Usage

    +
    projectDiffusion(params, n, n_pp, n_other, t = 0, feeding_level, ...)
    +
    +# S3 method for class 'MizerParams'
    +projectDiffusion(params, n, n_pp, n_other, t = 0, feeding_level, ...)
    +
    +mizerDiffusion(params, n, n_pp, n_other, t = 0, feeding_level, ...)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + + +
    n
    +

    A matrix of species abundances (species x size).

    + + +
    n_pp
    +

    A vector of the resource abundance by size

    + + +
    n_other
    +

    A list of abundances for other dynamical components

    + + +
    t
    +

    The time for which to do the calculation (Not used by standard +mizer rate functions but useful for extensions.)

    + + +
    feeding_level
    +

    An array (species x size) with the feeding level. +If not provided, it is calculated from the given abundances.

    + + +
    ...
    +

    Unused

    + +
    +
    +

    Value

    +

    A two dimensional array (species x size) holding the diffusion rate.

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/mizerEGrowth.html b/docs/reference/mizerEGrowth.html index 3dceda07e..3724c5b66 100644 --- a/docs/reference/mizerEGrowth.html +++ b/docs/reference/mizerEGrowth.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Get the extension chain stored in a mizer object

    +
    + +
    +

    Usage

    +
    objectExtensions(object)
    +
    + +
    +

    Arguments

    + + +
    object
    +

    A MizerParams or MizerSim object.

    + +
    +
    +

    Value

    +

    A named character vector of extensions, or an empty character vector +if the object carries no extensions.

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/plot-1.png b/docs/reference/plot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..18f4a4f58349aa0762a7c9112a7c71fc6e91f41f GIT binary patch literal 80110 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 literal 0 HcmV?d00001 diff --git a/docs/reference/plot-3.png b/docs/reference/plot-3.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2cb7ff62a9e778070146c39ed2d8d6bcd8ac2b GIT binary patch literal 173772 zcmdS=Wn5I>_XZ3P-Cfch(gFgKf`lNcG}7JO-JK#x7H{56R`}@Ct zUOo4HJ~IyEnX_Z1H4VSQaVg>@yfaIhk)I75emb_faxBWODEzBzr z5Z~f1lE|erXn`;N(hjxUC?Hjn1x_h*N)w)qa%9^DR-dNo6?L~sAoE!{-`YkLb%out z`ZS0gPTO>27;OxmM-fXWtt%xWN*wT>-I;(A6C31dBoarrDJX`**M!ONC`3HB@6d~i zifHKmcY$l@3!31h{_k@2dIrVE```8bIdaSY-IB73hU5C*9X!s$?y<1Tc;h)>%#ib5zuD^Q6%bA7&q8a3AYHE7F zNJhqyIgH$@KkAYyW6Mvjz(fGbD=b7=a}@050FNg!plNGsi&$7OxQ~En2+=z?PQEor z^XXtmAQTmyW_`zt=!R?6#{oGuFR2hR_HvMss}ioc3Vm3@q$5N0`Tw2>|6jV!u0QQT zid6iWSRfj?_gx~2{*^AsAenqTA&|(hE}7HTVMRs2Pw*5O6$n{4iMgY|U$~V& z834arknZllaLc#{9wb>|o|HZCh}~xQ!}K*sVR*jgK&hx-dDiEWDu(=6h8Em$^_#D& z-EMb#9r!0ah;RH)Z#yF4?9vj}>wPDqTAhtEzMI|=QqZ-p7$STSVSS{`;HL8lFwV3= zB#;VW7%=c2^J3xn8K#-ef)pz1 zpSRiL1S#ULDOsr!P@=(rYMRhT(`6}H6lF?Cg{;o*{ol^~|7F)=SIJE3FkrgY|8%S` z+Obw&wU<8EmewqeR#6F?XX>yeFsw4{s6l@h4*H~?DWF^Hwjg3y2QO0%3NrYL`=4bP z7X<9WhYSkU@g+FdT9zGaghdYYrUkVIT{YL*pU{SByemBPA3M9xyqaUs;0>$LxwYY3 z*sp7?&Mw*EdWq=F)uJlQ(9>Kj|8EAEp3fhC;}KoFWNp$RY=BHX($uR?MF&m2OTAFG!NTp?ah6I$3uLhz4F;JC zBBiKB;(FD?|DB}j0Qc(m8fIC<`@QBMHGz#Pw^~42pPhC@NkMs&2+}S!%dOwl>Ezj@ z1wUf?MioTA)sprgADah*tF?ogrKK&ZqeqB|mN|*mR04ivVgp0HUQkvTBmc03|JN*o zccb9AzKe#SRV)OFDLY?U)S>+vAX*)o-8(||eVvB`y(ofS{X{*73lbyR6Ex#W;#LWG zFY)mEv8*3EEpS4f1DfshITAci=X!f`b0g)td9Pne7z=bPTMh5Q*Wp$VTB00aIbwgC z;79_>*jH=0Dnu1Kd8PmU-x_|07mpiHSsfx7-zL@LKn_83+yeS1$RCyT6=T!H@RS9! zz8<5-@C~zkj!XoXON@weTQh+fb;f!>o+n5_0XeyF{UNwOyRoBGnpXaeKt+ow@0(;t zY%zlxdx}wd=@O5k)P}M;$fG#6>4Usv}f+th5ne;|jH!9^dh`s6?9+>X>_%7VBmo}894_PJV(DGbZO}&)8`-TkZqL47F zTy@Mq^@GiOuU>N^#2GklC*7ze?xUxbE(h_>nQJXv(? zb(WNh;K6UKAMTzKi{K@4`9b-YAd&0^R|i*Z17+T(g+DdVzjEUVWvcV#sH(hw5%%Qr zPg;uaF+Hv18*a-lwCbf%EZRWD8v_W7Ck&{8yavFl3#^C_qM?B2oU%4@@QaH*d#RJi zN1Ve++Al^S#z-vPu{S2U63dQ9s{H_0!SUg>jB6tYLB$*rb{1l(zO^7K;)BjLin@WA4T>C%pI0b9{)*#|2t1I4OMeBA$@IFAgl4xUV-cJp$h8ZS<9eN} zwu1@J@Z70U3FWP~R2oL&`NFaP{nPUr3r7C(o=0)(?-puEfiw*45$G)A-5NxBjY^%l zkMvoNm?$err2o0fe@l&SE*;^f{J|T6+odcr-9;KC^rJ{4_3K(n@GTkAw(|1^m12FT z1PN(4?`E}gcer7zbbUTN8;!hDPX-*rO=LA%X1b>xW(F4;n ziiuVN#N&c!y7l%;yVARNe^AF<`DX?-eU7Zj+o7uJAcq8W2b{p$7gGs=Gd3z1fwei= zC)|R>*t#IV7Nb72zNKG#)CVW27#kK}u(VnVl_=UkPBm^^3HMbOAxPgQ^NioT(5`Xj zo<~~fPUoT#Ho$PBEQ>m>6v>go(`u0Dir=O`FjZ`|7V7xdIHl}6yFK~ z+gD01EV5R>X3%?ybtL!w*m-4W_#}Fhj+v{6%=?88cw_LI4g#x($OV#)vWOrJVZ%}4 z)d7L7wdBNXuC8R#DflH{ysg;Xmt$+m#RLfYAi?Xhp}@3A*ku{~VwF+egj5OcOyixF zdmO1oF%f9>!h3BOy8}|XlyP)8L)E$z$@u}iR!rQ5?2Bnw$SW}>&$xpb*vZggh?~c2 zIfy9(=bg`AnoySJsx!J9s4ShQOrAKjQb@NmX}ySiJLOqA<7!li;9i(`{fjs;>ANT- zTjwW!w*ET@Jx&tP>r^vWH|cQ5MT&-?u9Q+`;AP+ARia5VUBgB3t=xO(;D6)vHtcxE zheWDS8MG*Kr1T6MZrPsWd>Veu5?6$V=F$hQT{CPYb3v%!Hz5XpoO$Wv&r4iGKATCI z7}OBFaW6Y^Ig*DfHTBnTOAy#F=gRAp-fE>)lm=c$+LB&kB8I?)c1Iy-ForDCoJZ8l zz#&g|K#9l5YdiSUTb0z+*)s8VKHx#6Lkta!K@`y5oZ8JtF(L_ZeCtDfp4Us#;`Bz1 zLXPAwjk0MhUw-4Q0{PUT`Vg;wwF@Vx5SD&>|ISkz5l*W`E@CzS@)RII2vRyost^|WpO|or^A!q!v>WNFoMr1dFcr?77VPg9GRE8z65hEja zsyG&Zgm{im_jG#vnc@roxA<=>$<(ZvYp z=}bJ0`5g5Ai;ej3{>DY)MCr})!JR1$2dlz7YVPZde|sc@ZGE7}=w}KYE$UGrrL`|v zErp7|{gD3G>Lkj)R*hrI+iDaLP;}}4Jr?laW1qS3jcS=Wh0ohC!?Iy50aqWoeYC@;8c;Q+-cMCv5Om%iT6D){#XT>z^Pq zkpKHVDtyKDUJnnJgt$s|TI>J%!uZ>ld`533^7Bb3=ihI1bl{V&zk55mPn{v}8{Nq% z*gO~BpgaRi{LiZ^+Wj3r%THnldG<*fSv88KPW}JF%#EPGAtvK=@CANoOc}RULD0Vi z@a0|wga-aL@C#q1jir*rVaW+e&rUvC=bxzf+yE;AyRTbwGVw0<&2c5kzfe`R>c1Ps z`uQQti46z9+I0R~n-trBdIgMZ4U?IDl-F{+2afsz>* zhbI4!2wQ**dD0EJpM}q7Fp*c!54og5pWa0QB|5H2DdXjEG$3W!X{c3pjQ73l95Q~i-2?FN7S3M?v^C0W^>(FgB_ zio)b;`Ef|kC~!E*^XJKUCftu9UqB9)WYH`<@JWs^kpBVK2l_s%e*-S>f~iKQ^u#OU z-gp}m1Rn&vUPtRnFh;?+H zVS4v!-SZA9Ysa$dq)rC*@!SLB@u5%HX*60nufAU3@W>Tc8c!zw#q=-@SmNL6IaOa< zqct1EGq4L^DlV#jLGx)4NU%10)9hFaUw6W~itWarlXjQ#C#q9g%vl(M5~wJy6(}QTJ=$ zkGu9JXaEYrXaCpwbwNfiuhuVo)Uy`Z^1b8uhS*?x<~==w?Cl_1jm;*JQjNe@wlR<1 zJFyApoRH6WsuTZ|$Eg-j{y-8CcH7`z&1Q-?3dEs)IcwxFseRB0eSyuF`$i=`_PS|& zA_{*X+e=G}8zBbWf;Oecj{pzuua;S6ZKg)DuoH~C)&7t0jvrMfl7x(bZ9qVr>5c z6v%drp&&Jt@OQ_=HTP=1LxXc*C|RH5L>d&R{;U6SxfSdiT0ZobQa;;9c0$5`K$a#( ziLO5eI6FRS(r#@M_ao?~^`?eu5a7jO{gbo@hQM3ToA&N!TFytS&3J!#ffTizJnFlQ z(Y0=jTG#+lGWORJLdz_3d)+PgIyib-C^&{V1_y$a{S5D)i7ck!?f=SDTY z3UhqMA!qv%PxbWQBA``zelYGRF6vmjGPS+tzpCQL5Sf zX;of^blu$3I)21HKMRcE5W3zrO42s1!7Zf5=(;k%KKVIw zwBP%<sA3zy&XEHtu!s;wIDJE^q# z$>PrkPsi}nfiS&ZRT#;@Ak1iQ%xJ6B$DU7cQyg(h{>+3Sa;8D~Nj5Rk+ zF9k-HXj9n@7Wme*D`jPOQt)qo6|UY2|8+TvBoeQJ=}Wf>ytny17d2Z}w9{W{Y4Zs$ zzwwCYP4HmDAFt_vq0=8l(e?Yv>p?g<{U?_gKkbzk_OX!0$kFrQOqvsi_#rBLzht78 zqTc)PM;|KLiFHTeM-XVVI%Vl7@V!*yNHeTMgZkV#l#85~#kOAuW5e?T5Cr`EXZLom z&$dlP`A_US-H|n52X$46oMJ>6&5%~Gv=hENvoN;mR48H3h@*HXldPj4m7))f`g>49 z#y+$IWz@vOaS>AHkx|N0 zD~n(#%P$X}tn@VZrbw?r?);czDvle#z)ja_3u%5H{#3rlzKJZ_Z>*TkYJh zH`dpG(W1`^Cz>(oehnKJ>5+UJ92bHi!vhdJF2S>8M(U`vG(N@Pz zx+|>R9QTrzmP#VnyDJEWtf17l;{f{I_rP?Rp_GlO->$ma4-CAabc)A@fpJa$|wN zeg&g`C8oO)a^2B3$^%SpbNNhbZ8d4j+ykWW^GlCiR4N&PzVY zN=c<~?)eCv$Sl2R@xOfL&Y#s-5>MuGNR1E}j7FkL|EWFqzr56j=`ntLH3#11&iCBjq&=Huktqw1kIUW|a4 zVB;urChGb&$-HU7S`>}ZswX%QzlwwP&?gkUm?20n&=4|+s>`;>6wt)3;8XLuyPY%K?PcI_}TQovuX$2FOF<{t?v zdDO*vQ8T(1YM9e52zyBAKaa)FM+5)-b?8nnE=~=qaM@O3H)s>-<;ZBd=9K3{I}eBV zbY0QCZogZRF%T5|<6h0<0!^@S=o%)9c|~?0_~Nb5A1xl4m#;$v2w#Wv$Mr39W*zTJ zg%tAM9`t!BGcP{2vDqhZQFO@;yIuci_uS{ie95WB=~8g{r#PDOn0Udg?uE=p(KA+C&f>ml-m-N)^%Q)B zkiJ=i0Ln~$J9)d1f+R;zYgdYl1DJ_YQHftY>84&y5-rDqkn@dN_pg+c=$8yD0Mzcw;>09W#ZRmqKiL(PKsQLCD(&DSt0 zf>o0iaJf2(ke^76tzSF1eX_+eyqixx;TUu(U$sQrn12j|Y?t?LRarmUD^}c-!k=28 zTK+udnshWyhz(Q@``yJ=0YhPo{I3_t-TI+@^BaKsu^&SC_StM}wW-P)Hm@S^Ja&JUxs0~nNY;qj;J|@AOq&#x*awMxJ zT+v6Qkg}_=H#@|1b00j=Q8M=&OIq>z7dZ3S9KA#XP}oiq*=6J+q7Qu41ka2ncJY#H zI}f^|V+|Q7s2AC{w{h!HoyMbno{2j{3I!ij~suTTzO8=B0@_?m+`g= zYzW}T7RN1`y4+W><_=e1^vly2N;oq@_6LfbmP)+7WPcV`;$Wl$cR~pW#}VJF6P5e= zB0jB*kVKSfnoaCFjV2eLT$ts)E{MwSRZ=Hzh5KG6nKGZ%Q0x05@bNu*WyKZXx#H_y z=Cu{NNG_Nrx_E@z{ubh$jw{5?)Whw2U#F$zCR83M* z|65SEMzyQB9nHkBFfZizxz=seR4pu)X#zZjPli|@Mj_66FK@)y%r@!dz6(3)bx(=c z+((VLINqW}Bks5l@1i0t8Sekc^TBmh#fs-HBp4j|5HLrer8B7Z9G=atA8Y83E~rhW z(4evm{E}3aA$|ng`ujFA@AOB-GjTxe?0PCMWu{#D4QAfD{z4&%vUpL`7%U|YcYcVkd*gz=)B zOqhi>#hl7-w7QaPeRlqcO9z$X z#YCE(IAHG*){Hn|;*ws)@tm1Ya)5C!9Sw0e-~x8@$!?t(&VuhkjR0YwwngByVW_%8 zsI)`F&OB=IGOpiDDkPRk3k(C86;iVammygtEIL22U&U6G^t^KorAvbQE=-5389F{k z7)U2W6T?GD8yv90Y1AoCuOK8En~cqrEhbbNq3sZ;I??%Kva^J@gJ!pEr~7+R(GCX6 zIKg>0f!{ge!w%Z*7y&e2fN-oJ#Qz-87a9t`zz=7a&ip4rV#=tj7#HL0T_sIDBF34# zYR>2WrV+p$JpUCPyhLJs(q+XlWp{NEe_LA#H&Mox8DV2F@+N0mES`fg<366^Rd7F* z4`zAWEo(+*rt16m!MgU1NV@g*yScZRqtz!bS*=SRjL3!{vgF)7@eH zMjyFDC`)w1c8(A1uF3XDwpN?3*L%q6`K0p3JA+$%D*tPv`{SpFc0BBeN;?R@$k`CD z=hMR#?H~^^yH+5?z8TBlb|THNR!3GOhs2!U&i{Y40Q#PAPZtJHVcEhSlB$HZ3pHpS zi%ux^trr?^Tc~olgN0_SclpfRTwOt+A#>gm4I5uE%KI~)fUc*dCw@>~M`{${IQmGo z$|Y1~G~^d1XSO@baoS?~agJXrj|m*q%?`DoKUpjh4~=rP9pu8O41i_DLv`dXbzO6A zO!gizW~AC{f+U$$ffv&SN`n_Gg=Ur`3*(Qv>Ii&fU!rDrTXs^u<6kY?oHdN+#SvXv zN1y4iaw~4|NJ_=RouD713wkhYRY$3Dy8cfjBE?lf2l<>}lZd?QN zml-sX@Iv0Az~X|9>_It+Ptp65IMW4QucXI2fVFgf=lHoeu|2`WuzKE*$EyDB^8DP< zFolm+4!^3Z3dqX71(LL{SqOvsdF!aMQ-uEJuJ9f$63NF!_#PZ<77mpW-L+6z=w*H-c`du>w!Vz*K# zPctLETK3_3JQII%`DJ(1dZjONyOaOMpC9TeGFM|ofK4SLxO024Kf6&otKVIuUhMei z7v8~Av&UHAmHfi#)Cc9Yc;TatnNr=8v)m^NHqA0AJ-wy8y9%9BLGN=G^Wlt_JKpt> zIK@otkJf=NawdOk&XtmbcZayf!Z3y!(m+oKH*{4bK-l7CF2#!urDqfBANiyA}T z2BX3uY~_#QY0Jr33KIvteFnU;AJyu=8I%Y>P4ScI0gIA5_U#cAA`-1scIXUl1~j2P1j-$zJZmKF z*GTpaYsjXirg_E17|P-ge2*v8Pk0HUm(O^3c~4eDaP&{TrBy5ZAG|4EIRiQJeCh{O zV7G=X*+)PQ`z{Y5C&Lc@1he`+9PyOG{AG4eNy z{&3}yL+s|avi^v;fFAPY>h}iM!_MZzKl;8GpP3_;3g(Vr?rHUG+NN)_4xErNvMzqv z9+qa4VEE18C*a(mfS2y*n;7_ZachFJeE#`>s>OBFS}5ZLV$uvfh-%$IKmXqJimx{+ zI57I)-qR`qsS$>ogX0jUD^MIVjDcsmsakdi*BoisWuXHn4<{K-_D?(Idg#0`(Hg@< z`~8NObWaI%xvH4Ww%gfkGs{_`*Gvpj(bbKaueLC#0z`C1?t2nrfC%E_KlTlS~QT4!Vzur*v8=>g>AnRdl(Vea)U^9d$@w#q4nj(f0U^@Uk zZF`IA_m#$X4fnRIQ*L(OjfZz1)A7p?;PNZThbzbx9KY1;VjFN_*XPKF^owpi06|Gc zy!n(X-^M(F51i$889Ofu;K3__D02TD8~5azy!Ug!jh_Ho@43}Ob$`3+V|jRHs6KAH zsMUrWpvq6}p8slk_?=Br5xBA*gIfPbuWads=gAbD>v>#Tfjt0K?8~%bGuenu(B9~Q zRU4lk@8Ccyw=?y~SZZ*qfRzw=+;VtCu43QVOf!g&$bYf&^mqjaV$&#j#(nJd`ZVK_1_v z$BtQ&c;t?xM+*mTZbLs@zcpN6BRf5A{BVGNpaxh7)xrpULavN7WLsuEzH+)9Fgn=bEMJ8?24^n#N$uUfQKd z6yxYO?<+W*-;SJH26(28Lz0TZUG~e5*Uwg4;-OwmPyf?B+5-w$ei;4(6 zYCeVsJ?@o1TK_t96{6HA)q!Dw^*Dj$x2WnqK0X_6*6oiMnmcOR5(Z8Xt^2HxCS39sBEIQG4*goclsUT4?4=R zTS8{q)*SR)GD;hKPNuIXy4+eE88hGqfOvUyzkapZMl7r~8%uCZEy9oiGj|k6TRraw ztEqGlI#E@Tq$<&`=sJaLpiQj}?GeixNaff&e2Qcw zfYhWkV

    a83$Ufk1=<$n!ciUFtwfQ;(Tbn6FV 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%0A!Slnf2bCZt4stMz&b~^J7uV>w)P`HY(4xmIN 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 literal 0 HcmV?d00001 diff --git a/docs/reference/plot-4.png b/docs/reference/plot-4.png new file mode 100644 index 0000000000000000000000000000000000000000..4040102bef456882d2ef0464156c23d7ffffa08a GIT binary patch literal 75108 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 z zjPMD@_?)&i^uSQ(rN8dUFOdzLf$xidyK!+*w$Bh8i0BWyCsNu1!|z_{9s)u0u^u~p9EIi4zJ;(UZgfe)!^tUkl+?Ayv zg_G_T3l*9@6101sH)Mh~5u^le)U_Gc%$CnMJZiPfORrbwsagR`IJwfAKYz0H;Tdj2 z#Ry4)b=Nb6LX^DAKU4VUbCzj))WZ$;u9*rBPZ}QuZ6C#@FFC6z{9OPu==J+{6)n=* zMje9x=k@qhsu+d1`UYx8r?Sj>Y>Cjxy-yVaztwxg=<9r8?FPk6Tk(McQpG)yP7@mH z=>gr)%?8H3Zu+FMdo2}B+%Q&|T0g`-hpeoM`tRp{dIvstRAixire0kwwR*w!nSC|G z!_M;q#12jAQf2tp6yx>1X_WDMB8>Cs3wp^w+BkkqGAAGXu6`m?yyIS z#?HOJU%@=wEI%U~Q){8B{*VWMi8=Q^N^^x3EU+rmb>y6a-SXGfraSYB_A_IGO7xa_ z`-|a_iqJTUJbqyB0td7P-{o*tqZb4Fy`3&d!%{Db=%v0out8`K9l*x zyCdWX2&%xD)ZtO}w@raUa*rj4;p`OR#J#)TeQP|@)`}`hYEPGR*aKFFE7u5{JmZOm zzYj_%0zO62e@Dc!1{TZhwI_K}ya##zUIIO-6zyQQk-I)Qru`50zjXq5P0w8fU5E`3HSk70Nm-hcd7VVV4SL;l8z_HS#F3l;4<1}QCpR?l~b2@;fw z!$MxXU3r~6K~Wxsko{|1X@MKVHkn6oW7Kk=U*B5=jAU?W3cbc#QZWp=_Am>5cNsFC zKrb8DwnuUW40~*i$58r8Fp%z!WF#OE<%D;=cykQI^;^0ZTS)&tCOWjH#AqnheE#mC zZ}5@V$9@=CDyqu)@#NTSas8j42J_yz7sK}2>Y9DgcO@THF=`R9d^bH*3N;|RQ#Ue z?)_a@hJw~)cKnU4>w+mv`;p`HTL=+OYWZU{Ar-{XS zR9uHLpMZ?k?a`v$nGmT@S5%K*zSmy7RbcsNuYcGnSl)?!bo!PvVe9g4MvDG8yDt7WyqYp#qYx9t95YG>_QNmNdII*XOFN@c`*A)q?b`& znSOaGr{Lkgu6H1Hl!%eH(8z5X4yWioBn5@QV|>oz^p7p$S!XMmtZt6Iw7V5*RR7

    k}84ASKG;2ZJDkzw742aab82AO%+7W+SJY4b@5YGXqZ~xvf5856b3+au{(m2xYVIki zc+~toG)v#Y({*!sbQ(lhf`XE}AuV4}X z#%eilmiYbMinrl7C5!OnvSS!Ov}2uwtM=bVwOqns|F|{1n)9)0Xn`$pqzEe{xUuB* z_n3SEA>j1mu#yoYPBJ>PsS>B<*~FwYw*3$G51eBU-_(D)suH02%)alwWhBOSb0znG zzy8jJlF`LTa7o0q%)2mMOYpbCba!Uver|XE4J>=2(}FgU0?Pr;0X!pLJc}2~%>JHm z2Vn)uo_F48o>Wwl3*lK_RVZl<%Sq<=dwD7%%@Zg4nXHJ5RFu_HlLY71qz7}Ib|xWz zB-qOz&p-LcPVU5}oNbj0DE} zUZ=+-Tz>q{DL${%Z%G;woYB;^M1h4EnIVsUr%EY@(RtDn8N$T7j`(Xop424>xw*O61~Eu%cV~Qc@zg!ek@bqcRqPiJ^6;p}t2gv2!)C z>fPO+hbIq|U9sBA=9x&_nc1=*6kM%N$sgjUmB$oj3Hj}&ehTD zD45-_&{+9Gs-N<<(}^C(Oy-x ztB^06>{%J|ph@6M-q|jvIJ}>{y$EO2|6L3OFdUMc?~93_g^n5k-QxhFc|={nAW1Yt zxE&1M6%`b?9xkELivKS@{L&)K`y1oR34zNoi>=K)ANwCOZdv6h3CliPo=BS*Z}Y0P z?(ON^=~)ogn4_d^{U|qhcy|&w0fAdm(5&wHedHeo|S9)PzVOj4FAN?_57J(oh z|9d%Og4+xJf5Xzx)G@u^4xw={JmKD@CyVe$W>v%MoA zdHOQ|2YA9Ukj*R8A3HPg`r1QWbu`}L#srw$v;Qemc- zPjbq9=U#64^4?`LMg`^-=F2$W&fVPTu+$D69S7>gEPu4*-1yQgq>JDv{!;EDiE2|0 z-&t+d_EKZp;-RzN@@W{;6dfUpcDYwJYbRU1h_bHO8HE) zhlBhZy#wPLbNC4O4~tK=IY!8eqe5;RiCfXz+-l?(Y*9C(t@GfY`w<258UaT9qFlU3dHDD<&9HMge3iP+C)cOlb8r4 zn9HcD2BJ>V0Jd7hgIPgm3{&7e1g?j)E#-g3P}JULnKq-HTmmM2EP z^5#NrPT4RWPTfpgvtuQ#L?%OYgV{bV4rjZbAsW&-$U`QaW0KiR{NF5q^}CpTTTbsy zPhlfp7X$nZJ@K-2=9V_W6}xww1Jl*I0UEK0v<0}fj=0dn!vhx$zAmWIt+&q>1mgVL zGs{IrucKh3i!gF|DJa?o)g>+(Fw~Y7dG71iNoEfS#ppD$1Y|ONqP93fm560#a+FJS zab2n}=(kRoDV!{D*s52t)aEeljo0eiQ7D>?tj#Z!*+{DeXcq*s7ZOe$pgZ<99z0J! z;(PzmJM9Ln9lfsl!C@$MhG;T|iVbQVxqSJ1wQFrhP0g>R0*{|{^^evG z^TVn3N-^^)7ETQ=8M3V{#TN2%IjWh}q;U;*sLvn2EU?s$#mf$E`BOR5b!Bp91TdWB z*IuA78RUT&W5t{v0Rp5fl z56#?IR{GB@j7?wi{<6V1k#alF>;tFg4ZI7+MW4s>dOC{_I9jc2?WA~Z4fn4+l_3x= zm!V4B;z(E{uI7I%$@{fj@>_8-lV`FIjcVKt&cp{dgUf0P|MS)|TC!8I6%(KF{P14O zuZEW`rRkUAGIyiE+~*E6PIdi@`ehGRq|}{Sf3M}dgQGH&Ik7G=KKWl$8|7J??|Tcq zVWQH{Ly~>BC1;jDe=@m{S76N4M)f0y!r%~Yx;Fl|j&^yt-zx1pEIX zBnWR3eNegqgF7%dkh=I%2Xh@rGWV)y_ z^$*tXqN?7#>Iu1^+b%L>{HDrmX4|#SmR?`senaf%_a8YNZ%ag!GpWYuIV`P@#*x_< zcoFB#1TUMH4Ih6jE~+}|X|41+WJ-d^whOP%QpCHl>Nm6f{L2PgUI~-j`qyKs3oTu$ zMGGw<+ggMK!nH|U!=@Cv!oAZM*2sHl8PEE@X}dbqp=RN=5UTfmtH;qx?x)QeB5GaD zhwUo_1n zG_n{6r5>f$Z^D#kzjE`^-6|ZmMjMOcCew=2pSlu$$mEZ%i|xymyegWPcfNzS%bUB} z`&&_uD>uE7nrM60`%Ma-YV6HVVA8RA}l&MlYKvsMgjlRM)VddEHUQQFO`_=-~7 z43l#`JQNGBT}-gumWs8M#cB z_pfBP8D?SxTcNnjZ}Ni95=S>luQEa}Hp0kr#Ro$`P#!Zz)CXdo@s0kS;>hNBB*Zo! ztVl>tmqQbAI0Iq&ydTUs_Lt7IN-J7cLnF@Nq(Z_0B)^)NFhs9_me$bJv>lBX*DiH` z^!-UlxugDeM@(yp7t3|7`}O03j!P#tW&TsGtr;>hwK7y)UHOe-!^RX#r|Z_2Vq3f_eVuOk zli#E(?%`MVA~a7kVqVGcTGA04!Fbk9wExF5L%!;ndUWX|FJD4a7smcI>rJC5iL|#> zX|sD>Uw$khc+|%_BdVz@h19I2;Vc1(r*@Tnz5j|tK@Mqo_jIXGp_+oG$$f|M z&fvF4=X9m5bfhdYXJ7k#nsPKXqZor}?=r9|*`cx9bMOghYr4UV0m-B8v&O>wr?J9? zhSr;-pIUWENoq4dfX-t8LOe9d8F`-qA&Lka=$rX7k`nSR7qM5{8KZH!p0>j@H$nldJj5KT(x%dYMqS{)Th%;=Iku=JL$U><%k4-Gu(j9wyH^pUi&$ zD@h~*Rnz2_$w|N8>ACjzv)ZcPA8$LF$00hj^7~kr37;HuuX<$N9kB>^da0@HWdavd zJ6u7Be?dz2^tU4gT8GHVB{}2tGBUwYL0 z!+AY=q#=j{!}(`Q9WEM50ynpZ^@``lFM7X$#OvMT0u~#m7TE=rq#@e+u&cc5lBqZ! z05g;XX2WCZ7P>yK++81~%Fzk^!Aoi{afy1$lcrBga4DGVCdXYrC-#eGGP9oA>Tx&T zVe{og8Qe37%c0Jo$D~dsrkaAXVk`uBSD14M8F96>LEtfZ?lx|VKF%K*T`FbkSv@Lc z{L8Oq-`eBo9Bo9Glc#=F5eNR9IQ{Z~K=r;BV4k|J;inmP`y=Peg;;%G`%1m_oUQlP zhhp>#P4M9OuLvT6vzKoi*EkQ%V=au+Do*R}?!FVy%3(6wML?p`Tt7hEok5WhIkL)*00*}8~_!*lRsTQ`~DL9T7TovtGHQ6zb+8#YbF|-s+a^*`)iI?qR+dhxLJOzau%)a0OZN3N}QIW60BIZsO2TgMh2@GmUN+4SGW9$E1U zve3L96M(N@&c>=9*HE==?FwBRyzvha!5EF+?~8G#k#!@$3pm?=5f9f>aVNG`n~9Wu z2!dFDcI~%3v`_PxZC3WL#We75GzNa9ep)v`PO|ekW`sIvUY+1$3#Q-ieY)qwSV+tHiqWxdOO;Rm)(iYg)DKJfx@~OZ9$}UZ z47%cCNHuDjGO=Cyu{vRaHSE`OuV2)c%4&T#)3E$OzJyU>F)^wvpPZP0j96b?yjsh5 zIkiouGk}|pdZas(i}Nxs-Jtc44|P;BdQxgZ&Qn`$GF0=+T^6?LmEZcYSgp<gU~60CYWZ;=#-Q8o0v_ax8JnfQAZwTrEe zPSGZ5#lF<|bjyNs57t<)Ps+te@1K#~?4h}ElX{^9XZRhfgndFk_4O1*RExq;FWb8Z zKQ4~u4jbCv`ecjMGr22jol{Os@cypTH(9uYnq*HKXF7#0GnYCE{R6!UoX<8QXds0Q z^7rOu^PyhQsCKT!;ZLp37?{j8brxW#AfM|$8CSyUr`2yg z_QcCOQQ%jSZjJXZlSwXdGD*&g0?x{U7S)8FFa1wOh_r0I*ldlyR2CP*>CfRhTzEp6 zbBe`ERBc(6N!7CDWrh$n!THmx(mbLE>3*?1bCT@)I4d!JS(`X9e#bw=I<-O7!KtrP z{WZlz+{$J=V2kA(nb$Ac+HPN!gW%s3c9ei5=z>SFbVi)*OqzFLoZ?LTQ%YMRmtTWC zfre|CKs6`DKI<<=;=`1Z$4ltS1J+&@9H?Sk(W%F~#mk~+ zM7O=Sb~d|8CZA5L1FX%c=~N>-@s(X~Rs zccj{oa^q~g>-VMTPQ6y5^2GCF_KqgsGzm^$coASsxTW(Q>)O}#C`Y40cHQgiMl`Q> zx3R{0AIp5jF}C{r>5YCySrMT*SjV;M(Q@)OO256o+*kGHlz3L2X5=f^7ojWDEn7=b z9p?SSx+M%}U1)B`w((>0GsXAD`Bg;rqCQJATn0?yis3 zXkt#qdTHWb46RqfTCksCae_p(SY*xFvoBr{5)ccQx*uiOO!b%6vaY#BGnwAl_SCvJ zt~g$tUhva)SDI6DhfT43_&fN@XsTz<4_}S0dL1NIF)={*MsASVMoK%b+;CG=;q4A% zK!4rwBjMt!H4TfKqJEzO@=ZmwLxOuI^t!0@Eh z)q=vS9o9=}xy}h_#a-Td_;zUMkYj`;j`Q+a=Vh`Nl|jE4m#d>fU~Fc1j6bcP?YcUF zOZZ%0j_<0bE5z{{85<`lE@QZXJ9E?%y3)UjOuul7=5=+oX(cICt4y9Oju+8enxpiz zu~C)SVh;`J+88#BanfKO9sckv)R5qxTSS`gZ$ywD3t89G+dl2n@)d8sgZI)*s(Ck2 zm@anCQHaC%St`1>vR(t0g=bEJcjzWqEHIHmCm%6(#>Jf6N{W>poH4qPy(z=Q75eUz zZ51w)2}gd5N-EUs1O-RIm!}I-eimB)TH7BtG8COl`@yt1(-7u&_1+oW&1Siw1NF>n z9dz%s`on+o`EW{j?fe?1x$5V{oajHR62G>*=zILcWokklwt7Y zIWI{>?s9fTH1fD{*JfDYLuP65XL4e1;C#rf@e4;f<-4mksD&Q=VR*wjZALLO4IemV zDt*_L5?Z{z4@0e}N~yH|_9Lf^*sv*SZLdkK*=Kqg&cWilt8Hffx}Z~H4!k#FVte}5 zjFV(FtrFwH1I79LRo2tXC$}EnX)ZCu$+d4;9`n){lw2=v9QFHI^`XvC22L&4zP5`- ziFCqUs(1^pOp1Zi^UHXP>mt7Poa|7DOMK+4#hx+GX+0Wa|fA$^c?FM(grIRFwFJuZ_wAJ5se}1(_X;tIk7djCgkvmQyF?IQysy$G7 za3*TFHV&Fyh~MN(fQ~^h+fvJ1UDddtI-Nzv;xGa_}{r^@Uke_68!YZks7r z*Eq`kI>&6gf};5Q{XR`!xQQ2TDPrKfd;`@PjWYTaF7v#H2+HJ3BUv9lguvNFDsOT9 zEZ%%&;@-{4$ir+D?b42jnn_y=N-g+l=1>?i$lGoE&}*5dvvu0!j*U1-r)!Ce2P>uP zh`&XNc_>LrMk)y5n`GnYma@BQQwBZ6sMi-yYj&k8$!zya`1$*e_s*(CP!z5l4zXW< ztamo*3a4933ETL!vqkS+^+Znyzk9YAze&PX;DeW*=#vjr3Z3F=A!a^;9qtIW&^%lV zxRbv6*!Oj&jV|RQT{cIiE6SX%{|*^|hcnbb%}{9ia12lt24_uXGp&vSN6|W!p_lcC zLqh03v)DY+ipXq9EIgl@pG)oAtyhJ;dU3S;b0J-2Sm)2_T)#dumaUC1?=57O$Gbjv zg!*~kDJ&)|efnti8PDMqa0q3^0CE5=C`u+KCUVZ!4S1s@h|l)gBTrNq`r}C-*cyVW zeYlM!%c(W!P5|da>7XkjK=$RaV`qnhZa7&))Sj^d@B&5)h?Mja-*(V_knnn;L_)8= zigCNkO`7j3XfR@9VSd34$Ui4vC*C7-0YT{eyaj3u4DDF@bJT+p4Vci>R*0oGB&W|gHf_D%=V`A-g*z)_q|cBtFt6b~I+*vo$|hl7|Al>RGNKn_mje{wQ#Y=i;?G$LFr zM4A|sGc-v4EKKk0Kj&A(s1*KgJ+1iXo8qOSw6Q>LXGIOHId)9bs)7^FQZi-NnGdT$tC0B>MyhYUaa8jz2MVB%X)1$^zBCsfZ!6H5J0NS&11>+3P>BS6NGP%sebSGN$UT8ENuTf1J)7p3cmOvp!%u)bVC5 zgEHoXnt$E$HtnOYhX~V#E|VdwEZM6{@Nu<_q?6H&q+;Dv>|wvmHhik^@!ncPToe9Q*wvJIPKK%9G_7ZyE zmx(S75I3nGEUY^7mN2b=EBbrNNmyzJ#Tc|wD0+?r7zDu_Qh#~?xyRZ%awZ4VH>?Mm z1ZW(LoM$$_<}Ob*sc*D3-T!i)`Pkb;sQ6BvRKjJjQ8_r4kZw;EshQ6WtL2P6P*t8w zwh%7myG8G;oLCpMDbTc>5&c+&+uGg{JuoyDx=%p;EuNWoiT#>b!8_-O+oI#=V>!p7 zP4us}jwLSV-M#*!_n3cwOD>O@Wnog&W>#{m0>4{|(?#mld`C9u#OPToe0h88p{Mmp zwIEy(JyWKG&L+7>r%Ojb507z7*xMRa+UkZJnmbSciLjgb%eCy3a1r$lOh}dDL&L5O z758+vkHmc593h%LeWnY0&C!j{$U(Gy@m`pI_@R@894>tq2SgggLDj%C7jif+ZDd8| zy+$wN#^S>zWnhw8uwAGE)!OaP^sA$kuSQnfU5g(q2|lq5^`->9#={F2hgk_KmNze*LQD z-trAB%5Qw?Z{A`keO3t+^4}uf+==)c=^YO^xg2pt3F(b&Lv<^{BcX;QQy{nY8 z;4({MF@mXp7w}YHLQXa=WNphBE#k$TV=8x6Y$dX;txPyA=!Hc{auh$9E&9y?(m?)) zOJr{ME~SK+%`_#YnYDtBXmMf^zu4U{U8%9je&R68Sx-i)wI9H8|^o-v;R3wehsBrJLGsVfc`}Bjppgzf9zhSq!Fgk>$czZ z-BcY_zPh}b^*GFw>;c8f&t$f`B^$hjt*-NWx6N(b`!^g$rjwCEmaUu;ht@Ksx<5Fc zr(VwAU|riV&U0j4t1sFZymGNPnV88nAV#OY>fl7CxY_$RE**{R7XGRymGrPfuk;;O z0wbm#-*=aPSIBXJ?)nwy1^AAwFA|!a)0#h`R)eDO)r%|S1+#~;NZ!h!3bcCrUSrj# zDIInGgJ=J)U~;=*$+zmvd~Bu1cH&4>xwrs)nI)kcV2k$Gxg&FHEB>6?no)}VBc-(M zQ^Gdlh|W-c@GK9Z7$=XodO3!D{gs~zr*evlrlV@wbWbR`l~#W&&q|@@Z<_9_Q56Og z)m+!CYsjSd?cJme_-XhY3dy3XaIZ9Lj1RM{4Q>wLlb18x*_S`xxkhOAdFk?iU%uuW z8Qix~hLdYg6`F}Hgdc@}>$xr(6W6q99B&lDOLmHTfnkmV0y4(K+VRSsIFpUbEZC0bQ$uy9?z_y6XdeLz_&={(K8%G;sO! z#)FsX*>YTRiw?YA9{(xW6ZcwqTg`0BAw^{+Au+x^EW|P*F-bHbIqN}8%rLXjjslLK zjfqLY0Ha!hKfhX>mTN>YtoJL2IG@kPRE61Zs$-Vb*Dm>P+`Yh5gUew-q%Ja{oEi$3 zq}ZO^7Z^J$EXAW-Blu~D=fAC0IoDGwg#)lEJ}>bM_;D~e%O%!LJc&!X7{JZ)>~<}I zvg)($Zx3uc(uG#;!ea(R2$t=gxHw&DstWgjHQa)PctdwQCv{oTkt@jtXIvYkt2IAR zeLfTDDr-e(hBxljkE|(dD(K4B%Z_WhiGlY?61^A+&7P7gm-59wtLD?G#`61W2rY0I zwCZOIT%})#HkLf(7(_RzBPLq^+iX&(6c8tL`r-~~uF3z>N*tPL+-dr6=ML7U*^hv6 z#3k2bcEe$OSjyqaaN5$?aSF1rJLU{?Ee}@J<>mePv^15y1(oGfNA9+!Us>^(PBe?B z{>7RY}NjS8}w?&@+RdIqK{R-676{399FVWtEa3y*3~=W#(0*`D5Yh^T<(seJCp1_kNv6iMms?r!+@{rP`yyz!0U84L!F+vS|6Bm^^(W}Yf4tpptwMU9 z6ga6$=4=RIZen3^Q027R%}CO@n#=hy-R84EkFY?EVct56)UuFp>n*V7W(3})(U;kJ zP=t4Bp$u42XLIG>87XGrx?76>Gqq4eLj}Nxyk1CL)E&vl)Y&^E$Iwz=j1C1639?~+ zrk_4e$z7F>*k#T$!LL+0#VkeqfOZ%VcFV9FO3UBau*}s^$Q^yops8TNvkfY1S$|oX zmT<1?uIg=>65|^TBzK0Vkvn1lVE^H`h5$pn@De-yU3Okd%ezD@=uG6JOVf|Sp2t+M z$g1(tJacVZztlECHEYeLH1?>-%kMQq`iD4hbBQ$lD`+@BVcFh?elk#R>Pncj?Nxo& z5R=KZR4#;I^iW+Hq?`D41?fCemeQ#4PJ6Fp2XhtRdXUgYKja`)=- z4m2((4AZCiwUjZw;OVJH5@7}w%75Yc7twGrF{Q~_`%in5UBNo>e1|Q|jgxzLrl{1AEdGiNG&I&7BcPgig3Mtt;xCkO;K+O{P zKAXPj<(w7`?BY9MH-pV)3B}Cy2H1DDQ4ISE_+lot*(v$DCSS#Ul**( z5TFv#u6SNr$lqv3wN{PkC_k%L&1qBaW4q~HPG^?(WuJAX$j)lSEsAMr;F#g^Jf6pf z)>%MCm?CgTWvjokoywZ*g7;ep$>?f__e~VL8_Hp zzl-e1eNCj#UvI5St-7kiCTs6@E)xBA`n!j-&5_9Trx$|*K1O70|C=hsfc)RjtIlx9 zF+h%yo~Ut#--O|V{(&B)aev>_FBNdIHe$zT*}_*74>Xxw)_T<{-+08x*HkjUh@^Ab ze^#ov6>Drm^^9Xme7%9xBI04uu_)-?l;`Sw<=-?{&X(>mD0{QS5b$$dap;TPxkIEm zIF)oGps*k3m#qOpCrdZqX$b@lgq17Lht??ntoV?MK`?e9$JsttLg3aqYdE8}p=tso zKj-SO*hkTDKiP#;wJiho4)^n`mq?Ax2@hs~zFKKQpBX6Hvo*NgTlzhm2Bh5Z4kCu>h5hxAv?_Hk6rTrG-kt`~>(JY59NFMM%?T7dH`d>l z==5p+L^FL_Ug7q$Zky)Yh%PfgMf|3S3ml$qmL*J$HThM7zN<$WmPY5g8eJ%;0CocZ z?29LjZ?`476Y4nw+H!|aa-dXpENZe%phNNeyRBu2YfBOi!p;Dcoz=y<pJ?TOqLKR*u+yZ)-fN^Ah%w&P~Rn_SHlYCNVavB7nGESo}`*T zNwY*Z6U5?YelL!L4Xq8cRUhZwiW-9hiD5h5K1sLEve*@DD~_L}#_n^GCTTgJ;*nZ( zTq24Bl!3&sL}3jKdSS{#+Yb=|Sv?Pz9!=JD>gtAtmo2x_H^X2lYUU4ZyEYxZj!Z3D zqv%sj0gWH95$tLDf!h!m1`s+o6Y~5#_4DeYBMCQ~h4jqliNI=l@`-As8q0=LySAUx z?y2!c@#EdETtTyD26MZB@zmgQL7PD=nYUC}yy@q_l4_mZcej|_Pss=7Fc+(jCPjFzvPyRw-i;r{AH29Tu(S8p$urrBv@x9g@F)}p#vAwFczu*~ zD+Hj)f~>BFia{*G;^3LkEr~VXgbRbj@8EhU{is^neBoSr;4+iOd)}t_@D66*NK7)f z(y@FH%v)=^7CG23f5jj;cKMhCCkkkxuDf0R}UPzv`DA zdALt&>O)I`M$6tE76oXDulQqb9{1)wJPFokkdJ)aEvxe)Xk}k|A1Wike_BY@LSm(L zKla?qIGq-|2xev>dik8l8$aiD;zHC}Muu(bxAeofm&Vh|i zrkgImZ4&l{8V$6y2MRiKFM-}Z4}QjJ#HUeOz5k3K4x5|8<#S8hnI_e052K72&OzP7+ibTQ4B6BUuerQX<_3pwpKwpZbTn4WaxhzqUT^|AA})n*fE zRNM~7w&v5PRGFp%dc#dF5@-8-1l5IA)FR5bNTlV)q2^q)8|o-*Zb%U56LrkHNMXc< zULAdShgMOzF~z8oT6lfzkkb1a=kb<#sS7Dvb>SzeOt&W*lkBz`8l&pHfs+z$nV8@# zZm+?uL;h}@OBSu_U$(}`e-^1y4 zl}Bz|Tghd8L0hP6kWx;p-PDLBM-i;h^DW`amD5G?*XvuH-u{!8UmgkUWV4fLfwP4E zF5`%8fyvB5Bu5(9$c+onGJ9UmFE_nO+J9{KDC0+N{1gL!c4-cdY){gk_l4#9+@VkdYgbe_zJZ;y?e2xQ|#?nxfqUm1M8cqusmA_%vs3dj3wC9@DMB z5fbhz@j0~;Q+ey}t=#{8>glF}Kr25l`i_oSNe^UP>#Ll()Q_i)txV4l4K0fC21`xL z8+J-*JH3ok<8_L9c=W*#*GyZ)%!AhPA9xk5)t-GVsWFfZ=nT#GXOk~&nF_i2G ziO@VOJz5$Xc;pc9o)O+92B@e)7DphnEvZ}Yz?_8{QLbaHNFk4A{4Q#akUdo+#lW`516+ zK?^O8#G3on1Z{2VMVO?GI$ZJhzGye?Bcf9Zsi3ZL3R@?i?vk8m?Kqa@bF{0q88z|a zNnhr`BkbGeWjeYaGBO2A^3;HrwvQ-==Ki3)m*z5CBaA#miv}-|9@8`Ogu2Gv3#swt zMYI4|%gJMYXi`YVau&c_r8uNq(k;n5GHM`oZ17CyH;H`KCtvHR-DLa=Pa`7s{} z%Sjz29${L^?o_i4Z*#f;-XER8p-arHkA(J}TUln@zlKm{rlF^zNf2gE*pQ41cEfSk zgEG8wcU7j%gTW$dl@oNx=f}J^Z$OH%t$~BXB-DPBsT>x6D|HHw_XHliJxa*` zgv$4LKjN$Ks?8L|TmLvQ_Z8HK!+ERY;~YV5+g6fj5@)Ku#JVg;BwRegz$}nv=(g2r zNS9MckyOhMzmV?7W8Ur_bGf^>PW{1d(?97({_u)HNId5FZKw*@_Ak+tZr&nk#@biW^l?NO?ed!l@G=yJF`R3~!OpIr)-x_(_pnVOXGQDM;!B61_x)AGnm zd5e9(QZEI8oY28(@Cw?N=Cw`@EI*bFBi1Iri$Av(ox}J!jQzVgn}Rk0#A;7Z*>L)# zuS7ZaAG&SaV%|9hXz<%+Z@hXe`{y&JsvoTfF_dB=CnADbZ^)%(RN@P zLVe|bra6{!`PgX+q)<<&OKIWZ5r&p`h%6EI3wPce=*M!TZ55Eri8zZMklj!xm3)nG z$oGo{Z~VJ1Rn$JZZ703*TgI%ko2E1ikCVPl6>(AF#6yZu|1Swvs|W>r46a_h9Iz1^ zhnqZ{rn7j0#-*iAJ+4DDp=Dfi#ZtwS#2q!baGGp;eTF!jxUSh7Q`Ao5!$P zb(zs|$I!CorSGbRd9W8CD2LgML+DWOEN2H&P-)Vtn1FN4NGL^$b<@RqSW*;_8o2y6 zkl-z+E#x)1YB_wy>O#OyXSh9T*WILQk~wS!#16LNeu@Z~_MJt(sdk2Uoqsgzz8NSk z^FOto)2d>W!|_4A_nt$mnAT{NeToOqr8R8qM~l^GiLcLVH#~aZ@;j$E(EUxg`x|6q z_$RGuFGThdtu2huxxI!`Fd2rt@M3YyvaGxU0)kP$QYl4fWr8)0Bsb~CW+;vV-huNr zCx>y}doCui$mHx-8OgAZ&<`R#TvmGMUkE&>x_{_i*Tft~3ERgUktYQr7V-lh^D*Kf zAH(ZAJVZmr=shp>Byoou70CG<{vtD}P;_}nD7SOE1(@A6Yk=S|?1(er&os!kL`aYHaESMqVnvxEw6-J zttVsXNFdDbJt>*h;ns9GGVS{0G*MY-puxlLo{OqTc=2SR8)0`~yvtqri=7`|%pRXz zC95~vhUv#CD=2moFE+;w-lr~KPf~V7YQ755WyVW<2hzv&AlsCoeAw6+772!X-sjCU zREwXagNM*h*QTO8nTmmC&U|yM14n5|Cpa-tK}=nNKQ7Id6prx^Vt)sY&0W5r#2cw{ zHRy4`@RvJWuGt_vm?(KmHOj=<8E4erMM2@s1A_m%DGH}LNGE(G_FBs?oYpzA5BQ`! zP;uFwjlLv^b&Xi!)ztX$^X0Gb3vqIC{D|8_Zvt5Tkp1J|ldz3nX7z~O(o;_;=$|e~ z;X*X{@-d_1=%`6G+Z1GJeQvx&f$%;SHk@4P$?^u*Drx7zhzwFs#gYu`!20PYZWU-8 zZ~!OhD?@S)vAd}F-yQ#9ASd-Dc)ADfC zV3cGY-EjF~&SNs0tFPHA4i66r5u|^(-#-l;4G52<2*2C&N;XfE)Fr;7#jh0$R zlSW4~NaWeH8R_81X_LdYz1GPu&#usd>J0*Y8ba6h;c&4?vddoyk7-bktD6)+38tf6 z#aKn=&eKlu53mP^Ir*OCmG6Tju|`(l2yb9A2e z{H0=vUSM?(s$CqOJsj6gymbMt&2wBE*6FqrH@5f1vq)1C(LtM)4(xgGZ{tN?p!=rE zXw|2Q`eAZ59n()Z818$tu#q2MO>J^{UrEQybhF41c>B`RqQ~QI2EEZc7GBqzXOdRs zeF?!@)Xt84O=mE0u+)^2RgNxg>ba;}tX&wCoZ&?tCwj$Zd3QsRr<4g9t0c%=CD3lG zoL)5ENTYJHdTii!Kf`C%%kxELVTAr2jNb~P8A;?lcsa!PQiOip^~#!wo_aXKum;Yp z6w~c6ck|t6?6Pq5ZRaIDvBy?j4|GT0r@Q<*yF8i>BGL0C2T#=xL@9Cdh8~a~Z}(ap zh3_Q{`E2IMN?VTb?2F#<_KxG>t;d4I1K<18V1ZZ6?d7y>a2c-=8*Ui>{&&pzWiciV zYclaw(i42D)W9;cj7|VU%y#;JUs>*0$q&h&zEDx0`zq|hWBKra7>?73f-`qd@)W-> z{JSYF)K)41MMKkL(5&Qu;5)@9=Wb!o*uLRJI0vPHjNFXVImN#;3$D2xx#?KZ~U*)BmenX|+J`8n#!>QiYoZoE%|Z9k-oN?#UbrtiFtH)$q`N?^w> zxMe7apl_vEYPTzjpC|QILnbmGLKVYhijM|c+9A7pDg5C}pC?B1UgW0z%-?`T(uRhc~%-IO8e zv+>gZ0tuEw8QY(Xwvs<;ReL+Ij=sz(%!0gn7=WC8;0w2Se})7G^LepLT%Uuf`Qcbo zDfJxdfbxb~E{-JPYAO_0OG#!elNxcOKCrG4|D7OKJ+f!4MVzY|PVdpP&shx!il%N@ z!`OeoKS$1!fatkFw9|APt-nJ?c6| zhoH;b?>ESQDgRxg7Y~u@aM3t z*7KGJYA9`v{%8{hoGIO+pe5~FUt5F>l1qe#t9^&L0FX9Q+5O}Glv}MtIV|>2Af~KV z{63_m;}z>oe2PaHO^sm6PuN|8{iZvgZs(qUDnm8wgCkK6qdn?GYlfr3fC1NhVw+uqZPinrNz?d@57~7_yO(@ zeJK7tBDi>A42Z@B(00!V#3ZL}h&Lx%HL<2iGcN`}hoQ`it-98G;n&TWsHUhp4A5V> z%=W%Q$8MNSrR3PpW>zo1a!~k~ESyzsO|GiA?>|+SF`<=pr2zH1AmCe5^>cD%++x{- zXjSOv)-UFPn>m-60w5}-&>n4)zp4=pi9Z;@&|mY-vf16)AA**s&>X9r zh9JkaR-Hn<;=z_P7vd#4Ub@1=m#6aCU5faZBGShB;@9qS+*O zZtT&zmqC4+XZ`r@OR3p5XDYYzkssH_(}lde+@+AnQj@bQczI<-H0MMa8CiL_&evqo z>E*oTJbXOJLy;s(rE6wyVK4yFl`kPP*#Rg2v$2P7Ya99f z?K&=@j11iO{Ub_sYDnPJ_p>LB$%&kL@SG~17*UpXoxg(2s1+ZmQmYT9AnIm5t7p?+ zBunBU5JHwU+UXRp%&56vIv7tr{v3ApT`KJ z+n4E~Pcj6UprX3Biu4lfGUKx4dLVV8ud^;E1~f&<@(LO|E~?|oE(Rq;#8I{$-TEvo zEjQ5={P$U&w$s&=bUhc{*HKn}7v~28s4n@XlKJlQQfj1l>LXxPxTbd&v0$z@TJaR< z#RRsGdPAfn=k3l&zt9R?_|fI@6}?%OyIVY^G9Ky2+L|eh8+te;9x`2Z)c-r4Y@)`Y#wn zcwxcy^Owy`{2YFuZfMk*YWrSwPr{OLrXT6I?b^pOnm6U9_NXlX{dqEp#~TXDfCI`* zBr7Dz)+qdi_EodY)gK15EKUFz5C*q!WA({>$)t-c5ZY$>zJG%4i6vOXMepfcC%4Uj zijd*C<<%&(%$`XsXx|mXl+l7CF_`uY3i2xiQW96Pdu4ml;Ca4}cI4TZiAZKaC+_LT zBZuA0DFZ4WAt!(uVaCj*l0S;P?MB^6vu3YjxzxEnpqOu|9NwnSh0Zs4kpdL$d)6%& zZ*gd>Kk3%^u;6lKykawa{#T^sEBFxFh`bM1Ln1@4^?J1zRW7^w2PZ%dgjV=>9$M&9 zyp#c)dd?TUhVK*&&boiKU*69?sY~Y#)y7NYn898g^eTLgxNzsXJx0Fh%Y%WVO0v$I zeemZ{y!{%(>UeQeB9QHO-5dg5*lTY&GWWfOV2XxEIp;pvf)sRF?WGYu<{|`b?d4vhGqpVjL$w6%&g5XbF*eDZsni(ItuhC;wbt03SBh;F!= z*)TNDxGn(aZ}(Wgyumi|yW-uMuqFxagFu2KK;oiNU^i%GBX`u!PA&fgz8~HStY1wz z#*CySVJWQB4=R}`-yXPf`YS4W)v1=&;Mi@m2;g>i*BZvv)_{X?)s&Q$$=V1XmepW- zC^d;%wUQT!#h_(=`-mIG<1>-a{RV;6LkjXTyG_PtH&y{^&F-(?@wgvM?^HC|emgPD zI$X!Cb`XKft z4?Kv9bKpUl!+&|BGr7Ma0yqBAPDIdTcTgEdc4&-hNEsw0V-OE5w|BXK<&-|@9?};0 zny~2VNy~WASS!{#OL)OMT9(K`1ECOD>6BYD~o4=|0i32n%p;d ziN~UE^GO?6-TK!Jq2NJ*q}jSSE4bmhMJd#Xl9CrzU%9(-?CH2Nrk*C`Mo|2C(_xc2 z@?NTng*RNL)MBx8YAn;@=z>TqT)?+1VPZ=stGJsfCuYNzpVPN|3zs z)}s@r=g?$qNYx+Z%gG7VwX*RC81rIpF{s5uAI+7MF`aYF?lts@LQ(}M0~(ZB@+kx4 z^IC;+k_8DSbaL|~ch~T~j#;6%zrVHY%PYsTE0bFNE?(~<|Mc$KY-v^3gJJxtqRE)6 z$5e*5rlzz{Bm;X^CBey_1%I*-;_1=Ap<43F%3(!v52(d<4FYC!qjYx})5A5lxQ!Pp zuNW-v1Hs9ZB$&us^|9a#JhfyO1CGZ5M(9cx;D2bT-?+-h%&R>%mk)p0%y}|IiWiRl zX*x)n0PT!^gmn%Ht}si4dD$LV5xyNSlP@k+T|UHQ`hQ!g;(W1Ad*EHbDemusK2x<# zkb)r1CPs%QhhiREq3d1wSUF|Ase^OR>)3zzfjAcB48bsS~M2gX59Puaq{=- z@zPyag^>5%QDPkabTX4F6{}XwamKyKFVL3z-mUA^mTB<2Zckwt2wzC8BC~%y_o0RM zRyyx%h(6pk`7gTGd#rhiial6}y8~{s6C21R*bD9IHDt?Q30A8HraG`SC4AJH#YKQh zBH~#ZSKf}WIkb?!`1W9^*YJ)D^|dL=p+$X(+1~`5qmdjzzY7Iu=%mpNiC+T_EU5CS zDH>nJQFX`hHn(%0=5;Lh-#X2|=gTsR6H)*98Y`{Ek!X`6tqoLe7ja#5(gP%EUwztl z0(Maw$}`_(zf>3K=Htuv$eX7vnz#?{g6#!_RT3jvd#;G<%nIQB`s~s6U73-XrzqW=c zbcHh#Vi>>P%+yWct8=TDersU`@QCZKqe7k<6@jvT^LYZhCS_^kdF5o(b8XGzy<(hI zkp5~t)~=q;ZWrzfPuSn#!#a4KpL$7$$LoJ|T94W;P2WE@;1Q?B@7m?%=C8DORe;%!*sFDV9LjsDK=e5gWh3SyGRXbAhmK3&DCbSfLLewrpjDl@U7DRJCL+vGw*ux zPdyGF(y!gQnHY>(qZgZdz!fn-7KUBp-UfIg=>0%Co<$T#i9-aWJs#kRo!hwMw$4dk z*aH_dym{hRkAp2~AtSRKLeZE2uCUEJ8uY$*6_WzHEgCdBoDUv-({1F_Q*C;V^#(6D zLS>eUFqMi*TTk8`Jsc*lVJ{Tl*IA-vcrJ^# zp&)m>2y*z7XBSeh;q^<{larIgy^hsm2rM)oW2-Ey4MWC1a(q7~2?ofj`p{he&?m8e zp2gNJXX~Iw|5{;8M8ugHrM;U(^CyG!=sczz&+c9IE1-oq`rIDKD>3UukN+K?Y9p_s ztqYk1>u~_bs1wBd$+Q)>p5omUv-{Cg_3!`Gx3K*EWRpkg37gciZ2UZvpccnE!+-i? zFyNe*?z$VI{s0l78@sClH(nx_VF{_6n9u8K`;)xFsh|2H5F;B;cQ)}n(9f&j55KwO zbNO8eem$POlvf`lnwBGF?sv%q)!ie?mN#RQ4^P=D%Ka{5Szlkp&jz138Ti>qx zeb_DpN|0w3WdMx$U^=oJ-?Ib=B6q63A&PZL%*LCQ^zqry^_AJU6n(xv=2i6* z$(N&YKbcFS~lSBpn?;?hc646v2y3BVc*M_0Fx~f zWZJ6ug5-z@9w+|V7vXG-H62EwRM&io@*9Eu382EYy=VqxaMxPZz=b6b=5d?I&n7;k zM!2J)GHK7HND-&Lp%qiRcavzM5}RF%ud1Ba!&X?Et$Q+h;Dd`wF|G*v$? zLnHb7Xb)%+&c5WIxH+#w=-9;wXFcq?llFJZyk@=kW-6-GqJk2^dLAIRifHbLdmMbiCthOf*VZzeJ5sIz0{pZ>BT^1}Z(2Ou zycYx8)8c|(;#6~iRh3|Z93NKRie9a80mw6JWwf7iemou_kqw@%l-k=i^J(5P(*aXJ zqVR)`F5&PPh7p1M1@)MeM-H^;`j`6*oyn53 zN&8MN#j}p!QY(~7+-?5Z{-hCPmkIkT{6D&!?R`~>pFY2UcDI&lk z=`X@Ul)~om(wC0Ag~QzmYe=d1UENrtNq1l}1feT1*;zkBf*Dn6@QWae(4|D{H>)Nq z^_iJn=F|7bi{m93LBAJ`%$M&=jMHY3(tPF{@VV>@Vy7hA9>3_29eQk&eyFv&qyF)> zrQOPC{iF8LMRDeGwVrUtd%o*B_pMq&!3X_{Cl&sgAG`i+ZirOq;64GuDmhN9*Rz`H z?Kh^xUoa9tcz75S3*0pkf!E}AhY#2|UfgZ(HaC&8>Pp{M*JR%h)MOjXsxa#c90?+$ zd$)-AUC<}7Wk!I%XgY91=-6N|sqNyck3cqIlX9;vaa(SAE^N|-`mVNap~Ztqg|e&N zqQz{vd=Z4nPGIR`qk;|K!|AqW{T!#n7-dubUR{>ZbCY1=9sA6BI10+e>__1<#Q}6Z zS&g6P`=BV3&aU-_VcDNJa+eQRmKM1&p~HSCgPTd=X|$Z#U`t`3>(WZg!0@0xe_q>@ zg!?hUY}{Oh^iBq@O)cx6apzQF#0h1*W)rp0e$mEs20PO zs_#!7*1*3WEiMfPo;zJA+#VxrEw^?P%&yjpSOy~J-TO6eIMY$waXlf*dXvkSNW5GD zzd7ZV{{(2WEB=ocpk;Q{GNyevD4W}R>J8}Q=uoxg7!4+!PR_V(XKsiE?whd5Ykshg zK|*Hucb1a`D4c*f;r(p6m?_lEMeO3_US-lv=vlL56VP9)Jjj!N>IdesZkSy*?<19L zcE27U{%&tJRys<8wZkuYFC3$u<(sQPbw)g~-r}K>e+mr$ptf9@txK`pm|^SOpTBw; zEP%V7W8FiY)wbfcSl z5JMK#g&>Jbd*knMT^0iQ2)ebtHaslZo~Bmx$!CWW<}i(^roK5g>!qWNwD~F|9AP-9 zf3wlbfc&Z0ucjo-Coepn$Iy|LY#e(YUG#9S-exkcd!@1cem@VTfZ-XSzKSu^Jp(*f zNL`eb$-`$O$Bntdz!FVBJa9aq@}qqUZk58kUh7i zN?3)fcEcywXJ`Z%OIqDD9}p-;aG4wEFl;7ETmL4WmYH{n*6Mq;jJSIRb^ci;Cz(Qt zr6Z%&t&Mv>>_#za=@%m??%C!5C+6IH@A>e1Qqh8m`4u1T|CCJG9v4ZO3B_Z>*&I20 zz(x|!PMWupPm>%WtB7#4J%oE4(Rw(yit@2;RV7>m68HM6gEM-Ejt`hhk$uxa9sKSR zkpXKQfTn5rY25jyAFbbjha4m6E*Ny0$i7Vi>@&*;CT1hcNgTLcriOSG3BU_8Rqlr< zU~3q2o~jFrlgV=utArSUF0}_S7qRyb0U06W@qoF(_BCw1nAl_>obWn!zE&s3x@x4* zPjGIbS%ggRecNIHE-+>KQ~`0LKSP9Y)GA=rgS*#;AK(nSh`BgJ1LT)UF|zLz6*_^P z3FiJOKwr39LQ=}S|G9Xt8ta1xM1(hme!SuEKt}!u&$({gs#m#p*eNOEyiVXO`NZ~+ zUiuf|&XxT z3#^BkN_0TK)t1bbz0FpudhND1-%{~1?i)Z@0IJvCS08MRm5>){HE-89iyO48V0vzi1`>o$| zb9`u|N;7kbm`Dz^{{I^bf127cCx_GxXZz`RXcl!ud4>O#yP!WeEkd3u2Im`*+7bKn z^r$rN8_imG_fLv0VYFR&A_i!OVi62lU^u2u8fVU552w=JpEbJ9b?il&`(2qc%?A6o zn5tdfC!z@7SFjRCig#b0Z3~c8S&xN`yq8f@!UV^YksgKj0zh8&py6>CK2Yp*v-g|! zk!(br`+b0m6;Ob&_8kuTM=)rJq606jQLqoYD&HEd)*wls@HJ=c?)y1TrsI59=t#<~ zHsgZ1&UA&48+%kALY(mBR(eN5#BTuvh#OkG$HUs?$C9*I4*S2){R|V4CsP@&qz|)` z4E@Itf$CA;e?B6t=nQ(=Q>4RVCTAPs{>vMVZahp(&r|oCJ%t}{nowb*&-=NHPOu^K zs_T0P5Jz7{WW1lea3_gj{4smP1RFIV1D^P@`0Lw>)_WX8EEu3o2aynz_#f7MGx}w+01w1o|$)A&= z6K#@BuZzOooKI3+yZ<#9U?w-Inz?JnJ?k;&$v(9c8_u6Kp8K0;R+8Qd#+KT%+6GX@ z(d35qmCY!N?Trt`9`<8JH4?zA;p`(>2D-3?Y`vfrF`sP0q6L3wk&P>T%2NO`u$<|k>urf-)VHo0xn;euWXs%Un}Xg`+>RW@cmC9IV|t%N;wUQw7JtIUpL4xP#g(`=)LohIkXRfJ=|aKY_AO?;2q4>wU8Pv>^nf9f>iHK zpQ|rZMP8ikH#@lHXhTfjd5UCCj|xjqA+IjhqaAt=f552|j9gb!k_a480uxKKR&!7* zEHO#97JncU|9V9R6WCgAdt&`TBkEVuT5+W)40vM#W`G+);2lOr)BoeE5?DDAfa36j z6KNt$2lroUy4!vW``H<#kH#X_uGuzCaU{IMGU(cX|74?oA8T!FyO`f*485ryOA5Fk z(4QT_<}ulb%{nDKAp!cB`nroL4TzY3dH){$Y5ee2_|yi-(QJ#WFfG{xvFE!{ToxoM zX6W+jb1-n|p}V!(c$hC6l}2|^6%*a;ePJMd^g8gv+~Q~3a+3wn@qcgn*ik7qynfop zJ#~Lwi-d(}{|oEC`F}{jViamQKY$2g4TY9TAG7I`fF~oXIO+CGs1gOXs$iAvaml`= zXS_g%95lajr6q{!b*AIH58hzVz_Zy)82c|~#*O}Pxow#Lm_M>=?jet1gqd$TP!>W! z$CG$fVhBUB3IDn|`*!)3fYDVm{G;Eqi&?Ux)sjD-e+J3|^rgZzm6S{vO^y5Ylg2(| zd?iGwmR5Lmdi9#yLG{GcT4^;jLSji=wR|1KvBGgUm_V98_^gMDmDu$BW?hXykZjB@ zSbQEOTV(*5L0p~&x`Z!_mpLWhv+L`0hr*KmMZeZsJ2#)-m!b85vh35n#y_@r;TnL3lgF zC^c07RF34S=&z;>Oac>ez$x{1V=wp?fG|)AJgB#xQ_v=y*p!;({`2oAyay~O|?s)|gmqVNgx9t+iSYx3IE(<25`;lCUn(GnA&8mm!ZRW9K zgCB9b-DDpALVzC+G}|;-Ly_JL1(r(i`y)SoqlVXTIb;&ZFh{KHaORk#hT43%wJ3EY zhNE{se2S;e9TgedRUksu+PH0VJipnJ<+JG@-#Mom+~2Fz0}9uOm8Zy@SP2yo$1Rq9 zSU_pP8GtSLEnYaP&5kXLjviz2x7^3~AAoEO`A7nQ3sTTrHi76MK2?nVvN?NrZ+dt20UDE%X8i(edIhBv&^0SY!5op1xJLX@PR z+{)mC$A4zWH~i|3b@LpJM>nfqYdoum#MKFo?=&5ZJHPu#!$hv%J%GNX#7o| zu|2osCW#^RZac6Z=3aZsPr`D9Eh8h-rps9NtUK20siLJr_vYg*9w=C8oBBt9GP*he z+O(URVst9k)8YyCD9AB^4AQ3rU-)dQgG0f&7@+4wUFHL;94(6+5blB{;c|2q@|nTH zt`uuFh?H4V7GacBJ%4av;CCY4#BB`&kRs%+LIUkLIJ*({PDHG^BK?#Jr-sOXWi{CrgZ^oRmyC{-Jfwqhw)0e!0!vC z{-k$1_+3LFMM@1#-CX@X+A97`+4-(ZFWMb7KUj}ri&bMHM+`u8MOzMmoDZ86YTA$kTJEU#cg>r_(+d-MC& zRn)Bk&ztcuT*j+TV2SXDFlL&OvW$$0d{WHTyd7?yN=n2FO>WeV!SkQiD_R0dO|CA!OnbRk;RA8fq+EtT##Ax? z5?MCze*cZIbV5x`b z$7vG?!rU8k+~1MJQ_dJcehhx|Tzv_QGv-qKmQ(oRLv$Qt6Ixu4Pdc6??h%mJkGrF& zq?2C6#zL6izzj#9=4RG;1;<<@L+|&6-bbtr6UY*DkJ&YIV$#Q2QPVya*FpW$SWJf_|${3bq{@fpgx zjTgAGIH=U`;DAFPsOzthfZ5e|AL_`@i>oS`Vv)p#0nhxxYdQcEaNRG)z=Hn! zIq~uIn#V|)1AgP(hNh73*~^lickBXlfKp}q)`WI=znBd3RpGLNVcJ{=AWO=0so3uZ z)3hP>5OWXjFYp$Pwe&mYLAWHoVz>3#cLl3m{&u{#MvR{a`x6AD-`a%F^&y#gh+q;{ z4im}4Yu4O;YnlBDPz_$9=z8B=U~;Ax3Yf9DA;y-d7g3fsSWa=264AhX3+HC-2Vv?K zj{}tQ@()dxO5hEExlga`+J>%U5uY1XBfxyMFbf+H-Xx2FxPJn(<>EfIVg2>M3e2sG z!|L-)9S`=;&gk7Uk(E&9TBdw!eBdlX(B3}AM7U^RiuPPD=uBxM6*M#<8kVJ?)5KCJ zg4uJ{E_p-f(0upYKeHa)K=^#{y!IZ&!)z|}6Unu4siqNHy>Mcw?p%$!5jifZoiD-WqOCPyP3XBp7 z1zwsIzIPinQ%w#c;&&@pfN+{Sbkg&%Z~uCX=%~1h?diLB`hM=aS3GO3e0BjktPE-9 zDR(X)ikyly!w~%tBx0og`sW@I6D_(KNMP;Yq}QPH-+V&NF~K)Am$c;G;qVuirY6mt zh|avo`gJ4xt>>xyORH7$a#J4UG!q)ednOTDs_<87{I<-qzCFB<7z3JuPzZ$C6$Tps zsYa?-{j&$fs4*6%JB!)RcPGB7abge#Ztu7_KWxw=VL0a!9Dq*oc-@0)8SoOzfFJOp zwBbt`ZrN0ero6x{(k&*;0ZyO-E|7G>Fy2P22VvF*T((yAt~99F@aLqNo@L+v;NiV5tJuyZgu80y-K-(Kgj%cOrU-h0pNsqSR@iqhRM# zz@({9*(gqHQ<8Tsd$>T331{=M%$SS<$iBDj(xh|A2ahV5B*z-uIWqua=u8O40IFw2 zBX3qRFYP#G3ooVEg#bs>=&%y%vjLwly+E4`hs%-=@f4<5NZl$bwUa5|*~;3#q$v*j zC?ctu%dyARv|dJomxjpAR=G_Iu&$WmZQ7INM*R*CmHo1%I4!W|dL z)ojCd+NC-eFf01vfwVEtx2Qr>FhwfCCA;1QQQwaok5^>j0;g@|w6q95fBxM1NST#= z@TsD~J-xXwX{r_L4e_^bg@rUF5cKx{)t~)!i}R1P^OQ*80`oq|D=45j@oVA!AE_bZn>q>T#TGtKU#*nQlNbc3o0?(tYRUTR=n?Z3r;O78WBqi!d3pHQyp4F0k%_oaKJ=8jf=c82=Q||HNAV>pfsQjOu{=Ay%`} z4Lt28D}sm1K;ylp&(tQq9Kj3(ZQR0BgAOATe6qp&NDBQPt z{RiEz-xieYz8G39Y3{#%=C#-0`t8%F@PJq^=01@no<87|FuZr<+(QAqInmP>N zoXK?$mO0=^;0nVqG+c!m6;rd>_KmaIcgaYQri4T^1QGPMG~kP~49I z37_x7)YD)!;SHMYdhGl^L2C&)X{`b;_|Xarf6KqF11{pVJ-g%!rhG;kb}J;3riQ*8l2}e_;;j$ERy>V-WO8@c%rU6tPium*0 z6hhF<*d9o*IS!mr)|il{!WVvHl_6Y@0s1oRiu!kT4gIVwv%Giie=7u&MS`KVi1mg5 zzK-PI8p9|jLG7R06%rc4p4!S?kzZapZDrnHZB9w1wRmzc{ZfA2{1tzret!9S4$5WE ztcy2ZJT7%!RHgRQT3M^~9R}>%E^-z+adAqptklN;&XPQh{7=D#dHm_Qc78=GN4O+m z^*Kjfir2vPY;w0cig0o9t%rT|XJ9JU2swY3|-;ldS`AQak@Rnk2LJ8aZEZX^uU zJy0Fl%dh59s2fJdR)UPjUBr!>Hx_k~+JpH;s4qIvhn1078|XD^3{G8=T_NX)J|?fh zBc7&cs;N1Qot^b~C1)uN+cg7Ff$8d^&8aW`HITu+UJdxbuJ^$6bK_1GOzCm<%2aBa zT8ByqEP&%Lk4r}qw@x6Yf%Gd8`%Ek_y9cL(!nlAU(tH|Xt!=#)S|g}k7zwD&tapiI zzusow8Rl2ITH@m+TJC{8cza7Rn0@FNX}q?9nMTUC4%Ex`FGpVcqm*u@L4G`TBI@$b zqghf^Pij!h5H{lvxo8C2WFhS=GPX$Unwr3^G1`BX^Wpri`)=z4viXBZ+wLYiziY>d zy!U}FIydM;1;EAe?+PD;DY8Jn_}bt}1Xy_dVK*7|PWGQ7P=`wz5*}lE+lhkj9!K@_ z954fa#KUyvsnc2}q7c}lrS)^oJ-fSyVZ(LR(C=-QuLZ=k%~Dt4b7*a?5cuQN|3^ap zBt35u3U+-gUHAzu%%DSj-bjWQo1-+wDvYSrc-J(h+)SD5S#bU>U46mS4pOyUHmP^K zVZ`fm!mmB~i6wOv!b`x}G1_KB`3l5aG1v%TyZKy* z2cNi76nBM#6YH`8Ijp9Q1;jhX?B|;rNipKH(dB52nisij@w$Qs zU=tm1MvZ)zkR!LC1HN87;^e^4TA9us23i^pJf|`=2(VbrS;hoYqrR9gOE%(1t1TZ` z%w4prJ*lJrU0deN-`T@RFn!ta-#%YJfBf4_Nf)(Q`{dS&dw3Mn{}Mx87;Jb9B~cyB zrRjbYkpFbCrwfYQ&S5tQlcGC!~fJZCQlBmoq9swo&0;jW1FP7O9$Fb_HX}YB(qvt zn<7CLrnVMrzuxL7iKoi#LgKj+ymuaI+V2)DtzTQySq@{`l8*iSl8!&HX(TcHmI@FL z7H!2-m7AV*2~V_w{SP1BFoGSEOA0(MJy3`D5tg`K))?K)d9Aw)t@|a%j_ykZ1)G4q zK~itA@(yB6Z!_A%n5N+-hnjg;mHhThC=Q?l zfZlmv#fmM3X6;|JFu$R8jewh{LD)R;Ke1shZ97pD#w3)Qbjm(R%sTkeRE-u%mUAKb z|26m3QBl2J+k}V-SRhCU5`vV{jRNX`G=j7=NJ&3L=PfNw;)& zzk9&n^FC|6&-&K;t@Zu!oxg@*&VBCK``Xvu=iKKybB}?_XQg|4KjT|iRrd(h8S}nh z3XaZV^rfD8cUi|?bmWd_t$dUq)DpWdfpqd6(s#I0%g!Ly&qzmihKwyBQJ$U6OCuS**P@<=pRK!ZzqnB#;rHqR7s8h$OTuqs;7TWT zofF@gY>B}>D&>Ty0h{8Pif-E6@#8v1J|#bdKKo`?3p3&mn{&gYy!Q)|t%4__IU$^3 zH_NP&HrGN{Hc~ZGem8@bQIM2}ouC*VU29zUnWaMrnUX?6EfWbmef#>MpQPVSnwO`Z z+&7N55W6%Nh0E|Af0BRzc)Lpp?e3jC)0k7PO6NX%QsBe3aDA#b!$BqAPc)xi^ktJ^ zxMDkdv1R00hvLCdRlTR{FvjU|ZrT}}NAF&&_o!U`8J?;BI_4~$R^I-J4g9>PH`Q`0 z)UYe~7|JWc_RY#pdf#Sk1gYv^A3*=M9o%uY!D#EC-;VmUPpp;vTI5If5j=jZ!1zT= zE>3ebSr7_S4cDRIa#I`<4QUdCusLF>*7xCm${+e<25aws+}$Oudz1T6K07K*|^z5S)zTi_;c~GXSF12_^Wmv3g!+5u2ZPTnP4~V;A5W_ zl9cLt>4aIqX<}CN>f1##bv}k|6z3EbA)17e`F}qXQh#nrxX}l?@exQl3&V*E;+cf^ zEF5j4OxQEaX??lj{WqMI)*&d>#@3l&*V#Fr#>5j5{o|hlQq_w_k`{I64$L zm$KC8Rv2*Lp%i@vw$e|zx}@)--AY-)9vc^<)%W_vFW8;6Y2NHEk9tg3Ee>(CJ@s7d ze6JpM-=5d0W@JG-UB8{%1FjFg#$Vr)yzFU$abb@O?;wkwkjHr>afg;?V?NxWvGDGG zsS_E}j-yCie$%5E6w|L3J6jv$7(4%y@sgIETlK=jcylj1Y3?<14+kX! zzQjVxM)BiDRTN;QZgQTivh_S!!%`8SJ{EP;^nsz68jG-qve$0pG6@NeL1m`?w#!IO z$BzXhuE6HKTcHkrNK{mu7GA451-i-;UQDq6@PNRigYfSJAi)3q@Ju@N$YU2=Dau)@ zmeuo{-}NU9>sY*AC^M$bE|l}TQlOQs`0|w3_QE5-g3Gbm*=dRjo22roI$HS#Kq=fx zgBsx;UX2Ym{&AzN>rdgi76Q5&m!}@|=U?`?l4Qmhc>!2Xy-!IP{pVSL2&rzLY1p)1 zJ{l?a7~z{1v^e$hqD-5f^G!gN!54+uxJ`)LEplY;sXDAGxJ}HhRXhUOP_IbCSflS8 zU+4k>_J-<}4^I@mx8vXmSFR^~rUzT4n7Gzt=4-^C zEQwnZd+UnVkqO6b`AL%i8min(7Imz%bTdgU zAybdfc_+sU?`a#x--%vsm~DB9OKf1lr^=bnP%pjMt`3x^I@ zB(0*incw2(Ukj5YfTEt?nFn>EojRFGTXVKh!YX;d{(FAfYgTP2uI+a_(bt;x?H6-$ z#+dSUlhWLNJfqi(H(x2VZd{GeTsgnZ_KC}#bQ-%20*-`PtZ|)@Z_^`36IGv&+;k+y zmIq>#m8$rX=5OB(_lwV4;#&9KTVS)loNiPk;4s?H;79)xn%PRze(5KWHWN7hxSCw z1@svJW9mAuc+^a}1R-U}r+6yjdE#F@H-1hctsu1Z4tPXcvQ@Ej^YDi*()doq-0i!5tTTL1#YvHhp&WG7aW`?< zO#5hb#o6cz*gKNmrs^`Qd=HhC4?bg?8uP^S^)u#skC(*Lo_PD6^p4jHrn~{~J+$Dg zXWiU<;PK{>$wk!dv&cW&{6EIV2b(7co8OlekBG$XVsLPVedFQ1W3oLQYb*;3EYo7o zFb5ZX<=Es=(`N^o*Q5)~y-gNNtc1wzS>2i)19g`xGebYVc&(h*#<;ntY#1~1TTD3b zCnM5osqI`7O?2q~J!?N|tOy)590v_I3b5ydnCr{7I1X8*JUg^bxU7FMW%364*Vu-a zZe{l z39`<FY{YcX>2K zXlm;-&+X0DJ$H_ti|B6~qG-C-ZyP9lC4V5VF{xy8w6CCUmZK& z6QI@@VrE+ze6xA7sZcwrJM`Jm!!v@(BJJ05hmVyzdx`iO@l18)l%H2-cGPdDt)Qbf zB2e8eX+uo)9$y|L3w`Fi%2mVG=S)>#WAW-XeYf`G6?94+l5;7?$rB@cV9D-Wh%x-l zplQ5M@#D6)@Oqv_b>_Cq!8B?!<3m-z?PM+G48z|No5zBkmfqxLIK9!qqv+X#GvwJ- zJb1q-qRNEy@vjLz68Nzqo=sC@#dk zvsnB>>gJ7}oGrpzUioKITokKHEnu2j$(d3IAH4bYy zv`!HwxV_>&5qkLWY}X@BhM^Z%w~1;VditY-r_cuC?q9lFhi=^XQh}qpsrS)s7awiR zsgaA6QP^kg$8|tGGo&tR z$P>C>ftONt7pWLt z!I#v-jEKOy4sS7C14N&Wy+#)6X z>ACpf!@Q(zqh0GF{ewQX_FLPPfx$&p%!>(8)l=fBlM&y|bhZf@9bC>&kW&!w>G z7?I%5>%td=yo*v(AA;UuM^m)WV@1XIg@ID@-=Fm;gd8)q*wsvkb6VeAV&Zn)u%HsO ze+WwNZ-auY(V|Cf;o#88*IaSR$jIRFJaC(soNO@8Gi!;vJ2O-X@7vz9D?iwo)yOjr z2xr$$&(F_qqD}|xPi#}2U4?rik|S%!-i1RFL6=?Sx;CW&i5W;EsnUMe;s+5?DNtA7It=3*ca5oIs|iL)*K_UGr{4R z2BMNYq)L^$3qk{+ju#2Sf-o&tu3hURm$1IXBp=fO^AgoRv}B^6*V(;4@3>2jj;iVz zTN|y^yPDfKAI(pZPm0N7v^B9znG7UW$nx)3myuYYI3PBsLw4D^ENl&`H%wQ?E|ufA zd`x9o%GN2@K-q5&APM)RoJVU;mmePN&UEL*-VdUtYGH!zBm1BG4!W(%&V$Tfx2~uA zScSuE*EDE)2I!*0!=+KsyUq-?oZ9&>U%o^NIy@^aOX;d>XlOSG5+SvXZ8UD*nD4_c zOiE66tohtRL`me^1nO%|)F;1*FJv}Y6@>`-OCu1|bF|kVjW?ClMLYCZ@Yn* zoOlJQv$lkB>Wa$414Y)csyRAYzkWR$a2gB1-QAe$xq+bIv(l=oP}6Zv!gle><;y27 zJBjT~-MB(Zda|IoxmnG_!(*%)mfb|^1=;aBiW|Opi)U?SmS)@-nY6X#)EL3VG{yVN zXWhZh);9m?*Ozez9+kRno3op|AH+O8s=6NpQnq4cYsqw+?(XkyS~nE6Ft)X~^Vm?yd>vIjMFP$L*|r`p3ZIe=aF-{4x3IH|M>jVu&^*x;tPDj zbj>0wS?XI{TzNfqJeLETyLi5{W5zGSuZrvU&(E%wXt6UeGJ@XhTU{L18sj`>Ha1z* z_`1tA&uqQ(urkup(sW2tgR4H!bB0c_%#eO{|MqDWTiaYXheGVvYuJL-CZ)9RyENXU zp|7tWib5rTg5b7WMH4lV2CayQwvS#Nx2&znZ6aR@DBOaYX>j-K{M<;~mA1Av!@M5W z=u#hZUayTStptN1O!6}$zBH;vMoCyDLTVA0R~BSsWK4*iX?f4|yWS@q#!3DH%XJHr zNtJe91x?M22Q=;~FxQH5a&mcj*1H??x2AWKDE>NM)fu|ns@Y|ywXLzBjKoCAX0gMv z+}zwq%b^@yF+^K$fjQ>!aU{j@GLqDK(LK33ot6^Q22;n4T+ljym2>!=J9gFdYfgos z(dMlQQg{8)QORj2)J4p|f^krLfw|iLytSt}>(%2>i6id%wwT9>j9n}B+qZj3iHSEk zIOLt3ooV~N*VaA*3=9B0_$qwRp6Kk#(!>gPYdds4mX?uG2HSF69LxgE%PcL75<5EM z)8LuE!{EL(dIsLTK^;mDGJ{j#;Fh`CFx%oUx~+<4`6{;qM0e-7EPHaLgpdmz^&w1Q zunaJSX8`wtlOOGRUAO)=)S~ZW7HMokjA!CI_5+k+wAj%XFI@sPJ{Aw*%{Mwp50@Xd+2~k7PS<>`;N_*P)xFJ|t{o*Ea!=~ko zc8PtkN+q`%j23Ig7cO1;6dHONrfqfZtUp3t9<6tEWp^JWqi3<}4=$~wtn2{T;aom= zWG!HOyiu~rX4sID=X)vq*f5@(FX8=l!F*uae+NSPFUQ1TeT&EO_uD6zfsq~`pKk)K zI6j^#Vk7I(QI&A>pVqvjuyOSG@K5-U4gYNI!LRD6Hr}lmw2n*$pMBImS92kr=TWz-0F@PJhpa{)?0DaTPR#sL_L8ttP z)U+MK=%+!^yBh?g2kJlJCRD?3CLBvU!T2nHe~!=d#g}{?eB(iSS(z3Bf#@xBwlg6n ztWtj$@x2J?WI3X!oIh6DAB_0CR zFrlQXs(RGhQpb4|y+E`aD3|AiJiwRq<*3|K0(FoPn^e!kgJ==T>nwAF<(i_g^03(W zghX?5BRKs2|F#zTZ;rVf4$l8#4Fv>Uam4clpO3!6>YPgW5;61fsVy%rHx}lkrnZzW zR%8T;?mPs^rI~@!B8bsRdeuJlRz-yQ<@+0b6YDOT+<`?y9-2OSCoF*NwELXDwgwP1 z199qSU0sVT-$0_K6-G)fCC|b7GJiupqia^Zwm0awWN8-3ft`bPiXYaBC&JX8^%p;% z0Y&$aNjjvT;e2$d&CbJdqTsau6A7ym9WkWs-+M14nGpDMU|Pe@k^w0`&h@CBTga6} zJfE3`rERV!@3E%lEriQ#R#9a6b-=^fcwcJN(4tzbsC!4Ai9ArN3|RMam-V&;DStfn zUzLaZixaEck-|D4^t!UL68ipqoY?-fJnnA4RS{NSmrBG%1q5OrA0F%%SPzMYg@)dQ zfbCDlA!=}&f?u-$2H6-*53%qWXwrkn!l--!G*z^;GGVv|xOh<#uFp zG;jK8S5(y0%n$aqe>OLxA$-T(^$v}UOb5W#0*C-^+1-{T69${RTR1+lzKWu;^?leL zj1kf{&(0br^1I0BMO5Ii@4_V{)VJ4}<6$HU9LdIhFy1D z!C?$NQr!OOd7U`?BhFlC5pj~3I+IM-O%e9Ho6Lov(M&~sS+0xaYQPip#vH3Txn0&w z2W+a(_g1)6d;mQ?#_5%p3|U856cL0?t(sh-8^(I{e~@>m1;c|-D4#srMh{L zReoEE@1KA#!VqYanRed zn-quz5=(ILxBmWNA3suZ_Hq7oG}HEQ%vrMI^%`d7vl$jg$PV$YZdM*@qbOqIdOsGJ zcT1xfL4afKfO@8Nc3TwOpf$hBQbnw*3kdjzaO{N z8;`>#{FEx&llp@uDv)0)KA5RKj#yC-{ z;ZTJ;R^Iv!7nj3W0N=^Evw!U-GT&k0n-mz$2*2GWoM_nYi?Ew)>f~w`{$vvC&ihpN z{(YZ6P0<;IG;Rt2n3fy-QGC|nW|5KHW=bJsPAToo2!KZuN;UJY3nw!f`}-}2DzsPs zG%CY+q(A^;L|kWR4!3;6Idrql+LO)x{EDEstuHA~V@ud^mI*mx9M(^(5gHzj#aS#u zeiX2K=@Ijf8IjI|cLpEZ5bH2XhF#IhDqHkm%K-dI9=JILx9R)r;?cLYuXj1hmcB9W z0vMGq*Iq+iR?!k1fV?_G#C4-?-jOfc+^NK;;9N5pG|iF~j=8Dj0?ZM&^`J2DTXE=b z$bc1^9;>r zAmZZR#pO25`Pbq;y#UZgAz+($Kai6AbNNVpDmMMeT?EjJhuk25oa;Wk%tE$swlf1w zp9U-mc;o3_U3GQlv~B%6BnXX=QXkE)Cci$kKIyk4AtOua$uluu8LxMNwd3|Y*sFCP zCpvYxX+68Zy^e}*0O;=eQZ;c#ZmyC)DVtIdwaC4~e-^l{z~p#=zfzQWecy*XIhbDC zWjaZ=P`%(8aH_&SEAx#f(6KLx$*~CQu|QJaD})@OLyE5f zYkl$?iZIwT>tV1J&0)Om0_5YV+1YZFF|OGF zFD>I1$(NYqO#2Eg!D`z83pDJrnU#}M&Jb``)kh&Z8WbV^xS+535Y0|Oq1nU30=e>{|%D&ojP1p(z*t43^0Arho#WGFv- zmY!X)^Xxp8ph~xnt7S{|N4X*(H;A@GM2O+l`~FQ65LTXk#Vdy;cRAeO#7f9R70Dck zMw;QQ%58&M)8VQY zw0RE~yj(`K7QdC>M+r$rdJ_^$r|Vw)w>&YP`QJF#Q7G{K%j^H<2l>?h%Ci0!dC|Y+ z2mfyquK&@ne+gIt1YrnhnGpC2Qk#|KMHnFSgqPg_5h_?cg-z`8`HpfuQXYUbXJKmi zhZz8viG}Ch*7N<1qROxzW3743qEG-xB)ZA~CwOfben>WR+_(;(Nn)@SgtMfq?+2{Z z)YT)v2%{{7pbp8VTcHI=Cg`zO4E0jNz{~Jsao49OA=&hLEwaDX4rQ~IZMR51Yn_mJ zU~1Q}C!p3=8aR~UaWg2Po;XTI&&nVWW~_66#>c0Ae=(r#6IpAKKqbC=cTP4&7*kz~ zE$_v-AEiH^i+!nG9s)X`5}9J0=uADq{sx^VsSs@$ITb9v)fZOyA-QUE-yBGRa@P0n z-H`j08*nY9rbZHyHE@q?DFf&VPQv*kOOW)MXh56qtWBd5M@RLefgT0yS{09+ zv>YgTOr~ugj4h)@u`O|VfR_V`n0|kIMV8vL_8qxKiGA9+>Qk7*LD$7j=y&hjRnKLA zUDN5dq`Q4XPGjc*Xrv&9bbNb#mdCP}8)_YQ;u^EHOSw&3;*5icp$n2XjIl|&q!$D% z<>_hYLIjryuhrpNyL^GetSX|-Jg1ygr9UhY8&l!Jwiqpq3O7u}{)XmbRn_$3;wQ}_ zn;+@Tpwx?{NKwLvF!5m#5oruE;aJoF)|H-`ssJ=~p?Hi4(RM4RECC#xG3X0&QAcEF z>XQb>HYr&?HXGOkHmvv()2LQ@>}wqQVha(HxW~Qo<1z1=f}{kkQpqX-48x(v2yF(= zNpZ)}52Ex~oG6Xw-k0pk1MvF__uY-YAyeu#AukZD~{^ALCyaELHY=MiuxE3*LW>X z^(3c_T2)sdLKqP!(e3dNqaEr2r|96u6ZpE>0lk@RK&v)H=^^vps+ zLgPCHRz;ecg%-i|vLE@s)Q<^L5^1~67oZa1;yyfuJ`*<}rbSxvnRjJ=4m?`UjFun; zNa?*80zfAmt!4YhalV%!=*JC&%k~6XqEN(sN?~j^Uc#5RsqK8y$P=h@S>!fCvA@7^ zUc<6CA6v>7be#J@p^9%l<;e(@7q(|dUPF!bFRxSjSAC#-5)ajM85ES{vulm69kj!} z1PWasMBDoZT+~Ce>nANUva`F`iu&8OIE!e$P1_#~ADMgWD+X+>knUF!TBmo*WxOs} zws3XZEg%Ou_Z!&C4A;SCEb+6|-F*sCHz$MVNZ=v8xkmmFiB#a0N_slzOsdVkVTv(r z{T-#*fUOmaa~|7AT1Q7mZFjO63oUJY=Z~%K%7dh4(cMQ%`${Ab;}6N3u^16I&v~?r z((5yw8O!SsYQG8AiXCn@*LFi}unw7r3w;yB-jwnBbA%CoNw(k&)5x8Wd!(r;iXHp;gFHwM+8L_Ufbz3hN&ttG~GJ$mZ1-CYzm{Z~plc zrBWHQI8yB^vEjP>oy=ivs+E`GHuh@m$5+$8@gT5cygq~hfpsa5wNEr=5M;r7S|I$Z zXlSHE^@r`rXK|=LC_y+n`J(%4%AFk@so+1c?i&$S&-& zu|tI;aB? zta}c>APkL-%>m+=A%kWI6vy7Up!V3(y8@i-Pn5MPxR6oaat0H$-_mt15A(VUJ{=t< zY{`m$KmLCeC$W9{UsTKft;+VFE1v%&03S7+dPu1MLT8J2NGJ{aH$qBIGW*`sm;VJ8 CBH*q7 literal 0 HcmV?d00001 diff --git a/docs/reference/plot-5.png b/docs/reference/plot-5.png new file mode 100644 index 0000000000000000000000000000000000000000..8f67b1d1723f36872566f878c6dfedd175e7a932 GIT binary patch literal 81693 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%0A(&qnbSx*pBslVQw^J^)grO&-xfrT+IXgo zo%nATX@r|3uivG@6!T2YBo61X2{kM@)a*++sZdE-(D2av|Kg`T~k zHFH1mz068+^EguYjH}gt4uQh=x58)onf74nG)?VkvLvX<=jcuMYgFySV1lImuI~kh zYPlxaLrg+zF*VzND_PuwTAs{SwtYF$q3dbSF~!GRfo~$0Yf%GB?o?xGyOpUPE*vjE z|MVXj78XvO3!vTPJgsX)UZ@{}6wbO->=lJvHjG?FvAzgT#rmAY>laj65DoqFdv*bB zATMZC2M??}?rED^?Ug za{%m~FYg$St0(qu$f1aY=BK$LCo0!LX5roD%7AgO@>P&M8f!0yb(xnGu)I&&4Wt*a zIEp(}@Mox2b)wAjZ$=?`qW#uhy{*`%)EFTF1tz0XJg;k$)U+r)j9%j|W1Eo2FKX|8 zI^sW^H!}N(CkW?v*PKjrBS`3HE#K6MngYgFFt#7^mN_;nt9PZ2b%UtX8C>K=8~yI( z`+?Fo2_?3w1;Af3N`D;u99k>1*wG9m{JYl(&Zf&|p_le@L}}NsUtsq5#G}f!i#Q8G zTqYtsfFV{0IdgqRUy5Jv{{6&rRFFmzNts zVZVv4fDuk&D!W<)HsB`EW?O)3deB=5tQBY-v~SQau!HT0A9(eUD&PDeHbwmGAU_wy z>iG@su@UloL4q+%cHKJ6j(Pha@;xLc6OhzZT1G}EP^UyKJ9st+>110Jju<8hf4?LT zTCO)06rM XcXPL=hZpwMocgw>&?wz;5&S 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 #nshS7q>W1B%QKp43PW+9485B>2=^d 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 + + + + + + + diff --git a/docs/reference/plot.ArraySpeciesByTime.html b/docs/reference/plot.ArraySpeciesByTime.html new file mode 100644 index 000000000..3390ef8d2 --- /dev/null +++ b/docs/reference/plot.ArraySpeciesByTime.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/plot.MizerParams.html b/docs/reference/plot.MizerParams.html new file mode 100644 index 000000000..a1b46aac8 --- /dev/null +++ b/docs/reference/plot.MizerParams.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/plot.MizerSim.html b/docs/reference/plot.MizerSim.html new file mode 100644 index 000000000..a7a1525de --- /dev/null +++ b/docs/reference/plot.MizerSim.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/plot.html b/docs/reference/plot.html new file mode 100644 index 000000000..0db54d6f2 --- /dev/null +++ b/docs/reference/plot.html @@ -0,0 +1,296 @@ + +Plotting outputs — plot • mizer + Skip to contents + + +

    +
    +
    + +
    +

    Many mizer functions return values that depend on species and either size or +time. plot() creates a ggplot2 figure with one line for each species +showing the values against size or against time (depending on the type of +output). ggplotly() creates an interactive version of the same figure.

    +
    + +
    +

    Usage

    +
    # S3 method for class 'ArraySpeciesBySize'
    +plot(
    +  x,
    +  species = NULL,
    +  all.sizes = FALSE,
    +  highlight = NULL,
    +  return_data = FALSE,
    +  log_x = TRUE,
    +  log_y = FALSE,
    +  wlim = c(NA, NA),
    +  ylim = c(NA, NA),
    +  total = FALSE,
    +  background = TRUE,
    +  y_ticks = 6,
    +  ...
    +)
    +
    +# S3 method for class 'ArraySpeciesBySize'
    +ggplotly(x, ...)
    +
    +# S3 method for class 'ArraySpeciesByTime'
    +plot(
    +  x,
    +  species = NULL,
    +  start_time = NULL,
    +  end_time = NULL,
    +  y_ticks = 6,
    +  ylim = c(NA, NA),
    +  total = FALSE,
    +  background = TRUE,
    +  highlight = NULL,
    +  log_y = TRUE,
    +  return_data = FALSE,
    +  ...
    +)
    +
    +# S3 method for class 'ArraySpeciesByTime'
    +ggplotly(x, ...)
    +
    + +
    +

    Arguments

    + + +
    x
    +

    An ArraySpeciesBySize or ArraySpeciesByTime object.

    + + +
    species
    +

    Character vector of species to include. NULL (default) means +all species.

    + + +
    all.sizes
    +

    If FALSE (default), values outside a species' size range +(w_min to w_max) are removed. Only applies to ArraySpeciesBySize.

    + + +
    highlight
    +

    Name or vector of names of the species to be highlighted.

    + + +
    return_data
    +

    If TRUE, return the data frame instead of the plot.

    + + +
    log_x
    +

    If TRUE (default), use a log10 x-axis. Only applies to +ArraySpeciesBySize.

    + + +
    log_y
    +

    If TRUE, use a log10 y-axis. Default is FALSE for +ArraySpeciesBySize and TRUE for ArraySpeciesByTime.

    + + +
    wlim
    +

    A numeric vector of length two providing lower and upper limits +for the weight (x) axis. Use NA to refer to the existing minimum or +maximum. Only applies to ArraySpeciesBySize.

    + + +
    ylim
    +

    A numeric vector of length two providing lower and upper limits +for the value (y) axis. Use NA to refer to the existing minimum or +maximum.

    + + +
    total
    +

    A boolean value that determines whether the total over all +selected species is plotted as well. Default is FALSE.

    + + +
    background
    +

    A boolean value that determines whether background species +are included. Ignored if the model does not contain background species. +Default is TRUE.

    + + +
    y_ticks
    +

    The approximate number of ticks desired on the y axis.

    + + +
    ...
    +

    Further arguments (currently unused).

    + + +
    start_time
    +

    The first time to be plotted. Default (NULL) is the +beginning of the time series. Only applies to ArraySpeciesByTime.

    + + +
    end_time
    +

    The last time to be plotted. Default (NULL) is the end of +the time series. Only applies to ArraySpeciesByTime.

    + +
    +
    +

    Value

    +

    plot() returns a ggplot2 object, unless return_data = TRUE, in +which case a data frame is returned.

    +

    ggplotly() returns a plotly object.

    +
    +
    +

    Details

    +

    This works because the mizer functions that give values that depend on +species and size return an ArraySpeciesBySize object and those that +give values that depend on species and time return an ArraySpeciesByTime +object. These objects have attributes that store the name of the value, +its units, and a reference to the MizerParams object that the value was +computed from. This allows the plots to be automatically labelled and +coloured appropriately.

    +
    + + +
    +

    Examples

    +
    # \donttest{
    +plot(getEncounter(NS_params))
    +
    +plot(getFeedingLevel(NS_params), species = c("Cod", "Herring"))
    +
    +# }
    +# \donttest{
    +ggplotly(getEncounter(NS_params))
    +
    +# } +# \donttest{ +plot(getBiomass(NS_sim)) + +plot(getBiomass(NS_sim), species = c("Cod", "Herring"), total = TRUE) + +plot(getYield(NS_sim), species = c("Cod", "Herring")) + +# } +# \donttest{ +ggplotly(getBiomass(NS_sim)) +
    +# } +
    +
    +
    + + +
    + + + + + + + diff --git a/docs/reference/plotBiomass.MizerSim.html b/docs/reference/plotBiomass.MizerSim.html new file mode 100644 index 000000000..e3bb935b3 --- /dev/null +++ b/docs/reference/plotBiomass.MizerSim.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/plotBiomass.html b/docs/reference/plotBiomass.html index 1d156b2e2..16eccf39c 100644 --- a/docs/reference/plotBiomass.html +++ b/docs/reference/plotBiomass.html @@ -5,11 +5,11 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - +(see getBiomass())."> Skip to contents @@ -17,7 +17,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    S3 generic used by extension-aware projections to calculate the +density-dependent reproduction rate. The base method calls the selected +density-dependence function in params@rates_funcs$RDD.

    +
    + +
    +

    Usage

    +
    projectRDD(params, rdi, species_params = params@species_params, t = 0, ...)
    +
    +# S3 method for class 'MizerParams'
    +projectRDD(params, rdi, species_params = params@species_params, t = 0, ...)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object.

    + + +
    rdi
    +

    Vector of density-independent reproduction rates +\(R_{di}\) for all species.

    + + +
    species_params
    +

    A species parameter dataframe. Must contain a column +R_max holding the maximum reproduction rate \(R_{max}\) for each +species.

    + + +
    t
    +

    The time for which to do the calculation.

    + + +
    ...
    +

    Unused

    + +
    +
    +

    Value

    +

    Vector of density-dependent reproduction rates.

    +
    +
    +

    See also

    +

    Other functions calculating density-dependent reproduction rate: +BevertonHoltRDD(), +RickerRDD(), +SheperdRDD(), +constantEggRDI(), +constantRDD(), +noRDD()

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/projectRDI.MizerParams.html b/docs/reference/projectRDI.MizerParams.html new file mode 100644 index 000000000..20172273c --- /dev/null +++ b/docs/reference/projectRDI.MizerParams.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/projectRDI.html b/docs/reference/projectRDI.html new file mode 100644 index 000000000..20172273c --- /dev/null +++ b/docs/reference/projectRDI.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/projectRates.html b/docs/reference/projectRates.html new file mode 100644 index 000000000..682614de9 --- /dev/null +++ b/docs/reference/projectRates.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/projectResourceMort.MizerParams.html b/docs/reference/projectResourceMort.MizerParams.html new file mode 100644 index 000000000..a9e419f11 --- /dev/null +++ b/docs/reference/projectResourceMort.MizerParams.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/projectResourceMort.html b/docs/reference/projectResourceMort.html new file mode 100644 index 000000000..a9e419f11 --- /dev/null +++ b/docs/reference/projectResourceMort.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/projectToSteady.html b/docs/reference/projectToSteady.html index c85324a08..a92096d59 100644 --- a/docs/reference/projectToSteady.html +++ b/docs/reference/projectToSteady.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    This is an internal function used by the user-facing project() function. +It is of potential interest only to mizer extension authors.

    +
    + +
    +

    Usage

    +
    project_n(params, r, n, dt, a, b, c, S, idx, w_min_idx_array_ref, no_sp, no_w)
    +
    +project_n_no_diffusion(
    +  params,
    +  r,
    +  n,
    +  dt,
    +  a,
    +  b,
    +  S,
    +  idx,
    +  w_min_idx_array_ref,
    +  no_sp,
    +  no_w
    +)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object.

    + + +
    r
    +

    A list of rates as returned by mizerRates().

    + + +
    n
    +

    An array (species x size) with the number density at the current time step.

    + + +
    dt
    +

    Time step.

    + + +
    a
    +

    A matrix (species x size) used in the solver (transport term).

    + + +
    b
    +

    A matrix (species x size) used in the solver (diagonal term).

    + + +
    c
    +

    A matrix (species x size) used in the solver (transport term).

    + + +
    S
    +

    A matrix (species x size) used in the solver (source term).

    + + +
    idx
    +

    Index vector for size bins (excluding the first one).

    + + +
    w_min_idx_array_ref
    +

    Index vector for the start of the size spectrum for each species.

    + + +
    no_sp
    +

    Number of species.

    + + +
    no_w
    +

    Number of size bins.

    + +
    +
    +

    Value

    +

    The updated abundance density matrix n.

    +
    +
    +

    Details

    +

    The function calculates the abundance at the next time step using the +McKendrick-von Foerster equation: +$$\frac{\partial N}{\partial t} + \frac{\partial}{\partial w} \left( g N - \frac{1}{2}\frac{\partial(D N)}{\partial w} \right) = -\mu N$$ +which is solved using a semi-implicit upwind finite volume scheme.

    +
    +
    +

    See also

    + +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/project_n_no_diffusion.html b/docs/reference/project_n_no_diffusion.html new file mode 100644 index 000000000..06273570a --- /dev/null +++ b/docs/reference/project_n_no_diffusion.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/reference/project_simple.html b/docs/reference/project_simple.html index fbf137dd5..5f7227bbe 100644 --- a/docs/reference/project_simple.html +++ b/docs/reference/project_simple.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -15,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Prepends one extension to the front of the active extension chain, giving it +the highest dispatch priority. Designed to be called from a package's +.onLoad hook so that the chain grows naturally in load order: the last +package loaded ends up outermost.

    +
    + +
    +

    Usage

    +
    registerExtension(name, requirement = NA_character_, install = FALSE)
    +
    + +
    +

    Arguments

    + + +
    name
    +

    A syntactically valid R name identifying the extension (e.g. +"mizerExtA"). This name is used as the S4 marker class name.

    + + +
    requirement
    +

    A version string, installation specification, or +NA_character_ (the default). NA_character_ marks an in-development +extension whose S4 marker class mizer creates automatically. A version +string such as "1.2.0" records the minimum required package version.

    + + +
    install
    +

    Logical. If TRUE, attempt to install a missing extension +package.

    + +
    +
    +

    Value

    +

    The updated extension chain, invisibly.

    +
    +
    +

    Details

    +

    The call is idempotent: if the extension is already registered at any +position in the chain, the function returns silently without modifying the +chain. This makes it safe to call from devtools::load_all(), which +re-executes .onLoad.

    +
    + + +
    + + +
    + + + + + + + diff --git a/docs/reference/registerExtensions.html b/docs/reference/registerExtensions.html new file mode 100644 index 000000000..45832d944 --- /dev/null +++ b/docs/reference/registerExtensions.html @@ -0,0 +1,173 @@ + +Register mizer extensions for this R session — registerExtensions • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Registers an explicit full extension chain for the current R session. The +order of extensions is the S3 dispatch order, from outermost to innermost +extension. For example c(mizerExtB = "1.2.0", mizerExtA = "0.4.1") +dispatches to mizerExtB methods first, then mizerExtA methods, then base +mizer methods.

    +
    + +
    +

    Usage

    +
    registerExtensions(extensions, install = FALSE)
    +
    + +
    +

    Arguments

    + + +
    extensions
    +

    A named character vector. Names are extension identifiers. +Values are version strings, installation specifications, or +NA_character_. Installed extensions only participate in S3 dispatch if +they provide an S4 marker class with the same name. NA_character_ entries +are treated as in-development dispatch extensions and mizer creates their +marker classes automatically.

    + + +
    install
    +

    Logical. If TRUE, missing or outdated extension packages are +installed via pak::pkg_install(). Version strings install from CRAN; +other requirement strings (e.g. "user/repo@v1.2.0") are passed directly +to pak and may refer to GitHub, local paths, or any other pak-supported +source.

    + +
    +
    +

    Value

    +

    The active maximal extension chain, invisibly.

    +
    +
    +

    Details

    +

    A session can handle objects whose extension chain is a suffix of the +registered maximal chain. For example, after registering +c(mizerExtB = "1.2.0", mizerExtA = "0.4.1"), objects using only +c(mizerExtA = "0.4.1") are also valid.

    +

    For extension packages that register themselves incrementally from .onLoad, +use registerExtension() instead.

    +
    + + +
    + + +
    + + + + + + + diff --git a/docs/reference/removeBackgroundSpecies.html b/docs/reference/removeBackgroundSpecies.html new file mode 100644 index 000000000..c5e3d4bf5 --- /dev/null +++ b/docs/reference/removeBackgroundSpecies.html @@ -0,0 +1,133 @@ + +Remove all background species — removeBackgroundSpecies • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Removes all species that have been marked as background species with +markBackground().

    +
    + +
    +

    Usage

    +
    removeBackgroundSpecies(params)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + +
    +
    +

    Value

    +

    A MizerParams object with background species removed

    +
    +
    +

    See also

    + +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/removeSpecies.html b/docs/reference/removeSpecies.html index 0d70bc24c..0db1e9fd8 100644 --- a/docs/reference/removeSpecies.html +++ b/docs/reference/removeSpecies.html @@ -5,11 +5,9 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -19,7 +17,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Multiplies all rates in the model by a given factor. Rescaling all rates by +a factor \(f\) is equivalent to rescaling time by \(f\): it speeds up +(or slows down) all dynamics without affecting the steady state of each +species, provided the resource spectrum is held at its steady-state value.

    +
    + +
    +

    Usage

    +
    scaleRates(params, factor, ...)
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object

    + + +
    factor
    +

    The positive factor by which all rates are multiplied.

    + + +
    ...
    +

    Currently unused.

    + +
    +
    +

    Value

    +

    The MizerParams object with all rates rescaled by factor.

    +
    +
    +

    Details

    +

    The following rates and their associated species parameters are rescaled:

    • Search volume (search_vol slot and gamma species parameter)

    • +
    • Maximum intake rate (intake_max slot and h species parameter)

    • +
    • Metabolic rate (metab slot and ks, k species parameters)

    • +
    • External mortality (mu_b slot and z0, z_ext, z0pre species +parameters)

    • +
    • External encounter rate (ext_encounter slot and E_ext species +parameter)

    • +
    • External diffusion (ext_diffusion slot and D_ext species +parameter)

    • +
    • Catchability (catchability slot and catchability column in +gear_params)

    • +
    • Maximum reproduction rate (R_max species parameter)

    • +
    • Resource growth rate (rr_pp slot)

    • +

    Both the rate arrays stored in the MizerParams slots and the associated +species parameters in species_params and given_species_params are +rescaled, so that the parameters remain consistent with the rate arrays.

    +
    +
    +

    See also

    + +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/setBevertonHolt.html b/docs/reference/setBevertonHolt.html index 6b9ce9aa1..7e88e9046 100644 --- a/docs/reference/setBevertonHolt.html +++ b/docs/reference/setBevertonHolt.html @@ -5,8 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; -mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Derive the MizerSim marker class name for a given extension

    +
    + +
    +

    Usage

    +
    simExtensionClass(extension)
    +
    + +
    +

    Arguments

    + + +
    extension
    +

    Character string — the extension (params) class name.

    + +
    +
    +

    Value

    +

    A character string formed by appending "Sim" to extension.

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/species_params.html b/docs/reference/species_params.html index e6671e6da..9341e3fec 100644 --- a/docs/reference/species_params.html +++ b/docs/reference/species_params.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -15,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Controls whether predation-induced diffusion is included when calculating +rates with mizerDiffusion(). When FALSE (the default), the +predation-driven diffusion term is omitted, preserving the behaviour of +previous mizer versions. Set to TRUE to enable the diffusion term from +the jump-growth equation.

    +
    + +
    +

    Usage

    +
    use_predation_diffusion(params)
    +
    +use_predation_diffusion(params) <- value
    +
    + +
    +

    Arguments

    + + +
    params
    +

    A MizerParams object.

    + + +
    value
    +

    A single logical value (TRUE or FALSE).

    + +
    +
    +

    Value

    +

    use_predation_diffusion(): A single logical value.

    +

    use_predation_diffusion<-: A MizerParams object with the +use_predation_diffusion flag updated.

    +
    + + +
    + + +
    + + + + + + + diff --git a/docs/reference/usesExtensionDispatch.html b/docs/reference/usesExtensionDispatch.html new file mode 100644 index 000000000..5181f8a75 --- /dev/null +++ b/docs/reference/usesExtensionDispatch.html @@ -0,0 +1,126 @@ + +Test whether a mizer object uses extension S4 dispatch — usesExtensionDispatch • mizer + Skip to contents + + +
    +
    +
    + +
    +

    Test whether a mizer object uses extension S4 dispatch

    +
    + +
    +

    Usage

    +
    usesExtensionDispatch(object)
    +
    + +
    +

    Arguments

    + + +
    object
    +

    A MizerParams or MizerSim object.

    + +
    +
    +

    Value

    +

    TRUE if the object's primary class is not the plain base class.

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/validGearParams.html b/docs/reference/validGearParams.html index 70678a136..3e944dd15 100644 --- a/docs/reference/validGearParams.html +++ b/docs/reference/validGearParams.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -15,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125 + + + + + +
    +
    +
    + +
    +

    Checks that extensions is a named character vector with unique, +syntactically valid names, and normalises NULL to character().

    +
    + +
    +

    Usage

    +
    validateExtensionsVector(extensions)
    +
    + +
    +

    Arguments

    + + +
    extensions
    +

    A named character vector, or NULL.

    + +
    +
    +

    Value

    +

    A validated named character vector (possibly length-zero).

    +
    + +
    + + +
    + + + + + + + diff --git a/docs/reference/w.html b/docs/reference/w.html index 25d1b37fe..9eebacec6 100644 --- a/docs/reference/w.html +++ b/docs/reference/w.html @@ -5,7 +5,7 @@ fontURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/output/chtml/fonts/woff-v2" } }; - Skip to contents @@ -15,7 +15,7 @@ mizer - 2.5.4 + 2.5.4.9125