From 31919b1890ce6dde4882495f8de78ec8fd5a90cb Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 2 Sep 2024 15:09:34 +0200 Subject: [PATCH] Release v0.6.0 (#19) * Split easyApp content to Gui and Logic * Add rich text to table header * Change check for updates button text * Add new release date property * Fix disabled combo box color * Update preferences dialog style * Fix preferences dialog height * Fix path to MaintenanceTool for Linux and Windows * Bump version to 0.1.0 * Minor refactoring * Fix changelog path * Fix check on app start label * Add nunito font * Store app preferences tabs as global vars * Fixed dependencies after refactoring * Add support for iconified names in fitting constraints * Fix ComboBox Label padding * Remove vertical insets for ComboBox * Set elide middle to be default for the TableViewLabel * Fix vertical spacing on the preferences window * Define 3rd line for Bokeh charts, showing current phase profile * Add multiple phases support to the analysis chart * Add support for the multiple HKL sets * Replaced GNU license with BSD-3. * Update license description * update license copyright year * Expand python versions and add RichText (#4) * Expand python versions and add RichText * plotting 3d libs boxes only visible for easyDiffraction * Comments from Andrew S * Fixing a typo (#5) * dicttoxml -> XMLSerializer * Plotly (#9) * Bump qtquick to 2.15 * Remove `Structure plotting` from preferences * Add simple 1d chart view based on Plotly Co-authored-by: Andrew Sazonov * Add another Plotly example: 2D Heatmap * Update pyproject.toml * New interface (#18) * Qt6: Back to Qt.labs.settings before Qt 6.5 * Qt6: Fixed GroupBox component * Qt6: Use Dialogs from Qt.labs.platform instead of QtQuick.Dialogs * Qt6: Add comment `Parameter "mouse" is not declared` for future fix * Qt6: Remove modules version number for easyApp * Capitalize first letter in easyApp -> EasyApp * Qt6: QtQuick.Dialogs seems better than Qt.labs.platform * Remove wrong SPDX header * Add splash screen implementation * Modify splash screen to simplify live preview * Remove QtCharts, Bokeh and ChemDoodle * Add some default chart sizes * Add title to the `parameter` component * Extend basic Plotly 1d Line chart * Implement new Plotly 1D chart: Measured vs Calculated data * Move html templates into separate dir * Add draft of the basic report * Add pyproject.toml * Fix pyproject.toml * Continue improving BasicReport template * Plotly 1.58.5 -> 2.18.0 * Remove old plotly 1.58.5 * Try with 'scattergl' instead of 'scatter' as default in plotly * Get rid of miscProxy * Remove default placeholder text from Parameter element * Fix project description * Add useWebGL property * Hide splash screen right after app window is loaded * Modify RemoteController * Try to capitalize package name * Try poetry * Capitalize EasyApp from easyApp * Back to hatch * Allow py3.11 * Hardcode axes ranges * Fix warning: Parameter "mouse" is not declared * Fix 1d plot webgl toggler * Add read write file functions * Split x and y datasets for charts * Cleaning up / renaiming * Show tooltip on slider hover * Refactor table view and status bar * Add missing functions to remote controller * Update Plotly1d chart * Update TableView * Add basic QtCharts * EaGlobals.Variables -> EaGlobals.Vars * Add background line * Fix status bar model key names * TableView: disable save-restore current state * Fix `Qt.labs.settings is deprecated` for Qt6.5 * Fix `The current style does not support customization` * Find `Using a Component as the root of a qmldocument is deprecated` * Split header and delegate in TableView * Clean up TableView * Add children count property to SideBarColumn * Add axis ranges to plotly chart * Update persistent settings * Enable logging level selector in app preferences * Set QtCharts to be default 1d plotting lib * The same useOpenGL property for all chart series * Hide status bar model element if empty * Extend logging options * Fix logging level model * Move logger to EasyApp * Splash screen animation * Extend and fix `fitting in progress` label * Fix fitting label animation type * Make base 1d chart * Split logging message into chunks * Fix logging * Split qtchart to base and main * Fix module name * Set color for calc series * Extend base chart * Auto width and focus for the `Parameter` element * All sidebar groups are collapsed by default * No need to set group row width * Fix sidebar group inner layout * Update sidebar group row layout * Minor fixes * Some design changes: colors, animation * New status bar design * Add orange color * Increase sidebar width * Extend base QtCharts chart * Remove focus on TableView TextEdit field change accepted * Add Font Awesome v.6 (but continue using v.5) * Modify 'grey' color * Modify default vertical padding for check box * Fix preferences layout after check box changes * Add custom scroll bar * Extend base chart with pan functionality * Add ranges after reset properties * Add 'fit' property to some components * Add menu component. Extend parameter component * Minor fixes * Improve parameter component * TextArea and TabButton functionality ext * Fix status bar spacing * Add tooltip to tableview label * Set default number of digits for parameter value and error * Clean up * Minor style changes for buttons, labels, tables * Clean up * Add background color property * Reduce width of the group header clickable area * Extend ComboBox and Group parameters * Add gradient to the sidebar * Add extra field to table view parameter * Add outline icon property to table button * New style for continue button * Auto-hide and auto last for group boxes * Fix group box title top margin * Minor fixes * Fix group box internal spacing * Add color reset animation * Reduce tab button icon size * Add icon to the group box component * Modify status bar * Highlight title of the unfolded sidebar groups * Minor fixes * Use HoverHandler to react on hover events. New 2-lines table label * Fix some cursor shape issues * Increase sidebar button hight * Multiple changes * Fix project name validator * Disable 1d charting library selector * Modify parameter names format * Update colors * Disable loading 1d chart lib prom preferences * New property for current color palette * Save color scheme * Fix menu background color * Set 'error' to be the default logging level * Fix logging header. Need move to EA from ED * Add default project parent dir property * Add extended logging to the Updater class * Update translator * Use categories in CIF * Temporarily disable 'User guides' selector * Minor changes * Increase logging main message width * Fixes updater's web date * Add opacity to the `stop tutorial` button * Accept project create dialog on return pressed * Fix color * Try Python 3.12 * Fix pyside6 version to be 6.5.3 because of the issues on macOS Never version of pyside6 fails with QtQuick3D rendering on macOS: - Particles not supported due to missing RGBA32F and RGBA16F texture format support - No GLSL shader code found (versions tried: QList(120) ) in baked shader * Force using pyside6==6.7.0 and above * Force using pyside6==6.6 and above * Force using pyside6==6.6 only * Keep the scrollbar thin, even if it is interactive * Implement most basic qml and py examples * Update readme * Fix how to run qml * Simplify structure * Clean up. Minor corrections * Update the Qt installation instruction * Add instruction on how to edit GUI in live mode * Update the readme file * New way to access the backend and GUI components * New qml-py-py example * Update README.md * Add qml-qml-cpp example * Restructure examples * Restructure the whole set of examples * Add README.md * Update examples.md * Add ref to examples * Move EasyApp to src/EasyApp * Add link to web app based on BasicMinimalC++ * Clean up * Fix qmlproject * Add CI to build wasm * Add libxkbcommon * Switch to macos * Cache emsdk and qt * Add build wasm step * Fix path to emsdk * Add upload steps to CI * Fix path * Add GITHUB_API_PERSONAL_ACESS_TOKEN * Update readme * Fix GH_API_PERSONAL_ACESS_TOKEN * Change path to Qt installation * Update readme * Change path to Qt * Simplify BackendProxy.qml * Simplify pyproject.toml * Move the property 'version' back to pyproject.toml * Add the full path to the logo image in the readme * Minor fixes in examples.md * Update project description * adjustments BasicMinimalPy * adjustments BasicPy * adjustments BasicPy * adjustments IntermediatePy * vscode * updates examples.md * adjustment to examples * Rename Status.py to status.py * Rename Report.py to report.py * Rename Project.py to project.py * Rename Helpers.py to helpers.py * Rename Helpers.py to helpers.py * Rename Project.py to project.py * Rename Report.py to report.py * Rename Status.py to status.py * handle when local EasyApp module is used * updates to example.md * Update EXAMPLES.md * Re-order imports * Update application info * Remove unused __version__.py * Update project structure diagram * Remove missing files from resources.qrc * Remove intermediate layer between GUI and backends (old implementation) * Fix name_changed notification * Add docstring * Remove proxy access from all objects except the connections handler * Remove unused property * Replace setContextProperty with qmlRegisterSingletonType * Implement onObjChanged in the intermediate backend layer * Rename Backend * Force PySide6>=6.6,<6.7 * moved entry to python backend to python dir * flat backend * renamed to BackendProxy to BackendWrapper * Renamed Logic folder to Backends * removed proxy from backend name * cleaning BackendWrapper.qml * Rename GUI accessible properties and slots following Qt standards * Move ConnectionsHandler functionality into Backend * Move real_backend.py out of RealPy * Fix Backend name in debug output * Fix pyproject structure * Rename RealPy to real_py * Update the IntermediatePy project diagram * Fix all examples following the IntermediatePy one * Rename examples (more simple structure) * BasicMinimalPy to BasicPy * BasicMinimalC++ to BasicC++ * BasicPy to IntermediatePy * IntermediatePy to AdvancedPy * Move non-QObject backend logic into subfolder * Simplify examples and add more comments * Update descriptions * Update readme [ci skip] * Move VS Code initial settings from `vscode/` to `.vscode` * Update readme [ci skip] --------- Co-authored-by: Andrew Sazonov Co-authored-by: Andreas Pedersen --- .github/workflows/wasm.yml | 106 + .gitignore | 20 +- .vscode/launch.json | 39 + CHANGELOG.md | 1 - CONTRIBUTING.md | 1 - EXAMPLES.md | 139 + LICENSE.md => LICENSE | 2 +- README.md | 22 + docs/UserManual/description.txt | 0 docs/WebPages/style.css | 43 - docs/index.html | 17 - easyApp/Gui/Animations/qmldir | 4 - easyApp/Gui/Charts/AreaSeries.qml | 12 - easyApp/Gui/Charts/BaseBokeh.qml | 150 - easyApp/Gui/Charts/BaseChemDoodle.html | 341 - easyApp/Gui/Charts/BaseChemDoodle.qml | 300 - easyApp/Gui/Charts/BasePlot.qml | 86 - easyApp/Gui/Charts/BaseQtCharts.qml | 620 - easyApp/Gui/Charts/ChartView.qml | 201 - easyApp/Gui/Charts/ChemDoodleWeb-9.2.0.min.js | 29771 --------------- .../Charts/ChemDoodleWeb-9.2.0.unpacked.js | 29738 --------------- .../ChemDoodleWeb-9.2.0.unpacked.modified.js | 29775 ---------------- easyApp/Gui/Charts/LineSeries.qml | 36 - easyApp/Gui/Charts/ScatterSeries.qml | 20 - easyApp/Gui/Charts/qmldir | 17 - easyApp/Gui/Components/AppBarCentralTabs.qml | 9 - easyApp/Gui/Components/AppBarLeftButtons.qml | 6 - easyApp/Gui/Components/AppBarRightButtons.qml | 6 - .../Components/ProjectDescriptionDialog.qml | 123 - easyApp/Gui/Components/SideBar.qml | 56 - easyApp/Gui/Components/SideBarColumn.qml | 27 - easyApp/Gui/Components/TableView.qml | 193 - easyApp/Gui/Components/TableViewButton.qml | 21 - easyApp/Gui/Components/TableViewDelegate.qml | 32 - easyApp/Gui/Components/TableViewHeader.qml | 23 - easyApp/Gui/Components/TableViewLabel.qml | 22 - easyApp/Gui/Elements/GroupBox.qml | 185 - easyApp/Gui/Elements/GroupColumn.qml | 10 - easyApp/Gui/Elements/GroupRow.qml | 10 - easyApp/Gui/Elements/Parameter.qml | 31 - easyApp/Gui/Elements/RadioButton.qml | 87 - easyApp/Gui/Elements/RadioIndicator.qml | 51 - easyApp/Gui/Elements/RemoteController.qml | 333 - easyApp/Gui/Elements/StatusBar.qml | 67 - easyApp/Gui/Elements/TextInput.qml | 38 - easyApp/Gui/Globals/Variables.qml | 60 - easyApp/Gui/Globals/qmldir | 3 - easyApp/Gui/Logic/Utils.js | 73 - easyApp/Gui/Resources/Icons/description.txt | 0 easyApp/Gui/Style/Colors.qml | 129 - easyApp/Logic/Logging.py | 48 - easyApp/__init__.py | 1 - examples/AdvancedPy/LICENSE | 29 + examples/AdvancedPy/README.md | 123 + examples/AdvancedPy/pyproject.toml | 36 + .../AdvancedPy/scripts/create_python_wheel.sh | 2 + .../AdvancedPy/scripts/install_from_wheel.sh | 2 + examples/AdvancedPy/scripts/unpack_wheel.sh | 2 + examples/AdvancedPy/src/AdvancedPy.pyproject | 44 + examples/AdvancedPy/src/AdvancedPy.qmlproject | 41 + .../src/AdvancedPy/Backends/MockBackend.qml | 20 + .../AdvancedPy/Backends/MockQml/Project.qml | 74 + .../AdvancedPy/Backends/MockQml/Report.qml | 82 + .../AdvancedPy/Backends/MockQml/Status.qml | 18 + .../src/AdvancedPy/Backends/MockQml/qmldir | 5 + .../AdvancedPy/src/AdvancedPy/Backends/qmldir | 3 + .../src/AdvancedPy/Backends/real_backend.py | 69 + .../Backends/real_py/logic/helpers.py | 35 + .../AdvancedPy/Backends/real_py/project.py | 131 + .../src/AdvancedPy/Backends/real_py/report.py | 111 + .../src/AdvancedPy/Backends/real_py/status.py | 93 + .../src/AdvancedPy/Gui/ApplicationWindow.qml | 114 + .../Gui/Globals/ApplicationInfo.qml | 37 + .../AdvancedPy/Gui/Globals/BackendWrapper.qml | 67 + .../src/AdvancedPy/Gui/Globals/References.qml | 37 + .../src/AdvancedPy/Gui/Globals/qmldir | 5 + .../src/AdvancedPy/Gui/Pages/Home/Content.qml | 140 + .../Gui/Pages/Home/Popups/About.qml | 34 + .../AdvancedPy/Gui/Pages/Project/Layout.qml | 59 + .../Pages/Project/MainArea/Description.qml | 89 + .../Project/Sidebar/Basic/Groups/Examples.qml | 65 + .../Sidebar/Basic/Groups/GetStarted.qml | 55 + .../Project/Sidebar/Basic/Groups/Recent.qml | 39 + .../Pages/Project/Sidebar/Basic/Layout.qml | 38 + .../Sidebar/Basic/Popups/OpenCifFile.qml | 30 + .../Basic/Popups/ProjectDescription.qml | 33 + .../Sidebar/Extra/Groups/Scrolling.qml | 25 + .../Pages/Project/Sidebar/Extra/Layout.qml | 24 + .../Gui/Pages/Project/Sidebar/Text/Layout.qml | 12 + .../AdvancedPy/Gui/Pages/Report/Layout.qml | 49 + .../Gui/Pages/Report/MainArea/Summary.qml | 56 + .../Report/Sidebar/Basic/Groups/Export.qml | 103 + .../Gui/Pages/Report/Sidebar/Basic/Layout.qml | 24 + .../Report/Sidebar/Extra/Groups/Empty.qml | 12 + .../Gui/Pages/Report/Sidebar/Extra/Layout.qml | 21 + .../AdvancedPy/Gui/Resources/Logos/App.icns | Bin 0 -> 296301 bytes .../AdvancedPy/Gui/Resources/Logos/App.ico | Bin 0 -> 30294 bytes .../AdvancedPy/Gui/Resources/Logos/App.png | Bin 0 -> 69247 bytes .../AdvancedPy/Gui/Resources/Logos/App.svg | 27 + .../AdvancedPy/Gui/Resources/Logos/ESS.png | Bin 0 -> 5161 bytes .../src/AdvancedPy/Gui/StatusBar.qml | 61 + examples/AdvancedPy/src/AdvancedPy/Gui/qmldir | 4 + .../AdvancedPy/src/AdvancedPy/__init__.py | 0 examples/AdvancedPy/src/AdvancedPy/main.py | 50 + examples/AdvancedPy/src/AdvancedPy/main.qml | 15 + .../BasicC++/scripts/add_aliases_to_qrc.py | 14 + examples/BasicC++/src/BasicC++.pro | 26 + examples/BasicC++/src/BasicC++.qmlproject | 41 + .../src/BasicC++/Backends/MockBackend.qml | 20 + .../src/BasicC++/Backends/MockQml/Project.qml | 74 + .../src/BasicC++/Backends/MockQml/Report.qml | 82 + .../src/BasicC++/Backends/MockQml/Status.qml | 18 + .../src/BasicC++/Backends/MockQml/qmldir | 5 + .../BasicC++/src/BasicC++/Backends/qmldir | 3 + .../src/BasicC++/Gui/ApplicationWindow.qml | 114 + .../BasicC++/Gui/Globals/ApplicationInfo.qml | 37 + .../BasicC++/Gui/Globals/BackendWrapper.qml | 67 + .../src/BasicC++/Gui/Globals/References.qml | 37 + .../BasicC++/src/BasicC++/Gui/Globals/qmldir | 5 + .../src/BasicC++/Gui/Pages/Home/Content.qml | 140 + .../BasicC++/Gui/Pages/Home/Popups/About.qml | 34 + .../src/BasicC++/Gui/Pages/Project/Layout.qml | 59 + .../Pages/Project/MainArea/Description.qml | 89 + .../Project/Sidebar/Basic/Groups/Examples.qml | 65 + .../Sidebar/Basic/Groups/GetStarted.qml | 55 + .../Project/Sidebar/Basic/Groups/Recent.qml | 39 + .../Pages/Project/Sidebar/Basic/Layout.qml | 38 + .../Sidebar/Basic/Popups/OpenCifFile.qml | 30 + .../Basic/Popups/ProjectDescription.qml | 33 + .../Sidebar/Extra/Groups/Scrolling.qml | 25 + .../Pages/Project/Sidebar/Extra/Layout.qml | 24 + .../Gui/Pages/Project/Sidebar/Text/Layout.qml | 12 + .../src/BasicC++/Gui/Pages/Report/Layout.qml | 49 + .../Gui/Pages/Report/MainArea/Summary.qml | 56 + .../Report/Sidebar/Basic/Groups/Export.qml | 103 + .../Gui/Pages/Report/Sidebar/Basic/Layout.qml | 24 + .../Report/Sidebar/Extra/Groups/Empty.qml | 12 + .../Gui/Pages/Report/Sidebar/Extra/Layout.qml | 21 + .../src/BasicC++/Gui/Resources/Logos/App.icns | Bin 0 -> 296301 bytes .../src/BasicC++/Gui/Resources/Logos/App.ico | Bin 0 -> 30294 bytes .../src/BasicC++/Gui/Resources/Logos/App.png | Bin 0 -> 69247 bytes .../src/BasicC++/Gui/Resources/Logos/App.svg | 27 + .../src/BasicC++/Gui/Resources/Logos/ESS.png | Bin 0 -> 5161 bytes .../BasicC++/src/BasicC++/Gui/StatusBar.qml | 61 + examples/BasicC++/src/BasicC++/Gui/qmldir | 4 + examples/BasicC++/src/BasicC++/main.cpp | 29 + examples/BasicC++/src/BasicC++/main.qml | 15 + examples/BasicC++/src/BasicC++/resources.qrc | 227 + examples/BasicPy/src/BasicPy.pyproject | 39 + examples/BasicPy/src/BasicPy.qmlproject | 41 + .../src/BasicPy/Backends/MockBackend.qml | 20 + .../src/BasicPy/Backends/MockQml/Project.qml | 74 + .../src/BasicPy/Backends/MockQml/Report.qml | 82 + .../src/BasicPy/Backends/MockQml/Status.qml | 18 + .../src/BasicPy/Backends/MockQml/qmldir | 5 + examples/BasicPy/src/BasicPy/Backends/qmldir | 3 + .../src/BasicPy/Gui/ApplicationWindow.qml | 114 + .../BasicPy/Gui/Globals/ApplicationInfo.qml | 37 + .../BasicPy/Gui/Globals/BackendWrapper.qml | 67 + .../src/BasicPy/Gui/Globals/References.qml | 37 + .../BasicPy/src/BasicPy/Gui/Globals/qmldir | 5 + .../src/BasicPy/Gui/Pages/Home/Content.qml | 140 + .../BasicPy/Gui/Pages/Home/Popups/About.qml | 34 + .../src/BasicPy/Gui/Pages/Project/Layout.qml | 59 + .../Pages/Project/MainArea/Description.qml | 89 + .../Project/Sidebar/Basic/Groups/Examples.qml | 65 + .../Sidebar/Basic/Groups/GetStarted.qml | 55 + .../Project/Sidebar/Basic/Groups/Recent.qml | 39 + .../Pages/Project/Sidebar/Basic/Layout.qml | 38 + .../Sidebar/Basic/Popups/OpenCifFile.qml | 30 + .../Basic/Popups/ProjectDescription.qml | 33 + .../Sidebar/Extra/Groups/Scrolling.qml | 25 + .../Pages/Project/Sidebar/Extra/Layout.qml | 24 + .../Gui/Pages/Project/Sidebar/Text/Layout.qml | 12 + .../src/BasicPy/Gui/Pages/Report/Layout.qml | 49 + .../Gui/Pages/Report/MainArea/Summary.qml | 56 + .../Report/Sidebar/Basic/Groups/Export.qml | 103 + .../Gui/Pages/Report/Sidebar/Basic/Layout.qml | 24 + .../Report/Sidebar/Extra/Groups/Empty.qml | 12 + .../Gui/Pages/Report/Sidebar/Extra/Layout.qml | 21 + .../src/BasicPy/Gui/Resources/Logos/App.icns | Bin 0 -> 296301 bytes .../src/BasicPy/Gui/Resources/Logos/App.ico | Bin 0 -> 30294 bytes .../src/BasicPy/Gui/Resources/Logos/App.png | Bin 0 -> 69247 bytes .../src/BasicPy/Gui/Resources/Logos/App.svg | 27 + .../src/BasicPy/Gui/Resources/Logos/ESS.png | Bin 0 -> 5161 bytes .../BasicPy/src/BasicPy/Gui/StatusBar.qml | 61 + examples/BasicPy/src/BasicPy/Gui/qmldir | 4 + examples/BasicPy/src/BasicPy/main.py | 36 + examples/BasicPy/src/BasicPy/main.qml | 15 + examples/BasicQml/src/BasicQml.qmlproject | 41 + .../src/BasicQml/Backends/MockBackend.qml | 20 + .../src/BasicQml/Backends/MockQml/Project.qml | 74 + .../src/BasicQml/Backends/MockQml/Report.qml | 82 + .../src/BasicQml/Backends/MockQml/Status.qml | 18 + .../src/BasicQml/Backends/MockQml/qmldir | 5 + .../BasicQml/src/BasicQml/Backends/qmldir | 3 + .../src/BasicQml/Gui/ApplicationWindow.qml | 114 + .../BasicQml/Gui/Globals/ApplicationInfo.qml | 37 + .../BasicQml/Gui/Globals/BackendWrapper.qml | 67 + .../src/BasicQml/Gui/Globals/References.qml | 37 + .../BasicQml/src/BasicQml/Gui/Globals/qmldir | 5 + .../src/BasicQml/Gui/Pages/Home/Content.qml | 140 + .../BasicQml/Gui/Pages/Home/Popups/About.qml | 34 + .../src/BasicQml/Gui/Pages/Project/Layout.qml | 59 + .../Pages/Project/MainArea/Description.qml | 89 + .../Project/Sidebar/Basic/Groups/Examples.qml | 65 + .../Sidebar/Basic/Groups/GetStarted.qml | 55 + .../Project/Sidebar/Basic/Groups/Recent.qml | 39 + .../Pages/Project/Sidebar/Basic/Layout.qml | 38 + .../Sidebar/Basic/Popups/OpenCifFile.qml | 30 + .../Basic/Popups/ProjectDescription.qml | 33 + .../Sidebar/Extra/Groups/Scrolling.qml | 25 + .../Pages/Project/Sidebar/Extra/Layout.qml | 24 + .../Gui/Pages/Project/Sidebar/Text/Layout.qml | 12 + .../src/BasicQml/Gui/Pages/Report/Layout.qml | 49 + .../Gui/Pages/Report/MainArea/Summary.qml | 56 + .../Report/Sidebar/Basic/Groups/Export.qml | 103 + .../Gui/Pages/Report/Sidebar/Basic/Layout.qml | 24 + .../Report/Sidebar/Extra/Groups/Empty.qml | 12 + .../Gui/Pages/Report/Sidebar/Extra/Layout.qml | 21 + .../src/BasicQml/Gui/Resources/Logos/App.icns | Bin 0 -> 296301 bytes .../src/BasicQml/Gui/Resources/Logos/App.ico | Bin 0 -> 30294 bytes .../src/BasicQml/Gui/Resources/Logos/App.png | Bin 0 -> 69247 bytes .../src/BasicQml/Gui/Resources/Logos/App.svg | 27 + .../src/BasicQml/Gui/Resources/Logos/ESS.png | Bin 0 -> 5161 bytes .../BasicQml/src/BasicQml/Gui/StatusBar.qml | 61 + examples/BasicQml/src/BasicQml/Gui/qmldir | 4 + examples/BasicQml/src/BasicQml/main.qml | 15 + .../src/IntermediatePy.pyproject | 44 + .../src/IntermediatePy.qmlproject | 41 + .../IntermediatePy/Backends/MockBackend.qml | 20 + .../Backends/MockQml/Project.qml | 74 + .../Backends/MockQml/Report.qml | 82 + .../Backends/MockQml/Status.qml | 18 + .../IntermediatePy/Backends/MockQml/qmldir | 5 + .../src/IntermediatePy/Backends/qmldir | 3 + .../IntermediatePy/Backends/real_backend.py | 69 + .../Backends/real_py/logic/helpers.py | 35 + .../Backends/real_py/project.py | 131 + .../IntermediatePy/Backends/real_py/report.py | 111 + .../IntermediatePy/Backends/real_py/status.py | 93 + .../IntermediatePy/Gui/ApplicationWindow.qml | 114 + .../Gui/Globals/ApplicationInfo.qml | 37 + .../Gui/Globals/BackendWrapper.qml | 67 + .../IntermediatePy/Gui/Globals/References.qml | 37 + .../src/IntermediatePy/Gui/Globals/qmldir | 5 + .../IntermediatePy/Gui/Pages/Home/Content.qml | 140 + .../Gui/Pages/Home/Popups/About.qml | 34 + .../Gui/Pages/Project/Layout.qml | 59 + .../Pages/Project/MainArea/Description.qml | 89 + .../Project/Sidebar/Basic/Groups/Examples.qml | 65 + .../Sidebar/Basic/Groups/GetStarted.qml | 55 + .../Project/Sidebar/Basic/Groups/Recent.qml | 39 + .../Pages/Project/Sidebar/Basic/Layout.qml | 38 + .../Sidebar/Basic/Popups/OpenCifFile.qml | 30 + .../Basic/Popups/ProjectDescription.qml | 33 + .../Sidebar/Extra/Groups/Scrolling.qml | 25 + .../Pages/Project/Sidebar/Extra/Layout.qml | 24 + .../Gui/Pages/Project/Sidebar/Text/Layout.qml | 12 + .../Gui/Pages/Report/Layout.qml | 49 + .../Gui/Pages/Report/MainArea/Summary.qml | 56 + .../Report/Sidebar/Basic/Groups/Export.qml | 103 + .../Gui/Pages/Report/Sidebar/Basic/Layout.qml | 24 + .../Report/Sidebar/Extra/Groups/Empty.qml | 12 + .../Gui/Pages/Report/Sidebar/Extra/Layout.qml | 21 + .../Gui/Resources/Logos/App.icns | Bin 0 -> 296301 bytes .../Gui/Resources/Logos/App.ico | Bin 0 -> 30294 bytes .../Gui/Resources/Logos/App.png | Bin 0 -> 69247 bytes .../Gui/Resources/Logos/App.svg | 27 + .../Gui/Resources/Logos/ESS.png | Bin 0 -> 5161 bytes .../src/IntermediatePy/Gui/StatusBar.qml | 61 + .../src/IntermediatePy/Gui/qmldir | 4 + .../IntermediatePy/src/IntermediatePy/main.py | 44 + .../src/IntermediatePy/main.qml | 15 + examples/description.txt | 0 pyproject.toml | 53 +- resources/images/ea_logo.svg | 21 + resources/images/ea_logo_wfont.svg | 34 + resources/images/vscode_debug.jpg | Bin 0 -> 50517 bytes scripts/create_python_wheel.sh | 2 + scripts/install_from_wheel.sh | 2 + scripts/unpack_wheel.sh | 2 + src/EasyApp/Gui/Animations/ColorReset.qml | 24 + .../EasyApp}/Gui/Animations/ThemeChange.qml | 4 +- .../Gui/Animations/TranslationChange.qml | 4 +- src/EasyApp/Gui/Animations/qmldir | 5 + .../Charts/ChartTemplateHeatmap2dPlotly.html | 0 .../Charts/ChartTemplateSimple1dPlotly.html | 0 .../Gui/Charts/ChartViewHeatmap2dPlotly.qml | 0 .../Gui/Charts/ChartViewSimple1dPlotly.qml | 0 src/EasyApp/Gui/Charts/Plotly1dLine.qml | 82 + src/EasyApp/Gui/Charts/Plotly1dMeasVsCalc.qml | 240 + src/EasyApp/Gui/Charts/Plotly2dHeatmap.qml | 61 + src/EasyApp/Gui/Charts/Plotly3dScatter.qml | 74 + src/EasyApp/Gui/Charts/Plotly3dSurface.qml | 74 + src/EasyApp/Gui/Charts/QtCharts1dBase 2.qml | 218 + src/EasyApp/Gui/Charts/QtCharts1dBase.qml | 180 + .../Gui/Charts/QtCharts1dMeasVsCalc.qml | 68 + .../Gui/Charts/QtCharts1dValueAxis.qml | 14 +- src/EasyApp/Gui/Charts/qmldir | 14 + .../EasyApp}/Gui/Components/AboutDialog.qml | 44 +- .../Gui/Components/AppBarCentralTabs.qml | 9 + .../Gui/Components/AppBarLeftButtons.qml | 6 + .../Gui/Components/AppBarRightButtons.qml | 6 + .../Gui/Components/ApplicationWindow.qml | 27 +- src/EasyApp/Gui/Components/BasicReport.qml | 139 + .../EasyApp}/Gui/Components/ContentArea.qml | 4 +- .../EasyApp}/Gui/Components/ContentPage.qml | 22 +- .../EasyApp}/Gui/Components/GuideWindow.qml | 33 +- .../Gui/Components/GuideWindowContainer.qml | 4 +- src/EasyApp/Gui/Components/JsonListModel.qml | 160 + .../EasyApp}/Gui/Components/MainContent.qml | 6 +- .../Gui/Components/PreferencesDialog.qml | 187 +- .../Components/ProjectDescriptionDialog.qml | 132 + src/EasyApp/Gui/Components/SideBar.qml | 85 + src/EasyApp/Gui/Components/SideBarColumn.qml | 32 + src/EasyApp/Gui/Components/TableView.qml | 141 + .../Gui/Components/TableViewAdvancedLabel.qml | 69 + .../Gui/Components/TableViewButton.qml | 19 + .../Gui/Components/TableViewCheckBox.qml | 5 +- .../Gui/Components/TableViewComboBox.qml | 5 +- .../Gui/Components/TableViewDelegate.qml | 52 + .../Gui/Components/TableViewHeader.qml | 27 + src/EasyApp/Gui/Components/TableViewLabel.qml | 47 + .../Gui/Components/TableViewLabelControl.qml | 18 +- .../Gui/Components/TableViewParameter.qml | 167 + .../Gui/Components/TableViewTextInput.qml | 4 +- .../TableViewTwoRowsAdvancedLabel.qml | 148 + .../EasyApp}/Gui/Components/qmldir | 11 +- .../EasyApp}/Gui/Elements/AppBarTabButton.qml | 33 +- .../Gui/Elements/ApplicationWindow.qml | 26 +- .../EasyApp}/Gui/Elements/BoxShadow.qml | 5 +- .../EasyApp}/Gui/Elements/Button.qml | 41 +- .../EasyApp}/Gui/Elements/CheckBox.qml | 32 +- .../EasyApp}/Gui/Elements/CheckIndicator.qml | 10 +- .../EasyApp}/Gui/Elements/ComboBox.qml | 39 +- .../EasyApp}/Gui/Elements/CursorDelegate.qml | 4 +- .../EasyApp}/Gui/Elements/Dialog.qml | 18 +- .../EasyApp}/Gui/Elements/DialogButtonBox.qml | 16 +- .../EasyApp}/Gui/Elements/ElevationEffect.qml | 2 +- src/EasyApp/Gui/Elements/GroupBox.qml | 209 + .../EasyApp}/Gui/Elements/GroupButton.qml | 8 +- src/EasyApp/Gui/Elements/GroupColumn.qml | 10 + src/EasyApp/Gui/Elements/GroupRow.qml | 9 + .../EasyApp}/Gui/Elements/Label.qml | 23 +- .../EasyApp}/Gui/Elements/LinkedImage.qml | 7 +- src/EasyApp/Gui/Elements/Menu.qml | 73 + .../EasyApp}/Gui/Elements/MenuItem.qml | 18 +- src/EasyApp/Gui/Elements/ParamComboBox.qml | 167 + src/EasyApp/Gui/Elements/ParamTextField.qml | 187 + src/EasyApp/Gui/Elements/Parameter.qml | 44 + .../EasyApp}/Gui/Elements/Popup.qml | 4 +- src/EasyApp/Gui/Elements/RadioButton.qml | 125 + src/EasyApp/Gui/Elements/RadioIndicator.qml | 19 + .../EasyApp}/Gui/Elements/RectangularGlow.qml | 2 +- src/EasyApp/Gui/Elements/RemoteController.qml | 523 + .../EasyApp}/Gui/Elements/RemotePointer.qml | 5 +- .../EasyApp}/Gui/Elements/RunningLabel.qml | 8 +- src/EasyApp/Gui/Elements/ScrollBar.qml | 56 + .../EasyApp}/Gui/Elements/ScrollIndicator.qml | 4 +- .../EasyApp}/Gui/Elements/SideBarButton.qml | 60 +- .../EasyApp}/Gui/Elements/Slider.qml | 46 +- .../EasyApp}/Gui/Elements/SliderHandle.qml | 10 +- .../EasyApp}/Gui/Elements/SpinBox.qml | 18 +- src/EasyApp/Gui/Elements/SplashScreen.qml | 124 + src/EasyApp/Gui/Elements/StatusBar.qml | 46 + src/EasyApp/Gui/Elements/StatusBarItem.qml | 124 + .../EasyApp}/Gui/Elements/TabBar.qml | 21 +- .../EasyApp}/Gui/Elements/TabButton.qml | 81 +- .../EasyApp}/Gui/Elements/TextArea.qml | 16 +- .../EasyApp}/Gui/Elements/TextField.qml | 61 +- src/EasyApp/Gui/Elements/TextInput.qml | 91 + .../EasyApp}/Gui/Elements/ToolBar.qml | 8 +- .../EasyApp}/Gui/Elements/ToolButton.qml | 43 +- .../EasyApp}/Gui/Elements/ToolTip.qml | 17 +- {easyApp => src/EasyApp}/Gui/Elements/qmldir | 7 + src/EasyApp/Gui/Globals/Vars.qml | 106 + src/EasyApp/Gui/Globals/qmldir | 3 + src/EasyApp/Gui/Html/BasicReport.html | 342 + src/EasyApp/Gui/Html/BlankPage.html | 3 + src/EasyApp/Gui/Html/PTSans-Bold.ttf | Bin 0 -> 288340 bytes src/EasyApp/Gui/Html/PTSans-Regular.ttf | Bin 0 -> 278612 bytes src/EasyApp/Gui/Html/Plotly1dLine.html | 148 + src/EasyApp/Gui/Html/Plotly1dMeasVsCalc.html | 300 + src/EasyApp/Gui/Html/Plotly2dHeatmap.html | 133 + src/EasyApp/Gui/Html/Plotly3dMesh.html | 139 + src/EasyApp/Gui/Html/Plotly3dScatter.html | 262 + src/EasyApp/Gui/Html/Plotly3dSurface.html | 139 + src/EasyApp/Gui/Html/plotly-2.18.0.min.js | 8 + .../EasyApp}/Gui/Logic/Plotting.js | 13 + .../EasyApp}/Gui/Logic/ProjectConfig.js | 0 .../EasyApp}/Gui/Logic/Translate.js | 0 src/EasyApp/Gui/Logic/Utils.js | 244 + {easyApp => src/EasyApp}/Gui/Logic/qmldir | 0 .../Fonts/Encode_Sans/EncodeSans-Black.ttf | Bin .../Fonts/Encode_Sans/EncodeSans-Bold.ttf | Bin .../Encode_Sans/EncodeSans-ExtraBold.ttf | Bin .../Encode_Sans/EncodeSans-ExtraLight.ttf | Bin .../Fonts/Encode_Sans/EncodeSans-Light.ttf | Bin .../Fonts/Encode_Sans/EncodeSans-Medium.ttf | Bin .../Fonts/Encode_Sans/EncodeSans-Regular.ttf | Bin .../Fonts/Encode_Sans/EncodeSans-SemiBold.ttf | Bin .../Fonts/Encode_Sans/EncodeSans-Thin.ttf | Bin .../Gui/Resources/Fonts/Encode_Sans/OFL.txt | 0 .../Resources/Fonts/Encode_Sans/download.txt | 0 .../EncodeSansCondensed-Black.ttf | Bin .../EncodeSansCondensed-Bold.ttf | Bin .../EncodeSansCondensed-ExtraBold.ttf | Bin .../EncodeSansCondensed-ExtraLight.ttf | Bin .../EncodeSansCondensed-Light.ttf | Bin .../EncodeSansCondensed-Medium.ttf | Bin .../EncodeSansCondensed-Regular.ttf | Bin .../EncodeSansCondensed-SemiBold.ttf | Bin .../EncodeSansCondensed-Thin.ttf | Bin .../Fonts/Encode_Sans_Condensed/OFL.txt | 0 .../Fonts/Encode_Sans_Condensed/download.txt | 0 .../EncodeSansExpanded-Black.ttf | Bin .../EncodeSansExpanded-Bold.ttf | Bin .../EncodeSansExpanded-ExtraBold.ttf | Bin .../EncodeSansExpanded-ExtraLight.ttf | Bin .../EncodeSansExpanded-Light.ttf | Bin .../EncodeSansExpanded-Medium.ttf | Bin .../EncodeSansExpanded-Regular.ttf | Bin .../EncodeSansExpanded-SemiBold.ttf | Bin .../EncodeSansExpanded-Thin.ttf | Bin .../Fonts/Encode_Sans_Expanded/OFL.txt | 0 .../Fonts/Encode_Sans_Expanded/download.txt | 0 .../Font Awesome 5 Free-Solid-900.otf | Bin .../Font Awesome 6 Free-Regular-400.otf | Bin 0 -> 191952 bytes .../Font Awesome 6 Free-Solid-900.otf | Bin 0 -> 1031648 bytes .../Resources/Fonts/FontAwesome/LICENSE.txt | 0 .../Resources/Fonts/Nunito/Nunito-Black.ttf | Bin .../Fonts/Nunito/Nunito-BlackItalic.ttf | Bin .../Resources/Fonts/Nunito/Nunito-Bold.ttf | Bin .../Fonts/Nunito/Nunito-BoldItalic.ttf | Bin .../Fonts/Nunito/Nunito-ExtraBold.ttf | Bin .../Fonts/Nunito/Nunito-ExtraBoldItalic.ttf | Bin .../Fonts/Nunito/Nunito-ExtraLight.ttf | Bin .../Fonts/Nunito/Nunito-ExtraLightItalic.ttf | Bin .../Resources/Fonts/Nunito/Nunito-Italic.ttf | Bin .../Resources/Fonts/Nunito/Nunito-Light.ttf | Bin .../Fonts/Nunito/Nunito-LightItalic.ttf | Bin .../Resources/Fonts/Nunito/Nunito-Regular.ttf | Bin .../Fonts/Nunito/Nunito-SemiBold.ttf | Bin .../Fonts/Nunito/Nunito-SemiBoldItalic.ttf | Bin .../Gui/Resources/Fonts/Nunito/OFL.txt | 0 .../Gui/Resources/Fonts/Nunito/download.txt | 0 .../Gui/Resources/Fonts/PT_Mono/OFL.txt | 0 .../Fonts/PT_Mono/PTMono-Regular.ttf | Bin .../Gui/Resources/Fonts/PT_Mono/download.txt | 0 .../Gui/Resources/Fonts/PT_Sans/OFL.txt | 0 .../Resources/Fonts/PT_Sans/PTSans-Bold.ttf | Bin .../Fonts/PT_Sans/PTSans-BoldItalic.ttf | Bin .../Resources/Fonts/PT_Sans/PTSans-Italic.ttf | Bin .../Fonts/PT_Sans/PTSans-Regular.ttf | Bin .../Gui/Resources/Fonts/PT_Sans/download.txt | 0 .../Gui/Resources/Icons}/description.txt | 0 src/EasyApp/Gui/Style/Colors.qml | 142 + {easyApp => src/EasyApp}/Gui/Style/Fonts.qml | 2 +- {easyApp => src/EasyApp}/Gui/Style/Sizes.qml | 15 +- {easyApp => src/EasyApp}/Gui/Style/Times.qml | 4 +- {easyApp => src/EasyApp}/Gui/Style/qmldir | 0 src/EasyApp/Logic/Logging.py | 200 + {easyApp => src/EasyApp}/Logic/Maintenance.py | 32 +- .../EasyApp}/Logic/Maintenance/Updater.qml | 2 +- .../EasyApp}/Logic/Maintenance/qmldir | 0 {easyApp => src/EasyApp}/Logic/Translate.py | 50 +- {easyApp => src/EasyApp}/Logic/Utils/Utils.py | 0 .../EasyApp}/Logic/Utils/__init__.py | 0 {easyApp => src/EasyApp}/Logic/__init__.py | 0 src/EasyApp/__init__.py | 7 + tests/description.txt | 0 472 files changed, 16603 insertions(+), 93296 deletions(-) create mode 100644 .github/workflows/wasm.yml create mode 100644 .vscode/launch.json delete mode 100644 CHANGELOG.md delete mode 100644 CONTRIBUTING.md create mode 100644 EXAMPLES.md rename LICENSE.md => LICENSE (94%) delete mode 100644 docs/UserManual/description.txt delete mode 100644 docs/WebPages/style.css delete mode 100644 docs/index.html delete mode 100644 easyApp/Gui/Animations/qmldir delete mode 100644 easyApp/Gui/Charts/AreaSeries.qml delete mode 100644 easyApp/Gui/Charts/BaseBokeh.qml delete mode 100644 easyApp/Gui/Charts/BaseChemDoodle.html delete mode 100644 easyApp/Gui/Charts/BaseChemDoodle.qml delete mode 100644 easyApp/Gui/Charts/BasePlot.qml delete mode 100644 easyApp/Gui/Charts/BaseQtCharts.qml delete mode 100644 easyApp/Gui/Charts/ChartView.qml delete mode 100644 easyApp/Gui/Charts/ChemDoodleWeb-9.2.0.min.js delete mode 100644 easyApp/Gui/Charts/ChemDoodleWeb-9.2.0.unpacked.js delete mode 100644 easyApp/Gui/Charts/ChemDoodleWeb-9.2.0.unpacked.modified.js delete mode 100644 easyApp/Gui/Charts/LineSeries.qml delete mode 100644 easyApp/Gui/Charts/ScatterSeries.qml delete mode 100644 easyApp/Gui/Charts/qmldir delete mode 100644 easyApp/Gui/Components/AppBarCentralTabs.qml delete mode 100644 easyApp/Gui/Components/AppBarLeftButtons.qml delete mode 100644 easyApp/Gui/Components/AppBarRightButtons.qml delete mode 100644 easyApp/Gui/Components/ProjectDescriptionDialog.qml delete mode 100644 easyApp/Gui/Components/SideBar.qml delete mode 100644 easyApp/Gui/Components/SideBarColumn.qml delete mode 100644 easyApp/Gui/Components/TableView.qml delete mode 100644 easyApp/Gui/Components/TableViewButton.qml delete mode 100644 easyApp/Gui/Components/TableViewDelegate.qml delete mode 100644 easyApp/Gui/Components/TableViewHeader.qml delete mode 100644 easyApp/Gui/Components/TableViewLabel.qml delete mode 100644 easyApp/Gui/Elements/GroupBox.qml delete mode 100644 easyApp/Gui/Elements/GroupColumn.qml delete mode 100644 easyApp/Gui/Elements/GroupRow.qml delete mode 100644 easyApp/Gui/Elements/Parameter.qml delete mode 100644 easyApp/Gui/Elements/RadioButton.qml delete mode 100644 easyApp/Gui/Elements/RadioIndicator.qml delete mode 100644 easyApp/Gui/Elements/RemoteController.qml delete mode 100644 easyApp/Gui/Elements/StatusBar.qml delete mode 100644 easyApp/Gui/Elements/TextInput.qml delete mode 100644 easyApp/Gui/Globals/Variables.qml delete mode 100644 easyApp/Gui/Globals/qmldir delete mode 100644 easyApp/Gui/Logic/Utils.js delete mode 100644 easyApp/Gui/Resources/Icons/description.txt delete mode 100644 easyApp/Gui/Style/Colors.qml delete mode 100644 easyApp/Logic/Logging.py delete mode 100644 easyApp/__init__.py create mode 100644 examples/AdvancedPy/LICENSE create mode 100644 examples/AdvancedPy/README.md create mode 100644 examples/AdvancedPy/pyproject.toml create mode 100755 examples/AdvancedPy/scripts/create_python_wheel.sh create mode 100755 examples/AdvancedPy/scripts/install_from_wheel.sh create mode 100755 examples/AdvancedPy/scripts/unpack_wheel.sh create mode 100644 examples/AdvancedPy/src/AdvancedPy.pyproject create mode 100644 examples/AdvancedPy/src/AdvancedPy.qmlproject create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/MockBackend.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Project.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Report.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Status.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/qmldir create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/qmldir create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/real_backend.py create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/real_py/logic/helpers.py create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/real_py/project.py create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/real_py/report.py create mode 100644 examples/AdvancedPy/src/AdvancedPy/Backends/real_py/status.py create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/ApplicationWindow.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Globals/ApplicationInfo.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Globals/BackendWrapper.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Globals/References.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Globals/qmldir create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Content.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Popups/About.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Layout.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/MainArea/Description.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Text/Layout.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Layout.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/MainArea/Summary.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.icns create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.ico create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.png create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.svg create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/ESS.png create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/StatusBar.qml create mode 100644 examples/AdvancedPy/src/AdvancedPy/Gui/qmldir rename docs/Developer/Diagrams/description.txt => examples/AdvancedPy/src/AdvancedPy/__init__.py (100%) create mode 100644 examples/AdvancedPy/src/AdvancedPy/main.py create mode 100644 examples/AdvancedPy/src/AdvancedPy/main.qml create mode 100644 examples/BasicC++/scripts/add_aliases_to_qrc.py create mode 100644 examples/BasicC++/src/BasicC++.pro create mode 100644 examples/BasicC++/src/BasicC++.qmlproject create mode 100644 examples/BasicC++/src/BasicC++/Backends/MockBackend.qml create mode 100644 examples/BasicC++/src/BasicC++/Backends/MockQml/Project.qml create mode 100644 examples/BasicC++/src/BasicC++/Backends/MockQml/Report.qml create mode 100644 examples/BasicC++/src/BasicC++/Backends/MockQml/Status.qml create mode 100644 examples/BasicC++/src/BasicC++/Backends/MockQml/qmldir create mode 100644 examples/BasicC++/src/BasicC++/Backends/qmldir create mode 100644 examples/BasicC++/src/BasicC++/Gui/ApplicationWindow.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Globals/ApplicationInfo.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Globals/BackendWrapper.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Globals/References.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Globals/qmldir create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Home/Content.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Home/Popups/About.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Layout.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/MainArea/Description.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Layout.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Layout.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Text/Layout.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Report/Layout.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Report/MainArea/Summary.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Layout.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Layout.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.icns create mode 100644 examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.ico create mode 100644 examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.png create mode 100644 examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.svg create mode 100644 examples/BasicC++/src/BasicC++/Gui/Resources/Logos/ESS.png create mode 100644 examples/BasicC++/src/BasicC++/Gui/StatusBar.qml create mode 100644 examples/BasicC++/src/BasicC++/Gui/qmldir create mode 100644 examples/BasicC++/src/BasicC++/main.cpp create mode 100644 examples/BasicC++/src/BasicC++/main.qml create mode 100644 examples/BasicC++/src/BasicC++/resources.qrc create mode 100644 examples/BasicPy/src/BasicPy.pyproject create mode 100644 examples/BasicPy/src/BasicPy.qmlproject create mode 100644 examples/BasicPy/src/BasicPy/Backends/MockBackend.qml create mode 100644 examples/BasicPy/src/BasicPy/Backends/MockQml/Project.qml create mode 100644 examples/BasicPy/src/BasicPy/Backends/MockQml/Report.qml create mode 100644 examples/BasicPy/src/BasicPy/Backends/MockQml/Status.qml create mode 100644 examples/BasicPy/src/BasicPy/Backends/MockQml/qmldir create mode 100644 examples/BasicPy/src/BasicPy/Backends/qmldir create mode 100644 examples/BasicPy/src/BasicPy/Gui/ApplicationWindow.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Globals/ApplicationInfo.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Globals/BackendWrapper.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Globals/References.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Globals/qmldir create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Home/Content.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Home/Popups/About.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Layout.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/MainArea/Description.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Text/Layout.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Report/Layout.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Report/MainArea/Summary.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.icns create mode 100644 examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.ico create mode 100644 examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.png create mode 100644 examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.svg create mode 100644 examples/BasicPy/src/BasicPy/Gui/Resources/Logos/ESS.png create mode 100644 examples/BasicPy/src/BasicPy/Gui/StatusBar.qml create mode 100644 examples/BasicPy/src/BasicPy/Gui/qmldir create mode 100644 examples/BasicPy/src/BasicPy/main.py create mode 100644 examples/BasicPy/src/BasicPy/main.qml create mode 100644 examples/BasicQml/src/BasicQml.qmlproject create mode 100644 examples/BasicQml/src/BasicQml/Backends/MockBackend.qml create mode 100644 examples/BasicQml/src/BasicQml/Backends/MockQml/Project.qml create mode 100644 examples/BasicQml/src/BasicQml/Backends/MockQml/Report.qml create mode 100644 examples/BasicQml/src/BasicQml/Backends/MockQml/Status.qml create mode 100644 examples/BasicQml/src/BasicQml/Backends/MockQml/qmldir create mode 100644 examples/BasicQml/src/BasicQml/Backends/qmldir create mode 100644 examples/BasicQml/src/BasicQml/Gui/ApplicationWindow.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Globals/ApplicationInfo.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Globals/BackendWrapper.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Globals/References.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Globals/qmldir create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Home/Content.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Home/Popups/About.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Layout.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/MainArea/Description.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Layout.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Layout.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Text/Layout.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Report/Layout.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Report/MainArea/Summary.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Layout.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Layout.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.icns create mode 100644 examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.ico create mode 100644 examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.png create mode 100644 examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.svg create mode 100644 examples/BasicQml/src/BasicQml/Gui/Resources/Logos/ESS.png create mode 100644 examples/BasicQml/src/BasicQml/Gui/StatusBar.qml create mode 100644 examples/BasicQml/src/BasicQml/Gui/qmldir create mode 100644 examples/BasicQml/src/BasicQml/main.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy.pyproject create mode 100644 examples/IntermediatePy/src/IntermediatePy.qmlproject create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/MockBackend.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Project.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Report.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Status.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/qmldir create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/qmldir create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/real_backend.py create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/real_py/logic/helpers.py create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/real_py/project.py create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/real_py/report.py create mode 100644 examples/IntermediatePy/src/IntermediatePy/Backends/real_py/status.py create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/ApplicationWindow.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Globals/ApplicationInfo.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Globals/BackendWrapper.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Globals/References.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Globals/qmldir create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Content.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Popups/About.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Layout.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/MainArea/Description.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Layout.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Layout.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Text/Layout.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Layout.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/MainArea/Summary.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Layout.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Layout.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.icns create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.ico create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.png create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.svg create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/ESS.png create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/StatusBar.qml create mode 100644 examples/IntermediatePy/src/IntermediatePy/Gui/qmldir create mode 100644 examples/IntermediatePy/src/IntermediatePy/main.py create mode 100644 examples/IntermediatePy/src/IntermediatePy/main.qml delete mode 100644 examples/description.txt create mode 100644 resources/images/ea_logo.svg create mode 100644 resources/images/ea_logo_wfont.svg create mode 100644 resources/images/vscode_debug.jpg create mode 100755 scripts/create_python_wheel.sh create mode 100755 scripts/install_from_wheel.sh create mode 100755 scripts/unpack_wheel.sh create mode 100644 src/EasyApp/Gui/Animations/ColorReset.qml rename {easyApp => src/EasyApp}/Gui/Animations/ThemeChange.qml (67%) rename {easyApp => src/EasyApp}/Gui/Animations/TranslationChange.qml (91%) create mode 100644 src/EasyApp/Gui/Animations/qmldir rename {easyApp => src/EasyApp}/Gui/Charts/ChartTemplateHeatmap2dPlotly.html (100%) rename {easyApp => src/EasyApp}/Gui/Charts/ChartTemplateSimple1dPlotly.html (100%) rename {easyApp => src/EasyApp}/Gui/Charts/ChartViewHeatmap2dPlotly.qml (100%) rename {easyApp => src/EasyApp}/Gui/Charts/ChartViewSimple1dPlotly.qml (100%) create mode 100644 src/EasyApp/Gui/Charts/Plotly1dLine.qml create mode 100644 src/EasyApp/Gui/Charts/Plotly1dMeasVsCalc.qml create mode 100644 src/EasyApp/Gui/Charts/Plotly2dHeatmap.qml create mode 100644 src/EasyApp/Gui/Charts/Plotly3dScatter.qml create mode 100644 src/EasyApp/Gui/Charts/Plotly3dSurface.qml create mode 100644 src/EasyApp/Gui/Charts/QtCharts1dBase 2.qml create mode 100644 src/EasyApp/Gui/Charts/QtCharts1dBase.qml create mode 100644 src/EasyApp/Gui/Charts/QtCharts1dMeasVsCalc.qml rename easyApp/Gui/Charts/ValueAxis.qml => src/EasyApp/Gui/Charts/QtCharts1dValueAxis.qml (78%) create mode 100644 src/EasyApp/Gui/Charts/qmldir rename {easyApp => src/EasyApp}/Gui/Components/AboutDialog.qml (79%) create mode 100644 src/EasyApp/Gui/Components/AppBarCentralTabs.qml create mode 100644 src/EasyApp/Gui/Components/AppBarLeftButtons.qml create mode 100644 src/EasyApp/Gui/Components/AppBarRightButtons.qml rename {easyApp => src/EasyApp}/Gui/Components/ApplicationWindow.qml (83%) create mode 100644 src/EasyApp/Gui/Components/BasicReport.qml rename {easyApp => src/EasyApp}/Gui/Components/ContentArea.qml (81%) rename {easyApp => src/EasyApp}/Gui/Components/ContentPage.qml (76%) rename {easyApp => src/EasyApp}/Gui/Components/GuideWindow.qml (59%) rename {easyApp => src/EasyApp}/Gui/Components/GuideWindowContainer.qml (59%) create mode 100644 src/EasyApp/Gui/Components/JsonListModel.qml rename {easyApp => src/EasyApp}/Gui/Components/MainContent.qml (87%) rename {easyApp => src/EasyApp}/Gui/Components/PreferencesDialog.qml (58%) create mode 100644 src/EasyApp/Gui/Components/ProjectDescriptionDialog.qml create mode 100644 src/EasyApp/Gui/Components/SideBar.qml create mode 100644 src/EasyApp/Gui/Components/SideBarColumn.qml create mode 100644 src/EasyApp/Gui/Components/TableView.qml create mode 100644 src/EasyApp/Gui/Components/TableViewAdvancedLabel.qml create mode 100644 src/EasyApp/Gui/Components/TableViewButton.qml rename {easyApp => src/EasyApp}/Gui/Components/TableViewCheckBox.qml (56%) rename {easyApp => src/EasyApp}/Gui/Components/TableViewComboBox.qml (66%) create mode 100644 src/EasyApp/Gui/Components/TableViewDelegate.qml create mode 100644 src/EasyApp/Gui/Components/TableViewHeader.qml create mode 100644 src/EasyApp/Gui/Components/TableViewLabel.qml rename {easyApp => src/EasyApp}/Gui/Components/TableViewLabelControl.qml (85%) create mode 100644 src/EasyApp/Gui/Components/TableViewParameter.qml rename {easyApp => src/EasyApp}/Gui/Components/TableViewTextInput.qml (72%) create mode 100644 src/EasyApp/Gui/Components/TableViewTwoRowsAdvancedLabel.qml rename {easyApp => src/EasyApp}/Gui/Components/qmldir (80%) rename {easyApp => src/EasyApp}/Gui/Elements/AppBarTabButton.qml (71%) rename {easyApp => src/EasyApp}/Gui/Elements/ApplicationWindow.qml (86%) rename {easyApp => src/EasyApp}/Gui/Elements/BoxShadow.qml (91%) rename {easyApp => src/EasyApp}/Gui/Elements/Button.qml (53%) rename {easyApp => src/EasyApp}/Gui/Elements/CheckBox.qml (70%) rename {easyApp => src/EasyApp}/Gui/Elements/CheckIndicator.qml (93%) rename {easyApp => src/EasyApp}/Gui/Elements/ComboBox.qml (88%) rename {easyApp => src/EasyApp}/Gui/Elements/CursorDelegate.qml (92%) rename {easyApp => src/EasyApp}/Gui/Elements/Dialog.qml (92%) rename {easyApp => src/EasyApp}/Gui/Elements/DialogButtonBox.qml (81%) rename {easyApp => src/EasyApp}/Gui/Elements/ElevationEffect.qml (99%) create mode 100644 src/EasyApp/Gui/Elements/GroupBox.qml rename {easyApp => src/EasyApp}/Gui/Elements/GroupButton.qml (79%) create mode 100644 src/EasyApp/Gui/Elements/GroupColumn.qml create mode 100644 src/EasyApp/Gui/Elements/GroupRow.qml rename {easyApp => src/EasyApp}/Gui/Elements/Label.qml (59%) rename {easyApp => src/EasyApp}/Gui/Elements/LinkedImage.qml (79%) create mode 100644 src/EasyApp/Gui/Elements/Menu.qml rename {easyApp => src/EasyApp}/Gui/Elements/MenuItem.qml (92%) create mode 100644 src/EasyApp/Gui/Elements/ParamComboBox.qml create mode 100644 src/EasyApp/Gui/Elements/ParamTextField.qml create mode 100644 src/EasyApp/Gui/Elements/Parameter.qml rename {easyApp => src/EasyApp}/Gui/Elements/Popup.qml (96%) create mode 100644 src/EasyApp/Gui/Elements/RadioButton.qml create mode 100644 src/EasyApp/Gui/Elements/RadioIndicator.qml rename {easyApp => src/EasyApp}/Gui/Elements/RectangularGlow.qml (99%) create mode 100644 src/EasyApp/Gui/Elements/RemoteController.qml rename {easyApp => src/EasyApp}/Gui/Elements/RemotePointer.qml (97%) rename {easyApp => src/EasyApp}/Gui/Elements/RunningLabel.qml (83%) create mode 100644 src/EasyApp/Gui/Elements/ScrollBar.qml rename {easyApp => src/EasyApp}/Gui/Elements/ScrollIndicator.qml (95%) rename {easyApp => src/EasyApp}/Gui/Elements/SideBarButton.qml (67%) rename {easyApp => src/EasyApp}/Gui/Elements/Slider.qml (65%) rename {easyApp => src/EasyApp}/Gui/Elements/SliderHandle.qml (85%) rename {easyApp => src/EasyApp}/Gui/Elements/SpinBox.qml (91%) create mode 100644 src/EasyApp/Gui/Elements/SplashScreen.qml create mode 100644 src/EasyApp/Gui/Elements/StatusBar.qml create mode 100644 src/EasyApp/Gui/Elements/StatusBarItem.qml rename {easyApp => src/EasyApp}/Gui/Elements/TabBar.qml (80%) rename {easyApp => src/EasyApp}/Gui/Elements/TabButton.qml (59%) rename {easyApp => src/EasyApp}/Gui/Elements/TextArea.qml (87%) rename {easyApp => src/EasyApp}/Gui/Elements/TextField.qml (59%) create mode 100644 src/EasyApp/Gui/Elements/TextInput.qml rename {easyApp => src/EasyApp}/Gui/Elements/ToolBar.qml (89%) rename {easyApp => src/EasyApp}/Gui/Elements/ToolButton.qml (67%) rename {easyApp => src/EasyApp}/Gui/Elements/ToolTip.qml (93%) rename {easyApp => src/EasyApp}/Gui/Elements/qmldir (82%) create mode 100644 src/EasyApp/Gui/Globals/Vars.qml create mode 100644 src/EasyApp/Gui/Globals/qmldir create mode 100644 src/EasyApp/Gui/Html/BasicReport.html create mode 100644 src/EasyApp/Gui/Html/BlankPage.html create mode 100644 src/EasyApp/Gui/Html/PTSans-Bold.ttf create mode 100644 src/EasyApp/Gui/Html/PTSans-Regular.ttf create mode 100644 src/EasyApp/Gui/Html/Plotly1dLine.html create mode 100644 src/EasyApp/Gui/Html/Plotly1dMeasVsCalc.html create mode 100644 src/EasyApp/Gui/Html/Plotly2dHeatmap.html create mode 100644 src/EasyApp/Gui/Html/Plotly3dMesh.html create mode 100644 src/EasyApp/Gui/Html/Plotly3dScatter.html create mode 100644 src/EasyApp/Gui/Html/Plotly3dSurface.html create mode 100644 src/EasyApp/Gui/Html/plotly-2.18.0.min.js rename {easyApp => src/EasyApp}/Gui/Logic/Plotting.js (97%) rename {easyApp => src/EasyApp}/Gui/Logic/ProjectConfig.js (100%) rename {easyApp => src/EasyApp}/Gui/Logic/Translate.js (100%) create mode 100644 src/EasyApp/Gui/Logic/Utils.js rename {easyApp => src/EasyApp}/Gui/Logic/qmldir (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Black.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Bold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraLight.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Light.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Medium.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Regular.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-SemiBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Thin.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/OFL.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans/download.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Black.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Bold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraLight.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Light.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Medium.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Regular.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-SemiBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Thin.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/OFL.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Condensed/download.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Black.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Bold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraLight.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Light.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Medium.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Regular.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-SemiBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Thin.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/OFL.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Encode_Sans_Expanded/download.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/FontAwesome/Font Awesome 5 Free-Solid-900.otf (100%) create mode 100644 src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Regular-400.otf create mode 100644 src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Solid-900.otf rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/FontAwesome/LICENSE.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-Black.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-BlackItalic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-Bold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-BoldItalic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-ExtraBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-ExtraBoldItalic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-ExtraLight.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-ExtraLightItalic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-Italic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-Light.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-LightItalic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-Regular.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-SemiBold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/Nunito-SemiBoldItalic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/OFL.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/Nunito/download.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Mono/OFL.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Mono/PTMono-Regular.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Mono/download.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Sans/OFL.txt (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Sans/PTSans-Bold.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Sans/PTSans-BoldItalic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Sans/PTSans-Italic.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Sans/PTSans-Regular.ttf (100%) rename {easyApp => src/EasyApp}/Gui/Resources/Fonts/PT_Sans/download.txt (100%) rename {docs/Developer => src/EasyApp/Gui/Resources/Icons}/description.txt (100%) create mode 100644 src/EasyApp/Gui/Style/Colors.qml rename {easyApp => src/EasyApp}/Gui/Style/Fonts.qml (97%) rename {easyApp => src/EasyApp}/Gui/Style/Sizes.qml (92%) rename {easyApp => src/EasyApp}/Gui/Style/Times.qml (67%) rename {easyApp => src/EasyApp}/Gui/Style/qmldir (100%) create mode 100644 src/EasyApp/Logic/Logging.py rename {easyApp => src/EasyApp}/Logic/Maintenance.py (86%) rename {easyApp => src/EasyApp}/Logic/Maintenance/Updater.qml (87%) rename {easyApp => src/EasyApp}/Logic/Maintenance/qmldir (100%) rename {easyApp => src/EasyApp}/Logic/Translate.py (82%) rename {easyApp => src/EasyApp}/Logic/Utils/Utils.py (100%) rename {easyApp => src/EasyApp}/Logic/Utils/__init__.py (100%) rename {easyApp => src/EasyApp}/Logic/__init__.py (100%) create mode 100644 src/EasyApp/__init__.py delete mode 100644 tests/description.txt diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml new file mode 100644 index 00000000..c8df08a7 --- /dev/null +++ b/.github/workflows/wasm.yml @@ -0,0 +1,106 @@ +name: wasm + +on: + push: + #schedule: + # - cron: '*/120 8-18 * * *' # every 2 hours from 8:00 to 18:00 every day + +jobs: + wasm-build: # the first job + # current job matrix. if modified, remember to UPDATE the strategy in the next job + strategy: + fail-fast: false + matrix: + os: [macos-14] + + runs-on: ${{ matrix.os }} + + timeout-minutes: 30 + + steps: # job steps + - name: Check-out repository + uses: actions/checkout@v4 + + - name: Cache emsdk + id: cache-emsdk + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/emsdk + key: ${{ runner.os }}-emsdk + + - name: Install emsdk + if: steps.cache-emsdk.outputs.cache-hit != 'true' + shell: bash + run: | + git clone https://github.com/emscripten-core/emsdk.git + cd emsdk + git pull + ./emsdk install 3.1.50 # this version is needed for Qt 6.7 + ./emsdk activate 3.1.50 + + - name: Cache Qt + id: cache-qt + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/Qt + key: ${{ runner.os }}-qt + + - name: Install Qt for WebAssembly + if: steps.cache-qt.outputs.cache-hit != 'true' + shell: bash + run: | + curl -L -O https://download.qt.io/official_releases/online_installers/qt-unified-mac-x64-online.dmg + chmod u+x qt-unified-mac-x64-online.dmg + hdiutil attach qt-unified-mac-x64-online.dmg + /Volumes/qt-online-installer-macOS-x64-4.8.0/qt-online-installer-macOS-x64-4.8.0.app/Contents/MacOS/qt-online-installer-macOS-x64-4.8.0 \ + --email ${{ secrets.QT_ACCOUNT_EMAIL }} \ + --pw ${{ secrets.QT_ACCOUNT_PASSWORD }} \ + --root ${{ github.workspace }}/Qt \ + --accept-licenses \ + --accept-obligations \ + --default-answer \ + --confirm-command \ + install qt.qt6.672.wasm_singlethread qt.qt6.672.qt5compat + hdiutil detach /Volumes/qt-online-installer-macOS-x64-4.8.0 + + - name: Print some debug info + shell: bash + run: | + source ${{ github.workspace }}/emsdk/emsdk_env.sh + em++ --version + export PATH=$PATH:${{ github.workspace }}/Qt/6.7.2/wasm_singlethread/bin + qmake -v + + - name: Build WASM from BasicC++ example + shell: bash + run: | + source ${{ github.workspace }}/emsdk/emsdk_env.sh + export PATH=$PATH:${{ github.workspace }}/Qt/6.7.2/wasm_singlethread/bin + cd examples/BasicC++/src + qmake BasicC++.pro -spec wasm-emscripten + make -j + + - name: Copy the built WASM to the build/wasm folder + shell: bash + run: | + mkdir -p build/wasm + cp examples/BasicC++/src/*.wasm build/wasm + cp examples/BasicC++/src/*.html build/wasm + cp examples/BasicC++/src/*.js build/wasm + cp examples/BasicC++/src/*.svg build/wasm + + - name: Upload the zipped wasm folder + uses: actions/upload-artifact@v4 + with: + name: wasm # name of the zip file to be created and uploaded + path: build/wasm # directory whose content is to be zipped + compression-level: 0 # no compression + if-no-files-found: error + + - name: Push the built wasm to the webapp branch + uses: s0/git-publish-subdir-action@develop + env: + GITHUB_TOKEN: ${{ secrets.GH_API_PERSONAL_ACESS_TOKEN }} + REPO: self + BRANCH: webapp + FOLDER: build/wasm # directory whose content is to be pushed diff --git a/.gitignore b/.gitignore index 8fff6f65..cebd2acc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,27 @@ -# QtCreator +# Qt Creator *.autosave -# QtCreator Qml +# Qt Creator Qml *.qmlproject.user *.qmlproject.user.* -# QtCreator Python +# Qt Creator Python *.pyproject.user *.pyproject.user.* -# QtCreator CMake +# Qt Creator C++ +*.pro.user +*.pro.user.* + +# Qt Creator CMake CMakeLists.txt.user* +# VS Code +.vscode/ + +# PyCharm +.idea/ + # Fortran fort.1 @@ -41,6 +51,6 @@ build ..* *.log *.zip +settings.ini* temp.cif .ci/ -.idea/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..6b23849e --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,39 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python Debugger: Current File", + "type": "debugpy", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal", + "env": { + "PYTHONPATH": "${cwd}/src" + } + }, + { + "name": "Python Debugger: BasicPy", + "type": "debugpy", + "request": "launch", + "program": "${cwd}/examples/BasicPy/src/BasicPy/main.py", + "console": "integratedTerminal", + }, + { + "name": "Python Debugger: IntermediatePy", + "type": "debugpy", + "request": "launch", + "program": "${cwd}/examples/IntermediatePy/src/IntermediatePy/main.py", + "console": "integratedTerminal", + }, + { + "name": "Python Debugger: AdvancedPy", + "type": "debugpy", + "request": "launch", + "program": "${cwd}/examples/AdvancedPy/src/AdvancedPy/main.py", + "console": "integratedTerminal", + } + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 8b137891..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 8b137891..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/EXAMPLES.md b/EXAMPLES.md new file mode 100644 index 00000000..c4182cee --- /dev/null +++ b/EXAMPLES.md @@ -0,0 +1,139 @@ +## Types of examples + +Different types of examples are given here. All examples have a graphical frontend implemented in QML, but differ in the way the backend logic is implemented and the runtime used to run them. These examples can be categorised as shown in the following table: + +| Example | Type | Frontend | Backend | Runtime | +| -------------- | ---- | -------- | -------- | -------------------- | +| BasicQml | I | QML | Mock QML | `qml` tool | +| BasicPy | II | QML | Mock QML | `python` interpreter | +| IntermediatePy | III | QML | Python | `python` interpreter | +| AdvancedPy | III | QML | Python | `python` interpreter | +| BasicC++ | IV | QML | Mock QML | need to be compiled | + +## Setting up Python and IDE + +### Python environment + +* Create and activate a python environment (_optional_) + + ***macOS and Linux*** + + ``` + python3.11 -m venv .venv + source .venv/bin/activate + ``` + + ***Windows*** + + ``` + python3.11 -m venv .venv + .venv\Scripts\activate + ``` + +* Upgrade PIP, the package installer for Python (_optional_) + + ``` + pip install --upgrade pip + ``` + +* Install the Qt for Python `PySide6` package using PIP + + ``` + pip install --force-reinstall "PySide6>=6.6,<6.7" + ``` + +### Integrated development environment (IDE) + +#### Qt Creator + +Qt Creator is a prefered IDE for developing the GUI in QML. It allows to run QML code in debug mode with breakpoints, preview changes to QML code in live mode, has build in documentation for QML modules, has QML code auto-completion, and more unique feature related to the QML code. + +* Download Qt Online Installer from [qt.io](https://www.qt.io/download-qt-installer-oss). More info at [doc.qt.io](https://doc.qt.io/qt-6/qt-online-installation.html). +* Install Qt for desktop development using a custom installation that includes the following components: + * Qt + * [ ] Qt 6.7.z + * [x] Desktop (***macOS***) or MSVC 2019 64-bit (***Windows***) + * [x] Qt 5 Compatibility Module + * [x] Qt Shader Tools + * [ ] Additional Libraries + * [x] Qt Charts + * [ ] Developer and Designer Tools + * [x] Qt Creator x.y.z + +#### VS Code (_alternative to Qt Creator_) + +VS Code is an alternative IDE to Qt Creator. It has a syntax highlighting plugin for QML code, but lacks some of the unique features of Qt Creator mentioned above to make QML development easier. + +* Download an install VS Code +* Add the python extension +* The initial launch configuration is in the `.vscode/launch.json` file, which should be automatically read by VS Code +* Select any python file in the repo and choose the desired python environment + +## How to run + +### Type I Examples: BasicQml (QML runtime with QML backend) + +This example is located in `examples/BasicQml` and the source code is in the subfolder `src/BasicQml`. The example consists of a graphical QML frontend (`Gui/Application.qml`) and a QML backend (`Logic/Mock/BackendProxy.qml`). It is considered a mock backend as it only returns hardcoded values rather than providing the required functionality. The entry point for Qt is `main.qml`, which can be displayed using Qt `qml` viewer. + +#### Run using the QML Runtime + +##### Run via the Qt Creator IDE + +* Run Qt Creator +* Open the qml project file from the example folder `examples/BasicQml/src/BasicQml.qmlproject` +* Click Run (Green play button) + +#### How to edit GUI elements in live mode + +* In Qt Creator, select the `*.qml` file to be edited in live mode +* Click the `Design` button at the top of the left sidebar of `Qt Creator` + * _Note: If this button is disabled, find and click `About plugins...` in the `Qt Creator` menu, scroll down to the `Qt Quick` section and enable `QmlDesigner`._ +* In the `Design` window, click the `Show Live Preview` button in the top panel of the application (small play button in a circle). + * _Note: Showing the entire `main.qml` application window in live mode works best when the open `main.qml` is moved to another monitor and does not overlap with the `Qt Creator` window_. +* When the desired GUI component appears, you can click the `Edit` button at the top of the left sidebar of `Qt Creator` to return to the source code of that qml component and still see it live in a separate window. + +### Type II Examples: BasicPy (Python runtime with QML backend) + +This example is in the `examples/BasicPy` folder, and the source code is in the `examples/BasicPy/src/BasicPy` folder. This example serves to demonstrate how an application with a QML frontend and QML backend (similar to the Type I example) can be run from Python. The entry point for the Python application is the `main.py` file. To run it, follow the steps below: + +#### Run using the Python interpreter + +##### Run from the terminal + +* Go to the example folder, e.g., + + ```sh + $ cd examples/BasicPy/src/BasicPy + ``` +* Run using Python (provided that the required python environment is activated as explained above) + + ```sh + $ python main.py + ``` + +##### Run via the Qt Creator IDE (_alternative to run from the terminal_) + +* Run Qt Creator +* Open the python project file from the example folder `examples/BasicPy/src/BasicPy.pyproject` +* Select the desired python environment with the Qt `PySide6` module installed +* Click Run (Green play button) + +##### Run via the VS Code IDE (_alternative to run from the terminal or via the Qt Creator IDE_) + +* Open the repo in VS Code +* Click on the debug extension and select which example to execute +![Debug dropdown window](resources/images/vscode_debug.jpg) + +### Type III Examples: IntermediatePy and AdvancedPy (Python runtime with Python backend) + +These examples demonstrate how to use the Python runtime to run the QML GUI binded with the Python backend located in `Backends/real_backend.py`. These examples can be run through Python in the same way as Type II described above. In these examples, the Python-based backend is registered in `main.py` and then imported into QML. The Qt QML GUI then accesses the backend by calling the properties and methods of the classes defined in the `Backends/real_py` folder. + +#### Possible Issues + +* If in Qt Creator some components are highlighted and marked as "Unknown component. (M300)", try resetting via "Tools > QML/JS > Reset Code Model". + +### Type IV Examples: BasicC++ (QML backend) + +This example can be run after compilation into an executable program. It only has a mock backend in QML (the C++ backend is not implemented). The minimum configuration requires a base `main.cpp` file and, if Qt Creator is used as the IDE, a `*.pro` file. + +This example is currently used to create a WebAssembly application that can be run inside a web browser. diff --git a/LICENSE.md b/LICENSE similarity index 94% rename from LICENSE.md rename to LICENSE index 111a1bb3..056a3c1e 100644 --- a/LICENSE.md +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2021-2022, European Spallation Source +Copyright (c) 2024, EasyApp contributors (https://github.com/easyscience/EasyApp). All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index 8b137891..f519aa85 100644 --- a/README.md +++ b/README.md @@ -1 +1,23 @@ + +EasyApp is a collection of Qt QML graphical components which allows one to quickly create cross-platform applications with an eye-catching and intuitive graphical interface based on the [EasyScience](http://github.com/EasyScience) framework. + +* Website: https://app.easyscience.software +* Source code: https://github.com/EasyScience/EasyApp +* Bug reports: https://github.com/EasyScience/EasyApp/issues + +EasyApp is currently being used as the basis for the graphical interface in the following projects: + +* [EasyDiffraction](http://github.com/EasyScience/EasyDiffraction) +* [EasyReflectometry](http://github.com/EasyScience/EasyReflectometry) +* [EasyTexture](http://github.com/EasyScience/EasyTextureApp) + +More simple examples of how to use EasyApp are described in [EXAMPLES.md](https://github.com/EasyScience/EasyApp/blob/master/EXAMPLES.md) and presented in the project [examples](https://github.com/EasyScience/EasyApp/tree/master/examples) directory: + +* [BasicQml](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicQml) +* [BasicPy](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicPy) +* [BasicC++](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicC++) +* [IntermediatePy](https://github.com/EasyScience/EasyApp/tree/master/examples/IntermediatePy) +* [AdvancedPy](https://github.com/EasyScience/EasyApp/tree/master/examples/AdvancedPy) + +If you want to see what EasyApp looks like, you can try the web demo based on the [BasicC++](https://github.com/EasyScience/EasyApp/tree/master/examples/BasicC++) example at https://easyscience.github.io/EasyApp/BasicC++.html. diff --git a/docs/UserManual/description.txt b/docs/UserManual/description.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/WebPages/style.css b/docs/WebPages/style.css deleted file mode 100644 index 847864d3..00000000 --- a/docs/WebPages/style.css +++ /dev/null @@ -1,43 +0,0 @@ -html, -body { - height: 100%; - background-color: #313131; -} - -h1 { - color: #ddd -} - -a { - color: #4ec1ef -} -a:link { - text-decoration: none; -} -a:visited { - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -a:active { - text-decoration: underline; -} - -.video-frame { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - -ms-transform: translate(-50%, -50%); /* for IE 9 */ - -webkit-transform: translate(-50%, -50%); /* for Safari */ -} - -.video-frame video { - width: 1024px; - height: 600px; - border-width: 1px; - border-color: #ccc; - border-radius: 4px; - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); -} diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 418b500c..00000000 --- a/docs/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - Dev web pages for easyApp repo - - - - -
-

Dev web pages for easyAppeasyScience/easyApp repo

-
- - - diff --git a/easyApp/Gui/Animations/qmldir b/easyApp/Gui/Animations/qmldir deleted file mode 100644 index 5f358064..00000000 --- a/easyApp/Gui/Animations/qmldir +++ /dev/null @@ -1,4 +0,0 @@ -module Animations - -TranslationChange 1.0 TranslationChange.qml -ThemeChange 1.0 ThemeChange.qml diff --git a/easyApp/Gui/Charts/AreaSeries.qml b/easyApp/Gui/Charts/AreaSeries.qml deleted file mode 100644 index 8eea5510..00000000 --- a/easyApp/Gui/Charts/AreaSeries.qml +++ /dev/null @@ -1,12 +0,0 @@ -import QtCharts 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle - -AreaSeries { - opacity: 0.5 - - color: EaStyle.Colors.themeAccent - - borderWidth: 1.5 - borderColor: color //Qt.darker(color, 1.1) -} diff --git a/easyApp/Gui/Charts/BaseBokeh.qml b/easyApp/Gui/Charts/BaseBokeh.qml deleted file mode 100644 index b52c2d18..00000000 --- a/easyApp/Gui/Charts/BaseBokeh.qml +++ /dev/null @@ -1,150 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtWebEngine 1.10 - -import Gui.Globals 1.0 as ExGlobals -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Elements 1.0 as EaElements -import easyApp.Gui.Logic 1.0 as EaLogic -import easyApp.Gui.Charts 1.0 as EaCharts - -EaCharts.BasePlot { - id: plot - - property var chartData: { - 'measured': plot.measuredData, - 'calculated': plot.calculatedData, - 'phase': plot.phaseData, - 'difference': plot.differenceData, - 'bragg': plot.braggData, - 'background': plot.backgroundData, - 'ranges': plot.plotRanges, - - 'hasMeasured': plot.hasMeasuredData, - 'hasCalculated': plot.hasCalculatedData, - 'hasPhase': plot.hasPhaseData, - 'hasDifference': plot.hasDifferenceData, - 'hasBragg': plot.hasBraggData, - 'hasBackground': plot.hasBackgroundData, - 'hasPlotRanges': plot.hasPlotRangesData, - 'isSpinPolarized': plot.isSpinPolarized, - 'setSpinComponent': plot.setSpinComponent, - 'spinComponent': plot.spinComponent, - } - - property var chartSpecs: { - 'chartWidth': plot.chartWidth, - 'mainChartHeight': plot.mainChartHeight, - 'braggChartHeight': plot.braggChartHeight, - 'differenceChartHeight': plot.differenceChartHeight, - 'xAxisChartHeight': plot.xAxisChartHeight, - - 'xAxisTitle': plot.xAxisTitle, - 'yMainAxisTitle': plot.yMainAxisTitle, - 'yDifferenceAxisTitle': plot.yDifferenceAxisTitle, - - 'chartBackgroundColor': plot.chartBackgroundColor, - 'chartForegroundColor': plot.chartForegroundColor, - 'chartGridLineColor': plot.chartGridLineColor, - 'chartMinorGridLineColor': plot.chartMinorGridLineColor, - - 'measuredLineColor': plot.measuredLineColor, - 'measuredAreaColor': plot.measuredAreaColor, - 'calculatedLineColor': plot.calculatedLineColor, - 'differenceLineColor': plot.differenceLineColor, - 'phaseLineColor' : plot.phaseLineColor, - 'braggTicksColor': plot.braggTicksColor, - 'backgroundLineColor': plot.backgroundLineColor, - 'differenceAreaColor': plot.differenceAreaColor, - - 'measuredLineWidth': plot.measuredLineWidth, - 'calculatedLineWidth': plot.calculatedLineWidth, - 'differenceLineWidth': plot.differenceLineWidth, - 'backgroundLineWidth': plot.backgroundLineWidth, - 'phaseLineWidth': plot.phaseLineWidth, - - 'fontPixelSize': plot.fontPixelSize - } - - property string html: EaLogic.Plotting.bokehHtml(chartData, chartSpecs) - - WebEngineView { - id: chartView - - anchors.fill: parent - anchors.margins: plot.paddings - anchors.topMargin: plot.paddings - 0.25 * plot.fontPixelSize - backgroundColor: plot.chartBackgroundColor - - onContextMenuRequested: { - request.accepted = true - } - } - - ///////////////////// - // Chart tool buttons - ///////////////////// - - ButtonGroup { - buttons: polarizePatternType.children - } - - Row { - id: polarizePatternType - - visible: plot.isSpinPolarized - - anchors.top: parent.top - anchors.left: parent.left - - anchors.topMargin: 0.5 * EaStyle.Sizes.fontPixelSize + spacing - 1 - anchors.leftMargin: 6 * EaStyle.Sizes.fontPixelSize + 1 - - spacing: 0.25 * EaStyle.Sizes.fontPixelSize - - EaElements.TabButton { - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight * 2.1 - borderColor: EaStyle.Colors.chartAxis - fontIcon: "arrow-up plus arrow-down" - ToolTip.text: qsTr("Show sum: spin-up \uff0b spin-down component") - checked: plot.spinComponent === "Sum" - onClicked: plot.setSpinComponent("Sum") - } - - EaElements.TabButton { - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight * 2.1 - borderColor: EaStyle.Colors.chartAxis - fontIcon: "arrow-up minus arrow-down" - ToolTip.text: qsTr("Show difference: spin-up \uff0d spin-down component") - checked: plot.spinComponent === "Difference" - onClicked: plot.setSpinComponent("Difference") - } - - EaElements.TabButton { - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "arrow-up" - ToolTip.text: qsTr("Show single component: spin-up") - checked: plot.spinComponent === "Up" - onClicked: plot.setSpinComponent("Up") - } - - EaElements.TabButton { - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "arrow-down" - ToolTip.text: qsTr("Show single component: spin-down") - checked: plot.spinComponent === "Down" - onClicked: plot.setSpinComponent("Down") - } - } - - onHtmlChanged: { - // print(html) - chartView.loadHtml(html) - } -} diff --git a/easyApp/Gui/Charts/BaseChemDoodle.html b/easyApp/Gui/Charts/BaseChemDoodle.html deleted file mode 100644 index 95810461..00000000 --- a/easyApp/Gui/Charts/BaseChemDoodle.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - - - - - - - - - - -
- -
- - - -
- - - - diff --git a/easyApp/Gui/Charts/BaseChemDoodle.qml b/easyApp/Gui/Charts/BaseChemDoodle.qml deleted file mode 100644 index 5ed53d5d..00000000 --- a/easyApp/Gui/Charts/BaseChemDoodle.qml +++ /dev/null @@ -1,300 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtWebEngine 1.10 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements -import easyApp.Gui.Logic 1.0 as EaLogic - -import Gui.Globals 1.0 as ExGlobals - -Rectangle { - id: container - - property string cifStr: "" - onCifStrChanged: { - if (cifStr !== '""') { - structureView.runJavaScript(`reloadCif(${cifStr})`) - } - } - - //property int size: Math.min(width, height) - //onWidthChanged: setChartSizes() - //onHeightChanged: setChartSizes() - - property int appScale: EaStyle.Sizes.defaultScale - onAppScaleChanged: { - if (cifStr !== '""') { - setChartSizes() - } - } - - property int theme: EaStyle.Colors.theme - onThemeChanged: setChartColors() - - color: EaStyle.Colors.chartPlotAreaBackground - Behavior on color { EaAnimations.ThemeChange {} } - - WebEngineView { - id: structureView - - property var info: { - 'version': '9.2.0', - 'url': 'https://web.chemdoodle.com', - 'baseSrc': 'https://download.easydiffraction.org/3rdPartyLibs/ChemDoodleWeb' - } - property string src: `${structureView.info.baseSrc}/ChemDoodleWeb-${structureView.info.version}.unpacked.modified.js` - property string headScript: `` - - anchors.fill: parent - anchors.margins: 0 - - backgroundColor: parent.color - - url: 'BaseChemDoodle.html' - - opacity: cifStr === '""' ? 0 : 1 - Behavior on opacity { - EaAnimations.ThemeChange { duration: 500 } - } - - onLoadingChanged: { - if (cifStr !== '""' && loadRequest.status === WebEngineView.LoadSucceededStatus) { - hideChartToolbar() - setChartSizes() - setChartColors() - reloadCif() - } - } - - onContextMenuRequested: { - request.accepted = true - } - - Component.onCompleted: ExGlobals.Variables.chemDoodleStructureChart = this - } - - ///////////////////// - // Chart tool buttons - ///////////////////// - - Row { - anchors.top: parent.top - anchors.right: parent.right - - anchors.topMargin: EaStyle.Sizes.fontPixelSize - anchors.rightMargin: EaStyle.Sizes.fontPixelSize - - spacing: 0.25 * EaStyle.Sizes.fontPixelSize - - EaElements.TabButton { - property int pageLoading: structureView.loading - property string htmlButtonPrefix: "showBonds" - checkable: false - autoExclusive: false - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "bone" - //ToolTip.text: qsTr("Show/hide bonds") //checked ? qsTr("Hide bonds") : qsTr("Show bonds") - onClicked: { - structureView.runJavaScript(`${htmlButtonPrefix}Action()`) - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - onPageLoadingChanged: { - if (pageLoading === WebEngineView.LoadStartedStatus) { - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - } - Component.onCompleted: ExGlobals.Variables.showBondsButton = this - } - - EaElements.TabButton { - property int pageLoading: structureView.loading - property string htmlButtonPrefix: "showLabels" - checkable: false - autoExclusive: false - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "tag" - //ToolTip.text: qsTr("Show/hide labels") //checked ? qsTr("Hide labels") : qsTr("Show labels") - onClicked: { - structureView.runJavaScript(`${htmlButtonPrefix}Action()`) - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - onPageLoadingChanged: { - if (pageLoading === WebEngineView.LoadStartedStatus) { - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - } - Component.onCompleted: ExGlobals.Variables.showLabelsButton = this - } - - Item { - height: 1 - width: parent.spacing - } - - EaElements.TabButton { - property int pageLoading: structureView.loading - property string htmlButtonPrefix: "projectionType" - checkable: false - autoExclusive: false - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "cube" - //ToolTip.text: qsTr("Set perspective/orthographic view") //checked ? qsTr("Set orthographic view") : qsTr("Set perspective view") - onClicked: { - structureView.runJavaScript(`${htmlButtonPrefix}Action()`) - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - onPageLoadingChanged: { - if (pageLoading === WebEngineView.LoadStartedStatus) { - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - } - Component.onCompleted: ExGlobals.Variables.projectionTypeButton = this - } - - Item { - height: 1 - width: parent.spacing - } - - EaElements.TabButton { - property int pageLoading: structureView.loading - property string htmlButtonPrefix: "xProjection" - checkable: false - autoExclusive: false - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "x" - //ToolTip.text: qsTr("View along the x axis") - onClicked: structureView.runJavaScript(`${htmlButtonPrefix}Action()`) - onPageLoadingChanged: { - if (pageLoading === WebEngineView.LoadStartedStatus) { - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - } - Component.onCompleted: ExGlobals.Variables.xProjectionButton = this - } - - EaElements.TabButton { - property int pageLoading: structureView.loading - property string htmlButtonPrefix: "yProjection" - checkable: false - autoExclusive: false - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "y" - //ToolTip.text: qsTr("View along the y axis") - onClicked: structureView.runJavaScript(`${htmlButtonPrefix}Action()`) - onPageLoadingChanged: { - if (pageLoading === WebEngineView.LoadStartedStatus) { - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - } - Component.onCompleted: ExGlobals.Variables.yProjectionButton = this - } - - EaElements.TabButton { - property int pageLoading: structureView.loading - property string htmlButtonPrefix: "zProjection" - checkable: false - autoExclusive: false - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "z" - //ToolTip.text: qsTr("View along the z axis") - onClicked: structureView.runJavaScript(`${htmlButtonPrefix}Action()`) - onPageLoadingChanged: { - if (pageLoading === WebEngineView.LoadStartedStatus) { - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - } - Component.onCompleted: ExGlobals.Variables.zProjectionButton = this - } - - EaElements.TabButton { - property int pageLoading: structureView.loading - property string htmlButtonPrefix: "defaultView" - checkable: false - autoExclusive: false - height: EaStyle.Sizes.toolButtonHeight - width: EaStyle.Sizes.toolButtonHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "home" - //ToolTip.text: qsTr("Reset to default view") - onClicked: structureView.runJavaScript(`${htmlButtonPrefix}Action()`) - onPageLoadingChanged: { - if (pageLoading === WebEngineView.LoadStartedStatus) { - setToolTipText(`${htmlButtonPrefix}Button`, this) - } - } - Component.onCompleted: ExGlobals.Variables.defaultViewButton = this - } - } - - // Logic - - function hideChartToolbar() { - structureView.runJavaScript(`showToolbar(false)`) - } - - function reloadCif() { - structureView.runJavaScript(`reloadCif(${cifStr})`) - } - - function setChartSizes() { - const sizes = { - '--chartWidth': structureView.width, - '--chartHeight': structureView.height, - '--fontPixelSize': EaStyle.Sizes.fontPixelSize, - '--toolButtonHeight': EaStyle.Sizes.toolButtonHeight - } - for (let key in sizes) { - structureView.runJavaScript(`document.documentElement.style.setProperty('${key}', '${sizes[key]}')`) - } - structureView.runJavaScript(`setChartSizesExtra()`) - } - - function setChartColors() { - const colors = { - '--backgroundColor': EaStyle.Colors.chartPlotAreaBackground, - '--foregroundColor': EaStyle.Colors.chartForeground, - '--buttonBackgroundColor': EaStyle.Colors.contentBackground, - '--buttonBackgroundHoveredColor': EaStyle.Colors.themeBackgroundHovered1, - '--buttonForegroundColor': EaStyle.Colors.themeForeground, - '--buttonForegroundHoveredColor': EaStyle.Colors.themeForegroundHovered, - '--buttonBorderColor': EaStyle.Colors.chartAxis, - '--tooltipBackgroundColor': EaStyle.Colors.dialogBackground, - '--tooltipForegroundColor': EaStyle.Colors.themeForeground, - '--tooltipBorderColor': EaStyle.Colors.toolTipBorder - } - for (let key in colors) { - structureView.runJavaScript(`document.documentElement.style.setProperty('${key}', '${colors[key]}')`) - } - structureView.runJavaScript(`setChartColorsExtra()`) - } - - function setToolTipText(htmlButton, qmlButton) { - structureView.runJavaScript( - `${htmlButton}.getAttribute('data-tooltip')`, - function(result) { - qmlButton.ToolTip.text = result - } - ) - } - - function getSource(){ - var js = "document.documentElement.outerHTML" - structureView.runJavaScript(js, function(result){console.log(result)}) - } - -} diff --git a/easyApp/Gui/Charts/BasePlot.qml b/easyApp/Gui/Charts/BasePlot.qml deleted file mode 100644 index d4abc0f5..00000000 --- a/easyApp/Gui/Charts/BasePlot.qml +++ /dev/null @@ -1,86 +0,0 @@ -import QtQuick 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Logic 1.0 as EaLogic - -Rectangle { - id: container - - property int chartToolButtonsHeight: EaStyle.Sizes.toolButtonHeight - property int paddings: EaStyle.Sizes.fontPixelSize - - property var measuredData: ({}) - property var calculatedData: ({}) - property var phaseData: ({}) - property var differenceData: ({}) - property var braggData: ({}) - property var backgroundData: ({}) - property var plotRanges: ({}) - property var setSpinComponent: ""///(string) - - property bool hasMeasuredData: typeof measuredData !== 'undefined' - && Object.keys(measuredData).length - && (typeof measuredData.x !== 'undefined' - || typeof measuredData.xy !== 'undefined') - property bool hasCalculatedData: typeof calculatedData !== 'undefined' - && Object.keys(calculatedData).length - property bool hasPhaseData: typeof phaseData !== 'undefined' - && Object.keys(phaseData).length - property bool hasDifferenceData: typeof differenceData !== 'undefined' - && Object.keys(differenceData).length - property bool hasBraggData: typeof braggData !== 'undefined' - && Object.keys(braggData).length - - property bool hasBackgroundData: typeof backgroundData !== 'undefined' - && Object.keys(backgroundData).length - property bool hasPlotRangesData: typeof plotRanges !== 'undefined' - && Object.keys(plotRanges).length - property bool isSpinPolarized: false - property string spinComponent: 'Sum' - - property int chartContainerWidth: container.width - property int chartContainerHeight: container.height - - property int chartWidth: container.width - 2 * paddings - property int mainChartHeight: container.height - - 2 * paddings - - braggChartHeight - - differenceChartHeight - - chartToolButtonsHeight - - xAxisChartHeight - property int braggChartHeight: hasBraggData - ? 3 * EaStyle.Sizes.fontPixelSize * Object.keys(braggData).length - : 0 - property int differenceChartHeight: hasDifferenceData - ? 8 * EaStyle.Sizes.fontPixelSize - : 0 - property int xAxisChartHeight: 3 * EaStyle.Sizes.fontPixelSize - - property string xAxisTitle: '' - property string yMainAxisTitle: '' - property string yDifferenceAxisTitle: '' - - property color chartBackgroundColor: EaStyle.Colors.chartPlotAreaBackground - property color chartForegroundColor: EaStyle.Colors.chartForeground - property color chartGridLineColor: EaStyle.Colors.chartGridLine - property color chartMinorGridLineColor: EaStyle.Colors.chartMinorGridLine - - property color measuredLineColor: EaStyle.Colors.chartForegrounds[1] - property color measuredAreaColor: measuredLineColor - property color calculatedLineColor: EaStyle.Colors.chartForegrounds[0] - property color differenceLineColor: EaStyle.Colors.chartForegrounds[1] - property color backgroundLineColor: EaStyle.Colors.chartForegrounds[1] - property color differenceAreaColor: differenceLineColor - property var phaseLineColor: EaStyle.Colors.chartForegroundsExtra - property var braggTicksColor: phaseLineColor - - property int measuredLineWidth: 1 - property int calculatedLineWidth: 2 - property int differenceLineWidth: 1 - property int backgroundLineWidth: 2 - property int phaseLineWidth: 1 - - property int fontPixelSize: EaStyle.Sizes.fontPixelSize - - color: chartBackgroundColor -} diff --git a/easyApp/Gui/Charts/BaseQtCharts.qml b/easyApp/Gui/Charts/BaseQtCharts.qml deleted file mode 100644 index 025876cc..00000000 --- a/easyApp/Gui/Charts/BaseQtCharts.qml +++ /dev/null @@ -1,620 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtCharts 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Elements 1.0 as EaElements -import easyApp.Gui.Charts 1.0 as EaCharts - -import Gui.Globals 1.0 as ExGlobals - -EaCharts.BasePlot { - id: plot - - property int chartExtraMargin: -12 - property int chartVMargin: chartExtraMargin - property int chartHMargin: chartExtraMargin - - Column { - anchors.horizontalCenter: parent.horizontalCenter - spacing: 0 - - /////////////////////////// - // Chart tool buttons space - /////////////////////////// - - Item { - width: 1 - height: plot.chartToolButtonsHeight + 0.6 * plot.fontPixelSize - } - - ///////////// - // Main chart - ///////////// - - Item { - width: plot.chartWidth - height: plot.mainChartHeight + plot.fontPixelSize - - EaCharts.ChartView { - id: mainChart - - property bool allowHover: true - property int initialized: 0 - - anchors.fill: parent - anchors.topMargin: plot.chartVMargin - anchors.bottomMargin: plot.chartVMargin - anchors.leftMargin: plot.chartHMargin - anchors.rightMargin: plot.chartHMargin - - backgroundColor: 'transparent' //'#250000ff' - - EaCharts.ValueAxis { - id: mainAxisX - - title: plot.xAxisTitle - - titleVisible: false - labelsVisible: false - - min: plot.hasPlotRangesData ? plot.plotRanges.min_x : 0 - max: plot.hasPlotRangesData ? plot.plotRanges.max_x : 1 - } - - EaCharts.ValueAxis { - id: mainAxisY - - title: plot.yMainAxisTitle - - min: plot.hasPlotRangesData ? plot.plotRanges.min_y : 0 - max: plot.hasPlotRangesData ? plot.plotRanges.max_y : 1 - - onRangeChanged: { - adjustDifferenceChartRangeY() - adjustLeftAxesAnchor() - } - } - - // Background curve - EaCharts.LineSeries { - color: plot.backgroundLineColor - width: plot.backgroundLineWidth - style: Qt.DotLine - - axisX: mainAxisX - axisY: mainAxisY - - customPoints: plot.backgroundData.xy - } - - // Measured data - EaCharts.AreaSeries { - color: measuredLineColor - - axisX: mainAxisX - axisY: mainAxisY - - lowerSeries: EaCharts.LineSeries { - customPoints: plot.measuredData.xy_lower - } - - upperSeries: EaCharts.LineSeries { - customPoints: plot.measuredData.xy_upper - } - } - - // Calculated curve - EaCharts.LineSeries { - color: plot.calculatedLineColor - width: plot.calculatedLineWidth - - axisX: mainAxisX - axisY: mainAxisY - - customPoints: plot.calculatedData.xy - } - - // Hidden measured points for tooltips - EaCharts.ScatterSeries { - axisX: mainAxisX - axisY: mainAxisY - - markerShape: ScatterSeries.MarkerShapeCircle - markerSize: plot.fontPixelSize * 2 - color: "transparent" - borderColor: "transparent" - - customPoints: plot.measuredData.xy - - onHovered: showMainTooltip(mainChart, 'y_meas', point, state) - } - - // Hidden calculated points for tooltips - EaCharts.ScatterSeries { - axisX: mainAxisX - axisY: mainAxisY - - markerShape: ScatterSeries.MarkerShapeCircle - markerSize: plot.fontPixelSize * 2 - color: "transparent" - borderColor: "transparent" - - customPoints: plot.calculatedData.xy - - onHovered: showMainTooltip(mainChart, 'y_calc', point, state) - } - - onPlotAreaChanged: { - if (mainChart.initialized > 4) { - return - } - mainChart.initialized += 1 - adjustDifferenceChartRangeY() - adjustLeftAxesAnchor() - } - } - - ///////////////////// - // Chart tool buttons - ///////////////////// - - Row { - x: mainChart.plotArea.x - + mainChart.plotArea.width - + plot.chartHMargin - - childrenRect.width - + 1 - y: -childrenRect.height - + fontPixelSize - - 7 - spacing: 3 - - EaElements.TabButton { - checked: mainChart.allowZoom - autoExclusive: false - height: plot.chartToolButtonsHeight - width: plot.chartToolButtonsHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "expand" - ToolTip.text: qsTr("Box zoom") - onClicked: mainChart.allowZoom = !mainChart.allowZoom - } - - EaElements.TabButton { - checkable: false - height: plot.chartToolButtonsHeight - width: plot.chartToolButtonsHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "sync-alt" - ToolTip.text: qsTr("Reset") - onClicked: mainChart.zoomReset() - } - - EaElements.TabButton { - checked: mainChart.allowHover - autoExclusive: false - height: plot.chartToolButtonsHeight - width: plot.chartToolButtonsHeight - borderColor: EaStyle.Colors.chartAxis - fontIcon: "comment-alt" - ToolTip.text: qsTr("Hover") - onClicked: mainChart.allowHover = !mainChart.allowHover - } - } - } - - ///////////////// - // Main chart end - ///////////////// - - ////////////// - // Bragg chart - ////////////// - - Item { - visible: hasBraggData - - width: plot.chartWidth - height: plot.braggChartHeight + 0.2 * plot.fontPixelSize - - EaCharts.ChartView { - id: braggChart - - anchors.fill: parent - anchors.topMargin: plot.chartVMargin - 1.5 * plot.fontPixelSize - anchors.bottomMargin: plot.chartVMargin - anchors.leftMargin: plot.chartHMargin - anchors.rightMargin: plot.chartHMargin - - allowZoom: false - - backgroundColor: 'transparent' //'#2500ff00' - - EaCharts.ValueAxis { - id: braggAxisX - - title: plot.xAxisTitle - - titleVisible: false - labelsVisible: false - - min: mainAxisX.min - max: mainAxisX.max - } - - EaCharts.ValueAxis { - id: braggAxisY - - titleVisible: false - labelsVisible: false - - tickCount: 2 - - min: -0.83 - max: 1 - } - - EaCharts.ScatterSeries { - axisX: braggAxisX - axisY: braggAxisY - - brush: ExGlobals.Constants.proxy.plotting1d.verticalLine(markerSize, plot.calculatedLineColor) - markerShape: ScatterSeries.MarkerShapeRectangle - markerSize: 1.5 * fontPixelSize - borderWidth: 0.001 - borderColor: 'transparent' - - customPoints: plot.braggData.xy - - onHovered: showBraggTooltip(point, state) - } - } - } - - ////////////////// - // Bragg chart end - ////////////////// - - /////////////////// - // Difference chart - /////////////////// - - Item { - visible: hasDifferenceData - - width: plot.chartWidth - height: plot.differenceChartHeight + 0.35 * plot.fontPixelSize - - EaCharts.ChartView { - id: differenceChart - - backgroundColor: 'transparent' //'#25ff0000' - - anchors.fill: parent - anchors.topMargin: plot.chartVMargin - 1.5 * fontPixelSize - anchors.bottomMargin: plot.chartVMargin - anchors.leftMargin: plot.chartHMargin - anchors.rightMargin: plot.chartHMargin - - allowZoom: false - - EaCharts.ValueAxis { - id: differenceAxisX - - title: plot.xAxisTitle - - titleVisible: false - labelsVisible: false - - min: mainAxisX.min - max: mainAxisX.max - } - - EaCharts.ValueAxis { - id: differenceAxisY - - title: plot.yDifferenceAxisTitle - - tickType: ValueAxis.TicksFixed - tickCount: 3 - } - - // Difference area - EaCharts.AreaSeries { - color: differenceLineColor - - axisX: differenceAxisX - axisY: differenceAxisY - - lowerSeries: EaCharts.LineSeries { - customPoints: plot.differenceData.xy_lower - } - - upperSeries: EaCharts.LineSeries { - customPoints: plot.differenceData.xy_upper - } - } - - // Hidden difference points for tooltips - EaCharts.ScatterSeries { - axisX: differenceAxisX - axisY: differenceAxisY - - markerShape: ScatterSeries.MarkerShapeCircle - markerSize: 2 * plot.fontPixelSize - color: "transparent" - borderColor: "transparent" - - customPoints: plot.differenceData.xy - - onHovered: showMainTooltip(differenceChart, 'y_diff', point, state) - } - } - } - - /////////////////////// - // Difference chart end - /////////////////////// - - /////////////////// - // xAxisChart chart - /////////////////// - - Item { - width: plot.chartWidth - height: 58 + 3.5 * plot.fontPixelSize + plot.xAxisChartHeight - - z: -1 - - EaCharts.ChartView { - id: xAxisChart - - backgroundColor: 'transparent' //'#2500ffff' - - anchors.fill: parent - anchors.topMargin: -anchors.bottomMargin - anchors.bottomMargin: parent.height - 2.5 * plot.fontPixelSize - anchors.leftMargin: plot.chartHMargin - anchors.rightMargin: plot.chartHMargin - - showAxesRect: false - allowZoom: false - - EaCharts.ValueAxis { - id: xAxisChartAxisX - - title: plot.xAxisTitle - - lineVisible: false - gridVisible: false - - min: mainAxisX.min - max: mainAxisX.max - } - - EaCharts.ValueAxis { - id: xAxisChartAxisY - - visible: false - } - - EaCharts.ScatterSeries { - axisX: xAxisChartAxisX - axisY: xAxisChartAxisY - } - } - } - - /////////////////////// - // xAxisChart chart end - /////////////////////// - - /////////// - // ToolTips - /////////// - - EaElements.ToolTip { - id: mainInfoToolTip - textFormat: Text.RichText - backgroundColor: plot.chartBackgroundColor - borderColor: plot.chartGridLineColor - } - - EaElements.ToolTip { - id: braggInfoToolTip - textFormat: Text.RichText - backgroundColor: plot.chartBackgroundColor - borderColor: plot.chartGridLineColor - } - - } - - //////// - // Logic - //////// - - // Bragg chart tooltip - - function showBraggTooltip(point, state) { - if (!mainChart.allowHover) { - return - } - braggInfoToolTip.parent = braggChart - braggInfoToolTip.visible = state - const data = braggToolTipData(point) - if (data === null) { - return - } - const pos = braggChart.mapToPosition(point) - braggInfoToolTip.x = pos.x - braggInfoToolTip.y = pos.y - braggInfoToolTip.height - braggInfoToolTip.text = braggTooltip(data) - } - - function braggToolTipData(point) { - if (!plot.hasBraggData) { - return null - } - let data = { 'x': [], 'h': [], 'k': [], 'l': [] } - for (let i in plot.braggData.xy) { - if (point.x === plot.braggData.xy[i].x) { - data.x.push(plot.braggData.xy[i].x) - data.h.push(plot.braggData.h[i]) - data.k.push(plot.braggData.k[i]) - data.l.push(plot.braggData.l[i]) - return data - } - } - return null - } - - function braggTooltip(data) { - let table = [] - for (let i in data.x) { - table.push(`
`) - const x = braggTooltipRow(EaStyle.Colors.themeForegroundDisabled, 'x', `${data.x[i].toFixed(2)}`) - table.push(x) - table.push(' ') - const hkl = braggTooltipRow(plot.calculatedLineColor, 'hkl', `(${data.h[i]} ${data.k[i]} ${data.l[i]})`) - table.push(hkl) - table.push(`
`) - } - const tooltip = table.join('\n') - return tooltip - } - - function braggTooltipRow(color, label, value, sigma='') { - return `${label}: ${value}` - } - - // Main chart tooltip - - function showMainTooltip(chart, line, point, state) { - if (!mainChart.allowHover) { - return - } - mainInfoToolTip.parent = chart - mainInfoToolTip.visible = state - const data = mainToolTipData(point) - if (data === null) { - return - } - const pos = chart.mapToPosition(Qt.point(point.x, data[line])) - mainInfoToolTip.x = pos.x - mainInfoToolTip.y = pos.y - mainInfoToolTip.height - mainInfoToolTip.text = mainTooltip(data) - } - - function mainToolTipData(point) { - let xy = [] - if (plot.hasMeasuredData) { - xy = plot.measuredData.xy - } else if (plot.hasCalculatedData) { - xy = plot.calculatedData.xy - } else { - return null - } - let data = {} - for (let i in xy) { - if (point.x === xy[i].x) { - data.x = xy[i].x - if (plot.hasMeasuredData) { - data.y_meas = plot.measuredData.xy[i].y - data.sy_meas = plot.measuredData.xy_upper[i].y - plot.measuredData.xy[i].y - } - if (plot.hasCalculatedData) { - data.y_calc = plot.calculatedData.xy[i].y - } - if (plot.hasDifferenceData) { - data.y_diff = plot.differenceData.xy[i].y - } - return data - } - } - return null - } - - function mainTooltip(data) { - let table = [] - table.push(...[``, ``]) - - const x = mainTooltipRow(EaStyle.Colors.themeForegroundDisabled, 'x', `${data.x.toFixed(2)}`) - table.push(...x) - if (plot.hasMeasuredData) { - const y_meas = mainTooltipRow(plot.measuredLineColor, 'meas', `${data.y_meas.toFixed(1)}`, `± ${data.sy_meas.toFixed(1)}`) - table.push(...y_meas) - } - if (plot.hasCalculatedData) { - const y_calc = mainTooltipRow(plot.calculatedLineColor, 'calc', `${data.y_calc.toFixed(1)}`) - table.push(...y_calc) - } - if (plot.hasDifferenceData) { - const y_diff = mainTooltipRow(plot.differenceLineColor, 'diff', `${data.y_diff.toFixed(1)}`) - table.push(...y_diff) - } - - table.push(...[``, `
`]) - - const tooltip = table.join('\n') - return tooltip - } - - function mainTooltipRow(color, label, value, sigma='') { - return [``, - ` ${label}: `, - ` ${value}`, - ` ${sigma}`, - ``] - } - - // Misc - - function differenceChartMeanY() { - let ySum = 0, yCount = 0 - for (let i in plot.differenceData.xy) { - if (differenceAxisX.min <= plot.differenceData.xy[i].x && plot.differenceData.xy[i].x <= differenceAxisX.max) { - ySum += plot.differenceData.xy[i].y - yCount += 1 - } - } - if (yCount > 0) { - return ySum / yCount - } - return 0 - } - - function differenceChartHalfRangeY() { - const mainChartRangeY = mainAxisY.max - mainAxisY.min - const differenceToMainChartHeightRatio = differenceChart.plotArea.height / mainChart.plotArea.height - const differenceChartRangeY = mainChartRangeY * differenceToMainChartHeightRatio - return 0.5 * differenceChartRangeY - } - - function adjustDifferenceChartRangeY() { - if (hasDifferenceData) { - differenceAxisY.min = differenceChartMeanY() - differenceChartHalfRangeY() - differenceAxisY.max = differenceChartMeanY() + differenceChartHalfRangeY() - } - } - - function adjustLeftAxesAnchor() { - xAxisChart.anchors.leftMargin = plot.chartHMargin + (mainChart.plotArea.x - xAxisChart.plotArea.x) - if (hasDifferenceData) { - differenceChart.anchors.leftMargin = plot.chartHMargin + (mainChart.plotArea.x - differenceChart.plotArea.x) - } - if (hasBraggData) { - braggChart.anchors.leftMargin = plot.chartHMargin + (mainChart.plotArea.x - braggChart.plotArea.x) - } - } - - function axisLabelFormat(range) { - if (range < 1) - return "%.2f" - else if (range < 10) - return "%.1f" - else - return "%.0f" - } - -} diff --git a/easyApp/Gui/Charts/ChartView.qml b/easyApp/Gui/Charts/ChartView.qml deleted file mode 100644 index a2b49078..00000000 --- a/easyApp/Gui/Charts/ChartView.qml +++ /dev/null @@ -1,201 +0,0 @@ -import QtQuick 2.15 -import QtCharts 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements - -ChartView { - id: chart - - property bool showAxesRect: true - property bool allowZoom: true - - margins.top: 0 - margins.bottom: 0 - margins.left: 0 - margins.right: 0 - - //anchors.margins: -12 //doesn't work - - antialiasing: true - - //theme: Globals.Colors.chartTheme - animationDuration: EaStyle.Times.chartAnimation //0 - animationOptions: ChartView.SeriesAnimations - - legend.visible: false - legend.alignment: Qt.AlignBottom - legend.font.family: EaStyle.Fonts.fontFamily - legend.font.pixelSize: EaStyle.Sizes.fontPixelSize - legend.markerShape: Legend.MarkerShapeRectangle - legend.labelColor: EaStyle.Colors.chartForeground - Behavior on legend.labelColor { EaAnimations.ThemeChange {} } - - backgroundRoundness: 0 - backgroundColor: EaStyle.Colors.chartBackground - Behavior on backgroundColor { EaAnimations.ThemeChange {} } - - titleFont.family: EaStyle.Fonts.fontFamily - titleFont.pixelSize: EaStyle.Sizes.fontPixelSize - titleFont.bold: true - titleColor: EaStyle.Colors.chartForeground - /* BREAKS ANIMATION ! - Behavior on titleColor { - Animations.ThemeChange {} - } - */ - - plotAreaColor: EaStyle.Colors.chartPlotAreaBackground - Behavior on plotAreaColor { EaAnimations.ThemeChange {} } - - // Plot axes rect - Rectangle { - visible: showAxesRect - x: plotArea.x - y: plotArea.y - height: 1 - width: plotArea.width - - color: EaStyle.Colors.chartAxis - Behavior on color { EaAnimations.ThemeChange {} } - } - Rectangle { - visible: showAxesRect - x: plotArea.x - y: plotArea.y + plotArea.height - height: 1 - width: plotArea.width - - color: EaStyle.Colors.chartAxis - Behavior on color { EaAnimations.ThemeChange {} } - } - Rectangle { - visible: showAxesRect - x: plotArea.x - y: plotArea.y - height: plotArea.height - width: 1 - - color: EaStyle.Colors.chartAxis - Behavior on color { EaAnimations.ThemeChange {} } - } - Rectangle { - visible: showAxesRect - y: plotArea.y - x: plotArea.x + plotArea.width - height: plotArea.height - width: 1 - - color: EaStyle.Colors.chartAxis - Behavior on color { EaAnimations.ThemeChange {} } - } - - // Zoom rectangle - Rectangle{ - id: recZoom - - property int xScaleZoom: 0 - property int yScaleZoom: 0 - - visible: false - transform: Scale { origin.x: 0; origin.y: 0; xScale: recZoom.xScaleZoom; yScale: recZoom.yScaleZoom} - - border.color: EaStyle.Colors.appBorder - border.width: 1 - - opacity: 0.9 - color: "transparent" - Rectangle { - anchors.fill: parent - opacity: 0.5 - color: EaStyle.Colors.appBorder - } - } - - // Left mouse button events - MouseArea { - enabled: allowZoom - - anchors.fill: chart - acceptedButtons: Qt.LeftButton - - onPressed: { - //chart.animationOptions = ChartView.SeriesAnimations - chart.animationDuration = EaStyle.Times.chartAnimation - - recZoom.x = mouseX - recZoom.y = mouseY - recZoom.visible = true - } - - onMouseXChanged: { - if (mouseX > recZoom.x) { - recZoom.xScaleZoom = 1 - recZoom.width = Math.min(mouseX, chart.width) - recZoom.x - } else { - recZoom.xScaleZoom = -1 - recZoom.width = recZoom.x - Math.max(mouseX, 0) - } - } - - onMouseYChanged: { - if (mouseY > recZoom.y) { - recZoom.yScaleZoom = 1 - recZoom.height = Math.min(mouseY, chart.height) - recZoom.y - } else { - recZoom.yScaleZoom = -1 - recZoom.height = recZoom.y - Math.max(mouseY, 0) - } - } - - onReleased: { - //enableAnimation() - - const x = Math.min(recZoom.x, mouseX) - chart.anchors.leftMargin - const y = Math.min(recZoom.y, mouseY) - chart.anchors.topMargin - - const width = recZoom.width - const height = recZoom.height - - chart.zoomIn(Qt.rect(x, y, width, height)) - recZoom.visible = false - - //disableAnimation() - } - } - - // Right mouse button events - MouseArea { - enabled: allowZoom - - anchors.fill: chart - acceptedButtons: Qt.RightButton - - onClicked: { - //enableAnimation() - - chart.zoomReset() - - //disableAnimation() - } - } - - // Disable animation timer - Timer { - id: disableAnimationTimer - interval: animationDuration - onTriggered: animationDuration = 0 - } - - // Logic - - function enableAnimation() { - animationDuration = EaStyle.Times.chartAnimation - } - - function disableAnimation() { - disableAnimationTimer.restart() - } - -} diff --git a/easyApp/Gui/Charts/ChemDoodleWeb-9.2.0.min.js b/easyApp/Gui/Charts/ChemDoodleWeb-9.2.0.min.js deleted file mode 100644 index fab55a87..00000000 --- a/easyApp/Gui/Charts/ChemDoodleWeb-9.2.0.min.js +++ /dev/null @@ -1,29771 +0,0 @@ -// -// ChemDoodle Web Components 9.2.0 -// -// https://web.chemdoodle.com -// -// Copyright 2009-2021 iChemLabs, LLC. All rights reserved. -// -// The ChemDoodle Web Components library is licensed under version 3 -// of the GNU GENERAL PUBLIC LICENSE. -// -// You may redistribute it and/or modify it under the terms of the -// GNU General Public License as published by the Free Software Foundation, -// either version 3 of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -// -// Please contact iChemLabs for -// alternate licensing options. -// - -// google closure fails if undefined is provided to this module... but it is not needed so whatever... -let ChemDoodle = (function() { - 'use strict'; - let c = {}; - - c.iChemLabs = {}; - c.informatics = {}; - c.io = {}; - c.lib = {}; - c.notations = {}; - c.structures = {}; - c.structures.d2 = {}; - c.structures.d3 = {}; - - let VERSION = '9.2.0'; - - c.getVersion = function() { - return VERSION; - }; - - return c; - -})(); -/* - * jQuery JavaScript Library v2.2.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:23Z - */ -(function( window, lib, undefined ) { -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var arr = []; - -var document = window.document; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "2.2.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isPlainObject: function( obj ) { - var key; - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/* - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - - // Inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE9-10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[ 0 ], key ) : emptyGet; -}; -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - register: function( owner, initial ) { - var value = initial || {}; - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable, non-writable property - // configurability must be true to allow the property to be - // deleted with the delete operator - } else { - Object.defineProperty( owner, this.expando, { - value: value, - writable: true, - configurable: true - } ); - } - return owner[ this.expando ]; - }, - cache: function( owner ) { - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( !acceptData( owner ) ) { - return {}; - } - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - owner[ this.expando ] && owner[ this.expando ][ key ]; - }, - access: function( owner, key, value ) { - var stored; - - // In cases where either: - // 1. No key was specified - // 2. A string key was specified, but no value provided - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // 1. The entire cache object - // 2. The data stored at the key - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase( key ) ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // 1. An object of properties - // 2. A key and value - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key === undefined ) { - this.register( owner ); - - } else { - - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <= 35-45+ - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data, camelKey; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // with the key as-is - data = dataUser.get( elem, key ) || - - // Try to find dashed key if it exists (gh-2779) - // This is for 2.2.x only - dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); - - if ( data !== undefined ) { - return data; - } - - camelKey = jQuery.camelCase( key ); - - // Attempt to get data from the cache - // with the key camelized - data = dataUser.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - camelKey = jQuery.camelCase( key ); - this.each( function() { - - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = dataUser.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - dataUser.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf( "-" ) > -1 && data !== undefined ) { - dataUser.set( this, key, value ); - } - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE9 - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE9-11+ - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0-4.3, Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + - "screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "'; - document.writeln(form); - this.emptyMessage = 'Click below to load file'; - this.repaint(); - }; - c.FileCanvas.prototype = new c._Canvas(); - -})(ChemDoodle, document); - -(function(c, undefined) { - 'use strict'; - c.HyperlinkCanvas = function(id, width, height, urlOrFunction, color, size) { - if (id) { - this.create(id, width, height); - } - this.urlOrFunction = urlOrFunction; - this.color = color ? color : 'blue'; - this.size = size ? size : 2; - }; - let _ = c.HyperlinkCanvas.prototype = new c._Canvas(); - _.openInNewWindow = true; - _.hoverImage = undefined; - _.drawChildExtras = function(ctx) { - if (this.e) { - if (this.hoverImage) { - ctx.drawImage(this.hoverImage, 0, 0); - } else { - ctx.strokeStyle = this.color; - ctx.lineWidth = this.size * 2; - ctx.strokeRect(0, 0, this.width, this.height); - } - } - }; - _.setHoverImage = function(url) { - this.hoverImage = new Image(); - this.hoverImage.src = url; - }; - _.click = function(p) { - this.e = undefined; - this.repaint(); - if (this.urlOrFunction instanceof Function) { - this.urlOrFunction(); - } else { - if (this.openInNewWindow) { - window.open(this.urlOrFunction); - } else { - location.href = this.urlOrFunction; - } - } - }; - _.mouseout = function(e) { - this.e = undefined; - this.repaint(); - }; - _.mouseover = function(e) { - this.e = e; - this.repaint(); - }; - -})(ChemDoodle); - -(function(c, iChemLabs, q, document, undefined) { - 'use strict'; - c.MolGrabberCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - let sb = []; - sb.push('
'); - sb.push(this.getInputFields()); - - // Don't use document.writeln here, it breaks the whole page after - // document is closed. - document.getElementById(id); - let canvas = q('#' + id); - canvas.after(sb.join('')); - - let self = this; - q('#' + id + '_submit').click(function() { - self.search(); - }); - q('#' + id + '_query').keypress(function(e) { - if (e.which === 13) { - self.search(); - } - }); - this.emptyMessage = 'Enter search term below'; - this.repaint(); - }; - let _ = c.MolGrabberCanvas.prototype = new c._Canvas(); - _.setSearchTerm = function(term) { - q('#' + this.id + '_query').val(term); - this.search(); - }; - _.getInputFields = function(){ - let sb = []; - sb.push('
'); - sb.push(''); - sb.push(''); - sb.push(''); - return sb.join(''); - }; - _.search = function() { - this.emptyMessage = 'Searching...'; - this.clear(); - let self = this; - iChemLabs.getMoleculeFromDatabase(q('#' + this.id + '_query').val(), { - database : q('#' + this.id + '_select').val() - }, function(mol) { - self.loadMolecule(mol); - }); - }; - -})(ChemDoodle, ChemDoodle.iChemLabs, ChemDoodle.lib.jQuery, document); - -(function(c, m, m4, undefined) { - 'use strict'; - // keep these declaration outside the loop to avoid overhead - let matrix = []; - let xAxis = [ 1, 0, 0 ]; - let yAxis = [ 0, 1, 0 ]; - let zAxis = [ 0, 0, 1 ]; - - c.RotatorCanvas = function(id, width, height, rotate3D) { - if (id) { - this.create(id, width, height); - } - this.rotate3D = rotate3D; - }; - let _ = c.RotatorCanvas.prototype = new c._AnimatorCanvas(); - let increment = m.PI / 15; - _.xIncrement = increment; - _.yIncrement = increment; - _.zIncrement = increment; - _.nextFrame = function(delta) { - if (this.molecules.length === 0 && this.shapes.length === 0) { - this.stopAnimation(); - return; - } - let change = delta / 1000; - if (this.rotate3D) { - m4.identity(matrix); - m4.rotate(matrix, this.xIncrement * change, xAxis); - m4.rotate(matrix, this.yIncrement * change, yAxis); - m4.rotate(matrix, this.zIncrement * change, zAxis); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let m = this.molecules[i]; - for ( let j = 0, jj = m.atoms.length; j < jj; j++) { - let a = m.atoms[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, a.z ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - a.z = p[2]; - } - for ( let j = 0, jj = m.rings.length; j < jj; j++) { - m.rings[j].center = m.rings[j].getCenter(); - } - if (this.styles.atoms_display && this.styles.atoms_circles_2D) { - m.sortAtomsByZ(); - } - if (this.styles.bonds_display && this.styles.bonds_clearOverlaps_2D) { - m.sortBondsByZ(); - } - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - let a = sps[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, 0 ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - } - } - } else { - this.styles.rotateAngle += this.zIncrement * change; - } - }; - _.dblclick = function(e) { - if (this.isRunning()) { - this.stopAnimation(); - } else { - this.startAnimation(); - } - }; - -})(ChemDoodle, Math, ChemDoodle.lib.mat4); - -(function(c, animations, math, undefined) { - 'use strict'; - c.SlideshowCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.SlideshowCanvas.prototype = new c._AnimatorCanvas(); - _.frames = []; - _.curIndex = 0; - _.timeout = 5000; - _.alpha = 0; - _.innerHandle = undefined; - _.phase = 0; - _.drawChildExtras = function(ctx) { - let rgb = math.getRGB(this.styles.backgroundColor, 255); - ctx.fillStyle = 'rgba(' + rgb[0] + ', ' + rgb[1] + ', ' + rgb[2] + ', ' + this.alpha + ')'; - ctx.fillRect(0, 0, this.width, this.height); - }; - _.nextFrame = function(delta) { - if (this.frames.length === 0) { - this.stopAnimation(); - return; - } - this.phase = 0; - let me = this; - let count = 1; - this.innerHandle = setInterval(function() { - me.alpha = count / 15; - me.repaint(); - if (count === 15) { - me.breakInnerHandle(); - } - count++; - }, 33); - }; - _.breakInnerHandle = function() { - if (this.innerHandle) { - clearInterval(this.innerHandle); - this.innerHandle = undefined; - } - if (this.phase === 0) { - this.curIndex++; - if (this.curIndex > this.frames.length - 1) { - this.curIndex = 0; - } - this.alpha = 1; - let f = this.frames[this.curIndex]; - this.loadContent(f.mols, f.shapes); - this.phase = 1; - let me = this; - let count = 1; - this.innerHandle = setInterval(function() { - me.alpha = (15 - count) / 15; - me.repaint(); - if (count === 15) { - me.breakInnerHandle(); - } - count++; - }, 33); - } else if (this.phase === 1) { - this.alpha = 0; - this.repaint(); - } - }; - _.addFrame = function(molecules, shapes) { - if (this.frames.length === 0) { - this.loadContent(molecules, shapes); - } - this.frames.push({ - mols : molecules, - shapes : shapes - }); - }; - -})(ChemDoodle, ChemDoodle.animations, ChemDoodle.math); - -(function(c, monitor, structures, m, m4, undefined) { - 'use strict'; - c.TransformCanvas = function(id, width, height, rotate3D) { - if (id) { - this.create(id, width, height); - } - this.rotate3D = rotate3D; - }; - let _ = c.TransformCanvas.prototype = new c._Canvas(); - _.lastPoint = undefined; - _.rotationMultMod = 1.3; - _.lastPinchScale = 1; - _.lastGestureRotate = 0; - _.mousedown = function(e) { - this.lastPoint = e.p; - }; - _.dblclick = function(e) { - // center structure - this.center(); - this.repaint(); - }; - _.drag = function(e) { - if (!this.lastPoint.multi) { - if (monitor.ALT) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - mol.atoms[j].add(t); - } - mol.check(); - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - sps[j].add(t); - } - } - this.lastPoint = e.p; - this.repaint(); - } else { - if (this.rotate3D === true) { - let diameter = m.max(this.width / 4, this.height / 4); - let difx = e.p.x - this.lastPoint.x; - let dify = e.p.y - this.lastPoint.y; - let yIncrement = difx / diameter * this.rotationMultMod; - let xIncrement = -dify / diameter * this.rotationMultMod; - let matrix = []; - m4.identity(matrix); - m4.rotate(matrix, xIncrement, [ 1, 0, 0 ]); - m4.rotate(matrix, yIncrement, [ 0, 1, 0 ]); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - let a = mol.atoms[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, a.z ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - a.z = p[2]; - } - for ( let i = 0, ii = mol.rings.length; i < ii; i++) { - mol.rings[i].center = mol.rings[i].getCenter(); - } - this.lastPoint = e.p; - if (this.styles.atoms_display && this.styles.atoms_circles_2D) { - mol.sortAtomsByZ(); - } - if (this.styles.bonds_display && this.styles.bonds_clearOverlaps_2D) { - mol.sortBondsByZ(); - } - } - this.repaint(); - } else { - let center = new structures.Point(this.width / 2, this.height / 2); - let before = center.angle(this.lastPoint); - let after = center.angle(e.p); - this.styles.rotateAngle -= (after - before); - this.lastPoint = e.p; - this.repaint(); - } - } - } - }; - _.mousewheel = function(e, delta) { - this.styles.scale += delta / 50; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.repaint(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (this.lastPoint.multi) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let m = this.molecules[i]; - for ( let j = 0, jj = m.atoms.length; j < jj; j++) { - m.atoms[j].add(t); - } - m.check(); - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - sps[j].add(t); - } - } - this.lastPoint = e.p; - this.lastPoint.multi = true; - this.repaint(); - } else { - this.lastPoint = e.p; - this.lastPoint.multi = true; - } - } - }; - _.gesturechange = function(e) { - if (e.originalEvent.scale - this.lastPinchScale !== 0) { - this.styles.scale *= e.originalEvent.scale / this.lastPinchScale; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.lastPinchScale = e.originalEvent.scale; - } - if (this.lastGestureRotate - e.originalEvent.rotation !== 0) { - let rot = (this.lastGestureRotate - e.originalEvent.rotation) / 180 * m.PI; - let center = new structures.Point(this.width / 2, this.height / 2); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - let a = mol.atoms[j]; - let dist = center.distance(a); - let angle = center.angle(a) + rot; - a.x = center.x + dist * m.cos(angle); - a.y = center.y - dist * m.sin(angle); - } - mol.check(); - } - this.lastGestureRotate = e.originalEvent.rotation; - } - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - this.lastGestureRotate = 0; - }; - -})(ChemDoodle, ChemDoodle.monitor, ChemDoodle.structures, Math, ChemDoodle.lib.mat4); - -(function(c, undefined) { - 'use strict'; - c.ViewerCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.ViewerCanvas.prototype = new c._Canvas(); - -})(ChemDoodle); - -(function(c, document, undefined) { - 'use strict'; - c._SpectrumCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c._SpectrumCanvas.prototype = new c._Canvas(); - _.spectrum = undefined; - _.emptyMessage = 'No Spectrum Loaded or Recognized'; - _.loadMolecule = undefined; - _.getMolecule = undefined; - _.innerRepaint = function(ctx) { - if (this.spectrum && this.spectrum.data.length > 0) { - this.spectrum.draw(ctx, this.styles, this.width, this.height); - } else if (this.emptyMessage) { - ctx.fillStyle = '#737683'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.font = '18px Helvetica, Verdana, Arial, Sans-serif'; - ctx.fillText(this.emptyMessage, this.width / 2, this.height / 2); - } - }; - _.loadSpectrum = function(spectrum) { - this.spectrum = spectrum; - this.repaint(); - }; - _.getSpectrum = function() { - return this.spectrum; - }; - _.getSpectrumCoordinates = function(x, y) { - return spectrum.getInternalCoordinates(x, y, this.width, this.height); - }; - -})(ChemDoodle, document); - -(function(c, undefined) { - 'use strict'; - c.ObserverCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.ObserverCanvas.prototype = new c._SpectrumCanvas(); - -})(ChemDoodle); - -(function(c, undefined) { - 'use strict'; - c.OverlayCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.OverlayCanvas.prototype = new c._SpectrumCanvas(); - _.overlaySpectra = []; - _.superRepaint = _.innerRepaint; - _.innerRepaint = function(ctx) { - this.superRepaint(ctx); - if (this.spectrum && this.spectrum.data.length > 0) { - for ( let i = 0, ii = this.overlaySpectra.length; i < ii; i++) { - let s = this.overlaySpectra[i]; - if (s && s.data.length > 0) { - s.minX = this.spectrum.minX; - s.maxX = this.spectrum.maxX; - s.drawPlot(ctx, this.styles, this.width, this.height, this.spectrum.memory.offsetTop, this.spectrum.memory.offsetLeft, this.spectrum.memory.offsetBottom); - } - } - } - }; - _.addSpectrum = function(spectrum) { - if (!this.spectrum) { - this.spectrum = spectrum; - } else { - this.overlaySpectra.push(spectrum); - } - }; - -})(ChemDoodle); - -(function(c, monitor, m, undefined) { - 'use strict'; - c.PerspectiveCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.PerspectiveCanvas.prototype = new c._SpectrumCanvas(); - _.dragRange = undefined; - _.rescaleYAxisOnZoom = true; - _.lastPinchScale = 1; - _.mousedown = function(e) { - this.dragRange = new c.structures.Point(e.p.x, e.p.x); - }; - _.mouseup = function(e) { - if (this.dragRange && this.dragRange.x !== this.dragRange.y) { - if (!this.dragRange.multi) { - let newScale = this.spectrum.zoom(this.dragRange.x, e.p.x, this.width, this.rescaleYAxisOnZoom); - if (this.rescaleYAxisOnZoom) { - this.styles.scale = newScale; - } - } - this.dragRange = undefined; - this.repaint(); - } - }; - _.drag = function(e) { - if (this.dragRange) { - if (this.dragRange.multi) { - this.dragRange = undefined; - } else if (monitor.SHIFT) { - this.spectrum.translate(e.p.x - this.dragRange.x, this.width); - this.dragRange.x = e.p.x; - this.dragRange.y = e.p.x; - } else { - this.dragRange.y = e.p.x; - } - this.repaint(); - } - }; - _.drawChildExtras = function(ctx) { - if (this.dragRange) { - let xs = m.min(this.dragRange.x, this.dragRange.y); - let xe = m.max(this.dragRange.x, this.dragRange.y); - ctx.strokeStyle = 'gray'; - ctx.lineStyle = 1; - ctx.beginPath(); - ctx.moveTo(xs, this.height / 2); - for ( let i = xs; i <= xe; i++) { - if (i % 10 < 5) { - ctx.lineTo(i, m.round(this.height / 2)); - } else { - ctx.moveTo(i, m.round(this.height / 2)); - } - } - ctx.stroke(); - } - }; - _.mousewheel = function(e, delta) { - this.styles.scale -= delta / 10; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.repaint(); - }; - _.dblclick = function(e) { - this.spectrum.setup(); - this.styles.scale = 1; - this.repaint(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (!this.dragRange || !this.dragRange.multi) { - this.dragRange = new c.structures.Point(e.p.x, e.p.x); - this.dragRange.multi = true; - } else { - this.spectrum.translate(e.p.x - this.dragRange.x, this.width); - this.dragRange.x = e.p.x; - this.dragRange.y = e.p.x; - this.repaint(); - } - } - }; - _.gesturechange = function(e) { - this.styles.scale *= e.originalEvent.scale / this.lastPinchScale; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.lastPinchScale = e.originalEvent.scale; - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - }; - -})(ChemDoodle, ChemDoodle.monitor, Math); - -(function(c, extensions, m, undefined) { - 'use strict'; - c.SeekerCanvas = function(id, width, height, seekType) { - if (id) { - this.create(id, width, height); - } - this.seekType = seekType; - }; - let _ = c.SeekerCanvas.prototype = new c._SpectrumCanvas(); - _.superRepaint = _.innerRepaint; - _.innerRepaint = function(ctx) { - this.superRepaint(ctx); - if (this.spectrum && this.spectrum.data.length > 0 && this.p) { - // set up coords - let renderP; - let internalP; - if (this.seekType === c.SeekerCanvas.SEEK_POINTER) { - renderP = this.p; - internalP = this.spectrum.getInternalCoordinates(renderP.x, renderP.y); - } else if (this.seekType === c.SeekerCanvas.SEEK_PLOT || this.seekType === c.SeekerCanvas.SEEK_PEAK) { - internalP = this.seekType === c.SeekerCanvas.SEEK_PLOT ? this.spectrum.getClosestPlotInternalCoordinates(this.p.x) : this.spectrum.getClosestPeakInternalCoordinates(this.p.x); - if (!internalP) { - return; - } - renderP = { - x : this.spectrum.getTransformedX(internalP.x, this.styles, this.width, this.spectrum.memory.offsetLeft), - y : this.spectrum.getTransformedY(internalP.y / 100, this.styles, this.height, this.spectrum.memory.offsetBottom, this.spectrum.memory.offsetTop) - }; - } - // draw point - ctx.fillStyle = 'white'; - ctx.strokeStyle = this.styles.plots_color; - ctx.lineWidth = this.styles.plots_width; - ctx.beginPath(); - ctx.arc(renderP.x, renderP.y, 3, 0, m.PI * 2, false); - ctx.fill(); - ctx.stroke(); - // draw internal coordinates - ctx.font = extensions.getFontString(this.styles.text_font_size, this.styles.text_font_families); - ctx.textAlign = 'left'; - ctx.textBaseline = 'bottom'; - let s = 'x:' + internalP.x.toFixed(3) + ', y:' + internalP.y.toFixed(3); - let x = renderP.x + 3; - let w = ctx.measureText(s).width; - if (x + w > this.width - 2) { - x -= 6 + w; - } - let y = renderP.y; - if (y - this.styles.text_font_size - 2 < 0) { - y += this.styles.text_font_size; - } - ctx.fillRect(x, y - this.styles.text_font_size, w, this.styles.text_font_size); - ctx.fillStyle = 'black'; - ctx.fillText(s, x, y); - } - }; - _.mouseout = function(e) { - this.p = undefined; - this.repaint(); - }; - _.mousemove = function(e) { - this.p = { - x : e.p.x - 2, - y : e.p.y - 3 - }; - this.repaint(); - }; - _.touchstart = function(e) { - this.mousemove(e); - }; - _.touchmove = function(e) { - this.mousemove(e); - }; - _.touchend = function(e) { - this.mouseout(e); - }; - c.SeekerCanvas.SEEK_POINTER = 'pointer'; - c.SeekerCanvas.SEEK_PLOT = 'plot'; - c.SeekerCanvas.SEEK_PEAK = 'peak'; - -})(ChemDoodle, ChemDoodle.extensions, Math); - -(function(c, extensions, math, structures, d3, RESIDUE, m, document, m4, m3, v3, q, window, undefined) { - 'use strict'; - c._Canvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c._Canvas3D.prototype = new c._Canvas(); - let _super = c._Canvas.prototype; - _.rotationMatrix = undefined; - _.contentCenter = undefined; - _.lastPoint = undefined; - _.emptyMessage = 'WebGL is Unavailable!'; - _.lastPinchScale = 1; - _.lastGestureRotate = 0; - _.afterLoadContent = function() { - let bounds = new math.Bounds(); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - bounds.expand(this.molecules[i].getBounds3D()); - } - // build fog parameter - let maxDimension3D = v3.dist([ bounds.maxX, bounds.maxY, bounds.maxZ ], [ bounds.minX, bounds.minY, bounds.minZ ]) / 2 + 1.5; - if(maxDimension3D===Infinity){ - // there is no content - maxDimension3D = 10; - } - - this.maxDimension = m.max(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY); - - let fov = m.min(179.9, m.max(this.styles.projectionPerspectiveVerticalFieldOfView_3D, 0.1)); - let theta = fov / 360 * m.PI; - let tanTheta = m.tan(theta) / 0.8; - let top = maxDimension3D; - let focalLength = top / tanTheta; - let near = focalLength - top; - let far = focalLength + top; - let aspect = this.width / this.height; - - this.camera.fieldOfView = fov; - this.camera.near = near; - this.camera.far = far; - this.camera.aspect = aspect; - m4.translate(m4.identity(this.camera.viewMatrix), [ 0, 0, -focalLength]); - - let lightFocalLength = top / m.tan(theta); - - this.lighting.camera.fieldOfView = fov; - this.lighting.camera.near = lightFocalLength - top; - this.lighting.camera.far = lightFocalLength + top; - this.lighting.updateView(); - - this.setupScene(); - }; - _.renderDepthMap = function() { - if (this.styles.shadow_3D && d3.DepthShader) { - - let cullFaceEnabled = this.gl.isEnabled(this.gl.CULL_FACE); - if(!cullFaceEnabled) { this.gl.enable(this.gl.CULL_FACE); } - - this.depthShader.useShaderProgram(this.gl); - - // current clear color - let cs = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - - this.gl.clearColor(1.0, 1.0, 1.0, 0.0); - - this.lightDepthMapFramebuffer.bind(this.gl, this.shadowTextureSize, this.shadowTextureSize); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // use light projection matrix to draw the molecule - this.depthShader.setProjectionMatrix(this.gl, this.lighting.camera.projectionMatrix); - - this.depthShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.gl.flush(); - - this.depthShader.disableAttribsArray(this.gl); - - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - - // set back the clear color - this.gl.clearColor(cs[0], cs[1], cs[2], cs[3]); - - if(!cullFaceEnabled) { this.gl.disable(this.gl.CULL_FACE); } - } - };// draw anything those not molecules, example compass, shapes, text etc. - _.renderExtras = function() { - - this.phongShader.useShaderProgram(this.gl); - - this.phongShader.enableAttribsArray(this.gl); - - let transparentShapes = []; - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let s = this.shapes[i]; - if(s instanceof d3._Surface && (!s.styles && this.styles.surfaces_alpha!==1 || s.styles && s.styles.surfaces_alpha!==1)){ - transparentShapes.push(s); - }else{ - s.render(this.gl, this.styles); - } - } - - // transparent shapes - if(transparentShapes.length!==0){ - //this.gl.blendFunc(gl.SRC_ALPHA, gl.ONE); - this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA); - this.gl.enable(this.gl.BLEND); - this.gl.depthMask(false); - for ( let i = 0, ii = transparentShapes.length; i < ii; i++) { - let s = transparentShapes[i]; - s.render(this.gl, this.styles); - } - this.gl.depthMask(true); - this.gl.disable(this.gl.BLEND); - this.gl.blendFuncSeparate(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA, this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA); - } - - - this.phongShader.setShadow(this.gl, false); - this.phongShader.setFogMode(this.gl, 0); - this.phongShader.setFlatColor(this.gl, false); - - // compass use its own model view and projection matrix - // so it need to use back the default matrix for other - // rendering process (ex. render arbitrary text). - if (this.styles.compass_display) { - this.phongShader.setLightDirection(this.gl, [0, 0, -1]); - this.compass.render(this.gl, this.styles); - } - - this.phongShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // enable blend and depth mask set to false - this.gl.enable(this.gl.BLEND); - this.gl.depthMask(false); - this.labelShader.useShaderProgram(this.gl); - // use back the default model view matrix - this.labelShader.setMatrixUniforms(this.gl, this.gl.modelViewMatrix); - // use back the default projection matrix - this.labelShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - this.labelShader.setDimension(this.gl, this.gl.canvas.clientWidth, this.gl.canvas.clientHeight); - - // enable vertex for draw text - this.labelShader.enableAttribsArray(this.gl); - - // draw label molecule - if (this.styles.atoms_displayLabels_3D) { - this.label3D.render(this.gl, this.styles, this.getMolecules()); - } - // draw measurement text - if(this.styles.measurement_displayText_3D) { - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let s = this.shapes[i]; - if(s.renderText){ - s.renderText(this.gl, this.styles); - } - } - } - // draw compass X Y Z text - if (this.styles.compass_display && this.styles.compass_displayText_3D) { - this.compass.renderAxis(this.gl); - } - // disable vertex for draw text - this.labelShader.disableAttribsArray(this.gl); - - // disable blend and depth mask set to true - this.gl.disable(this.gl.BLEND); - this.gl.depthMask(true); - this.gl.flush(); - - if (this.drawChildExtras) { - this.drawChildExtras(this.gl); - } - - this.gl.flush(); - }; - // molecule colors rendeing will both use on forward and deferred rendering - _.renderColor = function() { - this.phongShader.useShaderProgram(this.gl); - - this.gl.uniform1i(this.phongShader.shadowDepthSampleUniform, 0); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.lightDepthMapTexture.texture); - - this.phongShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - this.phongShader.setShadow(this.gl, this.styles.shadow_3D); - this.phongShader.setFlatColor(this.gl, this.styles.flat_color_3D); - this.phongShader.setGammaCorrection(this.gl, this.styles.gammaCorrection_3D); - - this.phongShader.setShadowTextureSize(this.gl, this.shadowTextureSize, this.shadowTextureSize); - this.phongShader.setShadowIntensity(this.gl, this.styles.shadow_intensity_3D); - - this.phongShader.setFogMode(this.gl, this.styles.fog_mode_3D); - this.phongShader.setFogColor(this.gl, this.fogging.colorRGB); - this.phongShader.setFogStart(this.gl, this.fogging.fogStart); - this.phongShader.setFogEnd(this.gl, this.fogging.fogEnd); - this.phongShader.setFogDensity(this.gl, this.fogging.density); - - this.phongShader.setLightProjectionMatrix(this.gl, this.lighting.camera.projectionMatrix); - this.phongShader.setLightDiffuseColor(this.gl, this.lighting.diffuseRGB); - this.phongShader.setLightSpecularColor(this.gl, this.lighting.specularRGB); - this.phongShader.setLightDirection(this.gl, this.lighting.direction); - - this.phongShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.phongShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderPosition = function() { - this.positionShader.useShaderProgram(this.gl); - - this.positionShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.positionShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.positionShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderNormal = function() { - this.normalShader.useShaderProgram(this.gl); - this.normalShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.normalShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.normalShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderSSAO = function() { - this.ssaoShader.useShaderProgram(this.gl); - - this.ssaoShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.ssaoShader.setSampleKernel(this.gl, this.ssao.sampleKernel); - - this.ssaoShader.setKernelRadius(this.gl, this.styles.ssao_kernel_radius); - - this.ssaoShader.setPower(this.gl, this.styles.ssao_power); - - this.ssaoShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.uniform1i(this.ssaoShader.positionSampleUniform, 0); - this.gl.uniform1i(this.ssaoShader.normalSampleUniform, 1); - this.gl.uniform1i(this.ssaoShader.noiseSampleUniform, 2); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.positionTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.normalTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE2); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.ssao.noiseTexture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.ssaoShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.ssaoShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // render ssao blur shader - this.ssaoFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - - this.ssaoBlurShader.useShaderProgram(this.gl); - - this.ssaoBlurShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.uniform1i(this.ssaoBlurShader.aoSampleUniform, 0); - this.gl.uniform1i(this.ssaoBlurShader.depthSampleUniform, 1); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.imageTexture.texture); - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.depthTexture.texture); - this.gl.activeTexture(this.gl.TEXTURE0); - - - this.ssaoBlurShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.ssaoBlurShader.disableAttribsArray(this.gl); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.gl.flush(); - }; - _.renderOutline = function() { - this.outlineShader.useShaderProgram(this.gl); - - this.outlineShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.outlineShader.setNormalThreshold(this.gl, this.styles.outline_normal_threshold); - this.outlineShader.setDepthThreshold(this.gl, this.styles.outline_depth_threshold); - this.outlineShader.setThickness(this.gl, this.styles.outline_thickness); - - this.gl.uniform1i(this.outlineShader.normalSampleUniform, 0); - this.gl.uniform1i(this.outlineShader.depthSampleUniform, 1); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.normalTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.depthTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.outlineShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.outlineShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.deferredRender = function() { - // get backdground color - let bgColor = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - // set background to black - this.gl.clearColor(0.0, 0.0, 0.0, 0.0); - - // render color - this.colorFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderColor(); - - // render position - this.positionFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderPosition(); - - // render normals - this.normalFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderNormal(); - - // render ssao - if(this.styles.ssao_3D && d3.SSAOShader) { - // render ssao shading - this.quadFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - this.renderSSAO(); - } else { - this.ssaoFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clearColor(1.0, 1.0, 1.0, 1.0); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - } - - // render outline - this.outlineFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clearColor(1.0, 1.0, 1.0, 1.0); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - if(this.styles.outline_3D) { - this.renderOutline(); - } - - // set back background color - this.gl.clearColor(bgColor[0], bgColor[1], bgColor[2], bgColor[3]); - // composite render - this.quadFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - - this.lightingShader.useShaderProgram(this.gl); - - this.gl.uniform1i(this.lightingShader.positionSampleUniform, 0); - this.gl.uniform1i(this.lightingShader.colorSampleUniform, 1); - this.gl.uniform1i(this.lightingShader.ssaoSampleUniform, 2); - this.gl.uniform1i(this.lightingShader.outlineSampleUniform, 3); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.positionTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.colorTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE2); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.ssaoTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE3); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.outlineTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.lightingShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.lightingShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // final render - this.fxaaFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.bindTexture(this.gl.TEXTURE_2D, this.imageTexture.texture); - - this.fxaaShader.useShaderProgram(this.gl); - - this.fxaaShader.setBuffersize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.fxaaShader.setAntialias(this.gl, this.styles.antialias_3D); - - this.fxaaShader.setEdgeThreshold(this.gl, this.styles.fxaa_edgeThreshold); - this.fxaaShader.setEdgeThresholdMin(this.gl, this.styles.fxaa_edgeThresholdMin); - this.fxaaShader.setSearchSteps(this.gl, this.styles.fxaa_searchSteps); - this.fxaaShader.setSearchThreshold(this.gl, this.styles.fxaa_searchThreshold); - this.fxaaShader.setSubpixCap(this.gl, this.styles.fxaa_subpixCap); - this.fxaaShader.setSubpixTrim(this.gl, this.styles.fxaa_subpixTrim); - - this.fxaaShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.fxaaShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - - // final render - this.finalFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.renderExtras(); - - // set back background color - this.gl.clearColor(bgColor[0], bgColor[1], bgColor[2], bgColor[3]); - - // last render - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.bindTexture(this.gl.TEXTURE_2D, this.fxaaTexture.texture); - - this.quadShader.useShaderProgram(this.gl); - - this.quadShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.quadShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.forwardRender = function() { - // last render - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.renderColor(); - - this.renderExtras(); - }; - _.repaint = function() { - if (this.gl) { - // set up the model view matrix to the specified transformations - this.gl.lightViewMatrix = m4.multiply(this.lighting.camera.viewMatrix, this.rotationMatrix, []); - this.gl.rotationMatrix = this.rotationMatrix; - this.gl.modelViewMatrix = this.gl.lightViewMatrix; - - this.renderDepthMap(); - - this.gl.modelViewMatrix = m4.multiply(this.camera.viewMatrix, this.rotationMatrix, []); - m4.translate(this.gl.modelViewMatrix, this.contentCenter); - - if(this.isSupportDeferred() && (this.styles.ssao_3D || this.styles.outline_3D)) { - this.deferredRender(); - } else { - this.forwardRender(); - } - } - }; - _.pick = function(x, y, includeAtoms, includeBonds) { - if (this.gl) { - // draw with pick framebuffer - let xu = x; - let yu = this.height - y; - if (this.pixelRatio !== 1) { - xu *= this.pixelRatio; - yu *= this.pixelRatio; - } - - // set up the model view matrix to the specified transformations - m4.multiply(this.camera.viewMatrix, this.rotationMatrix, this.gl.modelViewMatrix); - m4.translate(this.gl.modelViewMatrix, this.contentCenter); - this.gl.rotationMatrix = this.rotationMatrix; - - this.pickShader.useShaderProgram(this.gl); - - // current clear color - let cs = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - - this.gl.clearColor(1.0, 1.0, 1.0, 0.0); - this.pickerFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // use default projection matrix to draw the molecule - this.pickShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - // not need the normal for diffuse light, we need flat color - this.pickShader.enableAttribsArray(this.gl); - - let objects = []; - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].renderPickFrame(this.gl, this.styles, objects, includeAtoms, includeBonds); - } - - this.pickShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - let rgba = new Uint8Array(4); - this.gl.readPixels(xu - 2, yu + 2, 1, 1, this.gl.RGBA, this.gl.UNSIGNED_BYTE, rgba); - - let object = undefined; - let idxMolecule = rgba[3]; - if (idxMolecule > 0) { - let idxAtom = rgba[2] | (rgba[1] << 8) | (rgba[0] << 16); - object = objects[idxAtom]; - } - - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - // set back the clear color - this.gl.clearColor(cs[0], cs[1], cs[2], cs[3]); - return object; - } - return undefined; - }; - _.center = function() { - let p = new structures.Atom(); - let n = this.molecules.length; - for ( let k = 0, kk = n; k < kk; k++) { - let m = this.molecules[k]; - p.add3D(m.getCenter3D()); - } - p.x /= n; - p.y /= n; - p.z /= n; - this.contentCenter = [-p.x, -p.y, -p.z]; - }; - _.isSupportDeferred = function() { - return this.gl.textureFloatExt && this.gl.depthTextureExt; - }; - _.create = function(id, width, height) { - _super.create.call(this, id, width, height); - // setup gl object - try { - let canvas = document.getElementById(this.id); - this.gl = canvas.getContext('webgl'); - if (!this.gl) { - this.gl = canvas.getContext('experimental-webgl'); - } - } catch (e) { - } - if (this.gl) { - - if (this.pixelRatio !== 1 && this.gl.canvas.width === this.width) { - this.gl.canvas.style.width = this.width + 'px'; - this.gl.canvas.style.height = this.height + 'px'; - this.gl.canvas.width = this.width * this.pixelRatio; - this.gl.canvas.height = this.height * this.pixelRatio; - } - - this.gl.enable(this.gl.DEPTH_TEST); - this.gl.depthFunc(this.gl.LEQUAL); - this.gl.blendFuncSeparate(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA, this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA); - this.gl.clearDepth(1.0); - - // size of texture for render depth map from light view - this.shadowTextureSize = 1024; - // setup matrices - this.rotationMatrix = m4.identity([]); - this.contentCenter = [0,0,0]; - // set up camera - this.camera = new d3.Camera(); - - this.label3D = new d3.Label(); - - this.lighting = new d3.Light(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - - this.fogging = new d3.Fog(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - - - // uncomment this line to see shadow without depth texture extension - this.gl.depthTextureExt = this.gl.getExtension('WEBGL_depth_texture') || this.gl.getExtension('WEBKIT_WEBGL_depth_texture') || this.gl.getExtension('MOZ_WEBGL_depth_texture'); - this.gl.textureFloatExt = this.gl.getExtension('OES_texture_float') || this.gl.getExtension('WEBKIT_OES_texture_float') || this.gl.getExtension('MOZ_OES_texture_float'); - // this.gl.shaderTextureLodExt = this.gl.getExtension('EXT_shader_texture_lod') || this.gl.getExtension('WEBKIT_EXT_shader_texture_lod') || this.gl.getExtension('MOZ_EXT_shader_texture_lod'); - // this.gl.drawBuffersExt = this.gl.getExtension('WEBGL_draw_buffers'); - - this.ssao = new d3.SSAO(); - - // set picker color attachment - this.pickerColorTexture = new d3.Texture(); - this.pickerColorTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA, this.gl.RGBA); - - // set picker depth attachment - this.pickerDepthRenderbuffer = new d3.Renderbuffer(); - this.pickerDepthRenderbuffer.init(this.gl, this.gl.DEPTH_COMPONENT16); - - // set picker framebuffer - this.pickerFramebuffer = new d3.Framebuffer(); - this.pickerFramebuffer.init(this.gl); - this.pickerFramebuffer.setColorTexture(this.gl, this.pickerColorTexture.texture); - this.pickerFramebuffer.setDepthRenderbuffer(this.gl, this.pickerDepthRenderbuffer.renderbuffer); - - // depth map for shadowing - this.lightDepthMapTexture = new d3.Texture(); - this.lightDepthMapRenderbuffer = new d3.Renderbuffer(); - this.lightDepthMapFramebuffer = new d3.Framebuffer(); - this.lightDepthMapFramebuffer.init(this.gl); - - if(this.gl.depthTextureExt) { - this.lightDepthMapTexture.init(this.gl, this.gl.UNSIGNED_SHORT, this.gl.DEPTH_COMPONENT); - this.lightDepthMapRenderbuffer.init(this.gl, this.gl.RGBA4); - this.lightDepthMapFramebuffer.setColorRenderbuffer(this.gl, this.lightDepthMapRenderbuffer.renderbuffer); - this.lightDepthMapFramebuffer.setDepthTexture(this.gl, this.lightDepthMapTexture.texture); - } else { - this.lightDepthMapTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA, this.gl.RGBA); - this.lightDepthMapRenderbuffer.init(this.gl, this.gl.DEPTH_COMPONENT16); - this.lightDepthMapFramebuffer.setColorTexture(this.gl, this.lightDepthMapTexture.texture); - this.lightDepthMapFramebuffer.setDepthRenderbuffer(this.gl, this.lightDepthMapRenderbuffer.renderbuffer); - } - - // deferred shading textures, renderbuffers, framebuffers and shaders - if(this.isSupportDeferred()) { - // g-buffer - this.depthTexture = new d3.Texture(); - this.depthTexture.init(this.gl, this.gl.UNSIGNED_SHORT, this.gl.DEPTH_COMPONENT); - - this.colorTexture = new d3.Texture(); - this.colorTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA); - - this.positionTexture = new d3.Texture(); - this.positionTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - this.normalTexture = new d3.Texture(); - this.normalTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // postprocesing effect - // ssao - this.ssaoTexture = new d3.Texture(); - this.ssaoTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // outline - this.outlineTexture = new d3.Texture(); - this.outlineTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA); - - this.fxaaTexture = new d3.Texture(); - this.fxaaTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // temp texture - this.imageTexture = new d3.Texture(); - this.imageTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // framebuffer - this.colorFramebuffer = new d3.Framebuffer(); - this.colorFramebuffer.init(this.gl); - this.colorFramebuffer.setColorTexture(this.gl, this.colorTexture.texture); - this.colorFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.normalFramebuffer = new d3.Framebuffer(); - this.normalFramebuffer.init(this.gl); - this.normalFramebuffer.setColorTexture(this.gl, this.normalTexture.texture); - this.normalFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.positionFramebuffer = new d3.Framebuffer(); - this.positionFramebuffer.init(this.gl); - this.positionFramebuffer.setColorTexture(this.gl, this.positionTexture.texture); - this.positionFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.ssaoFramebuffer = new d3.Framebuffer(); - this.ssaoFramebuffer.init(this.gl); - this.ssaoFramebuffer.setColorTexture(this.gl, this.ssaoTexture.texture); - - this.outlineFramebuffer = new d3.Framebuffer(); - this.outlineFramebuffer.init(this.gl); - this.outlineFramebuffer.setColorTexture(this.gl, this.outlineTexture.texture); - - this.fxaaFramebuffer = new d3.Framebuffer(); - this.fxaaFramebuffer.init(this.gl); - this.fxaaFramebuffer.setColorTexture(this.gl, this.fxaaTexture.texture); - - this.quadFramebuffer = new d3.Framebuffer(); - this.quadFramebuffer.init(this.gl); - this.quadFramebuffer.setColorTexture(this.gl, this.imageTexture.texture); - - this.finalFramebuffer = new d3.Framebuffer(); - this.finalFramebuffer.init(this.gl); - this.finalFramebuffer.setColorTexture(this.gl, this.fxaaTexture.texture); - this.finalFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.normalShader = new d3.NormalShader(); - this.normalShader.init(this.gl); - - this.positionShader = new d3.PositionShader(); - this.positionShader.init(this.gl); - - if(d3.SSAOShader){ - this.ssaoShader = new d3.SSAOShader(); - this.ssaoShader.init(this.gl); - - this.ssaoBlurShader = new d3.SSAOBlurShader(); - this.ssaoBlurShader.init(this.gl); - } - - this.outlineShader = new d3.OutlineShader(); - this.outlineShader.init(this.gl); - - this.lightingShader = new d3.LightingShader(); - this.lightingShader.init(this.gl); - - this.fxaaShader = new d3.FXAAShader(); - this.fxaaShader.init(this.gl); - - this.quadShader = new d3.QuadShader(); - this.quadShader.init(this.gl); - } - - // this is the shaders - this.labelShader = new d3.LabelShader(); - this.labelShader.init(this.gl); - - this.pickShader = new d3.PickShader(); - this.pickShader.init(this.gl); - - this.phongShader = new d3.PhongShader(); - this.phongShader.init(this.gl); - - if(d3.DepthShader){ - this.depthShader = new d3.DepthShader(); - this.depthShader.init(this.gl); - } - - this.textTextImage = new d3.TextImage(); - this.textTextImage.init(this.gl); - - this.gl.textImage = new d3.TextImage(); - this.gl.textImage.init(this.gl); - - this.gl.textMesh = new d3.TextMesh(); - this.gl.textMesh.init(this.gl); - - // set up material - this.gl.material = new d3.Material(); - - this.setupScene(); - } else { - this.displayMessage(); - } - }; - _.displayMessage = function() { - let canvas = document.getElementById(this.id); - if (canvas.getContext) { - let ctx = canvas.getContext('2d'); - if (this.styles.backgroundColor) { - ctx.fillStyle = this.styles.backgroundColor; - ctx.fillRect(0, 0, this.width, this.height); - } - if (this.emptyMessage) { - ctx.fillStyle = '#737683'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.font = '18px Helvetica, Verdana, Arial, Sans-serif'; - ctx.fillText(this.emptyMessage, this.width / 2, this.height / 2); - } - } - }; - _.renderText = function(text, position) { - let vertexData = { - position : [], - texCoord : [], - translation : [] - }; - this.textTextImage.pushVertexData(text, position, 0, vertexData); - this.gl.textMesh.storeData(this.gl, vertexData.position, vertexData.texCoord, vertexData.translation); - - this.textTextImage.useTexture(this.gl); - this.gl.textMesh.render(this.gl); - }; - _.setupScene = function() { - if (this.gl) { - // clear the canvas - // set background color for IE's sake, seems like an IE bug where half the repaints don't render a background - let jqCapsule = q('#' + this.id); - let backgroundString = this.styles.backgroundColor?this.styles.backgroundColor:'transparent'; - jqCapsule.css('background-color', backgroundString); - let cs = backgroundString==='transparent'?[0.0,0.0,0.0,0.0]:math.getRGB(backgroundString, 1); - this.gl.clearColor(cs[0], cs[1], cs[2], cs.length==4?cs[3]:1.0); - this.styles.cullBackFace_3D ? this.gl.enable(this.gl.CULL_FACE) : this.gl.disable(this.gl.CULL_FACE); - // here is the sphere buffer to be drawn, make it once, then scale - // and translate to draw atoms - this.gl.sphereBuffer = new d3.Sphere(1, this.styles.atoms_resolution_3D, this.styles.atoms_resolution_3D); - this.gl.starBuffer = new d3.Star(); - this.gl.cylinderBuffer = new d3.Cylinder(1, 1, this.styles.bonds_resolution_3D); - this.gl.cylinderClosedBuffer = new d3.Cylinder(1, 1, this.styles.bonds_resolution_3D, true); - this.gl.boxBuffer = new d3.Box(1, 1, 1); - this.gl.pillBuffer = new d3.Pill(this.styles.bonds_pillDiameter_3D / 2, this.styles.bonds_pillHeight_3D, this.styles.bonds_pillLatitudeResolution_3D, this.styles.bonds_pillLongitudeResolution_3D); - this.gl.lineBuffer = new d3.Line(); - this.gl.lineArrowBuffer = new d3.LineArrow(); - this.gl.arrowBuffer = new d3.Arrow(0.3, this.styles.compass_resolution_3D); - this.gl.quadBuffer = new d3.Quad(); - // texture for rendering text - this.gl.textImage.updateFont(this.gl, this.styles.text_font_size, this.styles.text_font_families, this.styles.text_font_bold, this.styles.text_font_italic, this.styles.text_font_stroke_3D); - // set up lighting - this.lighting.lightScene(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - // set up fogging - this.fogging.fogScene(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - // set up compass - this.compass = new d3.Compass(this.gl, this.styles); - - // set texture and renderbuffer parameter - this.lightDepthMapTexture.setParameter(this.gl, this.shadowTextureSize, this.shadowTextureSize); - this.lightDepthMapRenderbuffer.setParameter(this.gl, this.shadowTextureSize, this.shadowTextureSize); - - this.pickerColorTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.pickerDepthRenderbuffer.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - if(this.isSupportDeferred()) { - this.depthTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.colorTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.imageTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.positionTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.normalTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.ssaoTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.outlineTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.fxaaTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - // set SSAO parameter - this.ssao.initSampleKernel(this.styles.ssao_kernel_samples); - - this.ssao.initNoiseTexture(this.gl); - } - - this.camera.updateProjectionMatrix(this.styles.projectionPerspective_3D); - - for ( let k = 0, kk = this.molecules.length; k < kk; k++) { - let mol = this.molecules[k]; - if (!(mol.labelMesh instanceof d3.TextMesh)) { - mol.labelMesh = new d3.TextMesh(); - mol.labelMesh.init(this.gl); - } - if (mol.chains) { - mol.ribbons = []; - mol.cartoons = []; - mol.tubes = []; - mol.pipePlanks = []; - // set up ribbon diagram if available and not already setup - for ( let j = 0, jj = mol.chains.length; j < jj; j++) { - let rs = mol.chains[j]; - for ( let i = 0, ii = rs.length - 1; i < ii; i++) { - rs[i].Test =i; - } - let isNucleotide = rs.length > 3 && RESIDUE[rs[3].name] && RESIDUE[rs[3].name].aminoColor === '#BEA06E'; - if (rs.length > 0 && !rs[0].lineSegments) { - for ( let i = 0, ii = rs.length - 1; i < ii; i++) { - rs[i].setup(rs[i + 1].cp1, isNucleotide ? 1 : this.styles.proteins_horizontalResolution); - } - if (!isNucleotide) { - for ( let i = 1, ii = rs.length - 1; i < ii; i++) { - // reverse guide points if carbonyl - // orientation flips - if (extensions.vec3AngleFrom(rs[i - 1].D, rs[i].D) > m.PI / 2) { - rs[i].guidePointsSmall.reverse(); - rs[i].guidePointsLarge.reverse(); - v3.scale(rs[i].D, -1); - } - } - } - for ( let i = 2, ii = rs.length - 3; i < ii; i++) { - // compute line segments - rs[i].computeLineSegments(rs[i - 2], rs[i - 1], rs[i + 1], !isNucleotide, isNucleotide ? this.styles.nucleics_verticalResolution : this.styles.proteins_verticalResolution); - } - // remove unneeded dummies - rs.pop(); - rs.pop(); - rs.pop(); - rs.shift(); - rs.shift(); - } - // create the hsl color for the chain - let rgb = math.hsl2rgb(jj === 1 ? .5 : j / jj, 1, .5); - let chainColor = 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')'; - rs.chainColor = chainColor; - if (isNucleotide) { - let t = new d3.Tube(rs, this.styles.nucleics_tubeThickness, this.styles.nucleics_tubeResolution_3D); - t.chainColor = chainColor; - mol.tubes.push(t); - } else { - let t = new d3.PipePlank(rs, this.styles); - mol.pipePlanks.push(t); - let res = rs.shift(); - let r = { - front : new d3.Ribbon(rs, this.styles.proteins_ribbonThickness, false), - back : new d3.Ribbon(rs, -this.styles.proteins_ribbonThickness, false) - }; - r.front.chainColor = chainColor; - r.back.chainColor = chainColor; - mol.ribbons.push(r); - let d = { - front : new d3.Ribbon(rs, this.styles.proteins_ribbonThickness, true), - back : new d3.Ribbon(rs, -this.styles.proteins_ribbonThickness, true) - }; - d.front.chainColor = chainColor; - d.back.chainColor = chainColor; - mol.cartoons.push(d); - rs.unshift(res); - } - } - } - } - this.label3D.updateVerticesBuffer(this.gl, this.getMolecules(), this.styles); - // the molecules in frame of MovieCanvas3D must be handled - if (this instanceof c.MovieCanvas3D && this.frames) { - for ( let i = 0, ii = this.frames.length; i < ii; i++) { - let f = this.frames[i]; - for ( let j = 0, jj = f.mols.length; j < jj; j++) { - let mol = f.mols[j]; - if (!(mol.labelMesh instanceof structures.d3.TextMesh)) { - mol.labelMesh = new structures.d3.TextMesh(); - mol.labelMesh.init(this.gl); - } - } - this.label3D.updateVerticesBuffer(this.gl, f.mols, this.styles); - } - } - } - }; - _.updateScene = function() { - this.camera.updateProjectionMatrix(this.styles.projectionPerspective_3D); - - this.lighting.lightScene(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - - this.fogging.fogScene(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - - this.repaint(); - }; - _.mousedown = function(e) { - this.lastPoint = e.p; - }; - _.mouseup = function(e) { - this.lastPoint = undefined; - }; - _.rightmousedown = function(e) { - this.lastPoint = e.p; - }; - _.drag = function(e) { - if(this.lastPoint){ - if (c.monitor.ALT) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - let theta = this.camera.fieldOfView / 360 * m.PI; - let tanTheta = m.tan(theta); - let topScreen = this.height / 2 / this.camera.zoom; - let nearScreen = topScreen / tanTheta; - let nearRatio = this.camera.focalLength() / nearScreen; - m4.translate(this.camera.viewMatrix, [ t.x * nearRatio, -t.y * nearRatio, 0 ]); - } else { - let difx = e.p.x - this.lastPoint.x; - let dify = e.p.y - this.lastPoint.y; - let rotation = m4.rotate(m4.identity([]), difx * m.PI / 180.0, [ 0, 1, 0 ]); - m4.rotate(rotation, dify * m.PI / 180.0, [ 1, 0, 0 ]); - this.rotationMatrix = m4.multiply(rotation, this.rotationMatrix); - } - this.lastPoint = e.p; - this.repaint(); - } - }; - _.mousewheel = function(e, delta) { - delta > 0 ? this.camera.zoomIn() : this.camera.zoomOut(); - this.updateScene(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (this.lastPoint && this.lastPoint.multi) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - let theta = this.camera.fieldOfView / 360 * m.PI; - let tanTheta = m.tan(theta); - let topScreen = this.height / 2 / this.camera.zoom; - let nearScreen = topScreen / tanTheta; - let nearRatio = this.camera.focalLength() / nearScreen; - m4.translate(this.camera.viewMatrix, [ t.x * nearRatio, -t.y * nearRatio, 0 ]); - this.lastPoint = e.p; - this.repaint(); - } else { - this.lastPoint = e.p; - this.lastPoint.multi = true; - } - } - }; - _.gesturechange = function(e) { - if (e.originalEvent.scale - this.lastPinchScale !== 0) { - //let minFov = 0.1; - //let maxFov = 179.9; - let dz = -(e.originalEvent.scale / this.lastPinchScale - 1) * 30; - if(isNaN(dz)){ - // this seems to happen on Android when using multiple fingers - return; - } - dz > 0 ? this.camera.zoomOut() : this.camera.zoomIn(); - this.updateScene(); - this.lastPinchScale = e.originalEvent.scale; - } - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - this.lastGestureRotate = 0; - }; - -})(ChemDoodle, ChemDoodle.extensions, ChemDoodle.math, ChemDoodle.structures, ChemDoodle.structures.d3, ChemDoodle.RESIDUE, Math, document, ChemDoodle.lib.mat4, ChemDoodle.lib.mat3, ChemDoodle.lib.vec3, ChemDoodle.lib.jQuery, window); - -(function(c, iChemLabs, q, document, undefined) { - 'use strict'; - c.MolGrabberCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - let sb = []; - sb.push('
'); - sb.push('
'); - sb.push(''); - sb.push(''); - sb.push(''); - document.writeln(sb.join('')); - let self = this; - q('#' + id + '_submit').click(function() { - self.search(); - }); - q('#' + id + '_query').keypress(function(e) { - if (e.which === 13) { - self.search(); - } - }); - }; - let _ = c.MolGrabberCanvas3D.prototype = new c._Canvas3D(); - _.setSearchTerm = function(term) { - q('#' + this.id + '_query').val(term); - this.search(); - }; - _.search = function() { - let self = this; - iChemLabs.getMoleculeFromDatabase(q('#' + this.id + '_query').val(), { - database : q('#' + this.id + '_select').val(), - dimension : 3 - }, function(mol) { - self.loadMolecule(mol); - }); - }; - -})(ChemDoodle, ChemDoodle.iChemLabs, ChemDoodle.lib.jQuery, document); -(function(c, structures, undefined) { - 'use strict'; - c.MovieCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - this.frames = []; - }; - c.MovieCanvas3D.PLAY_ONCE = 0; - c.MovieCanvas3D.PLAY_LOOP = 1; - c.MovieCanvas3D.PLAY_SPRING = 2; - let _ = c.MovieCanvas3D.prototype = new c._Canvas3D(); - _.timeout = 50; - _.frameNumber = 0; - _.playMode = 2; - _.reverse = false; - _.startAnimation = c._AnimatorCanvas.prototype.startAnimation; - _.stopAnimation = c._AnimatorCanvas.prototype.stopAnimation; - _.isRunning = c._AnimatorCanvas.prototype.isRunning; - _.dblclick = c.RotatorCanvas.prototype.dblclick; - _.nextFrame = function(delta) { - let f = this.frames[this.frameNumber]; - this.molecules = f.mols; - this.shapes = f.shapes; - if (this.playMode === 2 && this.reverse) { - this.frameNumber--; - if (this.frameNumber < 0) { - this.frameNumber = 1; - this.reverse = false; - } - } else { - this.frameNumber++; - if (this.frameNumber >= this.frames.length) { - if (this.playMode === 2) { - this.frameNumber -= 2; - this.reverse = true; - } else { - this.frameNumber = 0; - if (this.playMode === 0) { - this.stopAnimation(); - } - } - } - } - }; - _.center = function() { - // override this function to center the entire movie - let p = new structures.Atom(); - let first = this.frames[0]; - for ( let j = 0, jj = first.mols.length; j < jj; j++) { - p.add3D(first.mols[j].getCenter3D()); - } - p.x /= first.mols.length; - p.y /= first.mols.length; - let center = new structures.Atom(); - center.sub3D(p); - for ( let i = 0, ii = this.frames.length; i < ii; i++) { - let f = this.frames[i]; - for ( let j = 0, jj = f.mols.length; j < jj; j++) { - let mol = f.mols[j]; - for ( let k = 0, kk = mol.atoms.length; k < kk; k++) { - mol.atoms[k].add3D(center); - } - } - } - }; - _.addFrame = function(molecules, shapes) { - this.frames.push({ - mols : molecules, - shapes : shapes - }); - }; - -})(ChemDoodle, ChemDoodle.structures); - -(function(c, m, m4, undefined) { - 'use strict'; - // keep these declaration outside the loop to avoid overhead - let matrix = []; - let xAxis = [ 1, 0, 0 ]; - let yAxis = [ 0, 1, 0 ]; - let zAxis = [ 0, 0, 1 ]; - - c.RotatorCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.RotatorCanvas3D.prototype = new c._Canvas3D(); - _.timeout = 33; - let increment = m.PI / 15; - _.xIncrement = increment; - _.yIncrement = increment; - _.zIncrement = increment; - _.startAnimation = c._AnimatorCanvas.prototype.startAnimation; - _.stopAnimation = c._AnimatorCanvas.prototype.stopAnimation; - _.isRunning = c._AnimatorCanvas.prototype.isRunning; - _.dblclick = c.RotatorCanvas.prototype.dblclick; - _.mousedown = undefined; - _.rightmousedown = undefined; - _.drag = undefined; - _.mousewheel = undefined; - _.nextFrame = function(delta) { - if (this.molecules.length === 0 && this.shapes.length === 0) { - this.stopAnimation(); - return; - } - m4.identity(matrix); - let change = delta / 1000; - m4.rotate(matrix, this.xIncrement * change, xAxis); - m4.rotate(matrix, this.yIncrement * change, yAxis); - m4.rotate(matrix, this.zIncrement * change, zAxis); - m4.multiply(this.rotationMatrix, matrix); - }; - -})(ChemDoodle, Math, ChemDoodle.lib.mat4); -(function(c, undefined) { - 'use strict'; - c.TransformCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.TransformCanvas3D.prototype = new c._Canvas3D(); - -})(ChemDoodle); -(function(c, undefined) { - 'use strict'; - c.ViewerCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.ViewerCanvas3D.prototype = new c._Canvas3D(); - _.mousedown = undefined; - _.rightmousedown = undefined; - _.drag = undefined; - _.mousewheel = undefined; - -})(ChemDoodle); - -(function(c, extensions, math, document, undefined) { - 'use strict'; - function PeriodicCell(element, x, y, dimension) { - this.element = element; - this.x = x; - this.y = y; - this.dimension = dimension; - this.allowMultipleSelections = false; - } - - c.PeriodicTableCanvas = function(id, cellDimension) { - this.padding = 5; - if (id) { - this.create(id, cellDimension * 18 + this.padding * 2, cellDimension * 10 + this.padding * 2); - } - this.cellDimension = cellDimension ? cellDimension : 20; - this.setupTable(); - this.repaint(); - }; - let _ = c.PeriodicTableCanvas.prototype = new c._Canvas(); - _.loadMolecule = undefined; - _.getMolecule = undefined; - _.getHoveredElement = function() { - if (this.hovered) { - return this.hovered.element; - } - return undefined; - }; - _.innerRepaint = function(ctx) { - for ( let i = 0, ii = this.cells.length; i < ii; i++) { - this.drawCell(ctx, this.styles, this.cells[i]); - } - if (this.hovered) { - this.drawCell(ctx, this.styles, this.hovered); - } - if (this.selected) { - this.drawCell(ctx, this.styles, this.selected); - } - }; - _.setupTable = function() { - this.cells = []; - let x = this.padding; - let y = this.padding; - let count = 0; - for ( let i = 0, ii = c.SYMBOLS.length; i < ii; i++) { - if (count === 18) { - count = 0; - y += this.cellDimension; - x = this.padding; - } - let e = c.ELEMENT[c.SYMBOLS[i]]; - if (e.atomicNumber === 2) { - x += 16 * this.cellDimension; - count += 16; - } else if (e.atomicNumber === 5 || e.atomicNumber === 13) { - x += 10 * this.cellDimension; - count += 10; - } - if ((e.atomicNumber < 58 || e.atomicNumber > 71 && e.atomicNumber < 90 || e.atomicNumber > 103) && e.atomicNumber <= 118) { - this.cells.push(new PeriodicCell(e, x, y, this.cellDimension)); - x += this.cellDimension; - count++; - } - } - y += 2 * this.cellDimension; - x = 3 * this.cellDimension + this.padding; - for ( let i = 57; i < 104; i++) { - let e = c.ELEMENT[c.SYMBOLS[i]]; - if (e.atomicNumber === 90) { - y += this.cellDimension; - x = 3 * this.cellDimension + this.padding; - } - if (e.atomicNumber >= 58 && e.atomicNumber <= 71 || e.atomicNumber >= 90 && e.atomicNumber <= 103) { - this.cells.push(new PeriodicCell(e, x, y, this.cellDimension)); - x += this.cellDimension; - } - } - }; - _.drawCell = function(ctx, styles, cell) { - let radgrad = ctx.createRadialGradient(cell.x + cell.dimension / 3, cell.y + cell.dimension / 3, cell.dimension * 1.5, cell.x + cell.dimension / 3, cell.y + cell.dimension / 3, cell.dimension / 10); - radgrad.addColorStop(0, '#000000'); - radgrad.addColorStop(.7, cell.element.jmolColor); - radgrad.addColorStop(1, '#FFFFFF'); - ctx.fillStyle = radgrad; - extensions.contextRoundRect(ctx, cell.x, cell.y, cell.dimension, cell.dimension, cell.dimension / 8); - if (cell === this.hovered || cell === this.selected || cell.selected) { - ctx.lineWidth = 2; - ctx.strokeStyle = '#c10000'; - ctx.stroke(); - ctx.fillStyle = 'white'; - } - ctx.fill(); - ctx.font = extensions.getFontString(styles.text_font_size, styles.text_font_families); - ctx.fillStyle = styles.text_color; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillText(cell.element.symbol, cell.x + cell.dimension / 2, cell.y + cell.dimension / 2); - }; - _.click = function(e) { - if (this.hovered) { - if(this.allowMultipleSelections){ - this.hovered.selected = !this.hovered.selected; - }else{ - this.selected = this.hovered; - } - this.repaint(); - } - }; - _.touchstart = function(e){ - // try to hover an element - this.mousemove(e); - }; - _.mousemove = function(e) { - let x = e.p.x; - let y = e.p.y; - this.hovered = undefined; - for ( let i = 0, ii = this.cells.length; i < ii; i++) { - let c = this.cells[i]; - if (math.isBetween(x, c.x, c.x + c.dimension) && math.isBetween(y, c.y, c.y + c.dimension)) { - this.hovered = c; - break; - } - } - this.repaint(); - }; - _.mouseout = function(e) { - this.hovered = undefined; - this.repaint(); - }; - -})(ChemDoodle, ChemDoodle.extensions, ChemDoodle.math, document); - -(function(io, document, window, undefined) { - 'use strict'; - io.png = {}; - - io.png.string = function(canvas) { - // this will not work for WebGL canvases in some browsers - // to fix that you need to set the "preserveDrawingBuffer" to true when - // creating the WebGL context - // note that this will cause performance issues on some platforms and is - // therefore not done by default - return document.getElementById(canvas.id).toDataURL('image/png'); - }; - - io.png.open = function(canvas) { - window.open(this.string(canvas)); - }; - -})(ChemDoodle.io, document, window); - -(function(io, q, undefined) { - 'use strict'; - io.file = {}; - - // this function will only work with files from the same origin it is being - // called from, unless the receiving server supports XHR2 - io.file.content = function(url, callback) { - q.get(url, '', callback); - }; - -})(ChemDoodle.io, ChemDoodle.lib.jQuery); - -(function(c, iChemLabs, io, structures, q, location, undefined) { - 'use strict'; - iChemLabs.SERVER_URL = 'https://ichemlabs.cloud.chemdoodle.com/icl_cdc_v090000/WebHQ'; - - iChemLabs.inRelay = false; - iChemLabs.asynchronous = true; - - iChemLabs.INFO = { - userAgent : navigator.userAgent, - platform : navigator.platform, - v_cwc : c.getVersion(), - v_jQuery : q.fn.jquery, - // jQuery UI is not installed at this point, as it is linked after ChemDoodle.js, so this variable is set at that time (Sketcher-Package.js) - v_jQuery_ui : 'N/A' - }; - - let JSON_INTERPRETER = new io.JSONInterpreter(); - let queue = new structures.Queue(); - - iChemLabs._contactServer = function(call, content, options, callback, errorback) { - if (this.inRelay) { - queue.enqueue({ - 'call' : call, - 'content' : content, - 'options' : options, - 'callback' : callback, - 'errorback' : errorback - }); - } else { - iChemLabs.inRelay = true; - q.ajax({ - dataType : 'text', - type : 'POST', - data : JSON.stringify({ - 'call' : call, - 'content' : content, - 'options' : options, - 'info' : iChemLabs.INFO - }), - url : this.SERVER_URL, - success : function(data) { - let o = JSON.parse(data); - if (o.message) { - alert(o.message); - } - iChemLabs.inRelay = false; - if (callback && o.content && !o.stop) { - callback(o.content); - } - if (o.stop && errorback) { - errorback(); - } - if(!queue.isEmpty()){ - let next = queue.dequeue(); - iChemLabs._contactServer(next.call, next.content, next.options, next.callback, next.errorback); - } - }, - error : function(xhr, status, error) { - if(call!='checkForUpdates'){ - //alert('Call failed. Please try again. If you continue to see this message, please contact iChemLabs customer support.'); - } - iChemLabs.inRelay = false; - if (errorback) { - errorback(); - } - if(!queue.isEmpty()){ - let next = queue.dequeue(); - iChemLabs._contactServer(next.call, next.content, next.options, next.callback, next.errorback); - } - }, - xhrFields : { - withCredentials : true - }, - async : iChemLabs.asynchronous - }); - } - }; - - // undocumented, this call is for clients that have licensed cloud for their - // own servers - iChemLabs.authenticate = function(credential, options, callback, errorback) { - this._contactServer('authenticate', { - 'credential' : credential - }, options, function(content) { - callback(content); - }, errorback); - }; - - iChemLabs.balanceReaction = function(toBeBalanced, options, callback, errorback) { - let input = {}; - if(typeof(toBeBalanced) === 'string' || toBeBalanced instanceof String){ - input.equation = toBeBalanced; - }else{ - input.reaction = JSON_INTERPRETER.contentTo(toBeBalanced.molecules, toBeBalanced.shapes); - } - this._contactServer('balanceReaction', input, options, function(content) { - callback(content.result, content.message); - }, errorback); - }; - - iChemLabs.calculate = function(mol, options, callback, errorback) { - this._contactServer('calculate', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content); - }, errorback); - }; - - iChemLabs.createLewisDotStructure = function(mol, options, callback, errorback) { - this._contactServer('createLewisDot', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.generateImage = function(mol, options, callback, errorback) { - this._contactServer('generateImage', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content.link); - }, errorback); - }; - - iChemLabs.generateIUPACName = function(mol, options, callback, errorback) { - this._contactServer('generateIUPACName', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content.iupac); - }, errorback); - }; - - iChemLabs.getMoleculeFromContent = function(input, options, callback, errorback) { - this._contactServer('getMoleculeFromContent', { - 'content' : input - }, options, function(content) { - let z = false; - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - if (content.mol.a[i].z !== 0) { - z = true; - break; - } - } - if (z) { - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - content.mol.a[i].x /= 20; - content.mol.a[i].y /= 20; - content.mol.a[i].z /= 20; - } - } - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.getMoleculeFromDatabase = function(query, options, callback, errorback) { - this._contactServer('getMoleculeFromDatabase', { - 'query' : query - }, options, function(content) { - if (options.dimension === 3) { - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - content.mol.a[i].x /= 20; - content.mol.a[i].y /= -20; - content.mol.a[i].z /= 20; - } - } - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.getOptimizedPDBStructure = function(id, options, callback, errorback) { - this._contactServer('getOptimizedPDBStructure', { - 'id' : id - }, options, function(content) { - let mol; - if (content.mol) { - mol = JSON_INTERPRETER.molFrom(content.mol); - } else { - mol = new structures.Molecule(); - } - mol.chains = JSON_INTERPRETER.chainsFrom(content.ribbons); - // adjust chain arrows for new desktop API - for(let i = 0, ii = mol.chains.length; i. -// -// Please contact iChemLabs for -// alternate licensing options. -// - -// google closure fails if undefined is provided to this module... but it is not needed so whatever... -let ChemDoodle = (function() { - 'use strict'; - let c = {}; - - c.iChemLabs = {}; - c.informatics = {}; - c.io = {}; - c.lib = {}; - c.notations = {}; - c.structures = {}; - c.structures.d2 = {}; - c.structures.d3 = {}; - - let VERSION = '9.2.0'; - - c.getVersion = function() { - return VERSION; - }; - - return c; - -})(); -/* - * jQuery JavaScript Library v2.2.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:23Z - */ -(function( window, lib, undefined ) { -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var arr = []; - -var document = window.document; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "2.2.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isPlainObject: function( obj ) { - var key; - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/* - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - - // Inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE9-10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[ 0 ], key ) : emptyGet; -}; -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - register: function( owner, initial ) { - var value = initial || {}; - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable, non-writable property - // configurability must be true to allow the property to be - // deleted with the delete operator - } else { - Object.defineProperty( owner, this.expando, { - value: value, - writable: true, - configurable: true - } ); - } - return owner[ this.expando ]; - }, - cache: function( owner ) { - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( !acceptData( owner ) ) { - return {}; - } - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - owner[ this.expando ] && owner[ this.expando ][ key ]; - }, - access: function( owner, key, value ) { - var stored; - - // In cases where either: - // 1. No key was specified - // 2. A string key was specified, but no value provided - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // 1. The entire cache object - // 2. The data stored at the key - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase( key ) ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // 1. An object of properties - // 2. A key and value - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key === undefined ) { - this.register( owner ); - - } else { - - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <= 35-45+ - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data, camelKey; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // with the key as-is - data = dataUser.get( elem, key ) || - - // Try to find dashed key if it exists (gh-2779) - // This is for 2.2.x only - dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); - - if ( data !== undefined ) { - return data; - } - - camelKey = jQuery.camelCase( key ); - - // Attempt to get data from the cache - // with the key camelized - data = dataUser.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - camelKey = jQuery.camelCase( key ); - this.each( function() { - - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = dataUser.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - dataUser.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf( "-" ) > -1 && data !== undefined ) { - dataUser.set( this, key, value ); - } - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE9 - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE9-11+ - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0-4.3, Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + - "screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "'; - document.writeln(form); - this.emptyMessage = 'Click below to load file'; - this.repaint(); - }; - c.FileCanvas.prototype = new c._Canvas(); - -})(ChemDoodle, document); - -(function(c, undefined) { - 'use strict'; - c.HyperlinkCanvas = function(id, width, height, urlOrFunction, color, size) { - if (id) { - this.create(id, width, height); - } - this.urlOrFunction = urlOrFunction; - this.color = color ? color : 'blue'; - this.size = size ? size : 2; - }; - let _ = c.HyperlinkCanvas.prototype = new c._Canvas(); - _.openInNewWindow = true; - _.hoverImage = undefined; - _.drawChildExtras = function(ctx) { - if (this.e) { - if (this.hoverImage) { - ctx.drawImage(this.hoverImage, 0, 0); - } else { - ctx.strokeStyle = this.color; - ctx.lineWidth = this.size * 2; - ctx.strokeRect(0, 0, this.width, this.height); - } - } - }; - _.setHoverImage = function(url) { - this.hoverImage = new Image(); - this.hoverImage.src = url; - }; - _.click = function(p) { - this.e = undefined; - this.repaint(); - if (this.urlOrFunction instanceof Function) { - this.urlOrFunction(); - } else { - if (this.openInNewWindow) { - window.open(this.urlOrFunction); - } else { - location.href = this.urlOrFunction; - } - } - }; - _.mouseout = function(e) { - this.e = undefined; - this.repaint(); - }; - _.mouseover = function(e) { - this.e = e; - this.repaint(); - }; - -})(ChemDoodle); - -(function(c, iChemLabs, q, document, undefined) { - 'use strict'; - c.MolGrabberCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - let sb = []; - sb.push('
'); - sb.push(this.getInputFields()); - - // Don't use document.writeln here, it breaks the whole page after - // document is closed. - document.getElementById(id); - let canvas = q('#' + id); - canvas.after(sb.join('')); - - let self = this; - q('#' + id + '_submit').click(function() { - self.search(); - }); - q('#' + id + '_query').keypress(function(e) { - if (e.which === 13) { - self.search(); - } - }); - this.emptyMessage = 'Enter search term below'; - this.repaint(); - }; - let _ = c.MolGrabberCanvas.prototype = new c._Canvas(); - _.setSearchTerm = function(term) { - q('#' + this.id + '_query').val(term); - this.search(); - }; - _.getInputFields = function(){ - let sb = []; - sb.push('
'); - sb.push(''); - sb.push(''); - sb.push(''); - return sb.join(''); - }; - _.search = function() { - this.emptyMessage = 'Searching...'; - this.clear(); - let self = this; - iChemLabs.getMoleculeFromDatabase(q('#' + this.id + '_query').val(), { - database : q('#' + this.id + '_select').val() - }, function(mol) { - self.loadMolecule(mol); - }); - }; - -})(ChemDoodle, ChemDoodle.iChemLabs, ChemDoodle.lib.jQuery, document); - -(function(c, m, m4, undefined) { - 'use strict'; - // keep these declaration outside the loop to avoid overhead - let matrix = []; - let xAxis = [ 1, 0, 0 ]; - let yAxis = [ 0, 1, 0 ]; - let zAxis = [ 0, 0, 1 ]; - - c.RotatorCanvas = function(id, width, height, rotate3D) { - if (id) { - this.create(id, width, height); - } - this.rotate3D = rotate3D; - }; - let _ = c.RotatorCanvas.prototype = new c._AnimatorCanvas(); - let increment = m.PI / 15; - _.xIncrement = increment; - _.yIncrement = increment; - _.zIncrement = increment; - _.nextFrame = function(delta) { - if (this.molecules.length === 0 && this.shapes.length === 0) { - this.stopAnimation(); - return; - } - let change = delta / 1000; - if (this.rotate3D) { - m4.identity(matrix); - m4.rotate(matrix, this.xIncrement * change, xAxis); - m4.rotate(matrix, this.yIncrement * change, yAxis); - m4.rotate(matrix, this.zIncrement * change, zAxis); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let m = this.molecules[i]; - for ( let j = 0, jj = m.atoms.length; j < jj; j++) { - let a = m.atoms[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, a.z ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - a.z = p[2]; - } - for ( let j = 0, jj = m.rings.length; j < jj; j++) { - m.rings[j].center = m.rings[j].getCenter(); - } - if (this.styles.atoms_display && this.styles.atoms_circles_2D) { - m.sortAtomsByZ(); - } - if (this.styles.bonds_display && this.styles.bonds_clearOverlaps_2D) { - m.sortBondsByZ(); - } - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - let a = sps[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, 0 ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - } - } - } else { - this.styles.rotateAngle += this.zIncrement * change; - } - }; - _.dblclick = function(e) { - if (this.isRunning()) { - this.stopAnimation(); - } else { - this.startAnimation(); - } - }; - -})(ChemDoodle, Math, ChemDoodle.lib.mat4); - -(function(c, animations, math, undefined) { - 'use strict'; - c.SlideshowCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.SlideshowCanvas.prototype = new c._AnimatorCanvas(); - _.frames = []; - _.curIndex = 0; - _.timeout = 5000; - _.alpha = 0; - _.innerHandle = undefined; - _.phase = 0; - _.drawChildExtras = function(ctx) { - let rgb = math.getRGB(this.styles.backgroundColor, 255); - ctx.fillStyle = 'rgba(' + rgb[0] + ', ' + rgb[1] + ', ' + rgb[2] + ', ' + this.alpha + ')'; - ctx.fillRect(0, 0, this.width, this.height); - }; - _.nextFrame = function(delta) { - if (this.frames.length === 0) { - this.stopAnimation(); - return; - } - this.phase = 0; - let me = this; - let count = 1; - this.innerHandle = setInterval(function() { - me.alpha = count / 15; - me.repaint(); - if (count === 15) { - me.breakInnerHandle(); - } - count++; - }, 33); - }; - _.breakInnerHandle = function() { - if (this.innerHandle) { - clearInterval(this.innerHandle); - this.innerHandle = undefined; - } - if (this.phase === 0) { - this.curIndex++; - if (this.curIndex > this.frames.length - 1) { - this.curIndex = 0; - } - this.alpha = 1; - let f = this.frames[this.curIndex]; - this.loadContent(f.mols, f.shapes); - this.phase = 1; - let me = this; - let count = 1; - this.innerHandle = setInterval(function() { - me.alpha = (15 - count) / 15; - me.repaint(); - if (count === 15) { - me.breakInnerHandle(); - } - count++; - }, 33); - } else if (this.phase === 1) { - this.alpha = 0; - this.repaint(); - } - }; - _.addFrame = function(molecules, shapes) { - if (this.frames.length === 0) { - this.loadContent(molecules, shapes); - } - this.frames.push({ - mols : molecules, - shapes : shapes - }); - }; - -})(ChemDoodle, ChemDoodle.animations, ChemDoodle.math); - -(function(c, monitor, structures, m, m4, undefined) { - 'use strict'; - c.TransformCanvas = function(id, width, height, rotate3D) { - if (id) { - this.create(id, width, height); - } - this.rotate3D = rotate3D; - }; - let _ = c.TransformCanvas.prototype = new c._Canvas(); - _.lastPoint = undefined; - _.rotationMultMod = 1.3; - _.lastPinchScale = 1; - _.lastGestureRotate = 0; - _.mousedown = function(e) { - this.lastPoint = e.p; - }; - _.dblclick = function(e) { - // center structure - this.center(); - this.repaint(); - }; - _.drag = function(e) { - if (!this.lastPoint.multi) { - if (monitor.ALT) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - mol.atoms[j].add(t); - } - mol.check(); - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - sps[j].add(t); - } - } - this.lastPoint = e.p; - this.repaint(); - } else { - if (this.rotate3D === true) { - let diameter = m.max(this.width / 4, this.height / 4); - let difx = e.p.x - this.lastPoint.x; - let dify = e.p.y - this.lastPoint.y; - let yIncrement = difx / diameter * this.rotationMultMod; - let xIncrement = -dify / diameter * this.rotationMultMod; - let matrix = []; - m4.identity(matrix); - m4.rotate(matrix, xIncrement, [ 1, 0, 0 ]); - m4.rotate(matrix, yIncrement, [ 0, 1, 0 ]); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - let a = mol.atoms[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, a.z ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - a.z = p[2]; - } - for ( let i = 0, ii = mol.rings.length; i < ii; i++) { - mol.rings[i].center = mol.rings[i].getCenter(); - } - this.lastPoint = e.p; - if (this.styles.atoms_display && this.styles.atoms_circles_2D) { - mol.sortAtomsByZ(); - } - if (this.styles.bonds_display && this.styles.bonds_clearOverlaps_2D) { - mol.sortBondsByZ(); - } - } - this.repaint(); - } else { - let center = new structures.Point(this.width / 2, this.height / 2); - let before = center.angle(this.lastPoint); - let after = center.angle(e.p); - this.styles.rotateAngle -= (after - before); - this.lastPoint = e.p; - this.repaint(); - } - } - } - }; - _.mousewheel = function(e, delta) { - this.styles.scale += delta / 50; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.repaint(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (this.lastPoint.multi) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let m = this.molecules[i]; - for ( let j = 0, jj = m.atoms.length; j < jj; j++) { - m.atoms[j].add(t); - } - m.check(); - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - sps[j].add(t); - } - } - this.lastPoint = e.p; - this.lastPoint.multi = true; - this.repaint(); - } else { - this.lastPoint = e.p; - this.lastPoint.multi = true; - } - } - }; - _.gesturechange = function(e) { - if (e.originalEvent.scale - this.lastPinchScale !== 0) { - this.styles.scale *= e.originalEvent.scale / this.lastPinchScale; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.lastPinchScale = e.originalEvent.scale; - } - if (this.lastGestureRotate - e.originalEvent.rotation !== 0) { - let rot = (this.lastGestureRotate - e.originalEvent.rotation) / 180 * m.PI; - let center = new structures.Point(this.width / 2, this.height / 2); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - let a = mol.atoms[j]; - let dist = center.distance(a); - let angle = center.angle(a) + rot; - a.x = center.x + dist * m.cos(angle); - a.y = center.y - dist * m.sin(angle); - } - mol.check(); - } - this.lastGestureRotate = e.originalEvent.rotation; - } - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - this.lastGestureRotate = 0; - }; - -})(ChemDoodle, ChemDoodle.monitor, ChemDoodle.structures, Math, ChemDoodle.lib.mat4); - -(function(c, undefined) { - 'use strict'; - c.ViewerCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.ViewerCanvas.prototype = new c._Canvas(); - -})(ChemDoodle); - -(function(c, document, undefined) { - 'use strict'; - c._SpectrumCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c._SpectrumCanvas.prototype = new c._Canvas(); - _.spectrum = undefined; - _.emptyMessage = 'No Spectrum Loaded or Recognized'; - _.loadMolecule = undefined; - _.getMolecule = undefined; - _.innerRepaint = function(ctx) { - if (this.spectrum && this.spectrum.data.length > 0) { - this.spectrum.draw(ctx, this.styles, this.width, this.height); - } else if (this.emptyMessage) { - ctx.fillStyle = '#737683'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.font = '18px Helvetica, Verdana, Arial, Sans-serif'; - ctx.fillText(this.emptyMessage, this.width / 2, this.height / 2); - } - }; - _.loadSpectrum = function(spectrum) { - this.spectrum = spectrum; - this.repaint(); - }; - _.getSpectrum = function() { - return this.spectrum; - }; - _.getSpectrumCoordinates = function(x, y) { - return spectrum.getInternalCoordinates(x, y, this.width, this.height); - }; - -})(ChemDoodle, document); - -(function(c, undefined) { - 'use strict'; - c.ObserverCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.ObserverCanvas.prototype = new c._SpectrumCanvas(); - -})(ChemDoodle); - -(function(c, undefined) { - 'use strict'; - c.OverlayCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.OverlayCanvas.prototype = new c._SpectrumCanvas(); - _.overlaySpectra = []; - _.superRepaint = _.innerRepaint; - _.innerRepaint = function(ctx) { - this.superRepaint(ctx); - if (this.spectrum && this.spectrum.data.length > 0) { - for ( let i = 0, ii = this.overlaySpectra.length; i < ii; i++) { - let s = this.overlaySpectra[i]; - if (s && s.data.length > 0) { - s.minX = this.spectrum.minX; - s.maxX = this.spectrum.maxX; - s.drawPlot(ctx, this.styles, this.width, this.height, this.spectrum.memory.offsetTop, this.spectrum.memory.offsetLeft, this.spectrum.memory.offsetBottom); - } - } - } - }; - _.addSpectrum = function(spectrum) { - if (!this.spectrum) { - this.spectrum = spectrum; - } else { - this.overlaySpectra.push(spectrum); - } - }; - -})(ChemDoodle); - -(function(c, monitor, m, undefined) { - 'use strict'; - c.PerspectiveCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.PerspectiveCanvas.prototype = new c._SpectrumCanvas(); - _.dragRange = undefined; - _.rescaleYAxisOnZoom = true; - _.lastPinchScale = 1; - _.mousedown = function(e) { - this.dragRange = new c.structures.Point(e.p.x, e.p.x); - }; - _.mouseup = function(e) { - if (this.dragRange && this.dragRange.x !== this.dragRange.y) { - if (!this.dragRange.multi) { - let newScale = this.spectrum.zoom(this.dragRange.x, e.p.x, this.width, this.rescaleYAxisOnZoom); - if (this.rescaleYAxisOnZoom) { - this.styles.scale = newScale; - } - } - this.dragRange = undefined; - this.repaint(); - } - }; - _.drag = function(e) { - if (this.dragRange) { - if (this.dragRange.multi) { - this.dragRange = undefined; - } else if (monitor.SHIFT) { - this.spectrum.translate(e.p.x - this.dragRange.x, this.width); - this.dragRange.x = e.p.x; - this.dragRange.y = e.p.x; - } else { - this.dragRange.y = e.p.x; - } - this.repaint(); - } - }; - _.drawChildExtras = function(ctx) { - if (this.dragRange) { - let xs = m.min(this.dragRange.x, this.dragRange.y); - let xe = m.max(this.dragRange.x, this.dragRange.y); - ctx.strokeStyle = 'gray'; - ctx.lineStyle = 1; - ctx.beginPath(); - ctx.moveTo(xs, this.height / 2); - for ( let i = xs; i <= xe; i++) { - if (i % 10 < 5) { - ctx.lineTo(i, m.round(this.height / 2)); - } else { - ctx.moveTo(i, m.round(this.height / 2)); - } - } - ctx.stroke(); - } - }; - _.mousewheel = function(e, delta) { - this.styles.scale -= delta / 10; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.repaint(); - }; - _.dblclick = function(e) { - this.spectrum.setup(); - this.styles.scale = 1; - this.repaint(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (!this.dragRange || !this.dragRange.multi) { - this.dragRange = new c.structures.Point(e.p.x, e.p.x); - this.dragRange.multi = true; - } else { - this.spectrum.translate(e.p.x - this.dragRange.x, this.width); - this.dragRange.x = e.p.x; - this.dragRange.y = e.p.x; - this.repaint(); - } - } - }; - _.gesturechange = function(e) { - this.styles.scale *= e.originalEvent.scale / this.lastPinchScale; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.lastPinchScale = e.originalEvent.scale; - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - }; - -})(ChemDoodle, ChemDoodle.monitor, Math); - -(function(c, extensions, m, undefined) { - 'use strict'; - c.SeekerCanvas = function(id, width, height, seekType) { - if (id) { - this.create(id, width, height); - } - this.seekType = seekType; - }; - let _ = c.SeekerCanvas.prototype = new c._SpectrumCanvas(); - _.superRepaint = _.innerRepaint; - _.innerRepaint = function(ctx) { - this.superRepaint(ctx); - if (this.spectrum && this.spectrum.data.length > 0 && this.p) { - // set up coords - let renderP; - let internalP; - if (this.seekType === c.SeekerCanvas.SEEK_POINTER) { - renderP = this.p; - internalP = this.spectrum.getInternalCoordinates(renderP.x, renderP.y); - } else if (this.seekType === c.SeekerCanvas.SEEK_PLOT || this.seekType === c.SeekerCanvas.SEEK_PEAK) { - internalP = this.seekType === c.SeekerCanvas.SEEK_PLOT ? this.spectrum.getClosestPlotInternalCoordinates(this.p.x) : this.spectrum.getClosestPeakInternalCoordinates(this.p.x); - if (!internalP) { - return; - } - renderP = { - x : this.spectrum.getTransformedX(internalP.x, this.styles, this.width, this.spectrum.memory.offsetLeft), - y : this.spectrum.getTransformedY(internalP.y / 100, this.styles, this.height, this.spectrum.memory.offsetBottom, this.spectrum.memory.offsetTop) - }; - } - // draw point - ctx.fillStyle = 'white'; - ctx.strokeStyle = this.styles.plots_color; - ctx.lineWidth = this.styles.plots_width; - ctx.beginPath(); - ctx.arc(renderP.x, renderP.y, 3, 0, m.PI * 2, false); - ctx.fill(); - ctx.stroke(); - // draw internal coordinates - ctx.font = extensions.getFontString(this.styles.text_font_size, this.styles.text_font_families); - ctx.textAlign = 'left'; - ctx.textBaseline = 'bottom'; - let s = 'x:' + internalP.x.toFixed(3) + ', y:' + internalP.y.toFixed(3); - let x = renderP.x + 3; - let w = ctx.measureText(s).width; - if (x + w > this.width - 2) { - x -= 6 + w; - } - let y = renderP.y; - if (y - this.styles.text_font_size - 2 < 0) { - y += this.styles.text_font_size; - } - ctx.fillRect(x, y - this.styles.text_font_size, w, this.styles.text_font_size); - ctx.fillStyle = 'black'; - ctx.fillText(s, x, y); - } - }; - _.mouseout = function(e) { - this.p = undefined; - this.repaint(); - }; - _.mousemove = function(e) { - this.p = { - x : e.p.x - 2, - y : e.p.y - 3 - }; - this.repaint(); - }; - _.touchstart = function(e) { - this.mousemove(e); - }; - _.touchmove = function(e) { - this.mousemove(e); - }; - _.touchend = function(e) { - this.mouseout(e); - }; - c.SeekerCanvas.SEEK_POINTER = 'pointer'; - c.SeekerCanvas.SEEK_PLOT = 'plot'; - c.SeekerCanvas.SEEK_PEAK = 'peak'; - -})(ChemDoodle, ChemDoodle.extensions, Math); - -(function(c, extensions, math, structures, d3, RESIDUE, m, document, m4, m3, v3, q, window, undefined) { - 'use strict'; - c._Canvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c._Canvas3D.prototype = new c._Canvas(); - let _super = c._Canvas.prototype; - _.rotationMatrix = undefined; - _.contentCenter = undefined; - _.lastPoint = undefined; - _.emptyMessage = 'WebGL is Unavailable!'; - _.lastPinchScale = 1; - _.lastGestureRotate = 0; - _.afterLoadContent = function() { - let bounds = new math.Bounds(); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - bounds.expand(this.molecules[i].getBounds3D()); - } - // build fog parameter - let maxDimension3D = v3.dist([ bounds.maxX, bounds.maxY, bounds.maxZ ], [ bounds.minX, bounds.minY, bounds.minZ ]) / 2 + 1.5; - if(maxDimension3D===Infinity){ - // there is no content - maxDimension3D = 10; - } - - this.maxDimension = m.max(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY); - - let fov = m.min(179.9, m.max(this.styles.projectionPerspectiveVerticalFieldOfView_3D, 0.1)); - let theta = fov / 360 * m.PI; - let tanTheta = m.tan(theta) / 0.8; - let top = maxDimension3D; - let focalLength = top / tanTheta; - let near = focalLength - top; - let far = focalLength + top; - let aspect = this.width / this.height; - - this.camera.fieldOfView = fov; - this.camera.near = near; - this.camera.far = far; - this.camera.aspect = aspect; - m4.translate(m4.identity(this.camera.viewMatrix), [ 0, 0, -focalLength]); - - let lightFocalLength = top / m.tan(theta); - - this.lighting.camera.fieldOfView = fov; - this.lighting.camera.near = lightFocalLength - top; - this.lighting.camera.far = lightFocalLength + top; - this.lighting.updateView(); - - this.setupScene(); - }; - _.renderDepthMap = function() { - if (this.styles.shadow_3D && d3.DepthShader) { - - let cullFaceEnabled = this.gl.isEnabled(this.gl.CULL_FACE); - if(!cullFaceEnabled) { this.gl.enable(this.gl.CULL_FACE); } - - this.depthShader.useShaderProgram(this.gl); - - // current clear color - let cs = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - - this.gl.clearColor(1.0, 1.0, 1.0, 0.0); - - this.lightDepthMapFramebuffer.bind(this.gl, this.shadowTextureSize, this.shadowTextureSize); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // use light projection matrix to draw the molecule - this.depthShader.setProjectionMatrix(this.gl, this.lighting.camera.projectionMatrix); - - this.depthShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.gl.flush(); - - this.depthShader.disableAttribsArray(this.gl); - - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - - // set back the clear color - this.gl.clearColor(cs[0], cs[1], cs[2], cs[3]); - - if(!cullFaceEnabled) { this.gl.disable(this.gl.CULL_FACE); } - } - };// draw anything those not molecules, example compass, shapes, text etc. - _.renderExtras = function() { - - this.phongShader.useShaderProgram(this.gl); - - this.phongShader.enableAttribsArray(this.gl); - - let transparentShapes = []; - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let s = this.shapes[i]; - if(s instanceof d3._Surface && (!s.styles && this.styles.surfaces_alpha!==1 || s.styles && s.styles.surfaces_alpha!==1)){ - transparentShapes.push(s); - }else{ - s.render(this.gl, this.styles); - } - } - - // transparent shapes - if(transparentShapes.length!==0){ - //this.gl.blendFunc(gl.SRC_ALPHA, gl.ONE); - this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA); - this.gl.enable(this.gl.BLEND); - this.gl.depthMask(false); - for ( let i = 0, ii = transparentShapes.length; i < ii; i++) { - let s = transparentShapes[i]; - s.render(this.gl, this.styles); - } - this.gl.depthMask(true); - this.gl.disable(this.gl.BLEND); - this.gl.blendFuncSeparate(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA, this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA); - } - - - this.phongShader.setShadow(this.gl, false); - this.phongShader.setFogMode(this.gl, 0); - this.phongShader.setFlatColor(this.gl, false); - - // compass use its own model view and projection matrix - // so it need to use back the default matrix for other - // rendering process (ex. render arbitrary text). - if (this.styles.compass_display) { - this.phongShader.setLightDirection(this.gl, [0, 0, -1]); - this.compass.render(this.gl, this.styles); - } - - this.phongShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // enable blend and depth mask set to false - this.gl.enable(this.gl.BLEND); - this.gl.depthMask(false); - this.labelShader.useShaderProgram(this.gl); - // use back the default model view matrix - this.labelShader.setMatrixUniforms(this.gl, this.gl.modelViewMatrix); - // use back the default projection matrix - this.labelShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - this.labelShader.setDimension(this.gl, this.gl.canvas.clientWidth, this.gl.canvas.clientHeight); - - // enable vertex for draw text - this.labelShader.enableAttribsArray(this.gl); - - // draw label molecule - if (this.styles.atoms_displayLabels_3D) { - this.label3D.render(this.gl, this.styles, this.getMolecules()); - } - // draw measurement text - if(this.styles.measurement_displayText_3D) { - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let s = this.shapes[i]; - if(s.renderText){ - s.renderText(this.gl, this.styles); - } - } - } - // draw compass X Y Z text - if (this.styles.compass_display && this.styles.compass_displayText_3D) { - this.compass.renderAxis(this.gl); - } - // disable vertex for draw text - this.labelShader.disableAttribsArray(this.gl); - - // disable blend and depth mask set to true - this.gl.disable(this.gl.BLEND); - this.gl.depthMask(true); - this.gl.flush(); - - if (this.drawChildExtras) { - this.drawChildExtras(this.gl); - } - - this.gl.flush(); - }; - // molecule colors rendeing will both use on forward and deferred rendering - _.renderColor = function() { - this.phongShader.useShaderProgram(this.gl); - - this.gl.uniform1i(this.phongShader.shadowDepthSampleUniform, 0); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.lightDepthMapTexture.texture); - - this.phongShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - this.phongShader.setShadow(this.gl, this.styles.shadow_3D); - this.phongShader.setFlatColor(this.gl, this.styles.flat_color_3D); - this.phongShader.setGammaCorrection(this.gl, this.styles.gammaCorrection_3D); - - this.phongShader.setShadowTextureSize(this.gl, this.shadowTextureSize, this.shadowTextureSize); - this.phongShader.setShadowIntensity(this.gl, this.styles.shadow_intensity_3D); - - this.phongShader.setFogMode(this.gl, this.styles.fog_mode_3D); - this.phongShader.setFogColor(this.gl, this.fogging.colorRGB); - this.phongShader.setFogStart(this.gl, this.fogging.fogStart); - this.phongShader.setFogEnd(this.gl, this.fogging.fogEnd); - this.phongShader.setFogDensity(this.gl, this.fogging.density); - - this.phongShader.setLightProjectionMatrix(this.gl, this.lighting.camera.projectionMatrix); - this.phongShader.setLightDiffuseColor(this.gl, this.lighting.diffuseRGB); - this.phongShader.setLightSpecularColor(this.gl, this.lighting.specularRGB); - this.phongShader.setLightDirection(this.gl, this.lighting.direction); - - this.phongShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.phongShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderPosition = function() { - this.positionShader.useShaderProgram(this.gl); - - this.positionShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.positionShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.positionShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderNormal = function() { - this.normalShader.useShaderProgram(this.gl); - this.normalShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.normalShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.normalShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderSSAO = function() { - this.ssaoShader.useShaderProgram(this.gl); - - this.ssaoShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.ssaoShader.setSampleKernel(this.gl, this.ssao.sampleKernel); - - this.ssaoShader.setKernelRadius(this.gl, this.styles.ssao_kernel_radius); - - this.ssaoShader.setPower(this.gl, this.styles.ssao_power); - - this.ssaoShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.uniform1i(this.ssaoShader.positionSampleUniform, 0); - this.gl.uniform1i(this.ssaoShader.normalSampleUniform, 1); - this.gl.uniform1i(this.ssaoShader.noiseSampleUniform, 2); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.positionTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.normalTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE2); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.ssao.noiseTexture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.ssaoShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.ssaoShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // render ssao blur shader - this.ssaoFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - - this.ssaoBlurShader.useShaderProgram(this.gl); - - this.ssaoBlurShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.uniform1i(this.ssaoBlurShader.aoSampleUniform, 0); - this.gl.uniform1i(this.ssaoBlurShader.depthSampleUniform, 1); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.imageTexture.texture); - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.depthTexture.texture); - this.gl.activeTexture(this.gl.TEXTURE0); - - - this.ssaoBlurShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.ssaoBlurShader.disableAttribsArray(this.gl); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.gl.flush(); - }; - _.renderOutline = function() { - this.outlineShader.useShaderProgram(this.gl); - - this.outlineShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.outlineShader.setNormalThreshold(this.gl, this.styles.outline_normal_threshold); - this.outlineShader.setDepthThreshold(this.gl, this.styles.outline_depth_threshold); - this.outlineShader.setThickness(this.gl, this.styles.outline_thickness); - - this.gl.uniform1i(this.outlineShader.normalSampleUniform, 0); - this.gl.uniform1i(this.outlineShader.depthSampleUniform, 1); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.normalTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.depthTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.outlineShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.outlineShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.deferredRender = function() { - // get backdground color - let bgColor = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - // set background to black - this.gl.clearColor(0.0, 0.0, 0.0, 0.0); - - // render color - this.colorFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderColor(); - - // render position - this.positionFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderPosition(); - - // render normals - this.normalFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderNormal(); - - // render ssao - if(this.styles.ssao_3D && d3.SSAOShader) { - // render ssao shading - this.quadFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - this.renderSSAO(); - } else { - this.ssaoFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clearColor(1.0, 1.0, 1.0, 1.0); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - } - - // render outline - this.outlineFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clearColor(1.0, 1.0, 1.0, 1.0); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - if(this.styles.outline_3D) { - this.renderOutline(); - } - - // set back background color - this.gl.clearColor(bgColor[0], bgColor[1], bgColor[2], bgColor[3]); - // composite render - this.quadFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - - this.lightingShader.useShaderProgram(this.gl); - - this.gl.uniform1i(this.lightingShader.positionSampleUniform, 0); - this.gl.uniform1i(this.lightingShader.colorSampleUniform, 1); - this.gl.uniform1i(this.lightingShader.ssaoSampleUniform, 2); - this.gl.uniform1i(this.lightingShader.outlineSampleUniform, 3); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.positionTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.colorTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE2); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.ssaoTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE3); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.outlineTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.lightingShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.lightingShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // final render - this.fxaaFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.bindTexture(this.gl.TEXTURE_2D, this.imageTexture.texture); - - this.fxaaShader.useShaderProgram(this.gl); - - this.fxaaShader.setBuffersize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.fxaaShader.setAntialias(this.gl, this.styles.antialias_3D); - - this.fxaaShader.setEdgeThreshold(this.gl, this.styles.fxaa_edgeThreshold); - this.fxaaShader.setEdgeThresholdMin(this.gl, this.styles.fxaa_edgeThresholdMin); - this.fxaaShader.setSearchSteps(this.gl, this.styles.fxaa_searchSteps); - this.fxaaShader.setSearchThreshold(this.gl, this.styles.fxaa_searchThreshold); - this.fxaaShader.setSubpixCap(this.gl, this.styles.fxaa_subpixCap); - this.fxaaShader.setSubpixTrim(this.gl, this.styles.fxaa_subpixTrim); - - this.fxaaShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.fxaaShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - - // final render - this.finalFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.renderExtras(); - - // set back background color - this.gl.clearColor(bgColor[0], bgColor[1], bgColor[2], bgColor[3]); - - // last render - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.bindTexture(this.gl.TEXTURE_2D, this.fxaaTexture.texture); - - this.quadShader.useShaderProgram(this.gl); - - this.quadShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.quadShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.forwardRender = function() { - // last render - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.renderColor(); - - this.renderExtras(); - }; - _.repaint = function() { - if (this.gl) { - // set up the model view matrix to the specified transformations - this.gl.lightViewMatrix = m4.multiply(this.lighting.camera.viewMatrix, this.rotationMatrix, []); - this.gl.rotationMatrix = this.rotationMatrix; - this.gl.modelViewMatrix = this.gl.lightViewMatrix; - - this.renderDepthMap(); - - this.gl.modelViewMatrix = m4.multiply(this.camera.viewMatrix, this.rotationMatrix, []); - m4.translate(this.gl.modelViewMatrix, this.contentCenter); - - if(this.isSupportDeferred() && (this.styles.ssao_3D || this.styles.outline_3D)) { - this.deferredRender(); - } else { - this.forwardRender(); - } - } - }; - _.pick = function(x, y, includeAtoms, includeBonds) { - if (this.gl) { - // draw with pick framebuffer - let xu = x; - let yu = this.height - y; - if (this.pixelRatio !== 1) { - xu *= this.pixelRatio; - yu *= this.pixelRatio; - } - - // set up the model view matrix to the specified transformations - m4.multiply(this.camera.viewMatrix, this.rotationMatrix, this.gl.modelViewMatrix); - m4.translate(this.gl.modelViewMatrix, this.contentCenter); - this.gl.rotationMatrix = this.rotationMatrix; - - this.pickShader.useShaderProgram(this.gl); - - // current clear color - let cs = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - - this.gl.clearColor(1.0, 1.0, 1.0, 0.0); - this.pickerFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // use default projection matrix to draw the molecule - this.pickShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - // not need the normal for diffuse light, we need flat color - this.pickShader.enableAttribsArray(this.gl); - - let objects = []; - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].renderPickFrame(this.gl, this.styles, objects, includeAtoms, includeBonds); - } - - this.pickShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - let rgba = new Uint8Array(4); - this.gl.readPixels(xu - 2, yu + 2, 1, 1, this.gl.RGBA, this.gl.UNSIGNED_BYTE, rgba); - - let object = undefined; - let idxMolecule = rgba[3]; - if (idxMolecule > 0) { - let idxAtom = rgba[2] | (rgba[1] << 8) | (rgba[0] << 16); - object = objects[idxAtom]; - } - - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - // set back the clear color - this.gl.clearColor(cs[0], cs[1], cs[2], cs[3]); - return object; - } - return undefined; - }; - _.center = function() { - let p = new structures.Atom(); - let n = this.molecules.length; - for ( let k = 0, kk = n; k < kk; k++) { - let m = this.molecules[k]; - p.add3D(m.getCenter3D()); - } - p.x /= n; - p.y /= n; - p.z /= n; - this.contentCenter = [-p.x, -p.y, -p.z]; - }; - _.isSupportDeferred = function() { - return this.gl.textureFloatExt && this.gl.depthTextureExt; - }; - _.create = function(id, width, height) { - _super.create.call(this, id, width, height); - // setup gl object - try { - let canvas = document.getElementById(this.id); - this.gl = canvas.getContext('webgl'); - if (!this.gl) { - this.gl = canvas.getContext('experimental-webgl'); - } - } catch (e) { - } - if (this.gl) { - - if (this.pixelRatio !== 1 && this.gl.canvas.width === this.width) { - this.gl.canvas.style.width = this.width + 'px'; - this.gl.canvas.style.height = this.height + 'px'; - this.gl.canvas.width = this.width * this.pixelRatio; - this.gl.canvas.height = this.height * this.pixelRatio; - } - - this.gl.enable(this.gl.DEPTH_TEST); - this.gl.depthFunc(this.gl.LEQUAL); - this.gl.blendFuncSeparate(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA, this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA); - this.gl.clearDepth(1.0); - - // size of texture for render depth map from light view - this.shadowTextureSize = 1024; - // setup matrices - this.rotationMatrix = m4.identity([]); - this.contentCenter = [0,0,0]; - // set up camera - this.camera = new d3.Camera(); - - this.label3D = new d3.Label(); - - this.lighting = new d3.Light(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - - this.fogging = new d3.Fog(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - - - // uncomment this line to see shadow without depth texture extension - this.gl.depthTextureExt = this.gl.getExtension('WEBGL_depth_texture') || this.gl.getExtension('WEBKIT_WEBGL_depth_texture') || this.gl.getExtension('MOZ_WEBGL_depth_texture'); - this.gl.textureFloatExt = this.gl.getExtension('OES_texture_float') || this.gl.getExtension('WEBKIT_OES_texture_float') || this.gl.getExtension('MOZ_OES_texture_float'); - // this.gl.shaderTextureLodExt = this.gl.getExtension('EXT_shader_texture_lod') || this.gl.getExtension('WEBKIT_EXT_shader_texture_lod') || this.gl.getExtension('MOZ_EXT_shader_texture_lod'); - // this.gl.drawBuffersExt = this.gl.getExtension('WEBGL_draw_buffers'); - - this.ssao = new d3.SSAO(); - - // set picker color attachment - this.pickerColorTexture = new d3.Texture(); - this.pickerColorTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA, this.gl.RGBA); - - // set picker depth attachment - this.pickerDepthRenderbuffer = new d3.Renderbuffer(); - this.pickerDepthRenderbuffer.init(this.gl, this.gl.DEPTH_COMPONENT16); - - // set picker framebuffer - this.pickerFramebuffer = new d3.Framebuffer(); - this.pickerFramebuffer.init(this.gl); - this.pickerFramebuffer.setColorTexture(this.gl, this.pickerColorTexture.texture); - this.pickerFramebuffer.setDepthRenderbuffer(this.gl, this.pickerDepthRenderbuffer.renderbuffer); - - // depth map for shadowing - this.lightDepthMapTexture = new d3.Texture(); - this.lightDepthMapRenderbuffer = new d3.Renderbuffer(); - this.lightDepthMapFramebuffer = new d3.Framebuffer(); - this.lightDepthMapFramebuffer.init(this.gl); - - if(this.gl.depthTextureExt) { - this.lightDepthMapTexture.init(this.gl, this.gl.UNSIGNED_SHORT, this.gl.DEPTH_COMPONENT); - this.lightDepthMapRenderbuffer.init(this.gl, this.gl.RGBA4); - this.lightDepthMapFramebuffer.setColorRenderbuffer(this.gl, this.lightDepthMapRenderbuffer.renderbuffer); - this.lightDepthMapFramebuffer.setDepthTexture(this.gl, this.lightDepthMapTexture.texture); - } else { - this.lightDepthMapTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA, this.gl.RGBA); - this.lightDepthMapRenderbuffer.init(this.gl, this.gl.DEPTH_COMPONENT16); - this.lightDepthMapFramebuffer.setColorTexture(this.gl, this.lightDepthMapTexture.texture); - this.lightDepthMapFramebuffer.setDepthRenderbuffer(this.gl, this.lightDepthMapRenderbuffer.renderbuffer); - } - - // deferred shading textures, renderbuffers, framebuffers and shaders - if(this.isSupportDeferred()) { - // g-buffer - this.depthTexture = new d3.Texture(); - this.depthTexture.init(this.gl, this.gl.UNSIGNED_SHORT, this.gl.DEPTH_COMPONENT); - - this.colorTexture = new d3.Texture(); - this.colorTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA); - - this.positionTexture = new d3.Texture(); - this.positionTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - this.normalTexture = new d3.Texture(); - this.normalTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // postprocesing effect - // ssao - this.ssaoTexture = new d3.Texture(); - this.ssaoTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // outline - this.outlineTexture = new d3.Texture(); - this.outlineTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA); - - this.fxaaTexture = new d3.Texture(); - this.fxaaTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // temp texture - this.imageTexture = new d3.Texture(); - this.imageTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // framebuffer - this.colorFramebuffer = new d3.Framebuffer(); - this.colorFramebuffer.init(this.gl); - this.colorFramebuffer.setColorTexture(this.gl, this.colorTexture.texture); - this.colorFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.normalFramebuffer = new d3.Framebuffer(); - this.normalFramebuffer.init(this.gl); - this.normalFramebuffer.setColorTexture(this.gl, this.normalTexture.texture); - this.normalFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.positionFramebuffer = new d3.Framebuffer(); - this.positionFramebuffer.init(this.gl); - this.positionFramebuffer.setColorTexture(this.gl, this.positionTexture.texture); - this.positionFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.ssaoFramebuffer = new d3.Framebuffer(); - this.ssaoFramebuffer.init(this.gl); - this.ssaoFramebuffer.setColorTexture(this.gl, this.ssaoTexture.texture); - - this.outlineFramebuffer = new d3.Framebuffer(); - this.outlineFramebuffer.init(this.gl); - this.outlineFramebuffer.setColorTexture(this.gl, this.outlineTexture.texture); - - this.fxaaFramebuffer = new d3.Framebuffer(); - this.fxaaFramebuffer.init(this.gl); - this.fxaaFramebuffer.setColorTexture(this.gl, this.fxaaTexture.texture); - - this.quadFramebuffer = new d3.Framebuffer(); - this.quadFramebuffer.init(this.gl); - this.quadFramebuffer.setColorTexture(this.gl, this.imageTexture.texture); - - this.finalFramebuffer = new d3.Framebuffer(); - this.finalFramebuffer.init(this.gl); - this.finalFramebuffer.setColorTexture(this.gl, this.fxaaTexture.texture); - this.finalFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.normalShader = new d3.NormalShader(); - this.normalShader.init(this.gl); - - this.positionShader = new d3.PositionShader(); - this.positionShader.init(this.gl); - - if(d3.SSAOShader){ - this.ssaoShader = new d3.SSAOShader(); - this.ssaoShader.init(this.gl); - - this.ssaoBlurShader = new d3.SSAOBlurShader(); - this.ssaoBlurShader.init(this.gl); - } - - this.outlineShader = new d3.OutlineShader(); - this.outlineShader.init(this.gl); - - this.lightingShader = new d3.LightingShader(); - this.lightingShader.init(this.gl); - - this.fxaaShader = new d3.FXAAShader(); - this.fxaaShader.init(this.gl); - - this.quadShader = new d3.QuadShader(); - this.quadShader.init(this.gl); - } - - // this is the shaders - this.labelShader = new d3.LabelShader(); - this.labelShader.init(this.gl); - - this.pickShader = new d3.PickShader(); - this.pickShader.init(this.gl); - - this.phongShader = new d3.PhongShader(); - this.phongShader.init(this.gl); - - if(d3.DepthShader){ - this.depthShader = new d3.DepthShader(); - this.depthShader.init(this.gl); - } - - this.textTextImage = new d3.TextImage(); - this.textTextImage.init(this.gl); - - this.gl.textImage = new d3.TextImage(); - this.gl.textImage.init(this.gl); - - this.gl.textMesh = new d3.TextMesh(); - this.gl.textMesh.init(this.gl); - - // set up material - this.gl.material = new d3.Material(); - - this.setupScene(); - } else { - this.displayMessage(); - } - }; - _.displayMessage = function() { - let canvas = document.getElementById(this.id); - if (canvas.getContext) { - let ctx = canvas.getContext('2d'); - if (this.styles.backgroundColor) { - ctx.fillStyle = this.styles.backgroundColor; - ctx.fillRect(0, 0, this.width, this.height); - } - if (this.emptyMessage) { - ctx.fillStyle = '#737683'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.font = '18px Helvetica, Verdana, Arial, Sans-serif'; - ctx.fillText(this.emptyMessage, this.width / 2, this.height / 2); - } - } - }; - _.renderText = function(text, position) { - let vertexData = { - position : [], - texCoord : [], - translation : [] - }; - this.textTextImage.pushVertexData(text, position, 0, vertexData); - this.gl.textMesh.storeData(this.gl, vertexData.position, vertexData.texCoord, vertexData.translation); - - this.textTextImage.useTexture(this.gl); - this.gl.textMesh.render(this.gl); - }; - _.setupScene = function() { - if (this.gl) { - // clear the canvas - // set background color for IE's sake, seems like an IE bug where half the repaints don't render a background - let jqCapsule = q('#' + this.id); - let backgroundString = this.styles.backgroundColor?this.styles.backgroundColor:'transparent'; - jqCapsule.css('background-color', backgroundString); - let cs = backgroundString==='transparent'?[0.0,0.0,0.0,0.0]:math.getRGB(backgroundString, 1); - this.gl.clearColor(cs[0], cs[1], cs[2], cs.length==4?cs[3]:1.0); - this.styles.cullBackFace_3D ? this.gl.enable(this.gl.CULL_FACE) : this.gl.disable(this.gl.CULL_FACE); - // here is the sphere buffer to be drawn, make it once, then scale - // and translate to draw atoms - this.gl.sphereBuffer = new d3.Sphere(1, this.styles.atoms_resolution_3D, this.styles.atoms_resolution_3D); - this.gl.starBuffer = new d3.Star(); - this.gl.cylinderBuffer = new d3.Cylinder(1, 1, this.styles.bonds_resolution_3D); - this.gl.cylinderClosedBuffer = new d3.Cylinder(1, 1, this.styles.bonds_resolution_3D, true); - this.gl.boxBuffer = new d3.Box(1, 1, 1); - this.gl.pillBuffer = new d3.Pill(this.styles.bonds_pillDiameter_3D / 2, this.styles.bonds_pillHeight_3D, this.styles.bonds_pillLatitudeResolution_3D, this.styles.bonds_pillLongitudeResolution_3D); - this.gl.lineBuffer = new d3.Line(); - this.gl.lineArrowBuffer = new d3.LineArrow(); - this.gl.arrowBuffer = new d3.Arrow(0.3, this.styles.compass_resolution_3D); - this.gl.quadBuffer = new d3.Quad(); - // texture for rendering text - this.gl.textImage.updateFont(this.gl, this.styles.text_font_size, this.styles.text_font_families, this.styles.text_font_bold, this.styles.text_font_italic, this.styles.text_font_stroke_3D); - // set up lighting - this.lighting.lightScene(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - // set up fogging - this.fogging.fogScene(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - // set up compass - this.compass = new d3.Compass(this.gl, this.styles); - - // set texture and renderbuffer parameter - this.lightDepthMapTexture.setParameter(this.gl, this.shadowTextureSize, this.shadowTextureSize); - this.lightDepthMapRenderbuffer.setParameter(this.gl, this.shadowTextureSize, this.shadowTextureSize); - - this.pickerColorTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.pickerDepthRenderbuffer.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - if(this.isSupportDeferred()) { - this.depthTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.colorTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.imageTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.positionTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.normalTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.ssaoTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.outlineTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.fxaaTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - // set SSAO parameter - this.ssao.initSampleKernel(this.styles.ssao_kernel_samples); - - this.ssao.initNoiseTexture(this.gl); - } - - this.camera.updateProjectionMatrix(this.styles.projectionPerspective_3D); - - for ( let k = 0, kk = this.molecules.length; k < kk; k++) { - let mol = this.molecules[k]; - if (!(mol.labelMesh instanceof d3.TextMesh)) { - mol.labelMesh = new d3.TextMesh(); - mol.labelMesh.init(this.gl); - } - if (mol.chains) { - mol.ribbons = []; - mol.cartoons = []; - mol.tubes = []; - mol.pipePlanks = []; - // set up ribbon diagram if available and not already setup - for ( let j = 0, jj = mol.chains.length; j < jj; j++) { - let rs = mol.chains[j]; - for ( let i = 0, ii = rs.length - 1; i < ii; i++) { - rs[i].Test =i; - } - let isNucleotide = rs.length > 3 && RESIDUE[rs[3].name] && RESIDUE[rs[3].name].aminoColor === '#BEA06E'; - if (rs.length > 0 && !rs[0].lineSegments) { - for ( let i = 0, ii = rs.length - 1; i < ii; i++) { - rs[i].setup(rs[i + 1].cp1, isNucleotide ? 1 : this.styles.proteins_horizontalResolution); - } - if (!isNucleotide) { - for ( let i = 1, ii = rs.length - 1; i < ii; i++) { - // reverse guide points if carbonyl - // orientation flips - if (extensions.vec3AngleFrom(rs[i - 1].D, rs[i].D) > m.PI / 2) { - rs[i].guidePointsSmall.reverse(); - rs[i].guidePointsLarge.reverse(); - v3.scale(rs[i].D, -1); - } - } - } - for ( let i = 2, ii = rs.length - 3; i < ii; i++) { - // compute line segments - rs[i].computeLineSegments(rs[i - 2], rs[i - 1], rs[i + 1], !isNucleotide, isNucleotide ? this.styles.nucleics_verticalResolution : this.styles.proteins_verticalResolution); - } - // remove unneeded dummies - rs.pop(); - rs.pop(); - rs.pop(); - rs.shift(); - rs.shift(); - } - // create the hsl color for the chain - let rgb = math.hsl2rgb(jj === 1 ? .5 : j / jj, 1, .5); - let chainColor = 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')'; - rs.chainColor = chainColor; - if (isNucleotide) { - let t = new d3.Tube(rs, this.styles.nucleics_tubeThickness, this.styles.nucleics_tubeResolution_3D); - t.chainColor = chainColor; - mol.tubes.push(t); - } else { - let t = new d3.PipePlank(rs, this.styles); - mol.pipePlanks.push(t); - let res = rs.shift(); - let r = { - front : new d3.Ribbon(rs, this.styles.proteins_ribbonThickness, false), - back : new d3.Ribbon(rs, -this.styles.proteins_ribbonThickness, false) - }; - r.front.chainColor = chainColor; - r.back.chainColor = chainColor; - mol.ribbons.push(r); - let d = { - front : new d3.Ribbon(rs, this.styles.proteins_ribbonThickness, true), - back : new d3.Ribbon(rs, -this.styles.proteins_ribbonThickness, true) - }; - d.front.chainColor = chainColor; - d.back.chainColor = chainColor; - mol.cartoons.push(d); - rs.unshift(res); - } - } - } - } - this.label3D.updateVerticesBuffer(this.gl, this.getMolecules(), this.styles); - // the molecules in frame of MovieCanvas3D must be handled - if (this instanceof c.MovieCanvas3D && this.frames) { - for ( let i = 0, ii = this.frames.length; i < ii; i++) { - let f = this.frames[i]; - for ( let j = 0, jj = f.mols.length; j < jj; j++) { - let mol = f.mols[j]; - if (!(mol.labelMesh instanceof structures.d3.TextMesh)) { - mol.labelMesh = new structures.d3.TextMesh(); - mol.labelMesh.init(this.gl); - } - } - this.label3D.updateVerticesBuffer(this.gl, f.mols, this.styles); - } - } - } - }; - _.updateScene = function() { - this.camera.updateProjectionMatrix(this.styles.projectionPerspective_3D); - - this.lighting.lightScene(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - - this.fogging.fogScene(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - - this.repaint(); - }; - _.mousedown = function(e) { - this.lastPoint = e.p; - }; - _.mouseup = function(e) { - this.lastPoint = undefined; - }; - _.rightmousedown = function(e) { - this.lastPoint = e.p; - }; - _.drag = function(e) { - if(this.lastPoint){ - if (c.monitor.ALT) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - let theta = this.camera.fieldOfView / 360 * m.PI; - let tanTheta = m.tan(theta); - let topScreen = this.height / 2 / this.camera.zoom; - let nearScreen = topScreen / tanTheta; - let nearRatio = this.camera.focalLength() / nearScreen; - m4.translate(this.camera.viewMatrix, [ t.x * nearRatio, -t.y * nearRatio, 0 ]); - } else { - let difx = e.p.x - this.lastPoint.x; - let dify = e.p.y - this.lastPoint.y; - let rotation = m4.rotate(m4.identity([]), difx * m.PI / 180.0, [ 0, 1, 0 ]); - m4.rotate(rotation, dify * m.PI / 180.0, [ 1, 0, 0 ]); - this.rotationMatrix = m4.multiply(rotation, this.rotationMatrix); - } - this.lastPoint = e.p; - this.repaint(); - } - }; - _.mousewheel = function(e, delta) { - delta > 0 ? this.camera.zoomIn() : this.camera.zoomOut(); - this.updateScene(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (this.lastPoint && this.lastPoint.multi) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - let theta = this.camera.fieldOfView / 360 * m.PI; - let tanTheta = m.tan(theta); - let topScreen = this.height / 2 / this.camera.zoom; - let nearScreen = topScreen / tanTheta; - let nearRatio = this.camera.focalLength() / nearScreen; - m4.translate(this.camera.viewMatrix, [ t.x * nearRatio, -t.y * nearRatio, 0 ]); - this.lastPoint = e.p; - this.repaint(); - } else { - this.lastPoint = e.p; - this.lastPoint.multi = true; - } - } - }; - _.gesturechange = function(e) { - if (e.originalEvent.scale - this.lastPinchScale !== 0) { - //let minFov = 0.1; - //let maxFov = 179.9; - let dz = -(e.originalEvent.scale / this.lastPinchScale - 1) * 30; - if(isNaN(dz)){ - // this seems to happen on Android when using multiple fingers - return; - } - dz > 0 ? this.camera.zoomOut() : this.camera.zoomIn(); - this.updateScene(); - this.lastPinchScale = e.originalEvent.scale; - } - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - this.lastGestureRotate = 0; - }; - -})(ChemDoodle, ChemDoodle.extensions, ChemDoodle.math, ChemDoodle.structures, ChemDoodle.structures.d3, ChemDoodle.RESIDUE, Math, document, ChemDoodle.lib.mat4, ChemDoodle.lib.mat3, ChemDoodle.lib.vec3, ChemDoodle.lib.jQuery, window); - -(function(c, iChemLabs, q, document, undefined) { - 'use strict'; - c.MolGrabberCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - let sb = []; - sb.push('
'); - sb.push('
'); - sb.push(''); - sb.push(''); - sb.push(''); - document.writeln(sb.join('')); - let self = this; - q('#' + id + '_submit').click(function() { - self.search(); - }); - q('#' + id + '_query').keypress(function(e) { - if (e.which === 13) { - self.search(); - } - }); - }; - let _ = c.MolGrabberCanvas3D.prototype = new c._Canvas3D(); - _.setSearchTerm = function(term) { - q('#' + this.id + '_query').val(term); - this.search(); - }; - _.search = function() { - let self = this; - iChemLabs.getMoleculeFromDatabase(q('#' + this.id + '_query').val(), { - database : q('#' + this.id + '_select').val(), - dimension : 3 - }, function(mol) { - self.loadMolecule(mol); - }); - }; - -})(ChemDoodle, ChemDoodle.iChemLabs, ChemDoodle.lib.jQuery, document); -(function(c, structures, undefined) { - 'use strict'; - c.MovieCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - this.frames = []; - }; - c.MovieCanvas3D.PLAY_ONCE = 0; - c.MovieCanvas3D.PLAY_LOOP = 1; - c.MovieCanvas3D.PLAY_SPRING = 2; - let _ = c.MovieCanvas3D.prototype = new c._Canvas3D(); - _.timeout = 50; - _.frameNumber = 0; - _.playMode = 2; - _.reverse = false; - _.startAnimation = c._AnimatorCanvas.prototype.startAnimation; - _.stopAnimation = c._AnimatorCanvas.prototype.stopAnimation; - _.isRunning = c._AnimatorCanvas.prototype.isRunning; - _.dblclick = c.RotatorCanvas.prototype.dblclick; - _.nextFrame = function(delta) { - let f = this.frames[this.frameNumber]; - this.molecules = f.mols; - this.shapes = f.shapes; - if (this.playMode === 2 && this.reverse) { - this.frameNumber--; - if (this.frameNumber < 0) { - this.frameNumber = 1; - this.reverse = false; - } - } else { - this.frameNumber++; - if (this.frameNumber >= this.frames.length) { - if (this.playMode === 2) { - this.frameNumber -= 2; - this.reverse = true; - } else { - this.frameNumber = 0; - if (this.playMode === 0) { - this.stopAnimation(); - } - } - } - } - }; - _.center = function() { - // override this function to center the entire movie - let p = new structures.Atom(); - let first = this.frames[0]; - for ( let j = 0, jj = first.mols.length; j < jj; j++) { - p.add3D(first.mols[j].getCenter3D()); - } - p.x /= first.mols.length; - p.y /= first.mols.length; - let center = new structures.Atom(); - center.sub3D(p); - for ( let i = 0, ii = this.frames.length; i < ii; i++) { - let f = this.frames[i]; - for ( let j = 0, jj = f.mols.length; j < jj; j++) { - let mol = f.mols[j]; - for ( let k = 0, kk = mol.atoms.length; k < kk; k++) { - mol.atoms[k].add3D(center); - } - } - } - }; - _.addFrame = function(molecules, shapes) { - this.frames.push({ - mols : molecules, - shapes : shapes - }); - }; - -})(ChemDoodle, ChemDoodle.structures); - -(function(c, m, m4, undefined) { - 'use strict'; - // keep these declaration outside the loop to avoid overhead - let matrix = []; - let xAxis = [ 1, 0, 0 ]; - let yAxis = [ 0, 1, 0 ]; - let zAxis = [ 0, 0, 1 ]; - - c.RotatorCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.RotatorCanvas3D.prototype = new c._Canvas3D(); - _.timeout = 33; - let increment = m.PI / 15; - _.xIncrement = increment; - _.yIncrement = increment; - _.zIncrement = increment; - _.startAnimation = c._AnimatorCanvas.prototype.startAnimation; - _.stopAnimation = c._AnimatorCanvas.prototype.stopAnimation; - _.isRunning = c._AnimatorCanvas.prototype.isRunning; - _.dblclick = c.RotatorCanvas.prototype.dblclick; - _.mousedown = undefined; - _.rightmousedown = undefined; - _.drag = undefined; - _.mousewheel = undefined; - _.nextFrame = function(delta) { - if (this.molecules.length === 0 && this.shapes.length === 0) { - this.stopAnimation(); - return; - } - m4.identity(matrix); - let change = delta / 1000; - m4.rotate(matrix, this.xIncrement * change, xAxis); - m4.rotate(matrix, this.yIncrement * change, yAxis); - m4.rotate(matrix, this.zIncrement * change, zAxis); - m4.multiply(this.rotationMatrix, matrix); - }; - -})(ChemDoodle, Math, ChemDoodle.lib.mat4); -(function(c, undefined) { - 'use strict'; - c.TransformCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.TransformCanvas3D.prototype = new c._Canvas3D(); - -})(ChemDoodle); -(function(c, undefined) { - 'use strict'; - c.ViewerCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.ViewerCanvas3D.prototype = new c._Canvas3D(); - _.mousedown = undefined; - _.rightmousedown = undefined; - _.drag = undefined; - _.mousewheel = undefined; - -})(ChemDoodle); - -(function(c, extensions, math, document, undefined) { - 'use strict'; - function PeriodicCell(element, x, y, dimension) { - this.element = element; - this.x = x; - this.y = y; - this.dimension = dimension; - this.allowMultipleSelections = false; - } - - c.PeriodicTableCanvas = function(id, cellDimension) { - this.padding = 5; - if (id) { - this.create(id, cellDimension * 18 + this.padding * 2, cellDimension * 10 + this.padding * 2); - } - this.cellDimension = cellDimension ? cellDimension : 20; - this.setupTable(); - this.repaint(); - }; - let _ = c.PeriodicTableCanvas.prototype = new c._Canvas(); - _.loadMolecule = undefined; - _.getMolecule = undefined; - _.getHoveredElement = function() { - if (this.hovered) { - return this.hovered.element; - } - return undefined; - }; - _.innerRepaint = function(ctx) { - for ( let i = 0, ii = this.cells.length; i < ii; i++) { - this.drawCell(ctx, this.styles, this.cells[i]); - } - if (this.hovered) { - this.drawCell(ctx, this.styles, this.hovered); - } - if (this.selected) { - this.drawCell(ctx, this.styles, this.selected); - } - }; - _.setupTable = function() { - this.cells = []; - let x = this.padding; - let y = this.padding; - let count = 0; - for ( let i = 0, ii = c.SYMBOLS.length; i < ii; i++) { - if (count === 18) { - count = 0; - y += this.cellDimension; - x = this.padding; - } - let e = c.ELEMENT[c.SYMBOLS[i]]; - if (e.atomicNumber === 2) { - x += 16 * this.cellDimension; - count += 16; - } else if (e.atomicNumber === 5 || e.atomicNumber === 13) { - x += 10 * this.cellDimension; - count += 10; - } - if ((e.atomicNumber < 58 || e.atomicNumber > 71 && e.atomicNumber < 90 || e.atomicNumber > 103) && e.atomicNumber <= 118) { - this.cells.push(new PeriodicCell(e, x, y, this.cellDimension)); - x += this.cellDimension; - count++; - } - } - y += 2 * this.cellDimension; - x = 3 * this.cellDimension + this.padding; - for ( let i = 57; i < 104; i++) { - let e = c.ELEMENT[c.SYMBOLS[i]]; - if (e.atomicNumber === 90) { - y += this.cellDimension; - x = 3 * this.cellDimension + this.padding; - } - if (e.atomicNumber >= 58 && e.atomicNumber <= 71 || e.atomicNumber >= 90 && e.atomicNumber <= 103) { - this.cells.push(new PeriodicCell(e, x, y, this.cellDimension)); - x += this.cellDimension; - } - } - }; - _.drawCell = function(ctx, styles, cell) { - let radgrad = ctx.createRadialGradient(cell.x + cell.dimension / 3, cell.y + cell.dimension / 3, cell.dimension * 1.5, cell.x + cell.dimension / 3, cell.y + cell.dimension / 3, cell.dimension / 10); - radgrad.addColorStop(0, '#000000'); - radgrad.addColorStop(.7, cell.element.jmolColor); - radgrad.addColorStop(1, '#FFFFFF'); - ctx.fillStyle = radgrad; - extensions.contextRoundRect(ctx, cell.x, cell.y, cell.dimension, cell.dimension, cell.dimension / 8); - if (cell === this.hovered || cell === this.selected || cell.selected) { - ctx.lineWidth = 2; - ctx.strokeStyle = '#c10000'; - ctx.stroke(); - ctx.fillStyle = 'white'; - } - ctx.fill(); - ctx.font = extensions.getFontString(styles.text_font_size, styles.text_font_families); - ctx.fillStyle = styles.text_color; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillText(cell.element.symbol, cell.x + cell.dimension / 2, cell.y + cell.dimension / 2); - }; - _.click = function(e) { - if (this.hovered) { - if(this.allowMultipleSelections){ - this.hovered.selected = !this.hovered.selected; - }else{ - this.selected = this.hovered; - } - this.repaint(); - } - }; - _.touchstart = function(e){ - // try to hover an element - this.mousemove(e); - }; - _.mousemove = function(e) { - let x = e.p.x; - let y = e.p.y; - this.hovered = undefined; - for ( let i = 0, ii = this.cells.length; i < ii; i++) { - let c = this.cells[i]; - if (math.isBetween(x, c.x, c.x + c.dimension) && math.isBetween(y, c.y, c.y + c.dimension)) { - this.hovered = c; - break; - } - } - this.repaint(); - }; - _.mouseout = function(e) { - this.hovered = undefined; - this.repaint(); - }; - -})(ChemDoodle, ChemDoodle.extensions, ChemDoodle.math, document); - -(function(io, document, window, undefined) { - 'use strict'; - io.png = {}; - - io.png.string = function(canvas) { - // this will not work for WebGL canvases in some browsers - // to fix that you need to set the "preserveDrawingBuffer" to true when - // creating the WebGL context - // note that this will cause performance issues on some platforms and is - // therefore not done by default - return document.getElementById(canvas.id).toDataURL('image/png'); - }; - - io.png.open = function(canvas) { - window.open(this.string(canvas)); - }; - -})(ChemDoodle.io, document, window); - -(function(io, q, undefined) { - 'use strict'; - io.file = {}; - - // this function will only work with files from the same origin it is being - // called from, unless the receiving server supports XHR2 - io.file.content = function(url, callback) { - q.get(url, '', callback); - }; - -})(ChemDoodle.io, ChemDoodle.lib.jQuery); - -(function(c, iChemLabs, io, structures, q, location, undefined) { - 'use strict'; - iChemLabs.SERVER_URL = 'https://ichemlabs.cloud.chemdoodle.com/icl_cdc_v090000/WebHQ'; - - iChemLabs.inRelay = false; - iChemLabs.asynchronous = true; - - iChemLabs.INFO = { - userAgent : navigator.userAgent, - platform : navigator.platform, - v_cwc : c.getVersion(), - v_jQuery : q.fn.jquery, - // jQuery UI is not installed at this point, as it is linked after ChemDoodle.js, so this variable is set at that time (Sketcher-Package.js) - v_jQuery_ui : 'N/A' - }; - - let JSON_INTERPRETER = new io.JSONInterpreter(); - let queue = new structures.Queue(); - - iChemLabs._contactServer = function(call, content, options, callback, errorback) { - if (this.inRelay) { - queue.enqueue({ - 'call' : call, - 'content' : content, - 'options' : options, - 'callback' : callback, - 'errorback' : errorback - }); - } else { - iChemLabs.inRelay = true; - q.ajax({ - dataType : 'text', - type : 'POST', - data : JSON.stringify({ - 'call' : call, - 'content' : content, - 'options' : options, - 'info' : iChemLabs.INFO - }), - url : this.SERVER_URL, - success : function(data) { - let o = JSON.parse(data); - if (o.message) { - alert(o.message); - } - iChemLabs.inRelay = false; - if (callback && o.content && !o.stop) { - callback(o.content); - } - if (o.stop && errorback) { - errorback(); - } - if(!queue.isEmpty()){ - let next = queue.dequeue(); - iChemLabs._contactServer(next.call, next.content, next.options, next.callback, next.errorback); - } - }, - error : function(xhr, status, error) { - if(call!='checkForUpdates'){ - //alert('Call failed. Please try again. If you continue to see this message, please contact iChemLabs customer support.'); - } - iChemLabs.inRelay = false; - if (errorback) { - errorback(); - } - if(!queue.isEmpty()){ - let next = queue.dequeue(); - iChemLabs._contactServer(next.call, next.content, next.options, next.callback, next.errorback); - } - }, - xhrFields : { - withCredentials : true - }, - async : iChemLabs.asynchronous - }); - } - }; - - // undocumented, this call is for clients that have licensed cloud for their - // own servers - iChemLabs.authenticate = function(credential, options, callback, errorback) { - this._contactServer('authenticate', { - 'credential' : credential - }, options, function(content) { - callback(content); - }, errorback); - }; - - iChemLabs.balanceReaction = function(toBeBalanced, options, callback, errorback) { - let input = {}; - if(typeof(toBeBalanced) === 'string' || toBeBalanced instanceof String){ - input.equation = toBeBalanced; - }else{ - input.reaction = JSON_INTERPRETER.contentTo(toBeBalanced.molecules, toBeBalanced.shapes); - } - this._contactServer('balanceReaction', input, options, function(content) { - callback(content.result, content.message); - }, errorback); - }; - - iChemLabs.calculate = function(mol, options, callback, errorback) { - this._contactServer('calculate', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content); - }, errorback); - }; - - iChemLabs.createLewisDotStructure = function(mol, options, callback, errorback) { - this._contactServer('createLewisDot', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.generateImage = function(mol, options, callback, errorback) { - this._contactServer('generateImage', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content.link); - }, errorback); - }; - - iChemLabs.generateIUPACName = function(mol, options, callback, errorback) { - this._contactServer('generateIUPACName', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content.iupac); - }, errorback); - }; - - iChemLabs.getMoleculeFromContent = function(input, options, callback, errorback) { - this._contactServer('getMoleculeFromContent', { - 'content' : input - }, options, function(content) { - let z = false; - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - if (content.mol.a[i].z !== 0) { - z = true; - break; - } - } - if (z) { - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - content.mol.a[i].x /= 20; - content.mol.a[i].y /= 20; - content.mol.a[i].z /= 20; - } - } - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.getMoleculeFromDatabase = function(query, options, callback, errorback) { - this._contactServer('getMoleculeFromDatabase', { - 'query' : query - }, options, function(content) { - if (options.dimension === 3) { - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - content.mol.a[i].x /= 20; - content.mol.a[i].y /= -20; - content.mol.a[i].z /= 20; - } - } - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.getOptimizedPDBStructure = function(id, options, callback, errorback) { - this._contactServer('getOptimizedPDBStructure', { - 'id' : id - }, options, function(content) { - let mol; - if (content.mol) { - mol = JSON_INTERPRETER.molFrom(content.mol); - } else { - mol = new structures.Molecule(); - } - mol.chains = JSON_INTERPRETER.chainsFrom(content.ribbons); - // adjust chain arrows for new desktop API - for(let i = 0, ii = mol.chains.length; i. -// -// Please contact iChemLabs for -// alternate licensing options. -// - -// google closure fails if undefined is provided to this module... but it is not needed so whatever... -let ChemDoodle = (function() { - 'use strict'; - let c = {}; - - c.iChemLabs = {}; - c.informatics = {}; - c.io = {}; - c.lib = {}; - c.notations = {}; - c.structures = {}; - c.structures.d2 = {}; - c.structures.d3 = {}; - - let VERSION = '9.2.0'; - - c.getVersion = function() { - return VERSION; - }; - - return c; - -})(); -/* - * jQuery JavaScript Library v2.2.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:23Z - */ -(function( window, lib, undefined ) { -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var arr = []; - -var document = window.document; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "2.2.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isPlainObject: function( obj ) { - var key; - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/* - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - - // Inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE9-10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[ 0 ], key ) : emptyGet; -}; -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - register: function( owner, initial ) { - var value = initial || {}; - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable, non-writable property - // configurability must be true to allow the property to be - // deleted with the delete operator - } else { - Object.defineProperty( owner, this.expando, { - value: value, - writable: true, - configurable: true - } ); - } - return owner[ this.expando ]; - }, - cache: function( owner ) { - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( !acceptData( owner ) ) { - return {}; - } - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - owner[ this.expando ] && owner[ this.expando ][ key ]; - }, - access: function( owner, key, value ) { - var stored; - - // In cases where either: - // 1. No key was specified - // 2. A string key was specified, but no value provided - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // 1. The entire cache object - // 2. The data stored at the key - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase( key ) ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // 1. An object of properties - // 2. A key and value - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key === undefined ) { - this.register( owner ); - - } else { - - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <= 35-45+ - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data, camelKey; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // with the key as-is - data = dataUser.get( elem, key ) || - - // Try to find dashed key if it exists (gh-2779) - // This is for 2.2.x only - dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); - - if ( data !== undefined ) { - return data; - } - - camelKey = jQuery.camelCase( key ); - - // Attempt to get data from the cache - // with the key camelized - data = dataUser.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - camelKey = jQuery.camelCase( key ); - this.each( function() { - - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = dataUser.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - dataUser.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf( "-" ) > -1 && data !== undefined ) { - dataUser.set( this, key, value ); - } - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE9 - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE9-11+ - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0-4.3, Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + - "screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "'; - document.writeln(form); - this.emptyMessage = 'Click below to load file'; - this.repaint(); - }; - c.FileCanvas.prototype = new c._Canvas(); - -})(ChemDoodle, document); - -(function(c, undefined) { - 'use strict'; - c.HyperlinkCanvas = function(id, width, height, urlOrFunction, color, size) { - if (id) { - this.create(id, width, height); - } - this.urlOrFunction = urlOrFunction; - this.color = color ? color : 'blue'; - this.size = size ? size : 2; - }; - let _ = c.HyperlinkCanvas.prototype = new c._Canvas(); - _.openInNewWindow = true; - _.hoverImage = undefined; - _.drawChildExtras = function(ctx) { - if (this.e) { - if (this.hoverImage) { - ctx.drawImage(this.hoverImage, 0, 0); - } else { - ctx.strokeStyle = this.color; - ctx.lineWidth = this.size * 2; - ctx.strokeRect(0, 0, this.width, this.height); - } - } - }; - _.setHoverImage = function(url) { - this.hoverImage = new Image(); - this.hoverImage.src = url; - }; - _.click = function(p) { - this.e = undefined; - this.repaint(); - if (this.urlOrFunction instanceof Function) { - this.urlOrFunction(); - } else { - if (this.openInNewWindow) { - window.open(this.urlOrFunction); - } else { - location.href = this.urlOrFunction; - } - } - }; - _.mouseout = function(e) { - this.e = undefined; - this.repaint(); - }; - _.mouseover = function(e) { - this.e = e; - this.repaint(); - }; - -})(ChemDoodle); - -(function(c, iChemLabs, q, document, undefined) { - 'use strict'; - c.MolGrabberCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - let sb = []; - sb.push('
'); - sb.push(this.getInputFields()); - - // Don't use document.writeln here, it breaks the whole page after - // document is closed. - document.getElementById(id); - let canvas = q('#' + id); - canvas.after(sb.join('')); - - let self = this; - q('#' + id + '_submit').click(function() { - self.search(); - }); - q('#' + id + '_query').keypress(function(e) { - if (e.which === 13) { - self.search(); - } - }); - this.emptyMessage = 'Enter search term below'; - this.repaint(); - }; - let _ = c.MolGrabberCanvas.prototype = new c._Canvas(); - _.setSearchTerm = function(term) { - q('#' + this.id + '_query').val(term); - this.search(); - }; - _.getInputFields = function(){ - let sb = []; - sb.push('
'); - sb.push(''); - sb.push(''); - sb.push(''); - return sb.join(''); - }; - _.search = function() { - this.emptyMessage = 'Searching...'; - this.clear(); - let self = this; - iChemLabs.getMoleculeFromDatabase(q('#' + this.id + '_query').val(), { - database : q('#' + this.id + '_select').val() - }, function(mol) { - self.loadMolecule(mol); - }); - }; - -})(ChemDoodle, ChemDoodle.iChemLabs, ChemDoodle.lib.jQuery, document); - -(function(c, m, m4, undefined) { - 'use strict'; - // keep these declaration outside the loop to avoid overhead - let matrix = []; - let xAxis = [ 1, 0, 0 ]; - let yAxis = [ 0, 1, 0 ]; - let zAxis = [ 0, 0, 1 ]; - - c.RotatorCanvas = function(id, width, height, rotate3D) { - if (id) { - this.create(id, width, height); - } - this.rotate3D = rotate3D; - }; - let _ = c.RotatorCanvas.prototype = new c._AnimatorCanvas(); - let increment = m.PI / 15; - _.xIncrement = increment; - _.yIncrement = increment; - _.zIncrement = increment; - _.nextFrame = function(delta) { - if (this.molecules.length === 0 && this.shapes.length === 0) { - this.stopAnimation(); - return; - } - let change = delta / 1000; - if (this.rotate3D) { - m4.identity(matrix); - m4.rotate(matrix, this.xIncrement * change, xAxis); - m4.rotate(matrix, this.yIncrement * change, yAxis); - m4.rotate(matrix, this.zIncrement * change, zAxis); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let m = this.molecules[i]; - for ( let j = 0, jj = m.atoms.length; j < jj; j++) { - let a = m.atoms[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, a.z ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - a.z = p[2]; - } - for ( let j = 0, jj = m.rings.length; j < jj; j++) { - m.rings[j].center = m.rings[j].getCenter(); - } - if (this.styles.atoms_display && this.styles.atoms_circles_2D) { - m.sortAtomsByZ(); - } - if (this.styles.bonds_display && this.styles.bonds_clearOverlaps_2D) { - m.sortBondsByZ(); - } - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - let a = sps[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, 0 ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - } - } - } else { - this.styles.rotateAngle += this.zIncrement * change; - } - }; - _.dblclick = function(e) { - if (this.isRunning()) { - this.stopAnimation(); - } else { - this.startAnimation(); - } - }; - -})(ChemDoodle, Math, ChemDoodle.lib.mat4); - -(function(c, animations, math, undefined) { - 'use strict'; - c.SlideshowCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.SlideshowCanvas.prototype = new c._AnimatorCanvas(); - _.frames = []; - _.curIndex = 0; - _.timeout = 5000; - _.alpha = 0; - _.innerHandle = undefined; - _.phase = 0; - _.drawChildExtras = function(ctx) { - let rgb = math.getRGB(this.styles.backgroundColor, 255); - ctx.fillStyle = 'rgba(' + rgb[0] + ', ' + rgb[1] + ', ' + rgb[2] + ', ' + this.alpha + ')'; - ctx.fillRect(0, 0, this.width, this.height); - }; - _.nextFrame = function(delta) { - if (this.frames.length === 0) { - this.stopAnimation(); - return; - } - this.phase = 0; - let me = this; - let count = 1; - this.innerHandle = setInterval(function() { - me.alpha = count / 15; - me.repaint(); - if (count === 15) { - me.breakInnerHandle(); - } - count++; - }, 33); - }; - _.breakInnerHandle = function() { - if (this.innerHandle) { - clearInterval(this.innerHandle); - this.innerHandle = undefined; - } - if (this.phase === 0) { - this.curIndex++; - if (this.curIndex > this.frames.length - 1) { - this.curIndex = 0; - } - this.alpha = 1; - let f = this.frames[this.curIndex]; - this.loadContent(f.mols, f.shapes); - this.phase = 1; - let me = this; - let count = 1; - this.innerHandle = setInterval(function() { - me.alpha = (15 - count) / 15; - me.repaint(); - if (count === 15) { - me.breakInnerHandle(); - } - count++; - }, 33); - } else if (this.phase === 1) { - this.alpha = 0; - this.repaint(); - } - }; - _.addFrame = function(molecules, shapes) { - if (this.frames.length === 0) { - this.loadContent(molecules, shapes); - } - this.frames.push({ - mols : molecules, - shapes : shapes - }); - }; - -})(ChemDoodle, ChemDoodle.animations, ChemDoodle.math); - -(function(c, monitor, structures, m, m4, undefined) { - 'use strict'; - c.TransformCanvas = function(id, width, height, rotate3D) { - if (id) { - this.create(id, width, height); - } - this.rotate3D = rotate3D; - }; - let _ = c.TransformCanvas.prototype = new c._Canvas(); - _.lastPoint = undefined; - _.rotationMultMod = 1.3; - _.lastPinchScale = 1; - _.lastGestureRotate = 0; - _.mousedown = function(e) { - this.lastPoint = e.p; - }; - _.dblclick = function(e) { - // center structure - this.center(); - this.repaint(); - }; - _.drag = function(e) { - if (!this.lastPoint.multi) { - if (monitor.ALT) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - mol.atoms[j].add(t); - } - mol.check(); - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - sps[j].add(t); - } - } - this.lastPoint = e.p; - this.repaint(); - } else { - if (this.rotate3D === true) { - let diameter = m.max(this.width / 4, this.height / 4); - let difx = e.p.x - this.lastPoint.x; - let dify = e.p.y - this.lastPoint.y; - let yIncrement = difx / diameter * this.rotationMultMod; - let xIncrement = -dify / diameter * this.rotationMultMod; - let matrix = []; - m4.identity(matrix); - m4.rotate(matrix, xIncrement, [ 1, 0, 0 ]); - m4.rotate(matrix, yIncrement, [ 0, 1, 0 ]); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - let a = mol.atoms[j]; - let p = [ a.x - this.width / 2, a.y - this.height / 2, a.z ]; - m4.multiplyVec3(matrix, p); - a.x = p[0] + this.width / 2; - a.y = p[1] + this.height / 2; - a.z = p[2]; - } - for ( let i = 0, ii = mol.rings.length; i < ii; i++) { - mol.rings[i].center = mol.rings[i].getCenter(); - } - this.lastPoint = e.p; - if (this.styles.atoms_display && this.styles.atoms_circles_2D) { - mol.sortAtomsByZ(); - } - if (this.styles.bonds_display && this.styles.bonds_clearOverlaps_2D) { - mol.sortBondsByZ(); - } - } - this.repaint(); - } else { - let center = new structures.Point(this.width / 2, this.height / 2); - let before = center.angle(this.lastPoint); - let after = center.angle(e.p); - this.styles.rotateAngle -= (after - before); - this.lastPoint = e.p; - this.repaint(); - } - } - } - }; - _.mousewheel = function(e, delta) { - this.styles.scale += delta / 50; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.repaint(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (this.lastPoint.multi) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let m = this.molecules[i]; - for ( let j = 0, jj = m.atoms.length; j < jj; j++) { - m.atoms[j].add(t); - } - m.check(); - } - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let sps = this.shapes[i].getPoints(); - for ( let j = 0, jj = sps.length; j < jj; j++) { - sps[j].add(t); - } - } - this.lastPoint = e.p; - this.lastPoint.multi = true; - this.repaint(); - } else { - this.lastPoint = e.p; - this.lastPoint.multi = true; - } - } - }; - _.gesturechange = function(e) { - if (e.originalEvent.scale - this.lastPinchScale !== 0) { - this.styles.scale *= e.originalEvent.scale / this.lastPinchScale; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.lastPinchScale = e.originalEvent.scale; - } - if (this.lastGestureRotate - e.originalEvent.rotation !== 0) { - let rot = (this.lastGestureRotate - e.originalEvent.rotation) / 180 * m.PI; - let center = new structures.Point(this.width / 2, this.height / 2); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - let mol = this.molecules[i]; - for ( let j = 0, jj = mol.atoms.length; j < jj; j++) { - let a = mol.atoms[j]; - let dist = center.distance(a); - let angle = center.angle(a) + rot; - a.x = center.x + dist * m.cos(angle); - a.y = center.y - dist * m.sin(angle); - } - mol.check(); - } - this.lastGestureRotate = e.originalEvent.rotation; - } - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - this.lastGestureRotate = 0; - }; - -})(ChemDoodle, ChemDoodle.monitor, ChemDoodle.structures, Math, ChemDoodle.lib.mat4); - -(function(c, undefined) { - 'use strict'; - c.ViewerCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.ViewerCanvas.prototype = new c._Canvas(); - -})(ChemDoodle); - -(function(c, document, undefined) { - 'use strict'; - c._SpectrumCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c._SpectrumCanvas.prototype = new c._Canvas(); - _.spectrum = undefined; - _.emptyMessage = 'No Spectrum Loaded or Recognized'; - _.loadMolecule = undefined; - _.getMolecule = undefined; - _.innerRepaint = function(ctx) { - if (this.spectrum && this.spectrum.data.length > 0) { - this.spectrum.draw(ctx, this.styles, this.width, this.height); - } else if (this.emptyMessage) { - ctx.fillStyle = '#737683'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.font = '18px Helvetica, Verdana, Arial, Sans-serif'; - ctx.fillText(this.emptyMessage, this.width / 2, this.height / 2); - } - }; - _.loadSpectrum = function(spectrum) { - this.spectrum = spectrum; - this.repaint(); - }; - _.getSpectrum = function() { - return this.spectrum; - }; - _.getSpectrumCoordinates = function(x, y) { - return spectrum.getInternalCoordinates(x, y, this.width, this.height); - }; - -})(ChemDoodle, document); - -(function(c, undefined) { - 'use strict'; - c.ObserverCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.ObserverCanvas.prototype = new c._SpectrumCanvas(); - -})(ChemDoodle); - -(function(c, undefined) { - 'use strict'; - c.OverlayCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.OverlayCanvas.prototype = new c._SpectrumCanvas(); - _.overlaySpectra = []; - _.superRepaint = _.innerRepaint; - _.innerRepaint = function(ctx) { - this.superRepaint(ctx); - if (this.spectrum && this.spectrum.data.length > 0) { - for ( let i = 0, ii = this.overlaySpectra.length; i < ii; i++) { - let s = this.overlaySpectra[i]; - if (s && s.data.length > 0) { - s.minX = this.spectrum.minX; - s.maxX = this.spectrum.maxX; - s.drawPlot(ctx, this.styles, this.width, this.height, this.spectrum.memory.offsetTop, this.spectrum.memory.offsetLeft, this.spectrum.memory.offsetBottom); - } - } - } - }; - _.addSpectrum = function(spectrum) { - if (!this.spectrum) { - this.spectrum = spectrum; - } else { - this.overlaySpectra.push(spectrum); - } - }; - -})(ChemDoodle); - -(function(c, monitor, m, undefined) { - 'use strict'; - c.PerspectiveCanvas = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.PerspectiveCanvas.prototype = new c._SpectrumCanvas(); - _.dragRange = undefined; - _.rescaleYAxisOnZoom = true; - _.lastPinchScale = 1; - _.mousedown = function(e) { - this.dragRange = new c.structures.Point(e.p.x, e.p.x); - }; - _.mouseup = function(e) { - if (this.dragRange && this.dragRange.x !== this.dragRange.y) { - if (!this.dragRange.multi) { - let newScale = this.spectrum.zoom(this.dragRange.x, e.p.x, this.width, this.rescaleYAxisOnZoom); - if (this.rescaleYAxisOnZoom) { - this.styles.scale = newScale; - } - } - this.dragRange = undefined; - this.repaint(); - } - }; - _.drag = function(e) { - if (this.dragRange) { - if (this.dragRange.multi) { - this.dragRange = undefined; - } else if (monitor.SHIFT) { - this.spectrum.translate(e.p.x - this.dragRange.x, this.width); - this.dragRange.x = e.p.x; - this.dragRange.y = e.p.x; - } else { - this.dragRange.y = e.p.x; - } - this.repaint(); - } - }; - _.drawChildExtras = function(ctx) { - if (this.dragRange) { - let xs = m.min(this.dragRange.x, this.dragRange.y); - let xe = m.max(this.dragRange.x, this.dragRange.y); - ctx.strokeStyle = 'gray'; - ctx.lineStyle = 1; - ctx.beginPath(); - ctx.moveTo(xs, this.height / 2); - for ( let i = xs; i <= xe; i++) { - if (i % 10 < 5) { - ctx.lineTo(i, m.round(this.height / 2)); - } else { - ctx.moveTo(i, m.round(this.height / 2)); - } - } - ctx.stroke(); - } - }; - _.mousewheel = function(e, delta) { - this.styles.scale -= delta / 10; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.repaint(); - }; - _.dblclick = function(e) { - this.spectrum.setup(); - this.styles.scale = 1; - this.repaint(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (!this.dragRange || !this.dragRange.multi) { - this.dragRange = new c.structures.Point(e.p.x, e.p.x); - this.dragRange.multi = true; - } else { - this.spectrum.translate(e.p.x - this.dragRange.x, this.width); - this.dragRange.x = e.p.x; - this.dragRange.y = e.p.x; - this.repaint(); - } - } - }; - _.gesturechange = function(e) { - this.styles.scale *= e.originalEvent.scale / this.lastPinchScale; - if (this.styles.scale < .01) { - this.styles.scale = .01; - } - this.lastPinchScale = e.originalEvent.scale; - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - }; - -})(ChemDoodle, ChemDoodle.monitor, Math); - -(function(c, extensions, m, undefined) { - 'use strict'; - c.SeekerCanvas = function(id, width, height, seekType) { - if (id) { - this.create(id, width, height); - } - this.seekType = seekType; - }; - let _ = c.SeekerCanvas.prototype = new c._SpectrumCanvas(); - _.superRepaint = _.innerRepaint; - _.innerRepaint = function(ctx) { - this.superRepaint(ctx); - if (this.spectrum && this.spectrum.data.length > 0 && this.p) { - // set up coords - let renderP; - let internalP; - if (this.seekType === c.SeekerCanvas.SEEK_POINTER) { - renderP = this.p; - internalP = this.spectrum.getInternalCoordinates(renderP.x, renderP.y); - } else if (this.seekType === c.SeekerCanvas.SEEK_PLOT || this.seekType === c.SeekerCanvas.SEEK_PEAK) { - internalP = this.seekType === c.SeekerCanvas.SEEK_PLOT ? this.spectrum.getClosestPlotInternalCoordinates(this.p.x) : this.spectrum.getClosestPeakInternalCoordinates(this.p.x); - if (!internalP) { - return; - } - renderP = { - x : this.spectrum.getTransformedX(internalP.x, this.styles, this.width, this.spectrum.memory.offsetLeft), - y : this.spectrum.getTransformedY(internalP.y / 100, this.styles, this.height, this.spectrum.memory.offsetBottom, this.spectrum.memory.offsetTop) - }; - } - // draw point - ctx.fillStyle = 'white'; - ctx.strokeStyle = this.styles.plots_color; - ctx.lineWidth = this.styles.plots_width; - ctx.beginPath(); - ctx.arc(renderP.x, renderP.y, 3, 0, m.PI * 2, false); - ctx.fill(); - ctx.stroke(); - // draw internal coordinates - ctx.font = extensions.getFontString(this.styles.text_font_size, this.styles.text_font_families); - ctx.textAlign = 'left'; - ctx.textBaseline = 'bottom'; - let s = 'x:' + internalP.x.toFixed(3) + ', y:' + internalP.y.toFixed(3); - let x = renderP.x + 3; - let w = ctx.measureText(s).width; - if (x + w > this.width - 2) { - x -= 6 + w; - } - let y = renderP.y; - if (y - this.styles.text_font_size - 2 < 0) { - y += this.styles.text_font_size; - } - ctx.fillRect(x, y - this.styles.text_font_size, w, this.styles.text_font_size); - ctx.fillStyle = 'black'; - ctx.fillText(s, x, y); - } - }; - _.mouseout = function(e) { - this.p = undefined; - this.repaint(); - }; - _.mousemove = function(e) { - this.p = { - x : e.p.x - 2, - y : e.p.y - 3 - }; - this.repaint(); - }; - _.touchstart = function(e) { - this.mousemove(e); - }; - _.touchmove = function(e) { - this.mousemove(e); - }; - _.touchend = function(e) { - this.mouseout(e); - }; - c.SeekerCanvas.SEEK_POINTER = 'pointer'; - c.SeekerCanvas.SEEK_PLOT = 'plot'; - c.SeekerCanvas.SEEK_PEAK = 'peak'; - -})(ChemDoodle, ChemDoodle.extensions, Math); - -(function(c, extensions, math, structures, d3, RESIDUE, m, document, m4, m3, v3, q, window, undefined) { - 'use strict'; - c._Canvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c._Canvas3D.prototype = new c._Canvas(); - let _super = c._Canvas.prototype; - _.rotationMatrix = undefined; - _.contentCenter = undefined; - _.lastPoint = undefined; - _.emptyMessage = 'WebGL is Unavailable!'; - _.lastPinchScale = 1; - _.lastGestureRotate = 0; - _.afterLoadContent = function() { - let bounds = new math.Bounds(); - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - bounds.expand(this.molecules[i].getBounds3D()); - } - // build fog parameter - let maxDimension3D = v3.dist([ bounds.maxX, bounds.maxY, bounds.maxZ ], [ bounds.minX, bounds.minY, bounds.minZ ]) / 2 + 1.5; - if(maxDimension3D===Infinity){ - // there is no content - maxDimension3D = 10; - } - - this.maxDimension = m.max(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY); - - let fov = m.min(179.9, m.max(this.styles.projectionPerspectiveVerticalFieldOfView_3D, 0.1)); - let theta = fov / 360 * m.PI; - let tanTheta = m.tan(theta) / 0.8; - let top = maxDimension3D; - let focalLength = top / tanTheta; - let near = focalLength - top; - let far = focalLength + top; - let aspect = this.width / this.height; - - this.camera.fieldOfView = fov; - this.camera.near = near; - this.camera.far = far; - this.camera.aspect = aspect; - m4.translate(m4.identity(this.camera.viewMatrix), [ 0, 0, -focalLength]); - - let lightFocalLength = top / m.tan(theta); - - this.lighting.camera.fieldOfView = fov; - this.lighting.camera.near = lightFocalLength - top; - this.lighting.camera.far = lightFocalLength + top; - this.lighting.updateView(); - - this.setupScene(); - }; - _.renderDepthMap = function() { - if (this.styles.shadow_3D && d3.DepthShader) { - - let cullFaceEnabled = this.gl.isEnabled(this.gl.CULL_FACE); - if(!cullFaceEnabled) { this.gl.enable(this.gl.CULL_FACE); } - - this.depthShader.useShaderProgram(this.gl); - - // current clear color - let cs = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - - this.gl.clearColor(1.0, 1.0, 1.0, 0.0); - - this.lightDepthMapFramebuffer.bind(this.gl, this.shadowTextureSize, this.shadowTextureSize); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // use light projection matrix to draw the molecule - this.depthShader.setProjectionMatrix(this.gl, this.lighting.camera.projectionMatrix); - - this.depthShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.gl.flush(); - - this.depthShader.disableAttribsArray(this.gl); - - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - - // set back the clear color - this.gl.clearColor(cs[0], cs[1], cs[2], cs[3]); - - if(!cullFaceEnabled) { this.gl.disable(this.gl.CULL_FACE); } - } - };// draw anything those not molecules, example compass, shapes, text etc. - _.renderExtras = function() { - - this.phongShader.useShaderProgram(this.gl); - - this.phongShader.enableAttribsArray(this.gl); - - let transparentShapes = []; - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let s = this.shapes[i]; - if(s instanceof d3._Surface && (!s.styles && this.styles.surfaces_alpha!==1 || s.styles && s.styles.surfaces_alpha!==1)){ - transparentShapes.push(s); - }else{ - s.render(this.gl, this.styles); - } - } - - // transparent shapes - if(transparentShapes.length!==0){ - //this.gl.blendFunc(gl.SRC_ALPHA, gl.ONE); - this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA); - this.gl.enable(this.gl.BLEND); - this.gl.depthMask(false); - for ( let i = 0, ii = transparentShapes.length; i < ii; i++) { - let s = transparentShapes[i]; - s.render(this.gl, this.styles); - } - this.gl.depthMask(true); - this.gl.disable(this.gl.BLEND); - this.gl.blendFuncSeparate(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA, this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA); - } - - - this.phongShader.setShadow(this.gl, false); - this.phongShader.setFogMode(this.gl, 0); - this.phongShader.setFlatColor(this.gl, false); - - // compass use its own model view and projection matrix - // so it need to use back the default matrix for other - // rendering process (ex. render arbitrary text). - if (this.styles.compass_display) { - this.phongShader.setLightDirection(this.gl, [0, 0, -1]); - this.compass.render(this.gl, this.styles); - } - - this.phongShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // enable blend and depth mask set to false - this.gl.enable(this.gl.BLEND); - this.gl.depthMask(false); - this.labelShader.useShaderProgram(this.gl); - // use back the default model view matrix - this.labelShader.setMatrixUniforms(this.gl, this.gl.modelViewMatrix); - // use back the default projection matrix - this.labelShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - this.labelShader.setDimension(this.gl, this.gl.canvas.clientWidth, this.gl.canvas.clientHeight); - - // enable vertex for draw text - this.labelShader.enableAttribsArray(this.gl); - - // draw label molecule - if (this.styles.atoms_displayLabels_3D) { - this.label3D.render(this.gl, this.styles, this.getMolecules()); - } - // draw measurement text - if(this.styles.measurement_displayText_3D) { - for ( let i = 0, ii = this.shapes.length; i < ii; i++) { - let s = this.shapes[i]; - if(s.renderText){ - s.renderText(this.gl, this.styles); - } - } - } - // draw compass X Y Z text - if (this.styles.compass_display && this.styles.compass_displayText_3D) { - this.compass.renderAxis(this.gl); - } - // disable vertex for draw text - this.labelShader.disableAttribsArray(this.gl); - - // disable blend and depth mask set to true - this.gl.disable(this.gl.BLEND); - this.gl.depthMask(true); - this.gl.flush(); - - if (this.drawChildExtras) { - this.drawChildExtras(this.gl); - } - - this.gl.flush(); - }; - // molecule colors rendeing will both use on forward and deferred rendering - _.renderColor = function() { - this.phongShader.useShaderProgram(this.gl); - - this.gl.uniform1i(this.phongShader.shadowDepthSampleUniform, 0); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.lightDepthMapTexture.texture); - - this.phongShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - this.phongShader.setShadow(this.gl, this.styles.shadow_3D); - this.phongShader.setFlatColor(this.gl, this.styles.flat_color_3D); - this.phongShader.setGammaCorrection(this.gl, this.styles.gammaCorrection_3D); - - this.phongShader.setShadowTextureSize(this.gl, this.shadowTextureSize, this.shadowTextureSize); - this.phongShader.setShadowIntensity(this.gl, this.styles.shadow_intensity_3D); - - this.phongShader.setFogMode(this.gl, this.styles.fog_mode_3D); - this.phongShader.setFogColor(this.gl, this.fogging.colorRGB); - this.phongShader.setFogStart(this.gl, this.fogging.fogStart); - this.phongShader.setFogEnd(this.gl, this.fogging.fogEnd); - this.phongShader.setFogDensity(this.gl, this.fogging.density); - - this.phongShader.setLightProjectionMatrix(this.gl, this.lighting.camera.projectionMatrix); - this.phongShader.setLightDiffuseColor(this.gl, this.lighting.diffuseRGB); - this.phongShader.setLightSpecularColor(this.gl, this.lighting.specularRGB); - this.phongShader.setLightDirection(this.gl, this.lighting.direction); - - this.phongShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.phongShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderPosition = function() { - this.positionShader.useShaderProgram(this.gl); - - this.positionShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.positionShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.positionShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderNormal = function() { - this.normalShader.useShaderProgram(this.gl); - this.normalShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.normalShader.enableAttribsArray(this.gl); - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].render(this.gl, this.styles); - } - - this.normalShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.renderSSAO = function() { - this.ssaoShader.useShaderProgram(this.gl); - - this.ssaoShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - this.ssaoShader.setSampleKernel(this.gl, this.ssao.sampleKernel); - - this.ssaoShader.setKernelRadius(this.gl, this.styles.ssao_kernel_radius); - - this.ssaoShader.setPower(this.gl, this.styles.ssao_power); - - this.ssaoShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.uniform1i(this.ssaoShader.positionSampleUniform, 0); - this.gl.uniform1i(this.ssaoShader.normalSampleUniform, 1); - this.gl.uniform1i(this.ssaoShader.noiseSampleUniform, 2); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.positionTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.normalTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE2); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.ssao.noiseTexture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.ssaoShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.ssaoShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // render ssao blur shader - this.ssaoFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - - this.ssaoBlurShader.useShaderProgram(this.gl); - - this.ssaoBlurShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.uniform1i(this.ssaoBlurShader.aoSampleUniform, 0); - this.gl.uniform1i(this.ssaoBlurShader.depthSampleUniform, 1); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.imageTexture.texture); - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.depthTexture.texture); - this.gl.activeTexture(this.gl.TEXTURE0); - - - this.ssaoBlurShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.ssaoBlurShader.disableAttribsArray(this.gl); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.gl.flush(); - }; - _.renderOutline = function() { - this.outlineShader.useShaderProgram(this.gl); - - this.outlineShader.setGbufferTextureSize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.outlineShader.setNormalThreshold(this.gl, this.styles.outline_normal_threshold); - this.outlineShader.setDepthThreshold(this.gl, this.styles.outline_depth_threshold); - this.outlineShader.setThickness(this.gl, this.styles.outline_thickness); - - this.gl.uniform1i(this.outlineShader.normalSampleUniform, 0); - this.gl.uniform1i(this.outlineShader.depthSampleUniform, 1); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.normalTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.depthTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.outlineShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.outlineShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.deferredRender = function() { - // get backdground color - let bgColor = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - // set background to black - this.gl.clearColor(0.0, 0.0, 0.0, 0.0); - - // render color - this.colorFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderColor(); - - // render position - this.positionFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderPosition(); - - // render normals - this.normalFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - this.renderNormal(); - - // render ssao - if(this.styles.ssao_3D && d3.SSAOShader) { - // render ssao shading - this.quadFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - this.renderSSAO(); - } else { - this.ssaoFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clearColor(1.0, 1.0, 1.0, 1.0); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - } - - // render outline - this.outlineFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clearColor(1.0, 1.0, 1.0, 1.0); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - if(this.styles.outline_3D) { - this.renderOutline(); - } - - // set back background color - this.gl.clearColor(bgColor[0], bgColor[1], bgColor[2], bgColor[3]); - // composite render - this.quadFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); - - this.lightingShader.useShaderProgram(this.gl); - - this.gl.uniform1i(this.lightingShader.positionSampleUniform, 0); - this.gl.uniform1i(this.lightingShader.colorSampleUniform, 1); - this.gl.uniform1i(this.lightingShader.ssaoSampleUniform, 2); - this.gl.uniform1i(this.lightingShader.outlineSampleUniform, 3); - - this.gl.activeTexture(this.gl.TEXTURE0); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.positionTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE1); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.colorTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE2); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.ssaoTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE3); - this.gl.bindTexture(this.gl.TEXTURE_2D, this.outlineTexture.texture); - - this.gl.activeTexture(this.gl.TEXTURE0); - - this.lightingShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.lightingShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - // final render - this.fxaaFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.bindTexture(this.gl.TEXTURE_2D, this.imageTexture.texture); - - this.fxaaShader.useShaderProgram(this.gl); - - this.fxaaShader.setBuffersize(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.fxaaShader.setAntialias(this.gl, this.styles.antialias_3D); - - this.fxaaShader.setEdgeThreshold(this.gl, this.styles.fxaa_edgeThreshold); - this.fxaaShader.setEdgeThresholdMin(this.gl, this.styles.fxaa_edgeThresholdMin); - this.fxaaShader.setSearchSteps(this.gl, this.styles.fxaa_searchSteps); - this.fxaaShader.setSearchThreshold(this.gl, this.styles.fxaa_searchThreshold); - this.fxaaShader.setSubpixCap(this.gl, this.styles.fxaa_subpixCap); - this.fxaaShader.setSubpixTrim(this.gl, this.styles.fxaa_subpixTrim); - - this.fxaaShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.fxaaShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - - // final render - this.finalFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.renderExtras(); - - // set back background color - this.gl.clearColor(bgColor[0], bgColor[1], bgColor[2], bgColor[3]); - - // last render - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.bindTexture(this.gl.TEXTURE_2D, this.fxaaTexture.texture); - - this.quadShader.useShaderProgram(this.gl); - - this.quadShader.enableAttribsArray(this.gl); - - this.gl.quadBuffer.bindBuffers(this.gl); - - this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, this.gl.quadBuffer.vertexPositionBuffer.numItems); - - this.quadShader.disableAttribsArray(this.gl); - - this.gl.flush(); - }; - _.forwardRender = function() { - // last render - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - // setup viewport - this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.renderColor(); - - this.renderExtras(); - }; - _.repaint = function() { - if (this.gl) { - // set up the model view matrix to the specified transformations - this.gl.lightViewMatrix = m4.multiply(this.lighting.camera.viewMatrix, this.rotationMatrix, []); - this.gl.rotationMatrix = this.rotationMatrix; - this.gl.modelViewMatrix = this.gl.lightViewMatrix; - - this.renderDepthMap(); - - this.gl.modelViewMatrix = m4.multiply(this.camera.viewMatrix, this.rotationMatrix, []); - m4.translate(this.gl.modelViewMatrix, this.contentCenter); - - if(this.isSupportDeferred() && (this.styles.ssao_3D || this.styles.outline_3D)) { - this.deferredRender(); - } else { - this.forwardRender(); - } - } - }; - _.pick = function(x, y, includeAtoms, includeBonds) { - if (this.gl) { - // draw with pick framebuffer - let xu = x; - let yu = this.height - y; - if (this.pixelRatio !== 1) { - xu *= this.pixelRatio; - yu *= this.pixelRatio; - } - - // set up the model view matrix to the specified transformations - m4.multiply(this.camera.viewMatrix, this.rotationMatrix, this.gl.modelViewMatrix); - m4.translate(this.gl.modelViewMatrix, this.contentCenter); - this.gl.rotationMatrix = this.rotationMatrix; - - this.pickShader.useShaderProgram(this.gl); - - // current clear color - let cs = this.gl.getParameter(this.gl.COLOR_CLEAR_VALUE); - - this.gl.clearColor(1.0, 1.0, 1.0, 0.0); - this.pickerFramebuffer.bind(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - - // use default projection matrix to draw the molecule - this.pickShader.setProjectionMatrix(this.gl, this.camera.projectionMatrix); - - // not need the normal for diffuse light, we need flat color - this.pickShader.enableAttribsArray(this.gl); - - let objects = []; - - for ( let i = 0, ii = this.molecules.length; i < ii; i++) { - this.molecules[i].renderPickFrame(this.gl, this.styles, objects, includeAtoms, includeBonds); - } - - this.pickShader.disableAttribsArray(this.gl); - - this.gl.flush(); - - let rgba = new Uint8Array(4); - this.gl.readPixels(xu - 2, yu + 2, 1, 1, this.gl.RGBA, this.gl.UNSIGNED_BYTE, rgba); - - let object = undefined; - let idxMolecule = rgba[3]; - if (idxMolecule > 0) { - let idxAtom = rgba[2] | (rgba[1] << 8) | (rgba[0] << 16); - object = objects[idxAtom]; - } - - this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null); - // set back the clear color - this.gl.clearColor(cs[0], cs[1], cs[2], cs[3]); - return object; - } - return undefined; - }; - _.center = function() { - let p = new structures.Atom(); - let n = this.molecules.length; - for ( let k = 0, kk = n; k < kk; k++) { - let m = this.molecules[k]; - p.add3D(m.getCenter3D()); - } - p.x /= n; - p.y /= n; - p.z /= n; - this.contentCenter = [-p.x, -p.y, -p.z]; - }; - _.isSupportDeferred = function() { - return this.gl.textureFloatExt && this.gl.depthTextureExt; - }; - _.create = function(id, width, height) { - _super.create.call(this, id, width, height); - // setup gl object - try { - let canvas = document.getElementById(this.id); - this.gl = canvas.getContext('webgl'); - if (!this.gl) { - this.gl = canvas.getContext('experimental-webgl'); - } - } catch (e) { - } - if (this.gl) { - - if (this.pixelRatio !== 1 && this.gl.canvas.width === this.width) { - this.gl.canvas.style.width = this.width + 'px'; - this.gl.canvas.style.height = this.height + 'px'; - this.gl.canvas.width = this.width * this.pixelRatio; - this.gl.canvas.height = this.height * this.pixelRatio; - } - - this.gl.enable(this.gl.DEPTH_TEST); - this.gl.depthFunc(this.gl.LEQUAL); - this.gl.blendFuncSeparate(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA, this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA); - this.gl.clearDepth(1.0); - - // size of texture for render depth map from light view - this.shadowTextureSize = 1024; - // setup matrices - this.rotationMatrix = m4.identity([]); - this.contentCenter = [0,0,0]; - // set up camera - this.camera = new d3.Camera(); - - this.label3D = new d3.Label(); - - this.lighting = new d3.Light(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - - this.fogging = new d3.Fog(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - - - // uncomment this line to see shadow without depth texture extension - this.gl.depthTextureExt = this.gl.getExtension('WEBGL_depth_texture') || this.gl.getExtension('WEBKIT_WEBGL_depth_texture') || this.gl.getExtension('MOZ_WEBGL_depth_texture'); - this.gl.textureFloatExt = this.gl.getExtension('OES_texture_float') || this.gl.getExtension('WEBKIT_OES_texture_float') || this.gl.getExtension('MOZ_OES_texture_float'); - // this.gl.shaderTextureLodExt = this.gl.getExtension('EXT_shader_texture_lod') || this.gl.getExtension('WEBKIT_EXT_shader_texture_lod') || this.gl.getExtension('MOZ_EXT_shader_texture_lod'); - // this.gl.drawBuffersExt = this.gl.getExtension('WEBGL_draw_buffers'); - - this.ssao = new d3.SSAO(); - - // set picker color attachment - this.pickerColorTexture = new d3.Texture(); - this.pickerColorTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA, this.gl.RGBA); - - // set picker depth attachment - this.pickerDepthRenderbuffer = new d3.Renderbuffer(); - this.pickerDepthRenderbuffer.init(this.gl, this.gl.DEPTH_COMPONENT16); - - // set picker framebuffer - this.pickerFramebuffer = new d3.Framebuffer(); - this.pickerFramebuffer.init(this.gl); - this.pickerFramebuffer.setColorTexture(this.gl, this.pickerColorTexture.texture); - this.pickerFramebuffer.setDepthRenderbuffer(this.gl, this.pickerDepthRenderbuffer.renderbuffer); - - // depth map for shadowing - this.lightDepthMapTexture = new d3.Texture(); - this.lightDepthMapRenderbuffer = new d3.Renderbuffer(); - this.lightDepthMapFramebuffer = new d3.Framebuffer(); - this.lightDepthMapFramebuffer.init(this.gl); - - if(this.gl.depthTextureExt) { - this.lightDepthMapTexture.init(this.gl, this.gl.UNSIGNED_SHORT, this.gl.DEPTH_COMPONENT); - this.lightDepthMapRenderbuffer.init(this.gl, this.gl.RGBA4); - this.lightDepthMapFramebuffer.setColorRenderbuffer(this.gl, this.lightDepthMapRenderbuffer.renderbuffer); - this.lightDepthMapFramebuffer.setDepthTexture(this.gl, this.lightDepthMapTexture.texture); - } else { - this.lightDepthMapTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA, this.gl.RGBA); - this.lightDepthMapRenderbuffer.init(this.gl, this.gl.DEPTH_COMPONENT16); - this.lightDepthMapFramebuffer.setColorTexture(this.gl, this.lightDepthMapTexture.texture); - this.lightDepthMapFramebuffer.setDepthRenderbuffer(this.gl, this.lightDepthMapRenderbuffer.renderbuffer); - } - - // deferred shading textures, renderbuffers, framebuffers and shaders - if(this.isSupportDeferred()) { - // g-buffer - this.depthTexture = new d3.Texture(); - this.depthTexture.init(this.gl, this.gl.UNSIGNED_SHORT, this.gl.DEPTH_COMPONENT); - - this.colorTexture = new d3.Texture(); - this.colorTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA); - - this.positionTexture = new d3.Texture(); - this.positionTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - this.normalTexture = new d3.Texture(); - this.normalTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // postprocesing effect - // ssao - this.ssaoTexture = new d3.Texture(); - this.ssaoTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // outline - this.outlineTexture = new d3.Texture(); - this.outlineTexture.init(this.gl, this.gl.UNSIGNED_BYTE, this.gl.RGBA); - - this.fxaaTexture = new d3.Texture(); - this.fxaaTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // temp texture - this.imageTexture = new d3.Texture(); - this.imageTexture.init(this.gl, this.gl.FLOAT, this.gl.RGBA); - - // framebuffer - this.colorFramebuffer = new d3.Framebuffer(); - this.colorFramebuffer.init(this.gl); - this.colorFramebuffer.setColorTexture(this.gl, this.colorTexture.texture); - this.colorFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.normalFramebuffer = new d3.Framebuffer(); - this.normalFramebuffer.init(this.gl); - this.normalFramebuffer.setColorTexture(this.gl, this.normalTexture.texture); - this.normalFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.positionFramebuffer = new d3.Framebuffer(); - this.positionFramebuffer.init(this.gl); - this.positionFramebuffer.setColorTexture(this.gl, this.positionTexture.texture); - this.positionFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.ssaoFramebuffer = new d3.Framebuffer(); - this.ssaoFramebuffer.init(this.gl); - this.ssaoFramebuffer.setColorTexture(this.gl, this.ssaoTexture.texture); - - this.outlineFramebuffer = new d3.Framebuffer(); - this.outlineFramebuffer.init(this.gl); - this.outlineFramebuffer.setColorTexture(this.gl, this.outlineTexture.texture); - - this.fxaaFramebuffer = new d3.Framebuffer(); - this.fxaaFramebuffer.init(this.gl); - this.fxaaFramebuffer.setColorTexture(this.gl, this.fxaaTexture.texture); - - this.quadFramebuffer = new d3.Framebuffer(); - this.quadFramebuffer.init(this.gl); - this.quadFramebuffer.setColorTexture(this.gl, this.imageTexture.texture); - - this.finalFramebuffer = new d3.Framebuffer(); - this.finalFramebuffer.init(this.gl); - this.finalFramebuffer.setColorTexture(this.gl, this.fxaaTexture.texture); - this.finalFramebuffer.setDepthTexture(this.gl, this.depthTexture.texture); - - this.normalShader = new d3.NormalShader(); - this.normalShader.init(this.gl); - - this.positionShader = new d3.PositionShader(); - this.positionShader.init(this.gl); - - if(d3.SSAOShader){ - this.ssaoShader = new d3.SSAOShader(); - this.ssaoShader.init(this.gl); - - this.ssaoBlurShader = new d3.SSAOBlurShader(); - this.ssaoBlurShader.init(this.gl); - } - - this.outlineShader = new d3.OutlineShader(); - this.outlineShader.init(this.gl); - - this.lightingShader = new d3.LightingShader(); - this.lightingShader.init(this.gl); - - this.fxaaShader = new d3.FXAAShader(); - this.fxaaShader.init(this.gl); - - this.quadShader = new d3.QuadShader(); - this.quadShader.init(this.gl); - } - - // this is the shaders - this.labelShader = new d3.LabelShader(); - this.labelShader.init(this.gl); - - this.pickShader = new d3.PickShader(); - this.pickShader.init(this.gl); - - this.phongShader = new d3.PhongShader(); - this.phongShader.init(this.gl); - - if(d3.DepthShader){ - this.depthShader = new d3.DepthShader(); - this.depthShader.init(this.gl); - } - - this.textTextImage = new d3.TextImage(); - this.textTextImage.init(this.gl); - - this.gl.textImage = new d3.TextImage(); - this.gl.textImage.init(this.gl); - - this.gl.textMesh = new d3.TextMesh(); - this.gl.textMesh.init(this.gl); - - // set up material - this.gl.material = new d3.Material(); - - this.setupScene(); - } else { - this.displayMessage(); - } - }; - _.displayMessage = function() { - let canvas = document.getElementById(this.id); - if (canvas.getContext) { - let ctx = canvas.getContext('2d'); - if (this.styles.backgroundColor) { - ctx.fillStyle = this.styles.backgroundColor; - ctx.fillRect(0, 0, this.width, this.height); - } - if (this.emptyMessage) { - ctx.fillStyle = '#737683'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.font = '18px Helvetica, Verdana, Arial, Sans-serif'; - ctx.fillText(this.emptyMessage, this.width / 2, this.height / 2); - } - } - }; - _.renderText = function(text, position) { - let vertexData = { - position : [], - texCoord : [], - translation : [] - }; - this.textTextImage.pushVertexData(text, position, 0, vertexData); - this.gl.textMesh.storeData(this.gl, vertexData.position, vertexData.texCoord, vertexData.translation); - - this.textTextImage.useTexture(this.gl); - this.gl.textMesh.render(this.gl); - }; - _.setupScene = function() { - if (this.gl) { - // clear the canvas - // set background color for IE's sake, seems like an IE bug where half the repaints don't render a background - let jqCapsule = q('#' + this.id); - let backgroundString = this.styles.backgroundColor?this.styles.backgroundColor:'transparent'; - jqCapsule.css('background-color', backgroundString); - let cs = backgroundString==='transparent'?[0.0,0.0,0.0,0.0]:math.getRGB(backgroundString, 1); - this.gl.clearColor(cs[0], cs[1], cs[2], cs.length==4?cs[3]:1.0); - this.styles.cullBackFace_3D ? this.gl.enable(this.gl.CULL_FACE) : this.gl.disable(this.gl.CULL_FACE); - // here is the sphere buffer to be drawn, make it once, then scale - // and translate to draw atoms - this.gl.sphereBuffer = new d3.Sphere(1, this.styles.atoms_resolution_3D, this.styles.atoms_resolution_3D); - this.gl.starBuffer = new d3.Star(); - this.gl.cylinderBuffer = new d3.Cylinder(1, 1, this.styles.bonds_resolution_3D); - this.gl.cylinderClosedBuffer = new d3.Cylinder(1, 1, this.styles.bonds_resolution_3D, true); - this.gl.boxBuffer = new d3.Box(1, 1, 1); - this.gl.pillBuffer = new d3.Pill(this.styles.bonds_pillDiameter_3D / 2, this.styles.bonds_pillHeight_3D, this.styles.bonds_pillLatitudeResolution_3D, this.styles.bonds_pillLongitudeResolution_3D); - this.gl.lineBuffer = new d3.Line(); - this.gl.lineArrowBuffer = new d3.LineArrow(); - this.gl.arrowBuffer = new d3.Arrow(0.3, this.styles.compass_resolution_3D); - this.gl.quadBuffer = new d3.Quad(); - // texture for rendering text - this.gl.textImage.updateFont(this.gl, this.styles.text_font_size, this.styles.text_font_families, this.styles.text_font_bold, this.styles.text_font_italic, this.styles.text_font_stroke_3D); - // set up lighting - this.lighting.lightScene(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - // set up fogging - this.fogging.fogScene(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - // set up compass - this.compass = new d3.Compass(this.gl, this.styles); - - // set texture and renderbuffer parameter - this.lightDepthMapTexture.setParameter(this.gl, this.shadowTextureSize, this.shadowTextureSize); - this.lightDepthMapRenderbuffer.setParameter(this.gl, this.shadowTextureSize, this.shadowTextureSize); - - this.pickerColorTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - this.pickerDepthRenderbuffer.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - if(this.isSupportDeferred()) { - this.depthTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.colorTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.imageTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.positionTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.normalTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.ssaoTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.outlineTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - this.fxaaTexture.setParameter(this.gl, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight); - - // set SSAO parameter - this.ssao.initSampleKernel(this.styles.ssao_kernel_samples); - - this.ssao.initNoiseTexture(this.gl); - } - - this.camera.updateProjectionMatrix(this.styles.projectionPerspective_3D); - - for ( let k = 0, kk = this.molecules.length; k < kk; k++) { - let mol = this.molecules[k]; - if (!(mol.labelMesh instanceof d3.TextMesh)) { - mol.labelMesh = new d3.TextMesh(); - mol.labelMesh.init(this.gl); - } - if (mol.chains) { - mol.ribbons = []; - mol.cartoons = []; - mol.tubes = []; - mol.pipePlanks = []; - // set up ribbon diagram if available and not already setup - for ( let j = 0, jj = mol.chains.length; j < jj; j++) { - let rs = mol.chains[j]; - for ( let i = 0, ii = rs.length - 1; i < ii; i++) { - rs[i].Test =i; - } - let isNucleotide = rs.length > 3 && RESIDUE[rs[3].name] && RESIDUE[rs[3].name].aminoColor === '#BEA06E'; - if (rs.length > 0 && !rs[0].lineSegments) { - for ( let i = 0, ii = rs.length - 1; i < ii; i++) { - rs[i].setup(rs[i + 1].cp1, isNucleotide ? 1 : this.styles.proteins_horizontalResolution); - } - if (!isNucleotide) { - for ( let i = 1, ii = rs.length - 1; i < ii; i++) { - // reverse guide points if carbonyl - // orientation flips - if (extensions.vec3AngleFrom(rs[i - 1].D, rs[i].D) > m.PI / 2) { - rs[i].guidePointsSmall.reverse(); - rs[i].guidePointsLarge.reverse(); - v3.scale(rs[i].D, -1); - } - } - } - for ( let i = 2, ii = rs.length - 3; i < ii; i++) { - // compute line segments - rs[i].computeLineSegments(rs[i - 2], rs[i - 1], rs[i + 1], !isNucleotide, isNucleotide ? this.styles.nucleics_verticalResolution : this.styles.proteins_verticalResolution); - } - // remove unneeded dummies - rs.pop(); - rs.pop(); - rs.pop(); - rs.shift(); - rs.shift(); - } - // create the hsl color for the chain - let rgb = math.hsl2rgb(jj === 1 ? .5 : j / jj, 1, .5); - let chainColor = 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')'; - rs.chainColor = chainColor; - if (isNucleotide) { - let t = new d3.Tube(rs, this.styles.nucleics_tubeThickness, this.styles.nucleics_tubeResolution_3D); - t.chainColor = chainColor; - mol.tubes.push(t); - } else { - let t = new d3.PipePlank(rs, this.styles); - mol.pipePlanks.push(t); - let res = rs.shift(); - let r = { - front : new d3.Ribbon(rs, this.styles.proteins_ribbonThickness, false), - back : new d3.Ribbon(rs, -this.styles.proteins_ribbonThickness, false) - }; - r.front.chainColor = chainColor; - r.back.chainColor = chainColor; - mol.ribbons.push(r); - let d = { - front : new d3.Ribbon(rs, this.styles.proteins_ribbonThickness, true), - back : new d3.Ribbon(rs, -this.styles.proteins_ribbonThickness, true) - }; - d.front.chainColor = chainColor; - d.back.chainColor = chainColor; - mol.cartoons.push(d); - rs.unshift(res); - } - } - } - } - this.label3D.updateVerticesBuffer(this.gl, this.getMolecules(), this.styles); - // the molecules in frame of MovieCanvas3D must be handled - if (this instanceof c.MovieCanvas3D && this.frames) { - for ( let i = 0, ii = this.frames.length; i < ii; i++) { - let f = this.frames[i]; - for ( let j = 0, jj = f.mols.length; j < jj; j++) { - let mol = f.mols[j]; - if (!(mol.labelMesh instanceof structures.d3.TextMesh)) { - mol.labelMesh = new structures.d3.TextMesh(); - mol.labelMesh.init(this.gl); - } - } - this.label3D.updateVerticesBuffer(this.gl, f.mols, this.styles); - } - } - } - }; - _.updateScene = function() { - this.camera.updateProjectionMatrix(this.styles.projectionPerspective_3D); - - this.lighting.lightScene(this.styles.lightDiffuseColor_3D, this.styles.lightSpecularColor_3D, this.styles.lightDirection_3D); - - this.fogging.fogScene(this.styles.fog_color_3D || this.styles.backgroundColor, this.styles.fog_start_3D, this.styles.fog_end_3D, this.styles.fog_density_3D); - - this.repaint(); - }; - _.mousedown = function(e) { - this.lastPoint = e.p; - }; - _.mouseup = function(e) { - this.lastPoint = undefined; - }; - _.rightmousedown = function(e) { - this.lastPoint = e.p; - }; - _.drag = function(e) { - if(this.lastPoint){ - if (c.monitor.ALT) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - let theta = this.camera.fieldOfView / 360 * m.PI; - let tanTheta = m.tan(theta); - let topScreen = this.height / 2 / this.camera.zoom; - let nearScreen = topScreen / tanTheta; - let nearRatio = this.camera.focalLength() / nearScreen; - m4.translate(this.camera.viewMatrix, [ t.x * nearRatio, -t.y * nearRatio, 0 ]); - } else { - let difx = e.p.x - this.lastPoint.x; - let dify = e.p.y - this.lastPoint.y; - let rotation = m4.rotate(m4.identity([]), difx * m.PI / 180.0, [ 0, 1, 0 ]); - m4.rotate(rotation, dify * m.PI / 180.0, [ 1, 0, 0 ]); - this.rotationMatrix = m4.multiply(rotation, this.rotationMatrix); - } - this.lastPoint = e.p; - this.repaint(); - } - }; - _.mousewheel = function(e, delta) { - delta > 0 ? this.camera.zoomIn() : this.camera.zoomOut(); - this.updateScene(); - }; - _.multitouchmove = function(e, numFingers) { - if (numFingers === 2) { - if (this.lastPoint && this.lastPoint.multi) { - let t = new structures.Point(e.p.x, e.p.y); - t.sub(this.lastPoint); - let theta = this.camera.fieldOfView / 360 * m.PI; - let tanTheta = m.tan(theta); - let topScreen = this.height / 2 / this.camera.zoom; - let nearScreen = topScreen / tanTheta; - let nearRatio = this.camera.focalLength() / nearScreen; - m4.translate(this.camera.viewMatrix, [ t.x * nearRatio, -t.y * nearRatio, 0 ]); - this.lastPoint = e.p; - this.repaint(); - } else { - this.lastPoint = e.p; - this.lastPoint.multi = true; - } - } - }; - _.gesturechange = function(e) { - if (e.originalEvent.scale - this.lastPinchScale !== 0) { - //let minFov = 0.1; - //let maxFov = 179.9; - let dz = -(e.originalEvent.scale / this.lastPinchScale - 1) * 30; - if(isNaN(dz)){ - // this seems to happen on Android when using multiple fingers - return; - } - dz > 0 ? this.camera.zoomOut() : this.camera.zoomIn(); - this.updateScene(); - this.lastPinchScale = e.originalEvent.scale; - } - this.repaint(); - }; - _.gestureend = function(e) { - this.lastPinchScale = 1; - this.lastGestureRotate = 0; - }; - -})(ChemDoodle, ChemDoodle.extensions, ChemDoodle.math, ChemDoodle.structures, ChemDoodle.structures.d3, ChemDoodle.RESIDUE, Math, document, ChemDoodle.lib.mat4, ChemDoodle.lib.mat3, ChemDoodle.lib.vec3, ChemDoodle.lib.jQuery, window); - -(function(c, iChemLabs, q, document, undefined) { - 'use strict'; - c.MolGrabberCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - let sb = []; - sb.push('
'); - sb.push('
'); - sb.push(''); - sb.push(''); - sb.push(''); - document.writeln(sb.join('')); - let self = this; - q('#' + id + '_submit').click(function() { - self.search(); - }); - q('#' + id + '_query').keypress(function(e) { - if (e.which === 13) { - self.search(); - } - }); - }; - let _ = c.MolGrabberCanvas3D.prototype = new c._Canvas3D(); - _.setSearchTerm = function(term) { - q('#' + this.id + '_query').val(term); - this.search(); - }; - _.search = function() { - let self = this; - iChemLabs.getMoleculeFromDatabase(q('#' + this.id + '_query').val(), { - database : q('#' + this.id + '_select').val(), - dimension : 3 - }, function(mol) { - self.loadMolecule(mol); - }); - }; - -})(ChemDoodle, ChemDoodle.iChemLabs, ChemDoodle.lib.jQuery, document); -(function(c, structures, undefined) { - 'use strict'; - c.MovieCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - this.frames = []; - }; - c.MovieCanvas3D.PLAY_ONCE = 0; - c.MovieCanvas3D.PLAY_LOOP = 1; - c.MovieCanvas3D.PLAY_SPRING = 2; - let _ = c.MovieCanvas3D.prototype = new c._Canvas3D(); - _.timeout = 50; - _.frameNumber = 0; - _.playMode = 2; - _.reverse = false; - _.startAnimation = c._AnimatorCanvas.prototype.startAnimation; - _.stopAnimation = c._AnimatorCanvas.prototype.stopAnimation; - _.isRunning = c._AnimatorCanvas.prototype.isRunning; - _.dblclick = c.RotatorCanvas.prototype.dblclick; - _.nextFrame = function(delta) { - let f = this.frames[this.frameNumber]; - this.molecules = f.mols; - this.shapes = f.shapes; - if (this.playMode === 2 && this.reverse) { - this.frameNumber--; - if (this.frameNumber < 0) { - this.frameNumber = 1; - this.reverse = false; - } - } else { - this.frameNumber++; - if (this.frameNumber >= this.frames.length) { - if (this.playMode === 2) { - this.frameNumber -= 2; - this.reverse = true; - } else { - this.frameNumber = 0; - if (this.playMode === 0) { - this.stopAnimation(); - } - } - } - } - }; - _.center = function() { - // override this function to center the entire movie - let p = new structures.Atom(); - let first = this.frames[0]; - for ( let j = 0, jj = first.mols.length; j < jj; j++) { - p.add3D(first.mols[j].getCenter3D()); - } - p.x /= first.mols.length; - p.y /= first.mols.length; - let center = new structures.Atom(); - center.sub3D(p); - for ( let i = 0, ii = this.frames.length; i < ii; i++) { - let f = this.frames[i]; - for ( let j = 0, jj = f.mols.length; j < jj; j++) { - let mol = f.mols[j]; - for ( let k = 0, kk = mol.atoms.length; k < kk; k++) { - mol.atoms[k].add3D(center); - } - } - } - }; - _.addFrame = function(molecules, shapes) { - this.frames.push({ - mols : molecules, - shapes : shapes - }); - }; - -})(ChemDoodle, ChemDoodle.structures); - -(function(c, m, m4, undefined) { - 'use strict'; - // keep these declaration outside the loop to avoid overhead - let matrix = []; - let xAxis = [ 1, 0, 0 ]; - let yAxis = [ 0, 1, 0 ]; - let zAxis = [ 0, 0, 1 ]; - - c.RotatorCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.RotatorCanvas3D.prototype = new c._Canvas3D(); - _.timeout = 33; - let increment = m.PI / 15; - _.xIncrement = increment; - _.yIncrement = increment; - _.zIncrement = increment; - _.startAnimation = c._AnimatorCanvas.prototype.startAnimation; - _.stopAnimation = c._AnimatorCanvas.prototype.stopAnimation; - _.isRunning = c._AnimatorCanvas.prototype.isRunning; - _.dblclick = c.RotatorCanvas.prototype.dblclick; - _.mousedown = undefined; - _.rightmousedown = undefined; - _.drag = undefined; - _.mousewheel = undefined; - _.nextFrame = function(delta) { - if (this.molecules.length === 0 && this.shapes.length === 0) { - this.stopAnimation(); - return; - } - m4.identity(matrix); - let change = delta / 1000; - m4.rotate(matrix, this.xIncrement * change, xAxis); - m4.rotate(matrix, this.yIncrement * change, yAxis); - m4.rotate(matrix, this.zIncrement * change, zAxis); - m4.multiply(this.rotationMatrix, matrix); - }; - -})(ChemDoodle, Math, ChemDoodle.lib.mat4); -(function(c, undefined) { - 'use strict'; - c.TransformCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - c.TransformCanvas3D.prototype = new c._Canvas3D(); - -})(ChemDoodle); -(function(c, undefined) { - 'use strict'; - c.ViewerCanvas3D = function(id, width, height) { - if (id) { - this.create(id, width, height); - } - }; - let _ = c.ViewerCanvas3D.prototype = new c._Canvas3D(); - _.mousedown = undefined; - _.rightmousedown = undefined; - _.drag = undefined; - _.mousewheel = undefined; - -})(ChemDoodle); - -(function(c, extensions, math, document, undefined) { - 'use strict'; - function PeriodicCell(element, x, y, dimension) { - this.element = element; - this.x = x; - this.y = y; - this.dimension = dimension; - this.allowMultipleSelections = false; - } - - c.PeriodicTableCanvas = function(id, cellDimension) { - this.padding = 5; - if (id) { - this.create(id, cellDimension * 18 + this.padding * 2, cellDimension * 10 + this.padding * 2); - } - this.cellDimension = cellDimension ? cellDimension : 20; - this.setupTable(); - this.repaint(); - }; - let _ = c.PeriodicTableCanvas.prototype = new c._Canvas(); - _.loadMolecule = undefined; - _.getMolecule = undefined; - _.getHoveredElement = function() { - if (this.hovered) { - return this.hovered.element; - } - return undefined; - }; - _.innerRepaint = function(ctx) { - for ( let i = 0, ii = this.cells.length; i < ii; i++) { - this.drawCell(ctx, this.styles, this.cells[i]); - } - if (this.hovered) { - this.drawCell(ctx, this.styles, this.hovered); - } - if (this.selected) { - this.drawCell(ctx, this.styles, this.selected); - } - }; - _.setupTable = function() { - this.cells = []; - let x = this.padding; - let y = this.padding; - let count = 0; - for ( let i = 0, ii = c.SYMBOLS.length; i < ii; i++) { - if (count === 18) { - count = 0; - y += this.cellDimension; - x = this.padding; - } - let e = c.ELEMENT[c.SYMBOLS[i]]; - if (e.atomicNumber === 2) { - x += 16 * this.cellDimension; - count += 16; - } else if (e.atomicNumber === 5 || e.atomicNumber === 13) { - x += 10 * this.cellDimension; - count += 10; - } - if ((e.atomicNumber < 58 || e.atomicNumber > 71 && e.atomicNumber < 90 || e.atomicNumber > 103) && e.atomicNumber <= 118) { - this.cells.push(new PeriodicCell(e, x, y, this.cellDimension)); - x += this.cellDimension; - count++; - } - } - y += 2 * this.cellDimension; - x = 3 * this.cellDimension + this.padding; - for ( let i = 57; i < 104; i++) { - let e = c.ELEMENT[c.SYMBOLS[i]]; - if (e.atomicNumber === 90) { - y += this.cellDimension; - x = 3 * this.cellDimension + this.padding; - } - if (e.atomicNumber >= 58 && e.atomicNumber <= 71 || e.atomicNumber >= 90 && e.atomicNumber <= 103) { - this.cells.push(new PeriodicCell(e, x, y, this.cellDimension)); - x += this.cellDimension; - } - } - }; - _.drawCell = function(ctx, styles, cell) { - let radgrad = ctx.createRadialGradient(cell.x + cell.dimension / 3, cell.y + cell.dimension / 3, cell.dimension * 1.5, cell.x + cell.dimension / 3, cell.y + cell.dimension / 3, cell.dimension / 10); - radgrad.addColorStop(0, '#000000'); - radgrad.addColorStop(.7, cell.element.jmolColor); - radgrad.addColorStop(1, '#FFFFFF'); - ctx.fillStyle = radgrad; - extensions.contextRoundRect(ctx, cell.x, cell.y, cell.dimension, cell.dimension, cell.dimension / 8); - if (cell === this.hovered || cell === this.selected || cell.selected) { - ctx.lineWidth = 2; - ctx.strokeStyle = '#c10000'; - ctx.stroke(); - ctx.fillStyle = 'white'; - } - ctx.fill(); - ctx.font = extensions.getFontString(styles.text_font_size, styles.text_font_families); - ctx.fillStyle = styles.text_color; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillText(cell.element.symbol, cell.x + cell.dimension / 2, cell.y + cell.dimension / 2); - }; - _.click = function(e) { - if (this.hovered) { - if(this.allowMultipleSelections){ - this.hovered.selected = !this.hovered.selected; - }else{ - this.selected = this.hovered; - } - this.repaint(); - } - }; - _.touchstart = function(e){ - // try to hover an element - this.mousemove(e); - }; - _.mousemove = function(e) { - let x = e.p.x; - let y = e.p.y; - this.hovered = undefined; - for ( let i = 0, ii = this.cells.length; i < ii; i++) { - let c = this.cells[i]; - if (math.isBetween(x, c.x, c.x + c.dimension) && math.isBetween(y, c.y, c.y + c.dimension)) { - this.hovered = c; - break; - } - } - this.repaint(); - }; - _.mouseout = function(e) { - this.hovered = undefined; - this.repaint(); - }; - -})(ChemDoodle, ChemDoodle.extensions, ChemDoodle.math, document); - -(function(io, document, window, undefined) { - 'use strict'; - io.png = {}; - - io.png.string = function(canvas) { - // this will not work for WebGL canvases in some browsers - // to fix that you need to set the "preserveDrawingBuffer" to true when - // creating the WebGL context - // note that this will cause performance issues on some platforms and is - // therefore not done by default - return document.getElementById(canvas.id).toDataURL('image/png'); - }; - - io.png.open = function(canvas) { - window.open(this.string(canvas)); - }; - -})(ChemDoodle.io, document, window); - -(function(io, q, undefined) { - 'use strict'; - io.file = {}; - - // this function will only work with files from the same origin it is being - // called from, unless the receiving server supports XHR2 - io.file.content = function(url, callback) { - q.get(url, '', callback); - }; - -})(ChemDoodle.io, ChemDoodle.lib.jQuery); - -(function(c, iChemLabs, io, structures, q, location, undefined) { - 'use strict'; - iChemLabs.SERVER_URL = 'https://ichemlabs.cloud.chemdoodle.com/icl_cdc_v090000/WebHQ'; - - iChemLabs.inRelay = false; - iChemLabs.asynchronous = true; - - iChemLabs.INFO = { - userAgent : navigator.userAgent, - platform : navigator.platform, - v_cwc : c.getVersion(), - v_jQuery : q.fn.jquery, - // jQuery UI is not installed at this point, as it is linked after ChemDoodle.js, so this variable is set at that time (Sketcher-Package.js) - v_jQuery_ui : 'N/A' - }; - - let JSON_INTERPRETER = new io.JSONInterpreter(); - let queue = new structures.Queue(); - - iChemLabs._contactServer = function(call, content, options, callback, errorback) { - if (this.inRelay) { - queue.enqueue({ - 'call' : call, - 'content' : content, - 'options' : options, - 'callback' : callback, - 'errorback' : errorback - }); - } else { - iChemLabs.inRelay = true; - q.ajax({ - dataType : 'text', - type : 'POST', - data : JSON.stringify({ - 'call' : call, - 'content' : content, - 'options' : options, - 'info' : iChemLabs.INFO - }), - url : this.SERVER_URL, - success : function(data) { - let o = JSON.parse(data); - if (o.message) { - alert(o.message); - } - iChemLabs.inRelay = false; - if (callback && o.content && !o.stop) { - callback(o.content); - } - if (o.stop && errorback) { - errorback(); - } - if(!queue.isEmpty()){ - let next = queue.dequeue(); - iChemLabs._contactServer(next.call, next.content, next.options, next.callback, next.errorback); - } - }, - error : function(xhr, status, error) { - if(call!='checkForUpdates'){ - //alert('Call failed. Please try again. If you continue to see this message, please contact iChemLabs customer support.'); - } - iChemLabs.inRelay = false; - if (errorback) { - errorback(); - } - if(!queue.isEmpty()){ - let next = queue.dequeue(); - iChemLabs._contactServer(next.call, next.content, next.options, next.callback, next.errorback); - } - }, - xhrFields : { - withCredentials : true - }, - async : iChemLabs.asynchronous - }); - } - }; - - // undocumented, this call is for clients that have licensed cloud for their - // own servers - iChemLabs.authenticate = function(credential, options, callback, errorback) { - this._contactServer('authenticate', { - 'credential' : credential - }, options, function(content) { - callback(content); - }, errorback); - }; - - iChemLabs.balanceReaction = function(toBeBalanced, options, callback, errorback) { - let input = {}; - if(typeof(toBeBalanced) === 'string' || toBeBalanced instanceof String){ - input.equation = toBeBalanced; - }else{ - input.reaction = JSON_INTERPRETER.contentTo(toBeBalanced.molecules, toBeBalanced.shapes); - } - this._contactServer('balanceReaction', input, options, function(content) { - callback(content.result, content.message); - }, errorback); - }; - - iChemLabs.calculate = function(mol, options, callback, errorback) { - this._contactServer('calculate', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content); - }, errorback); - }; - - iChemLabs.createLewisDotStructure = function(mol, options, callback, errorback) { - this._contactServer('createLewisDot', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.generateImage = function(mol, options, callback, errorback) { - this._contactServer('generateImage', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content.link); - }, errorback); - }; - - iChemLabs.generateIUPACName = function(mol, options, callback, errorback) { - this._contactServer('generateIUPACName', { - 'mol' : JSON_INTERPRETER.molTo(mol) - }, options, function(content) { - callback(content.iupac); - }, errorback); - }; - - iChemLabs.getMoleculeFromContent = function(input, options, callback, errorback) { - this._contactServer('getMoleculeFromContent', { - 'content' : input - }, options, function(content) { - let z = false; - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - if (content.mol.a[i].z !== 0) { - z = true; - break; - } - } - if (z) { - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - content.mol.a[i].x /= 20; - content.mol.a[i].y /= 20; - content.mol.a[i].z /= 20; - } - } - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.getMoleculeFromDatabase = function(query, options, callback, errorback) { - this._contactServer('getMoleculeFromDatabase', { - 'query' : query - }, options, function(content) { - if (options.dimension === 3) { - for ( let i = 0, ii = content.mol.a.length; i < ii; i++) { - content.mol.a[i].x /= 20; - content.mol.a[i].y /= -20; - content.mol.a[i].z /= 20; - } - } - callback(JSON_INTERPRETER.molFrom(content.mol)); - }, errorback); - }; - - iChemLabs.getOptimizedPDBStructure = function(id, options, callback, errorback) { - this._contactServer('getOptimizedPDBStructure', { - 'id' : id - }, options, function(content) { - let mol; - if (content.mol) { - mol = JSON_INTERPRETER.molFrom(content.mol); - } else { - mol = new structures.Molecule(); - } - mol.chains = JSON_INTERPRETER.chainsFrom(content.ribbons); - // adjust chain arrows for new desktop API - for(let i = 0, ii = mol.chains.length; i 0 - - width: parent.width - height: count > 0 ? - EaStyle.Sizes.tableRowHeight * (Math.min(count, maxRowCountShow) + 1 ) : - EaStyle.Sizes.tableRowHeight * (Math.min(count, maxRowCountShow) + 2 ) - - clip: true - headerPositioning: ListView.OverlayHeader - boundsBehavior: Flickable.StopAtBounds - - // Highlight current row - highlightMoveDuration: EaStyle.Sizes.tableHighlightMoveDuration - highlight: Rectangle { - z: 2 // To display highlight rect above delegate - color: listView.count > 1 ? EaStyle.Colors.tableHighlight : "transparent" - } - - // Default info, if no rows added - Rectangle { - visible: model.count === 0 - - width: listView.width - height: EaStyle.Sizes.tableRowHeight * 2 - - color: EaStyle.Colors.themeBackground - Behavior on color { EaAnimations.ThemeChange {} } - - EaElements.Label { - id: defaultInfoLabel - - anchors.verticalCenter: parent.verticalCenter - leftPadding: EaStyle.Sizes.fontPixelSize - } - } - - // Table border - Rectangle { - anchors.fill: parent - - color: "transparent" - - border.color: EaStyle.Colors.appBarComboBoxBorder - Behavior on border.color { EaAnimations.ThemeChange {} } - } - - // Create table header - onCountChanged: { - if (header !== null) - return - if (count > 0) { - header = createHeader() - positionViewAtBeginning() - } - } - - // Save/restore current view and index - onModelStatusChanged: { - // Save current view and index before xml model changed - if (modelStatus === XmlListModel.Loading) { - lastOriginY = originY - lastContentY = contentY - lastCurrentIndex = currentIndex - // Restore current index after xml model changed - } else if (modelStatus === XmlListModel.Ready) { - highlightMoveDuration = 0 - currentIndex = lastCurrentIndex - highlightMoveDuration = EaStyle.Sizes.tableHighlightMoveDuration - } - } - - // Restore current view after xml model changed - onOriginYChanged: contentY = originY + (lastContentY - lastOriginY) - - // Default current index - Component.onCompleted: currentIndex = 0 - - // Logic - - function createHeader() { - const tableViewDelegate = listView.contentItem.children[0] - if (typeof tableViewDelegate === "undefined") - return null - - const firstTableRow = tableViewDelegate.children[0] - if (typeof firstTableRow === "undefined") - return null - - let qmlString = '' - const cells = firstTableRow.children - for (let cellIndex in cells) { - const alignmentTypes = { 1: 'Text.AlignLeft', 2: 'Text.AlignRight', 4: 'Text.AlignHCenter', 8: 'Text.AlignJustify' } - const horizontalAlignment = alignmentTypes[cells[cellIndex].horizontalAlignment] - const width = cells[cellIndex].width - const headerText = cells[cellIndex].headerText - qmlString += - "EaComponents.TableViewLabel { \n" + - `textFormat: Text.RichText \n` + - `text: '${headerText}' \n` + - `width: ${width} \n` + - `horizontalAlignment: ${horizontalAlignment} \n` + - "} \n" - } - - qmlString = - "import QtQuick 2.15 \n" + - "import easyApp.Gui.Components 1.0 as EaComponents \n" + - "Component { \n" + - "EaComponents.TableViewHeader { \n" + - `${qmlString}` + - "} \n" + - "} \n" - - const headerObj = Qt.createQmlObject(qmlString, listView) - - return headerObj - } - - /* - function calcFlexibleColumnWidth() { - const tableViewDelegate = listView.contentItem.children[0] - if (typeof tableViewDelegate === "undefined") - return - - const firstTableRow = tableViewDelegate.children[0] - if (typeof firstTableRow === "undefined") - return - - let fixedColumnsWidth = 0 - const cells = firstTableRow.children - for (let cellIndex in cells) - fixedColumnsWidth += cells[cellIndex].width - - const spacingWidth = EaStyle.Sizes.tableColumnSpacing * (cells.length - 1) - const allColumnWidth = listView.width - const flexibleColumnWidth = allColumnWidth - fixedColumnsWidth - spacingWidth - - return flexibleColumnWidth - } - - function updateFlexibleColumnWidth(width) { - const tableRows = listView.contentItem.children - for (let rowIndex in tableRows) { - const tableRow = tableRows[rowIndex].children[0] - if (typeof tableRow === "undefined") - return - - const cells = tableRow.children - for (let cellIndex in cells) - if (cells[cellIndex].width === 0) - cells[cellIndex].width = width - } - } - */ - - } - -} diff --git a/easyApp/Gui/Components/TableViewButton.qml b/easyApp/Gui/Components/TableViewButton.qml deleted file mode 100644 index c3f64ce0..00000000 --- a/easyApp/Gui/Components/TableViewButton.qml +++ /dev/null @@ -1,21 +0,0 @@ -import QtQuick 2.15 - -import easyApp.Gui.Elements 1.0 as EaElements -import easyApp.Gui.Style 1.0 as EaStyle - -EaElements.SideBarButton { - property string headerText: "" - property int horizontalAlignment: Text.AlignHCenter - - property int inset: 6 - - leftInset: inset / 2 - rightInset: inset / 2 - topInset: inset / 2 - bottomInset: inset / 2 - - y: -1 - - height: EaStyle.Sizes.tableRowHeight - width: EaStyle.Sizes.tableRowHeight -} diff --git a/easyApp/Gui/Components/TableViewDelegate.qml b/easyApp/Gui/Components/TableViewDelegate.qml deleted file mode 100644 index c7e1424e..00000000 --- a/easyApp/Gui/Components/TableViewDelegate.qml +++ /dev/null @@ -1,32 +0,0 @@ -import QtQuick 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations - -Rectangle { - default property alias contentRowData: contentRow.data - - width: parent === null ? 0 : parent.width - height: EaStyle.Sizes.tableRowHeight - - color: index % 2 ? - EaStyle.Colors.themeBackgroundHovered2 : - EaStyle.Colors.themeBackgroundHovered1 - Behavior on color { EaAnimations.ThemeChange {} } - - Row { - id: contentRow - - height: parent.height - spacing: EaStyle.Sizes.tableColumnSpacing - } - - // Highligh row on click - MouseArea { - anchors.fill: parent - onPressed: { - parent.ListView.view.currentIndex = index - mouse.accepted = false - } - } -} diff --git a/easyApp/Gui/Components/TableViewHeader.qml b/easyApp/Gui/Components/TableViewHeader.qml deleted file mode 100644 index 0056908a..00000000 --- a/easyApp/Gui/Components/TableViewHeader.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations - -Rectangle { - default property alias contentRowData: contentRow.data - - z: 2 // To display header above delegate - - width: parent === null ? 0 : parent.width - height: EaStyle.Sizes.tableRowHeight - - color: EaStyle.Colors.themeBackground - Behavior on color { EaAnimations.ThemeChange {} } - - Row { - id: contentRow - - height: parent.height - spacing: EaStyle.Sizes.tableColumnSpacing - } -} diff --git a/easyApp/Gui/Components/TableViewLabel.qml b/easyApp/Gui/Components/TableViewLabel.qml deleted file mode 100644 index 8bffbd5a..00000000 --- a/easyApp/Gui/Components/TableViewLabel.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick 2.15 - -import easyApp.Gui.Elements 1.0 as EaElements - -EaElements.Label { - property string headerText: "" - - height: parent.height - width: parent.height - - bottomInset: 4 - topInset: 4 - leftInset: 4 - rightInset: 4 - - anchors.verticalCenter: parent.verticalCenter - - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - - elide: Text.ElideMiddle -} diff --git a/easyApp/Gui/Elements/GroupBox.qml b/easyApp/Gui/Elements/GroupBox.qml deleted file mode 100644 index 573c5870..00000000 --- a/easyApp/Gui/Elements/GroupBox.qml +++ /dev/null @@ -1,185 +0,0 @@ -import QtQuick 2.15 -//import QtGraphicalEffects 1.13 -import QtQuick.Templates 2.15 as T -//import QtQuick.Controls 2.15 -//import QtQuick.Controls.impl 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations - -T.GroupBox { - id: control - - default property alias contentItemData: contentItem.data - property bool collapsible: true - property bool collapsed: collapsible ? true : false - property bool last: false - - implicitWidth: parent.width - //Math.max(parent.width, - //titleArea.implicitWidth + leftPadding + rightPadding, - //contentItem.implicitWidth + leftPadding + rightPadding) - implicitHeight: titleArea.implicitHeight + contentItem.height + spacing - + topPadding + bottomPadding - - spacing: 0 // between title and content - padding: 0 - topPadding: 0 - bottomPadding: 0 - leftPadding: 0 - rightPadding: 0 - - title: "Untitled group" - //width: parent.width - - // Title area - label: Button { - id: titleArea - - enabled: collapsible - - implicitHeight: EaStyle.Sizes.tabBarHeight - width: label.width - - topInset: 0 - bottomInset: 0 - - checkable: false - flat: true - - // Custom icon - Label { - id: icon - - width: font.pixelSize - 1 - - anchors.verticalCenter: parent.verticalCenter - anchors.left: titleArea.left - anchors.leftMargin: EaStyle.Sizes.fontPixelSize * 0.75 - - font.family: EaStyle.Fonts.iconsFamily - font.pixelSize: EaStyle.Sizes.fontPixelSize * 0.7 - - text: collapsible ? "play" : "circle" - - color: foregroundColor() - Behavior on color { EaAnimations.ThemeChange {} } - - transform: Rotation { - id: iconRotation - - origin.x: icon.width * 0.5 - origin.y: icon.height * 0.5 - - Component.onCompleted: collapsed ? angle = 0 : angle = 90 - } - } - - // Custom text label - contentItem: null // reimplemented as label to support above icon rotation animation - Label { - id: label - - anchors.verticalCenter: parent.verticalCenter - anchors.left: icon.right - anchors.leftMargin: EaStyle.Sizes.fontPixelSize * 0.75 - - font.family: EaStyle.Fonts.fontFamily - font.pixelSize: EaStyle.Sizes.fontPixelSize - //font.bold: true - - text: control.title - - color: foregroundColor() - Behavior on color { EaAnimations.ThemeChange {} } - } - - //Mouse area to react on click events - MouseArea { - id: rippleArea - anchors.fill: parent - hoverEnabled: true - onPressed: mouse.accepted = false - } - - // On clicked animation - onClicked: collapsionAnimo.restart() - } - - // Content area - background: Column { - id: contentItem - - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - - anchors.leftMargin: icon.anchors.leftMargin - anchors.rightMargin: anchors.leftMargin - - topPadding: EaStyle.Sizes.fontPixelSize * 0.5 - bottomPadding: anchors.leftMargin * 1.5 - leftPadding: icon.width * 0.5 - rightPadding: 0 - - spacing: EaStyle.Sizes.sideBarPadding - - //width: control.width - height: 0 - - clip: true - - onImplicitHeightChanged: collapsed ? height = 0 : height = implicitHeight - } - - // Horisontal border at the bottom - Rectangle { - visible: !last - - y: control.height - height - width: control.width - height: EaStyle.Sizes.borderThickness - - color: EaStyle.Colors.appBorder - Behavior on color { EaAnimations.ThemeChange {} } - } - - // Collapsion animation - ParallelAnimation { - id: collapsionAnimo - - NumberAnimation { - target: contentItem - property: "height" - to: collapsed ? contentItem.implicitHeight : 0 - duration: 150 - } - - NumberAnimation { - target: iconRotation - property: "angle" - to: collapsed ? 90 : 0 - duration: 150 - } - - onFinished: collapsed = !collapsed - } - - // Collapse when disabled - onEnabledChanged: { - if (!enabled && collapsible) { - collapsed = false - collapsionAnimo.restart() - } - } - - // Logic - - function foregroundColor() { - if (!control.enabled) - return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse) - return EaStyle.Colors.themeForegroundHovered - return EaStyle.Colors.themeForeground - } -} diff --git a/easyApp/Gui/Elements/GroupColumn.qml b/easyApp/Gui/Elements/GroupColumn.qml deleted file mode 100644 index 4c2b3d93..00000000 --- a/easyApp/Gui/Elements/GroupColumn.qml +++ /dev/null @@ -1,10 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Controls.Material 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle - -Column { - width: parent.width - spacing: EaStyle.Sizes.groupBoxSpacing -} diff --git a/easyApp/Gui/Elements/GroupRow.qml b/easyApp/Gui/Elements/GroupRow.qml deleted file mode 100644 index 0a3749b1..00000000 --- a/easyApp/Gui/Elements/GroupRow.qml +++ /dev/null @@ -1,10 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Controls.Material 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle - -Row { - width: parent.width - spacing: EaStyle.Sizes.groupBoxSpacing -} diff --git a/easyApp/Gui/Elements/Parameter.qml b/easyApp/Gui/Elements/Parameter.qml deleted file mode 100644 index 481941b0..00000000 --- a/easyApp/Gui/Elements/Parameter.qml +++ /dev/null @@ -1,31 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements - -EaElements.TextField { - id: control - - property string units: "" - - rightPadding: unitsPlaceholder.width - - PlaceholderText { - id: unitsPlaceholder - - x: control.width - width - anchors.verticalCenter: control.verticalCenter - leftPadding: EaStyle.Sizes.fontPixelSize * 0.5 - rightPadding: EaStyle.Sizes.fontPixelSize * 0.75 - - font: control.font - color: control.placeholderTextColor - - text: units - textFormat: Text.RichText - } -} diff --git a/easyApp/Gui/Elements/RadioButton.qml b/easyApp/Gui/Elements/RadioButton.qml deleted file mode 100644 index bfb922b9..00000000 --- a/easyApp/Gui/Elements/RadioButton.qml +++ /dev/null @@ -1,87 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 - -import Globals 1.0 as Globals -import Templates.Animations 1.0 as Animations -import Templates.Controls 1.0 - -T.RadioButton { - id: control - - property color color: Globals.Colors.themeAccent - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - //spacing: 8 - //padding: 8 - //verticalPadding: padding + 6 - - spacing: Globals.Sizes.fontPixelSize * 0.5 - padding: Globals.Sizes.fontPixelSize * 0.5 - verticalPadding: padding + Globals.Sizes.fontPixelSize * 0.5 - - indicator: RadioIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - - border.color: control.color - Behavior on border.color { - Animations.ThemeChange {} - } - - Rectangle { - z: -1 - anchors.centerIn: parent - - //implicitWidth: Globals.Sizes.toolButtonHeight - //implicitHeight: Globals.Sizes.toolButtonHeight - width: Globals.Sizes.touchSize - height: Globals.Sizes.touchSize - - //radius: Globals.Sizes.toolButtonHeight * 0.5 - radius: height * 0.5 - - color: rippleArea.containsMouse ? - (rippleArea.containsPress ? // TODO: fix this, as currently containsPress is not catched because of onPressed: mouse.accepted = false - Globals.Colors.appBarButtonBackgroundPressed : - Globals.Colors.appBarButtonBackgroundHovered) : - Globals.Colors.appBarButtonBackground - Behavior on color { - PropertyAnimation { - duration: rippleArea.containsMouse ? 500 : 0 //Globals.Variables.themeChangeTime - alwaysRunToEnd: true - easing.type: Easing.OutCubic - } - } - - MouseArea { - id: rippleArea - anchors.fill: parent - hoverEnabled: true - onPressed: mouse.accepted = false - } - } - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing - Globals.Sizes.fontPixelSize * 0.2 : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - - color: control.enabled ? - Globals.Colors.themeForeground : - Globals.Colors.themeForegroundDisabled // control.Material.foreground : control.Material.hintTextColor - Behavior on color { - Animations.ThemeChange {} - } - } -} diff --git a/easyApp/Gui/Elements/RadioIndicator.qml b/easyApp/Gui/Elements/RadioIndicator.qml deleted file mode 100644 index 41bfc321..00000000 --- a/easyApp/Gui/Elements/RadioIndicator.qml +++ /dev/null @@ -1,51 +0,0 @@ -import QtQuick 2.15 - -import Globals 1.0 as Globals -import Templates.Animations 1.0 as Animations -import Templates.Controls 1.0 - -Rectangle { - id: indicator - - implicitWidth: Globals.Sizes.fontPixelSize - implicitHeight: Globals.Sizes.fontPixelSize - - radius: width / 2 - - color: "transparent" - border.width: Globals.Sizes.fontPixelSize / 8 - - /* - border.color: !control.enabled ? - Globals.Colors.themeForegroundDisabled : - control.checked || control.down ? - Globals.Colors.themeAccent : - Globals.Colors.themeForeground - */ - /* - Behavior on border.color { - Animations.ThemeChange {} - } - */ - - property Item control - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - - width: Globals.Sizes.fontPixelSize * 0.6 - height: Globals.Sizes.fontPixelSize * 0.6 - - radius: width / 2 - - visible: indicator.control.checked || indicator.control.down - - color: parent.border.color - /* - Behavior on color { - Animations.ThemeChange {} - } - */ - } -} diff --git a/easyApp/Gui/Elements/RemoteController.qml b/easyApp/Gui/Elements/RemoteController.qml deleted file mode 100644 index 5991ed9d..00000000 --- a/easyApp/Gui/Elements/RemoteController.qml +++ /dev/null @@ -1,333 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtGraphicalEffects 1.12 -import QtMultimedia 5.14 -import QtTest 1.14 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Elements 1.0 as EaElements - -Item { - id: rc - - property string audioDir: "" - property bool audioEnabled: true - - parent: Overlay.overlay - anchors.fill: parent - z: 9999 - - /* - focus: true - onFocusChanged: { - focus = true - print("*** rc focus", focus) - } - - Keys.onPressed: { - print("--event.key--", event.key) - if (event.key === Qt.Key_Escape) { - visible = false - } else { - event.accepted = false - } - } - */ - - TestUtil { id: util } - TestResult { id: result } - TestEvent { id: event } - - EaElements.RemotePointer { id: pointer } - - EaElements.Button { - visible: rc.visible - - anchors.bottom: parent.bottom - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottomMargin: EaStyle.Sizes.statusBarHeight - 0.5 * height - - height: EaStyle.Sizes.sideBarButtonHeight - padding: EaStyle.Sizes.fontPixelSize - - background: Rectangle { - radius: 2 - color: EaStyle.Colors.mainContentBackground - - layer.enabled: true - layer.effect: DropShadow { - radius: 15 - samples: 50 - color: EaStyle.Colors.toolTipBorder - } - } - - text: qsTr("Stop tutorial") - onClicked: { - rc.hidePointer() - rc.visible = false - } - } - - Audio { - id: audio - - onDurationChanged: { - play() - wait(audio.duration) - } - } - - Timer { - id: saveScreenshots - - property int i: 1 - property int fps: EaGlobals.Variables.projectConfig.ci.app.tutorials.video.fps - property string screenshotsDir: EaGlobals.Variables.projectConfig.ci.project.subdirs.screenshots - - running: EaGlobals.Variables.saveScreenshotsRunning - - interval: 1000 / fps - repeat: true - - onTriggered: { - const fname = ("00000" + i++).slice(-6) - const fpath = screenshotsDir + "/" + fname + ".png" - saveScreenshot(rc, fpath) - } - } - - // Controller Logic - - function say(text) { - if (!visible) - return - if (!audioEnabled) - return - if (text === "") - return - const fileName = text.replace(/ /g, "_") - audio.source = `${audioDir}/${fileName}.mp3` - wait(1000) // Needed for smooth pointer movement - } - - function saveScreenshot(item, path) { - if (!visible) - return - const image = result.grabImage(item) - image.save(path) - } - - function wait(ms) { - if (!visible) - return - result.wait(ms) - } - - function posToCenter() { - if (!visible) - return - pointer.posX = rc.width / 2 - pointer.minSize / 2 - pointer.posY = rc.height / 2 - pointer.minSize / 2 - mouseMove(rc) - } - - function showPointer() { - if (!visible) - return - pointer.show() - wait(pointer.showHideDuration) - } - - function hidePointer() { - if (!visible) - return - pointer.hide() - wait(pointer.showHideDuration) - } - - function pointerMove(item, x, y, delay, buttons) { - if (!visible) - return - if (item === undefined) { - print("Undefined item") - return - } - - if (x === undefined) - x = item.width / 2 - if (y === undefined) - y = item.height / 2 - if (delay === undefined) - delay = -1 - if (buttons === undefined) - buttons = Qt.NoButton - - const pos = item.mapToItem(null, x, y) - pointer.move(pos.x, pos.y) - } - - function mousePress(item, x, y, button, modifiers, delay) { - if (!visible) - return - if (item === undefined) { - print("Undefined item") - return - } - - if (x === undefined) - x = item.width / 2 - if (y === undefined) - y = item.height / 2 - if (button === undefined) - button = Qt.LeftButton - if (modifiers === undefined) - modifiers = Qt.NoModifier - if (delay === undefined) - delay = -1 - - //event.mouseMove(item, x, y, button, modifiers, delay) - //event.mouseRelease(item, x, y, button, modifiers, delay) - event.mousePress(item, x, y, button, modifiers, delay) - pointer.click() - } - - function mouseRelease(item, x, y, button, modifiers, delay) { - if (!visible) - return - if (item === undefined) { - print("Undefined item") - return - } - - if (x === undefined) - x = item.width / 2 - if (y === undefined) - y = item.height / 2 - if (button === undefined) - button = Qt.LeftButton - if (modifiers === undefined) - modifiers = Qt.NoModifier - if (delay === undefined) - delay = -1 - - event.mouseRelease(item, x, y, button, modifiers, delay) - } - - function mouseClick(item, x, y) { - if (!visible) - return - pointerMove(item, x, y) - wait(pointer.moveDuration) - mouseMove(item) - - wait(500) - - mousePress(item, x, y) - wait(pointer.pressDuration) - mouseRelease(item, x, y) - wait(pointer.clickRelaxation - pointer.pressDuration) - - wait(500) - } - - function mouseLeftClickSilent(item) { - if (!visible) - return - if (item === undefined) { - print("Undefined item") - return - } - const x = item.width / 2 - const y = item.height / 2 - const button = Qt.LeftButton - const modifiers = Qt.NoModifier - const delay = -1 - - event.mouseClick(item, x, y, button, modifiers, delay) - } - - function mouseRightClickSilent(item) { - if (!visible) - return - if (item === undefined) { - print("Undefined item") - return - } - const x = item.width / 2 - const y = item.height / 2 - const button = Qt.RightButton - const modifiers = Qt.NoModifier - const delay = -1 - - event.mouseClick(item, x, y, button, modifiers, delay) - } - - function mouseMove(item) { - if (!visible) - return - if (item === undefined) { - print("Undefined item") - return - } - const x = item.width / 2 - const y = item.height / 2 - const button = Qt.NoButton - const delay = -1 - - event.mouseMove(item, x, y, delay, button) - } - - function mouseWheel(item) { - if (!visible) - return - if (item === undefined) { - print("Undefined item") - return - } - const x = item.width / 2 - const y = item.height / 2 - const xDelta = 0 - const yDelta = 120 // 120 units * 1/8 = 15 degrees - const button = Qt.NoButton - const modifiers = Qt.NoModifier - const delay = -1 - - event.mouseWheel(item, x, y, button, modifiers, xDelta, yDelta, delay) // ? - } - - function typeText(text) { - if (!visible) - return - const modifiers = Qt.NoModifier - const delay = -1 - for (const c of text) { - event.keyClickChar(c, modifiers, delay) - wait(100) - } - } - - function deleteCharacters(count) { - if (!visible) - return - const modifiers = Qt.NoModifier - const delay = -1 - const key = Qt.Key_Backspace//Key_Clear//Key_Delete - while (count > 0) { - event.keyClick(key, modifiers, delay) - wait(100) - count -= 1 - } - } - - function keyClick(key) { - if (!visible) - return - const modifiers = Qt.NoModifier - const delay = -1 - event.keyClick(key, modifiers, delay) - wait(500) - } - -} diff --git a/easyApp/Gui/Elements/StatusBar.qml b/easyApp/Gui/Elements/StatusBar.qml deleted file mode 100644 index dde0a33b..00000000 --- a/easyApp/Gui/Elements/StatusBar.qml +++ /dev/null @@ -1,67 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements - -Rectangle { - id: statusBar - - property alias model: listView.model - property alias fittingInProgress: fittingInProgressLabel.running - - width: parent.width - height: parent.height - - color: EaStyle.Colors.statusBarBackground - Behavior on color { EaAnimations.ThemeChange {} } - - // Status bar main content - ListView { - id: listView - - width: statusBar.width - height: statusBar.height - spacing: EaStyle.Sizes.fontPixelSize - orientation: ListView.Horizontal - - model: ListModel { - ListElement { - label: "Label1" - value: "Value1" - } - ListElement { - label: "Label2" - value: "Value2" - } - } - - delegate: EaElements.Label { - topPadding: (statusBar.height - 3 / 2 * font.pixelSize) * 0.5 - leftPadding: font.pixelSize - color: EaStyle.Colors.statusBarForeground - text: model.label + ": " + model.value - } - } - - // Fitting label - EaElements.RunningLabel { - id: fittingInProgressLabel - text: "Fitting in progress" - ///running: !ExGlobals.Constants.proxy.fitting.isFitFinished - } - - // Status bar top border - Rectangle { - anchors.top: statusBar.top - anchors.left: statusBar.left - anchors.right: statusBar.right - - height: 1//EaStyle.Sizes.borderThickness - - color: EaStyle.Colors.appBarBorder - Behavior on color { EaAnimations.ThemeChange {} } - } - -} diff --git a/easyApp/Gui/Elements/TextInput.qml b/easyApp/Gui/Elements/TextInput.qml deleted file mode 100644 index d793f4e9..00000000 --- a/easyApp/Gui/Elements/TextInput.qml +++ /dev/null @@ -1,38 +0,0 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements - -TextInput { - id: control - - selectByMouse: true - - font.family: EaStyle.Fonts.fontFamily - font.pixelSize: EaStyle.Sizes.fontPixelSize - font.bold: control.activeFocus ? true : false - - color: !enabled ? EaStyle.Colors.themeForegroundDisabled : - rippleArea.containsMouse || control.activeFocus ? EaStyle.Colors.themeForegroundHovered : - EaStyle.Colors.themeForeground - Behavior on color { EaAnimations.ThemeChange {} } - - selectionColor: EaStyle.Colors.themeAccent - Behavior on selectionColor { EaAnimations.ThemeChange {} } - - selectedTextColor: EaStyle.Colors.themeBackground - Behavior on selectedTextColor { EaAnimations.ThemeChange {} } - - cursorDelegate: EaElements.CursorDelegate { } - - //Mouse area to react on click events - MouseArea { - id: rippleArea - anchors.fill: control - hoverEnabled: true - onPressed: mouse.accepted = false - } - -} diff --git a/easyApp/Gui/Globals/Variables.qml b/easyApp/Gui/Globals/Variables.qml deleted file mode 100644 index 91ed68e5..00000000 --- a/easyApp/Gui/Globals/Variables.qml +++ /dev/null @@ -1,60 +0,0 @@ -pragma Singleton - -import QtQuick 2.15 - -import easyApp.Gui.Logic 1.0 as EaLogic - -QtObject { - - // Python objects - readonly property bool isTestMode: typeof _isTestMode !== "undefined" && _isTestMode !== null ? - _isTestMode : - false - - readonly property var projectConfig: typeof _projectConfig !== "undefined" && _projectConfig !== null ? - _projectConfig : - EaLogic.ProjectConfig.projectConfig() - - readonly property var translator: typeof _translator !== "undefined" && _translator !== null ? - _translator : - new EaLogic.Translate.Translator() - - // Settings - readonly property string settingsFile: typeof _settingsPath !== "undefined" && _settingsPath !== null ? - _settingsPath : - 'settings.ini' - - // Application parameters - readonly property int appWindowFlags: Qt.Window | Qt.WindowFullscreenButtonHint // Qt.FramelessWindowHint | Qt.Dialog - - // Initial application elements visibility - property bool showAppBar: true - property bool showAppStatusBar: true - property bool showAppPreferencesDialog: false - property bool showAppAboutDialog: false - property bool showToolTips: true - property bool showUserGuides: false - property bool showProjectDescriptionDialog: false - - // Updater - property bool checkUpdateOnAppStart: isTestMode ? false : true - property var updater - - // Screenshots control - property bool saveScreenshotsRunning: false - - // Tab buttons - property var appearanceTab - property var promptsTab - - // App bar - property int appBarCurrentIndex: 0 - enum AppBarIndexEnum { - HomePageIndex = 0, - ProjectPageIndex = 1, - SamplePageIndex = 2, - ExperimentPageIndex = 3, - AnalysisPageIndex = 4, - SummaryPageIndex = 5 - } -} diff --git a/easyApp/Gui/Globals/qmldir b/easyApp/Gui/Globals/qmldir deleted file mode 100644 index 034f7814..00000000 --- a/easyApp/Gui/Globals/qmldir +++ /dev/null @@ -1,3 +0,0 @@ -module Globals - -singleton Variables 1.0 Variables.qml diff --git a/easyApp/Gui/Logic/Utils.js b/easyApp/Gui/Logic/Utils.js deleted file mode 100644 index 473104be..00000000 --- a/easyApp/Gui/Logic/Utils.js +++ /dev/null @@ -1,73 +0,0 @@ -function prettyXml(xml, tab = ' ') -{ - let formatted = '' - let indent = '' - - xml.split(/>\s*\r\n' - - if (node.match( /^]*[^\/]$/ )) - indent += tab - }) - - return formatted.substring(1, formatted.length-3); -} - -function prettyJson(json, tab = ' ') -{ - return JSON.stringify(json, null, tab.length) -} - -function toFixed(value, num_digits = 4) -{ - if (typeof value === 'undefined') - { - return "" - } - else if (typeof value == 'number') - { - return value.toFixed(num_digits) - } - else - { - return value - } -} - -function osPathSep() { - if (Qt.platform.os === "windows") { - return '\\' - } - return '/' -} - -// converts a URL to a local file path -function urlToLocalFile(url) -{ - if (Qt.platform.os === "windows") - { - return url.replace('file:///', '').split('/').join('\\') - } - else if (Qt.platform.os === "osx" || Qt.platform.os === "linux" || Qt.platform.os === "unix") - { - return url.replace('file://', '') - } - else - { - return url - } -} - -function isQmlScene() -{ - const runnerPath = Qt.application.arguments[0] - if (runnerPath.includes('qmlscene')) - { - return true - } - return false -} diff --git a/easyApp/Gui/Resources/Icons/description.txt b/easyApp/Gui/Resources/Icons/description.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/easyApp/Gui/Style/Colors.qml b/easyApp/Gui/Style/Colors.qml deleted file mode 100644 index c689b5cb..00000000 --- a/easyApp/Gui/Style/Colors.qml +++ /dev/null @@ -1,129 +0,0 @@ -pragma Singleton - -import QtQuick 2.15 -import QtQuick.Controls.Material 2.15 -import Qt.labs.settings 1.0 - -import easyApp.Gui.Globals 1.0 as EaGlobals - -QtObject { - id: object - - // Theme - enum Themes { LightTheme = 0, DarkTheme, SystemTheme } - property int theme: Colors.Themes.SystemTheme - property bool isSystemThemeDark: typeof _isSystemThemeDark === 'undefined' || - _isSystemThemeDark === null ? - false : - _isSystemThemeDark - property bool isDarkTheme: { - if (theme === Colors.Themes.DarkTheme) { - return true - } else if (theme === Colors.Themes.LightTheme) { - return false - } else { - if (isSystemThemeDark) { - return true - } else { - return false - } - } - } - - property color themeAccent: isDarkTheme ? "#4ec1ef": "#00a3e3" - property color themePrimary: isDarkTheme ? "#111" : "#bbb" - - property color themeBackground: isDarkTheme ? "#303030" : "#e9e9e9" - property color themeBackgroundDisabled: isDarkTheme ? "#333" : "#e9e9e9" - property color themeBackgroundHovered1: isDarkTheme ? "#353535" : "#fefefe" - property color themeBackgroundHovered2: isDarkTheme ? "#3a3a3a" : "#f7f7f7" - - property color themeForeground: isDarkTheme ? "#eee" : "#333" - property color themeForegroundMinor: isDarkTheme ? "#888" : "#aaa" - property color themeForegroundDisabled: isDarkTheme ? "#555": "#bbb" // control.Material.hintTextColor - property color themeForegroundHovered: themeAccent - property color themeForegroundHighlight: isDarkTheme ? '#FFAB91' : '#FF5722' - - // Application window - property color appBorder: isDarkTheme ? "#292929" : "#ddd" - - // Application bar (on top of the application window) - property color appBarBackground: themeBackground - property color appBarForeground: isDarkTheme ? "#eee" : "#222" - property color appBarBorder: isDarkTheme ? "#2e2e2e" : "#d6d6d6" - - property color appBarButtonBackground: "transparent" - property color appBarButtonBackgroundDisabled: "transparent" - property color appBarButtonBackgroundHovered: isDarkTheme ? "#20666666" : "#15666666" // temporary disable because of problems with RemoteController if parent: Overlay.overlay !? - property color appBarButtonBackgroundPressed: isDarkTheme ? "#50666666" : "#25666666" - property color appBarButtonForeground: isDarkTheme ? "#ccc" : "#444" - - property color appBarComboBoxBackground: isDarkTheme ? "#10666666" : "#70ffffff" - property color appBarComboBoxBackgroundHovered: isDarkTheme ? "#50666666" : "#bbffffff" - property color appBarComboBoxBackgroundPressed: isDarkTheme ? "#90666666" : "#ffffffff" - property color appBarComboBoxBorder: isDarkTheme ? Qt.darker(appBarBackground, 1.1) : Qt.darker(appBarBackground, 1.05) - - // Content - property color contentBackground: isDarkTheme ? "#3a3a3a" : "#f4f4f4" - property color mainContentBackground: isDarkTheme ? "#444" : "#fff" - - // SideBar - property color sideBarButtonBackground: appBarBackground - property color sideBarButtonBackgroundHovered: isDarkTheme ? "#50666666" : "#e0e0e0" - property color sideBarButtonBackgroundPressed: isDarkTheme ? "#50666666" : "#ccc" - property color sideBarButtonForeground: isDarkTheme ? "#ccc" : "#444" - - // Status bar - readonly property color statusBarBackground: appBarBackground - readonly property color statusBarForeground: isDarkTheme ? "#aaa" : "#666" - - // Dialogs - property color dialogBackground: contentBackground//themeBackground - property color dialogOutsideBackground: isDarkTheme ? "#80000000" : "#80ffffff" - property color dialogForeground: themeForeground - - // TextView - property color textViewForeground: themeForeground - property color textViewForegroundDisabled: themeForegroundDisabled - property color textViewBackground: themeBackgroundHovered1 - property color textViewBackgroundDisabled: themeBackgroundHovered2 - - // Text - property color link: themeAccent - property color linkHovered: isDarkTheme ? Qt.darker(themeAccent, 1.1) : Qt.lighter(themeAccent, 1.15) - - // Charts - //property var chartForegrounds: ['#00a3e3', '#ff7f50', '#6b8e23'] - property var chartForegrounds: isDarkTheme ? ['#EF9A9A', '#B0BEC5', '#C5E1A5'] : ['#F44336', '#607D8B', '#8BC34A'] // red (M), blue grey (M), light green (M) - property var chartForegroundsExtra: isDarkTheme ? ['#FFCC80', '#A5D6A7', '#81D4FA'] : ['#FF9800', '#4CAF50', '#03A9F4'] // orange (M), green (M), light blue (M) - property color chartForeground: themeForeground - property color chartBackground: mainContentBackground - property color chartPlotAreaBackground: mainContentBackground - property color chartAxis: isDarkTheme ? "#2a2a2a" : "#ddd" - property color chartGridLine: isDarkTheme ? "#3a3a3a" : "#eee" - property color chartMinorGridLine: themeBackground - property color chartLabels: chartForeground - property color chartLine: "coral" - - // Table - property color tableHighlight: isDarkTheme ? "#204ec1ef": "#2000a3e3" - - // ToolTip - property color toolTipBackground: mainContentBackground - property color toolTipBorder: appBarBorder - - // Colors - property color blue: isDarkTheme ? '#81D4FA' : '#39abdf' - property color red: isDarkTheme ? '#FFAB91' : '#FF5722' - property color green: isDarkTheme ? '#C5E1A5' : '#7aaa42' - property color grey: isDarkTheme ? "#777": "#bbb" - - // Persistent settings - - property var settings: Settings { - fileName: EaGlobals.Variables.settingsFile - category: 'Appearance' - property alias theme: object.theme - } - -} diff --git a/easyApp/Logic/Logging.py b/easyApp/Logic/Logging.py deleted file mode 100644 index 3701c932..00000000 --- a/easyApp/Logic/Logging.py +++ /dev/null @@ -1,48 +0,0 @@ -__author__ = "github.com/AndrewSazonov" -__version__ = "0.0.1" - -import os -import sys -import tempfile -import logging - - -class StreamToLogger(object): - """ - Fake file-like stream object that redirects writes to a logger instance. - """ - def __init__(self, logger, log_level): - self.logger = logger - self.log_level = log_level - self.linebuf = '' - - def flush(self): - pass - - def write(self, buf): - for line in buf.rstrip().splitlines(): - self.logger.log(self.log_level, line.rstrip()) - -# Remove old log -log_filepath = os.path.join(tempfile.gettempdir(), 'easydiffraction.log') -print(f'Log file: {log_filepath}') -if os.path.exists(log_filepath): - os.remove(log_filepath) - -# Logging config -logging.basicConfig( - level=logging.WARNING, - format='%(asctime)s %(levelname)8s %(name)-10s %(filename)-15s %(funcName)-20s %(lineno)4d %(message)s', - filename=log_filepath, - filemode="w" -) - -# Stdout -> logging -stdout_logger = logging.getLogger('stdout') -sl = StreamToLogger(stdout_logger, logging.WARNING) -sys.stdout = sl - -# Stderr -> logging -stderr_logger = logging.getLogger('stderr') -sl = StreamToLogger(stderr_logger, logging.ERROR) -sys.stderr = sl diff --git a/easyApp/__init__.py b/easyApp/__init__.py deleted file mode 100644 index eae7a7e4..00000000 --- a/easyApp/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = "github.com/AndrewSazonov" diff --git a/examples/AdvancedPy/LICENSE b/examples/AdvancedPy/LICENSE new file mode 100644 index 00000000..056a3c1e --- /dev/null +++ b/examples/AdvancedPy/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2024, EasyApp contributors (https://github.com/easyscience/EasyApp). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/AdvancedPy/README.md b/examples/AdvancedPy/README.md new file mode 100644 index 00000000..c36a7a12 --- /dev/null +++ b/examples/AdvancedPy/README.md @@ -0,0 +1,123 @@ +## Structure of the _AdvancedPy_ example + +### Without the full structure of the application pages + +```sh +🗂️ AdvancedPy # Current example +├── LICENSE # Project license file +├── pyproject.toml # Configuration file used to build the Python package +├── README.md # Current file that introduces and explains a project +│ +└── 🗂️ src # Source code + ├── AdvancedPy.qmlproject # QML project for the Qt Creator IDE + ├── AdvancedPy.pyproject # Python project for the Qt Creator IDE + │ + └── 🗂️ AdvancedPy # Directory with the name of the current Python package + ├── __init__.py # Executed when the current Python package is imported + ├── main.qml # Root QML component + ├── main.py # Root Python file + │ + ├── 🗂️ Backends # Backend logic + │ ├── MockBackend.qml # Parent object for all other objects with mock QML logic + │ ├── 🗂️ MockQml # Mock QML backend to be used if no python backend is defined + │ │ ├── qmldir + │ │ ├── Status.qml # Mock logic for the status bar + │ │ ├── Project.qml # Mock logic for the application page 'Project' + │ │ └── Report.qml # Mock logic for the application page 'Report' + │ │ + │ ├── real_backend.py # Parent object for all other objects with real python logic + │ └── 🗂️ real_py # Real Python backend + │ ├── status.py # Logic for the status bar (QObject-based) + │ ├── project.py # Logic for the application page 'Project' (QObject-based) + │ ├── report.py # Logic for the application page 'Report' (QObject-based) + │ │ + │ └── 🗂️ logic # Pure Python logic (not QObject-based) + │ └── helpers.py # Some helper functions + │ + └── 🗂️ Gui # Frontend GUI components + ├── qmldir + ├── ApplicationWindow.qml # Top-level application window + ├── StatusBar.qml # Status bar + │ + ├── 🗂️ Globals # Globally accessible objects + │ ├── qmldir + │ ├── ApplicationInfo.qml # Name, version and other information about the application + │ ├── BackendWrapper.qml # Layer between the backend proxy and GUI objects + │ └── References.qml # QML object ids to globally access the desired objects + │ + (*) ├── 🗂️ Pages # Application pages + │ ├── 🗂️ Home # Components of the application page 'Home' + │ ├── 🗂️ Project # Components of the application page 'Project' + │ └── 🗂️ Report # Components of the application page 'Report' + │ + └── 🗂️ Resources + └── 🗂️ Logos # Logos of the application and contributors + +(*) Full structure of the 'Pages' directory is shown below +``` + +### Structure of the application pages only + +```sh +🗂️ Pages +│ +├── 🗂️ Home # Components of the application 'Home' page +│ ├── Content.qml +│ │ +│ └── 🗂️ Popups +│ └── About.qml +│ +├── 🗂️ Project # Components of the application 'Project' page +│ ├── Layout.qml # Layout of the whole page +│ │ +│ ├── 🗂️ MainArea # Tabs of the main area +│ │ └── Description.qml +│ │ +│ └── 🗂️ Sidebar # Tabs of the sidebar +│ │ +│ ├── 🗂️ Basic # Components of the sidebar tab with basic controls +│ │ ├── Layout.qml +│ │ │ +│ │ ├── 🗂️ Groups +│ │ │ ├── GetStarted.qml +│ │ │ ├── Examples.qml +│ │ │ └── Recent.qml +│ │ │ +│ │ └── 🗂️ Popups +│ │ ├── OpenCifFile.qml +│ │ └── ProjectDescription.qml +│ │ +│ ├── 🗂️ Extra # Components of the sidebar tab with extra controls +│ │ ├── Layout.qml +│ │ │ +│ │ └── 🗂️ Groups +│ │ └── Scrolling.qml +│ │ +│ └── 🗂️ Text # Components of the sidebar tab with text mode controls +│ └── Layout.qml +│ +└── 🗂️ Report # Components of the application 'Report' page + ├── Layout.qml # Layout of the whole page + │ + ├── 🗂️ MainArea # Tabs of the main area + │ └── Summary.qml + │ + └── 🗂️ Sidebar # Tabs of the sidebar + │ + ├── 🗂️ Basic # Components of the sidebar tab with basic controls + │ ├── Layout.qml + │ │ + │ └── 🗂️ Groups + │ └── Export.qml + │ + └── 🗂️ Extra # Components of the sidebar tab with extra controls + ├── Layout.qml + │ + └── 🗂️ Groups + └── Empty.qml +``` + +### Glossary + +* qmldir - Declares objects that can then be imported into other qml files. See +[doc.qt.io](https://doc.qt.io/qt-6/qtqml-modules-qmldir.html) for more details. diff --git a/examples/AdvancedPy/pyproject.toml b/examples/AdvancedPy/pyproject.toml new file mode 100644 index 00000000..6e7dcf64 --- /dev/null +++ b/examples/AdvancedPy/pyproject.toml @@ -0,0 +1,36 @@ +[build-system] +requires = ['hatchling'] +build-backend = 'hatchling.build' + +[project] +name = 'advancedpy' +version = '1.0.0' +description = 'Example of a desktop application of advanced complexity with Python backend and EasyApp-based GUI' +authors = [ + {name = 'Andrew Sazonov', email = 'andrew.sazonov@ess.eu'} +] +readme = 'README.md' +license = {file = 'LICENSE'} +classifiers = [ + 'Development Status :: 4 - Beta', + 'License :: OSI Approved :: BSD License', + 'Programming Language :: Python :: 3' +] +requires-python = '>=3.11' +dependencies = [ + 'numpy<2' +] + +[project.optional-dependencies] +ci = [ + 'validate-pyproject[all]', + 'build', + 'wheel' +] + +[project.urls] +homepage = 'https://github.com/EasyScience/EasyApp/tree/master/examples/AdvancedPy' + +[tool.hatch.build.targets.wheel] +packages = ['src/AdvancedPy'] +#artifacts = ['*.py', '*.qml', 'qmldir'] diff --git a/examples/AdvancedPy/scripts/create_python_wheel.sh b/examples/AdvancedPy/scripts/create_python_wheel.sh new file mode 100755 index 00000000..a66eb9b1 --- /dev/null +++ b/examples/AdvancedPy/scripts/create_python_wheel.sh @@ -0,0 +1,2 @@ +echo "\033[0;34m:::::: Creating python wheel in 'dist/wheel'\033[0m" +python3 -m build --wheel --outdir dist/wheel diff --git a/examples/AdvancedPy/scripts/install_from_wheel.sh b/examples/AdvancedPy/scripts/install_from_wheel.sh new file mode 100755 index 00000000..6b5f620e --- /dev/null +++ b/examples/AdvancedPy/scripts/install_from_wheel.sh @@ -0,0 +1,2 @@ +echo "\033[0;34m:::::: Installing python wheel from 'dist/wheel'\033[0m" +python3 -m pip install advancedpy --force-reinstall --find-links=dist/wheel diff --git a/examples/AdvancedPy/scripts/unpack_wheel.sh b/examples/AdvancedPy/scripts/unpack_wheel.sh new file mode 100755 index 00000000..a796a413 --- /dev/null +++ b/examples/AdvancedPy/scripts/unpack_wheel.sh @@ -0,0 +1,2 @@ +echo "\033[0;34m:::::: Unpacking python wheel from 'dist/wheel'\033[0m" +python3 -m wheel unpack dist/wheel/*.whl diff --git a/examples/AdvancedPy/src/AdvancedPy.pyproject b/examples/AdvancedPy/src/AdvancedPy.pyproject new file mode 100644 index 00000000..b0ef8565 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy.pyproject @@ -0,0 +1,44 @@ +{ + "files": [ + "AdvancedPy.qmlproject", + "AdvancedPy/main.py", + "AdvancedPy/main.qml", + "AdvancedPy/Gui/qmldir", + "AdvancedPy/Gui/ApplicationWindow.qml", + "AdvancedPy/Gui/StatusBar.qml", + "AdvancedPy/Gui/Globals/qmldir", + "AdvancedPy/Gui/Globals/ApplicationInfo.qml", + "AdvancedPy/Gui/Globals/BackendWrapper.qml", + "AdvancedPy/Gui/Globals/References.qml", + "AdvancedPy/Gui/Pages/Home/Content.qml", + "AdvancedPy/Gui/Pages/Home/Popups/About.qml", + "AdvancedPy/Gui/Pages/Project/Layout.qml", + "AdvancedPy/Gui/Pages/Project/MainArea/Description.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml", + "AdvancedPy/Gui/Pages/Project/Sidebar/Text/Layout.qml", + "AdvancedPy/Gui/Pages/Report/Layout.qml", + "AdvancedPy/Gui/Pages/Report/MainArea/Summary.qml", + "AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml", + "AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml", + "AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml", + "AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml", + "AdvancedPy/Backends/qmldir", + "AdvancedPy/Backends/MockBackend.qml", + "AdvancedPy/Backends/MockQml/Project.qml", + "AdvancedPy/Backends/MockQml/Report.qml", + "AdvancedPy/Backends/MockQml/Status.qml", + "AdvancedPy/Backends/MockQml/qmldir", + "AdvancedPy/Backends/real_backend.py", + "AdvancedPy/Backends/real_py/project.py", + "AdvancedPy/Backends/real_py/report.py", + "AdvancedPy/Backends/real_py/status.py", + "AdvancedPy/Backends/real_py/logic/helpers.py" + ] +} diff --git a/examples/AdvancedPy/src/AdvancedPy.qmlproject b/examples/AdvancedPy/src/AdvancedPy.qmlproject new file mode 100644 index 00000000..fff5b659 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy.qmlproject @@ -0,0 +1,41 @@ +import QmlProject 1.1 + +Project { + mainFile: "AdvancedPy/main.qml" + + // List of module and plugin directories passed to QML runtime + importPaths: [ + "AdvancedPy", + "../../../src", // EasyApp + ] + + // Include .qml files from specified directory and its subdirectories + QmlFiles { + directory: "AdvancedPy" + } + QmlFiles { + directory: "../../../src/EasyApp" + } + + // Include .js files from specified directory and its subdirectories + JavaScriptFiles { + directory: "AdvancedPy" + } + JavaScriptFiles { + directory: "../../../src/EasyApp" + } + + // Include Module Definition Files (qmldir), as well as .ts and .qrc + // from specified directory and its subdirectories + Files { + directory: "AdvancedPy" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + Files { + directory: "../../../src/EasyApp" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/MockBackend.qml b/examples/AdvancedPy/src/AdvancedPy/Backends/MockBackend.qml new file mode 100644 index 00000000..44da4805 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/MockBackend.qml @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +import Backends.MockQml as MockLogic + + +QtObject { + + property var project: MockLogic.Project + property var status: MockLogic.Status + property var report: MockLogic.Report + +} + + diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Project.qml b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Project.qml new file mode 100644 index 00000000..566751ba --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Project.qml @@ -0,0 +1,74 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + property bool created: false + + property string name: '' + + readonly property var info: { + 'description': '', + 'location': '', + 'creationDate': '' + } + + readonly property var examples: [ + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3 (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3-Raw (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Raw_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI, 2 phases', + 'name': 'La0.5Ba0.5CoO3-Mult-Phases (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Mult-Phases_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D20@ILL', + 'name': 'Co2SiO4 (D20)', + 'path': ':/Examples/Co2SiO4_D20@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, G41@LLB', + 'name': 'Dy3Al5O12 (G41)', + 'path': ':/Examples/Dy3Al5O12_G41@LLB/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D1A@ILL', + 'name': 'PbSO4 (D1A)', + 'path': ':/Examples/PbSO4_D1A@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, 3T2@LLB', + 'name': 'LaMnO3 (3T2)', + 'path': ':/Examples/LaMnO3_3T2@LLB/project.cif' + } + ] + + function create() { + console.debug(`Creating project '${name}'`) + info.creationDate = `${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}` + infoChanged() // this signal is not emitted automatically when only part of the object is changed + created = true + } + + function save() { + console.debug(`NOT IMPLEMENTED: Saving project '${name}'`) + } + + function editInfo(path, new_value) { + console.debug(`NOT IMPLEMENTED: Changing project info.${path} from '${info.path}' to '${new_value}'`) + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Report.qml b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Report.qml new file mode 100644 index 00000000..84132709 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Report.qml @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + property bool created: false + + readonly property string asHtml: ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Summary

Project information

NameLa0.5Ba0.5CoO3
Descriptionneutrons, powder, constant wavelength
No. of phases1
No. of experiments1

Crystal data

Phase datablocklbco
Crystal system, space groupcubic,  P m -3 m

Data collection

Experiment datablockhrpt
Radiation probeneutron
Measured range: min, max, inc (°)10.0,  164.85,  0.05
+ + +' + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Status.qml b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Status.qml new file mode 100644 index 00000000..452ca9e5 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/Status.qml @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property string project: 'Undefined' + readonly property string phasesCount: '1' + readonly property string experimentsCount: '1' + readonly property string calculator: 'CrysPy' + readonly property string minimizer: 'Lmfit (leastsq)' + readonly property string variables: '31 (3 free, 28 fixed)' + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/qmldir b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/qmldir new file mode 100644 index 00000000..7fb05624 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/MockQml/qmldir @@ -0,0 +1,5 @@ +module MockQml + +singleton Project Project.qml +singleton Report Report.qml +singleton Status Status.qml diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/qmldir b/examples/AdvancedPy/src/AdvancedPy/Backends/qmldir new file mode 100644 index 00000000..fdc15f20 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/qmldir @@ -0,0 +1,3 @@ +module Logic + +singleton MockBackend MockBackend.qml diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/real_backend.py b/examples/AdvancedPy/src/AdvancedPy/Backends/real_backend.py new file mode 100644 index 00000000..ad3c2cea --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/real_backend.py @@ -0,0 +1,69 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from PySide6.QtCore import QObject, Property + +from EasyApp.Logic.Logging import LoggerLevelHandler + +from .real_py.project import Project +from .real_py.status import Status +from .real_py.report import Report + + +class Backend(QObject): + def __init__(self): + super().__init__() + + #################### + # Private attributes + #################### + + # Individual Backend objects + self._project = Project() + self._status = Status() + self._report = Report() + + # Logger + self._logger = LoggerLevelHandler(self) + + ############# + # Connections + ############# + + # Connect the signals of various Backend objects to the methods of this class defined below. + # This allows, through the methods of this class, to update dependent objects, but keep them + # unaware of each other. + + # Project + self._project.nameChanged.connect(self.onProjectNameChanged) + self._project.createdChanged.connect(self.onProjectCreatedChanged) + + ########################## + # GUI accessible variables + ########################## + + @Property('QVariant', constant=True) + def project(self): + return self._project + + @Property('QVariant', constant=True) + def status(self): + return self._status + + @Property('QVariant', constant=True) + def report(self): + return self._report + + ################################## + # Functions related to connections + ################################## + + # Project + + def onProjectNameChanged(self): + self._status.project = self._project.name + self._report._asHtml = self._project.name + + def onProjectCreatedChanged(self): + self._report.created = self._project.created diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/logic/helpers.py b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/logic/helpers.py new file mode 100644 index 00000000..a439c4ef --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/logic/helpers.py @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +class IO: + + @staticmethod + def format_msg(type, *args): + types = {'main': '*', 'sub': ' -'} + mark = types[type] + widths = [22,21,20,10] + widths[0] -= len(mark) + msgs = [] + for idx, arg in enumerate(args): + msgs.append(f'{arg:<{widths[idx]}}') + msg = ' ▌ '.join(msgs) + msg = f'{mark} {msg}' + return msg + + +class DottyDict: + + @staticmethod + def get(obj, path): + *path, last = path.split(".") + for bit in path: + obj = obj.setdefault(bit, {}) + return obj[last] + + @staticmethod + def set(obj, path, value): + *path, last = path.split(".") + for bit in path: + obj = obj.setdefault(bit, {}) + obj[last] = value diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/project.py b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/project.py new file mode 100644 index 00000000..c8f4045d --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/project.py @@ -0,0 +1,131 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +import time +from pathlib import Path +from PySide6.QtCore import QObject, Signal, Slot, Property + +from EasyApp.Logic.Logging import console +from .logic.helpers import IO +from .logic.helpers import DottyDict + + +_INFO = { + 'description': '', + 'location': str(Path.home()), + 'creationDate': '' +} + +_EXAMPLES = [ + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3 (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3-Raw (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Raw_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI, 2 phases', + 'name': 'La0.5Ba0.5CoO3-Mult-Phases (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Mult-Phases_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D20@ILL', + 'name': 'Co2SiO4 (D20)', + 'path': ':/Examples/Co2SiO4_D20@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, G41@LLB', + 'name': 'Dy3Al5O12 (G41)', + 'path': ':/Examples/Dy3Al5O12_G41@LLB/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D1A@ILL', + 'name': 'PbSO4 (D1A)', + 'path': ':/Examples/PbSO4_D1A@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, 3T2@LLB', + 'name': 'LaMnO3 (3T2)', + 'path': ':/Examples/LaMnO3_3T2@LLB/project.cif' + } +] + + +class Project(QObject): + createdChanged = Signal() + nameChanged = Signal() + infoChanged = Signal() + examplesChanged = Signal() + + def __init__(self): + super().__init__() + self._created = False + self._name = '' + self._info = _INFO + self._examples = _EXAMPLES + + ########################## + # GUI accessible variables + ########################## + + # Properties + + @Property(bool, notify=createdChanged) + def created(self): + return self._created + + @created.setter + def created(self, new_value): + if self._created == new_value: + return + self._created = new_value + self.createdChanged.emit() + + @Property(str, notify=nameChanged) + def name(self): + return self._name + + @name.setter + def name(self, new_value): + if self._name == new_value: + return + console.debug(IO.format_msg('main', f"Changing project name from '{self.name}' to '{new_value}'")) + self._name = new_value + self.nameChanged.emit() + + @Property('QVariant', notify=infoChanged) + def info(self): + return self._info + + @Property('QVariant', constant=True) + def examples(self): + return self._examples + + + ########################## + # GUI accessible functions + ########################## + + @Slot() + def create(self): + console.debug(IO.format_msg('main', f"Creating project '{self.name}'")) + self.info['creationDate'] = time.strftime("%d %b %Y %H:%M", time.localtime()) + self.infoChanged.emit() + self.created = True + + @Slot() + def save(self): + console.debug(IO.format_msg('main', f"Saving project '{self.name}'")) + + @Slot(str, str) + def editInfo(self, path, new_value): + if DottyDict.get(self._info, path) == new_value: + return + console.debug(IO.format_msg('main', f"Changing project info.{path} from '{DottyDict.get(self._info, path)}' to '{new_value}'")) + DottyDict.set(self._info, path, new_value) + self.infoChanged.emit() diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/report.py b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/report.py new file mode 100644 index 00000000..67c4abf5 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/report.py @@ -0,0 +1,111 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from PySide6.QtCore import QObject, Signal, Property + + +_HTML = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Summary

Project information

NameLa0.5Ba0.5CoO3
Descriptionneutrons, powder, constant wavelength
No. of phases1
No. of experiments1

Crystal data

Phase datablocklbco
Crystal system, space groupcubic,  P m -3 m

Data collection

Experiment datablockhrpt
Radiation probeneutron
Measured range: min, max, inc (°)10.0,  164.85,  0.05
+ + +""" + + +class Report(QObject): + createdChanged = Signal() + asHtmlChanged = Signal() + + def __init__(self): + super().__init__() + self._created = False + self._asHtml = _HTML + + ########################## + # GUI accessible variables + ########################## + + @Property(bool, notify=createdChanged) + def created(self): + return self._created + + @created.setter + def created(self, new_value): + if self._created == new_value: + return + self._created = new_value + self.createdChanged.emit() + + @Property(str, notify=asHtmlChanged) + def asHtml(self): + return self._asHtml + + @asHtml.setter + def asHtml(self, new_value): + if self._asHtml == new_value: + return + self._asHtml = new_value + self.asHtmlChanged.emit() diff --git a/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/status.py b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/status.py new file mode 100644 index 00000000..a01dbc39 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Backends/real_py/status.py @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from PySide6.QtCore import QObject, Signal, Property + + +class Status(QObject): + projectChanged = Signal() + phasesCountChanged = Signal() + experimentsCountChanged = Signal() + calculatorChanged = Signal() + minimizerChanged = Signal() + variablesChanged = Signal() + + def __init__(self): + super().__init__() + self._project = 'Undefined' + self._phasesCount = '1' + self._experimentsCount = '1' + self._calculator = 'CrysPy' + self._minimizer = 'Lmfit (leastsq)' + self._variables = '31 (3 free, 28 fixed)' + + ########################## + # GUI accessible variables + ########################## + + @Property(str, notify=projectChanged) + def project(self): + return self._project + + @project.setter + def project(self, new_value): + if self._project == new_value: + return + self._project = new_value + self.projectChanged.emit() + + @Property(str, notify=phasesCountChanged) + def phasesCount(self): + return self._phasesCount + + @phasesCount.setter + def phasesCount(self, new_value): + if self._phasesCount == new_value: + return + self._phasesCount = new_value + self.phasesCountChanged.emit() + + @Property(str, notify=experimentsCountChanged) + def experimentsCount(self): + return self._experimentsCount + + @experimentsCount.setter + def experimentsCount(self, new_value): + if self._experimentsCount == new_value: + return + self._experimentsCount = new_value + self.experimentsCountChanged.emit() + + @Property(str, notify=calculatorChanged) + def calculator(self): + return self._calculator + + @calculator.setter + def calculator(self, new_value): + if self._calculator == new_value: + return + self._calculator = new_value + self.calculatorChanged.emit() + + @Property(str, notify=minimizerChanged) + def minimizer(self): + return self._minimizer + + @minimizer.setter + def minimizer(self, new_value): + if self._minimizer == new_value: + return + self._minimizer = new_value + self.minimizerChanged.emit() + + @Property(str, notify=variablesChanged) + def variables(self): + return self._variables + + @variables.setter + def variables(self, new_value): + if self._variables == new_value: + return + self._variables = new_value + self.variablesChanged.emit() diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/ApplicationWindow.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/ApplicationWindow.qml new file mode 100644 index 00000000..835e886f --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/ApplicationWindow.qml @@ -0,0 +1,114 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui as Gui +import Gui.Globals as Globals + +EaComponents.ApplicationWindow { + + /////////////////// + // APPLICATION BAR + /////////////////// + + // Left group of application bar tool buttons + appBarLeftButtons: [ + + EaElements.ToolButton { + enabled: Globals.BackendWrapper.projectCreated + highlighted: true + fontIcon: 'save' + ToolTip.text: qsTr('Save current state of the project') + onClicked: Globals.BackendWrapper.projectSave() + } + + ] + + // Right group of application bar tool buttons + appBarRightButtons: [ + + EaElements.ToolButton { + fontIcon: 'cog' + ToolTip.text: qsTr('Application preferences') + onClicked: EaGlobals.Vars.showAppPreferencesDialog = true + } + + ] + + // Central group of application bar page buttons (workflow tabs) + // Page buttons for the pages described below + appBarCentralTabs.contentData: [ + + // Home page + EaElements.AppBarTabButton { + id: homeButton + fontIcon: 'home' + text: qsTr('Home') + ToolTip.text: qsTr('Home') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.homeButton = homeButton + } + }, + // Home page + + // Project page + EaElements.AppBarTabButton { + id: projectButton + enabled: false + fontIcon: 'archive' + text: qsTr('Project') + ToolTip.text: qsTr('Project description page') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.projectButton = projectButton + } + }, + // Project page + + // Summary page + EaElements.AppBarTabButton { + id: summaryButton + enabled: false + fontIcon: 'clipboard-list' + text: qsTr('Summary') + ToolTip.text: qsTr('Summary of the work done') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton = summaryButton + } + } + // Summary page + ] + + ////////////////////////////////// + // APP PAGES (MAIN AREA + SIDEBAR) + ////////////////////////////////// + + // Pages for the tab buttons described above + contentArea: [ + Loader { source: 'Pages/Home/Content.qml' }, + Loader { source: 'Pages/Project/Layout.qml' }, + Loader { source: 'Pages/Report/Layout.qml' } + ] + + ///////////// + // STATUS BAR + ///////////// + + statusBar: Gui.StatusBar {} + + /////// + // MISC + /////// + + onClosing: Qt.quit() + + Component.onCompleted: console.debug(`Application window loaded ::: ${this}`) + Component.onDestruction: console.debug(`Application window destroyed ::: ${this}`) + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/ApplicationInfo.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/ApplicationInfo.qml new file mode 100644 index 00000000..3cb53278 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/ApplicationInfo.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property var about: { + 'name': 'AdvancedPy', + 'namePrefix': 'Advanced', + 'nameSuffix': 'Py', + 'namePrefixForLogo': 'advanced', + 'nameSuffixForLogo': 'py', + 'homePageUrl': 'https://github.com/EasyScience/EasyExample', + 'issuesUrl': 'https://github.com/EasyScience/EasyExample/issues', + 'licenseUrl': 'https://github.com/EasyScience/EasyExample/LICENCE.md', + 'dependenciesUrl': 'https://github.com/EasyScience/EasyExample/DEPENDENCIES.md', + 'version': '1.0.0', + 'icon': Qt.resolvedUrl('../Resources/Logos/App.svg'), + 'date': new Date().toISOString().slice(0,10), + 'developerYearsFrom': '2019', + 'developerYearsTo': '2024', + 'description': 'Example of a desktop application of advanced complexity with Python backend and EasyApp-based GUI', + 'developerIcons': [ + { + 'url': 'https://ess.eu', + 'icon': Qt.resolvedUrl('../Resources/Logos/ESS.png'), + 'heightScale': 3.0 + } + ] + } + +} + diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/BackendWrapper.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/BackendWrapper.qml new file mode 100644 index 00000000..c0d36666 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/BackendWrapper.qml @@ -0,0 +1,67 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +// This module is registered in the main.py file and allows access to the properties +// and backend methods of the singleton object of the ‘PyBackend’ class. +// If ‘PyBackend’ is not defined, then 'MockBackend' from directory 'Backends' is used. +// It is needed to run the GUI frontend via the qml runtime tool without any Python backend. +import Backends as Backends + + +QtObject { + + //////////////// + // Backend proxy + //////////////// + + readonly property var activeBackend: { + if (typeof Backends.PyBackend !== 'undefined') { + console.debug('REAL python backend is in use') + return Backends.PyBackend + } else { + console.debug('MOCK QML backend is in use') + return Backends.MockBackend + } + } + + ///////////// + // Status bar + ///////////// + + readonly property string statusProject: activeBackend.status.project + readonly property string statusPhasesCount: activeBackend.status.phasesCount + readonly property string statusExperimentsCount: activeBackend.status.experimentsCount + readonly property string statusCalculator: activeBackend.status.calculator + readonly property string statusMinimizer: activeBackend.status.minimizer + readonly property string statusVariables: activeBackend.status.variables + + /////////////// + // Project page + /////////////// + + readonly property var projectInfo: activeBackend.project.info + readonly property var projectExamples: activeBackend.project.examples + + property bool projectCreated: activeBackend.project.created + onProjectCreatedChanged: activeBackend.project.created = projectCreated + property string projectName: activeBackend.project.name + onProjectNameChanged: activeBackend.project.name = projectName + + function projectCreate() { activeBackend.project.create() } + function projectSave() { activeBackend.project.save() } + function projectEditInfo(path, new_value) { activeBackend.project.editInfo(path, new_value) } + + /////////////// + // Summary page + /////////////// + + readonly property string reportAsHtml: activeBackend.report.asHtml + + property bool reportCreated: activeBackend.report.created + onReportCreatedChanged: activeBackend.report.created = reportCreated +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/References.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/References.qml new file mode 100644 index 00000000..0d9d7812 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/References.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + + +// Initialisation of the reference dictionary. It is filled in later, when the required object is +// created and its unique id is assigned and added here instead of 'null'. After that, any object +// whose id is stored here can be accessed from any other qml file. +QtObject { + + // Populated in ApplicationWindows.qml + readonly property var applicationWindow: { + 'appBarCentralTabs': { + 'homeButton': null, + 'projectButton': null, + 'summaryButton': null, + } + } + + // Populated in Pages/... + readonly property var pages: { + 'project': { + 'sidebar': { + 'basic': { + 'popups': { + 'openCifFile': null + } + } + } + } + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/qmldir b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/qmldir new file mode 100644 index 00000000..00d72e33 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Globals/qmldir @@ -0,0 +1,5 @@ +module Globals + +singleton ApplicationInfo ApplicationInfo.qml +singleton BackendWrapper BackendWrapper.qml +singleton References References.qml diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Content.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Content.qml new file mode 100644 index 00000000..e0b7a198 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Content.qml @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Item { + + Column { + anchors.centerIn: parent + + // Application logo + Image { + id: appLogo + + source: Globals.ApplicationInfo.about.icon + anchors.horizontalCenter: parent.horizontalCenter + width: EaStyle.Sizes.fontPixelSize * 5 + fillMode: Image.PreserveAspectFit + antialiasing: true + } + // Application logo + + // Application name + Row { + id: appName + + property string fontFamily: EaStyle.Fonts.thirdFontFamily + property string fontPixelSize: EaStyle.Sizes.fontPixelSize * 4 + + anchors.horizontalCenter: parent.horizontalCenter + + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.Light + text: Globals.ApplicationInfo.about.namePrefixForLogo + } + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.DemiBold + text: Globals.ApplicationInfo.about.nameSuffixForLogo + } + } + // Application name + + // Application version + EaElements.Label { + id: appVersion + + anchors.horizontalCenter: parent.horizontalCenter + + text: { + return qsTr('Version') + ` ${Globals.ApplicationInfo.about.version} (${Globals.ApplicationInfo.about.date})` + } + } + // Application version + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Start button + EaElements.SideBarButton { + id: startButton + + anchors.horizontalCenter: parent.horizontalCenter + + fontIcon: 'rocket' + text: qsTr('Start') + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.projectButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.projectButton.toggle() + } + } + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Links + Row { + id: links + + anchors.horizontalCenter: parent.horizontalCenter + spacing: EaStyle.Sizes.fontPixelSize * 3 + + // Left links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('About %1'.arg(Globals.ApplicationInfo.about.name)) + onClicked: EaGlobals.Vars.showAppAboutDialog = true + Loader { source: 'Popups/About.qml' } + } + EaElements.Button { + text: qsTr('Online documentation') + onClicked: Qt.openUrlExternally('https://github.com/EasyScience/EasyApp') + } + EaElements.Button { + text: qsTr('Get in touch online') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Left links + + // Right links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('Tutorial') + ' 1: ' + qsTr('App interface') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 2: ' + qsTr('Basic usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 3: ' + qsTr('Advanced usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Right links + } + // Links + } + + Component.onCompleted: console.debug(`Home page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Home page destroyed ::: ${this}`) + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Popups/About.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Popups/About.qml new file mode 100644 index 00000000..11815fdd --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Home/Popups/About.qml @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.AboutDialog { + + visible: EaGlobals.Vars.showAppAboutDialog + onClosed: EaGlobals.Vars.showAppAboutDialog = false + + appIconPath: Globals.ApplicationInfo.about.icon + appUrl: Globals.ApplicationInfo.about.homePageUrl + + appPrefixName: Globals.ApplicationInfo.about.namePrefixForLogo + appSuffixName: Globals.ApplicationInfo.about.nameSuffixForLogo + appVersion: Globals.ApplicationInfo.about.version + appDate: Globals.ApplicationInfo.about.date + + eulaUrl: Globals.ApplicationInfo.about.licenseUrl + oslUrl: Globals.ApplicationInfo.about.dependenciesUrl + + description: Globals.ApplicationInfo.about.description + developerIcons: Globals.ApplicationInfo.about.developerIcons + developerYearsFrom: Globals.ApplicationInfo.about.developerYearsFrom + developerYearsTo: Globals.ApplicationInfo.about.developerYearsTo + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Layout.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Layout.qml new file mode 100644 index 00000000..6c03c65c --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Layout.qml @@ -0,0 +1,59 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.projectCreated ? + '' : + qsTr('No project defined') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Description') } + ] + + items: [ + Loader { source: 'MainArea/Description.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') }, + EaElements.TabButton { text: qsTr('Text mode controls'); enabled: false } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' }, + Loader { source: 'Sidebar/Text/Layout.qml' } + ] + + continueButton.text: Globals.BackendWrapper.projectCreated ? + qsTr('Continue') : + qsTr('Continue without project') + + continueButton.onClicked: { + console.debug(`Clicking '${continueButton.text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.toggle() + } + } + + Component.onCompleted: console.debug(`Project page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Project page destroyed ::: ${this}`) + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/MainArea/Description.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/MainArea/Description.qml new file mode 100644 index 00000000..8ce72b2f --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/MainArea/Description.qml @@ -0,0 +1,89 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + readonly property int commonSpacing: EaStyle.Sizes.fontPixelSize * 1.5 + + color: EaStyle.Colors.mainContentBackground + + Column { + id: container + + anchors.top: parent.top + anchors.left: parent.left + + anchors.topMargin: commonSpacing + anchors.leftMargin: commonSpacing * 1.5 + + spacing: commonSpacing + + // Project title + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + font.family: EaStyle.Fonts.secondFontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize * 3 + font.weight: Font.ExtraLight + validator: RegularExpressionValidator { regularExpression: /^[a-zA-Z][a-zA-Z0-9_\-\.]{1,30}$/ } + placeholderText: qsTr("Enter project name here") + text: Globals.BackendWrapper.projectName + onEditingFinished: Globals.BackendWrapper.projectName = text + } + // Project title + + // Project info + Grid { + columns: 2 + rowSpacing: 0 + columnSpacing: commonSpacing + + EaElements.Label { + font.bold: true + text: qsTr('Description:') + } + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + placeholderText: qsTr("Enter project description here") + text: Globals.BackendWrapper.projectInfo.description + onEditingFinished: Globals.BackendWrapper.projectEditInfo('description', text) + } + + EaElements.Label { + font.bold: true + text: qsTr('Location:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.location + } + + EaElements.Label { + font.bold: true + text: qsTr('Created:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.creationDate + } + } + // Project info + + // Project image + Image { + width: EaStyle.Sizes.fontPixelSize * 25 + fillMode: Image.PreserveAspectFit + } + // Project image + + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml new file mode 100644 index 00000000..065031c7 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No examples available') + + model: Globals.BackendWrapper.projectExamples + + // header + header: EaComponents.TableViewHeader { + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + EaComponents.TableViewLabel { + flexibleWidth: true + horizontalAlignment: Text.AlignLeft + text: qsTr('name / description') + } + } + // header + + // delegate + delegate: EaComponents.TableViewDelegate { + mouseArea.onPressed: { + const filePath = tableView.model[index].path + console.debug(`Loading example: ${filePath}`) + } + + EaComponents.TableViewLabel { + text: index + 1 + color: EaStyle.Colors.themeForegroundMinor + } + + EaComponents.TableViewTwoRowsAdvancedLabel { + fontIcon: 'archive' + text: tableView.model[index].name + minorText: tableView.model[index].description + ToolTip.text: tableView.model[index].description + } + } + // delegate + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml new file mode 100644 index 00000000..cb1ab180 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +//import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Grid { + + columns: 2 + spacing: EaStyle.Sizes.fontPixelSize + + // button 1 + EaElements.SideBarButton { + fontIcon: 'plus-circle' + text: qsTr('Create a new project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + EaGlobals.Vars.showProjectDescriptionDialog = true + } + + Loader { + source: '../Popups/ProjectDescription.qml' + } + } + // button 1 + + // button 2 + EaElements.SideBarButton { + fontIcon: 'upload' + text: qsTr('Open an existing project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.pages.project.sidebar.basic.popups.openCifFile.open() + } + + Loader { + source: '../Popups/OpenCifFile.qml' + } + } + // button 2 + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml new file mode 100644 index 00000000..8357f95a --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtCore + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No recent projects found') + + // Header row + header: EaComponents.TableViewHeader { + + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + } + // Header row + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..23952b4b --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Get started') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/GetStarted.qml' } + } + + EaElements.GroupBox { + title: qsTr('Examples') + icon: 'database' + + Loader { source: 'Groups/Examples.qml' } + } + + EaElements.GroupBox { + title: qsTr('Recent projects') + icon: 'archive' + + Loader { source: 'Groups/Recent.qml' } + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml new file mode 100644 index 00000000..649bb8a8 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +FileDialog{ + + id: openCifFileDialog + + fileMode: FileDialog.OpenFile + nameFilters: [ 'CIF files (*.cif)'] + + onAccepted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + Globals.References.pages.project.sidebar.basic.popups.openCifFile = openCifFileDialog + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml new file mode 100644 index 00000000..dcc2277b --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ProjectDescriptionDialog { + + visible: EaGlobals.Vars.showProjectDescriptionDialog + onClosed: EaGlobals.Vars.showProjectDescriptionDialog = false + + projectName: Globals.BackendWrapper.projectName + projectDescription: Globals.BackendWrapper.projectInfo.description + + onAccepted: { + Globals.BackendWrapper.projectName = projectName + Globals.BackendWrapper.projectEditInfo('description', projectDescription) + Globals.BackendWrapper.projectCreate() + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + projectLocation = Globals.BackendWrapper.projectInfo.location + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml new file mode 100644 index 00000000..4bc89207 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column { + + property int labelsCount: 50 + + spacing: EaStyle.Sizes.fontPixelSize + + Repeater { + model: labelsCount + EaElements.Label { + text: `Label ${index+1} of ${labelsCount}` + } + } + +} + diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..273d95a0 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Scrolling') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/Scrolling.qml' } + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Text/Layout.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Text/Layout.qml new file mode 100644 index 00000000..3c9c9d63 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Project/Sidebar/Text/Layout.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + + +EaComponents.SideBarColumn {} + diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Layout.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Layout.qml new file mode 100644 index 00000000..3beddbdd --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Layout.qml @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.reportCreated ? + '' : + qsTr('No Summary Generated') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Summary') } + ] + + items: [ + Loader { source: 'MainArea/Summary.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' } + ] + + continueButton.visible: false + } + + Component.onCompleted: console.debug(`Summary page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Summary page destroyed ::: ${this}`) + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/MainArea/Summary.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/MainArea/Summary.qml new file mode 100644 index 00000000..0168ba3a --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/MainArea/Summary.qml @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + color: EaStyle.Colors.textViewBackground + Behavior on color { EaAnimations.ThemeChange {} } + + // Flickable + Flickable { + id: flick + + anchors.fill: parent + + contentWidth: textArea.contentWidth + contentHeight: textArea.contentHeight + + clip: true + flickableDirection: Flickable.VerticalFlick + + ScrollBar.vertical: EaElements.ScrollBar { + policy: ScrollBar.AsNeeded + interactive: false + } + + // Main text area + EaElements.TextArea { + id: textArea + + readOnly: true + + width: flick.width + topPadding: 0 + bottomPadding: 0 + padding: 2.5 * EaStyle.Sizes.fontPixelSize + + textFormat: TextEdit.RichText + text: Globals.BackendWrapper.reportAsHtml + } + // Main text area + + } + // Flickable + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml new file mode 100644 index 00000000..e80a6b4c --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs +import QtCore + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Column { + + property string projectLocation: Globals.BackendWrapper.projectInfo.location + + EaLogic.Utils.osPathSep() + + 'summary' + + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + format selector + Row { + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + EaElements.TextField { + id: nameField + width: saveButton.width - formatField.width - parent.spacing + topInset: nameLabel.height + topPadding: topInset + padding + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter summary file name here') + Component.onCompleted: text = 'summary' + EaElements.Label { + id: nameLabel + text: qsTr('Name') + } + } + // Name field + + // Format selector + EaElements.ComboBox { + id: formatField + topInset: formatLabel.height + topPadding: topInset + padding + width: EaStyle.Sizes.fontPixelSize * 10 + textRole: 'text' + valueRole: 'value' + model: [ + { value: 'html', text: qsTr('HTML') } + ] + EaElements.Label { + id: formatLabel + text: qsTr('Format') + } + } + // Format selector + } + // Name field + format selector + + // Location field + EaElements.TextField { + id: reportLocationField + width: saveButton.width + topInset: locationLabel.height + topPadding: topInset + padding + rightPadding: chooseButton.width + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter report location here') + Component.onCompleted: text = projectLocation + + EaElements.Label { + id: locationLabel + text: qsTr('Location') + } + + EaElements.ToolButton { + id: chooseButton + anchors.right: parent.right + topPadding: parent.topPadding + showBackground: false + fontIcon: 'folder-open' + ToolTip.text: qsTr('Choose report parent directory') + onClicked: reportParentDirDialog.open() + } + } + // Location field + + // Save button + EaElements.SideBarButton { + id: saveButton + wide: true + fontIcon: 'download' + text: qsTr('Save') + } + // Save button + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..472d957a --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + enabled: false + title: qsTr('Export summary') + icon: 'download' + collapsed: false + + Loader { source: 'Groups/Export.qml' } + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml new file mode 100644 index 00000000..9f478042 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column {} + diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..ef2a2edc --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Empty') + icon: 'rocket' + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.icns b/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.icns new file mode 100644 index 0000000000000000000000000000000000000000..70975cb15da57f34bc198449a13b91090c21bd08 GIT binary patch literal 296301 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
    a>A?nc*<%B-9y1he#`rAtv1l-33l@ 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

    GRyfg%3LkEncR(R7LeupP} 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 literal 0 HcmV?d00001 diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.png b/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5d4319e4f08aae9fda060afc38c3c9efea1a52 GIT binary patch literal 69247 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 BG3o#S literal 0 HcmV?d00001 diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.svg b/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.svg new file mode 100644 index 00000000..5aab6b19 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/App.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/ESS.png b/examples/AdvancedPy/src/AdvancedPy/Gui/Resources/Logos/ESS.png new file mode 100644 index 0000000000000000000000000000000000000000..22c09d2e32bc6ff6f97f738225ce8847b4c7daa8 GIT binary patch literal 5161 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 + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaElements.StatusBar { + + visible: EaGlobals.Vars.appBarCurrentIndex !== 0 + + EaElements.StatusBarItem { + keyIcon: 'archive' + keyText: qsTr('Project') + valueText: Globals.BackendWrapper.statusProject + ToolTip.text: qsTr('Current project') + } + + EaElements.StatusBarItem { + keyIcon: 'layer-group' + keyText: qsTr('Models') + valueText: Globals.BackendWrapper.statusPhasesCount + ToolTip.text: qsTr('Number of models added') + } + + EaElements.StatusBarItem { + keyIcon: 'microscope' + keyText: qsTr('Experiments') + valueText: Globals.BackendWrapper.statusExperimentsCount + ToolTip.text: qsTr('Number of experiments added') + } + + EaElements.StatusBarItem { + keyIcon: 'calculator' + keyText: qsTr('Calculator') + valueText: Globals.BackendWrapper.statusCalculator + ToolTip.text: qsTr('Current calculation engine') + } + + EaElements.StatusBarItem { + keyIcon: 'level-down-alt' + keyText: qsTr('Minimizer') + valueText: Globals.BackendWrapper.statusMinimizer + ToolTip.text: qsTr('Current minimization engine and method') + } + + EaElements.StatusBarItem { + keyIcon: 'th-list' + keyText: qsTr('Parameters') + valueText: Globals.BackendWrapper.statusVariables + ToolTip.text: qsTr('Number of parameters: total, free and fixed') + } + +} diff --git a/examples/AdvancedPy/src/AdvancedPy/Gui/qmldir b/examples/AdvancedPy/src/AdvancedPy/Gui/qmldir new file mode 100644 index 00000000..d3151d58 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/Gui/qmldir @@ -0,0 +1,4 @@ +module Gui + +ApplicationWindow ApplicationWindow.qml +StatusBar StatusBar.qml diff --git a/docs/Developer/Diagrams/description.txt b/examples/AdvancedPy/src/AdvancedPy/__init__.py similarity index 100% rename from docs/Developer/Diagrams/description.txt rename to examples/AdvancedPy/src/AdvancedPy/__init__.py diff --git a/examples/AdvancedPy/src/AdvancedPy/main.py b/examples/AdvancedPy/src/AdvancedPy/main.py new file mode 100644 index 00000000..e6b78225 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/main.py @@ -0,0 +1,50 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from pathlib import Path +import sys + +from PySide6.QtGui import QGuiApplication +from PySide6.QtQml import QQmlApplicationEngine, qmlRegisterSingletonType +from PySide6.QtCore import qInstallMessageHandler + +# It is usually assumed that the EasyApp package is already installed in the desired python environment. +# If this is not the case, and if the example is run from the EasyApp repository, one need to add the path to the +# EasyApp source code. +CURRENT_DIR = Path(__file__).parent # path to qml components of the current project +EASYAPP_DIR = CURRENT_DIR / '..' / '..' / '..' / '..' / 'src' # path to qml components of the easyapp module +sys.path.append(str(EASYAPP_DIR)) + +from EasyApp.Logic.Logging import console + +from Backends.real_backend import Backend + + +if __name__ == '__main__': + qInstallMessageHandler(console.qmlMessageHandler) + console.debug('Custom Qt message handler defined') + + # This singleton object will be accessible in QML as follows: + # import Backends 1.0 as Backends OR import Backends as Backends + # property var activeBackend: Backends.PyBackend + qmlRegisterSingletonType(Backend, 'Backends', 1, 0, 'PyBackend') + console.debug('Backend class is registered as a singleton type for QML') + + app = QGuiApplication(sys.argv) + console.debug(f'Qt Application created {app}') + + engine = QQmlApplicationEngine() + console.debug(f'QML application engine created {engine}') + + engine.addImportPath(CURRENT_DIR) + engine.addImportPath(EASYAPP_DIR) + console.debug('Paths added where QML searches for components') + + engine.load(CURRENT_DIR / 'main.qml') + console.debug('Main QML component loaded') + + console.debug('Application event loop is about to start') + if not engine.rootObjects(): + sys.exit(-1) + sys.exit(app.exec()) diff --git a/examples/AdvancedPy/src/AdvancedPy/main.qml b/examples/AdvancedPy/src/AdvancedPy/main.qml new file mode 100644 index 00000000..1c7c0070 --- /dev/null +++ b/examples/AdvancedPy/src/AdvancedPy/main.qml @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import Gui as Gui + + +Gui.ApplicationWindow { + + id: applicationWindow // applicationWindow is globally accessible + +} diff --git a/examples/BasicC++/scripts/add_aliases_to_qrc.py b/examples/BasicC++/scripts/add_aliases_to_qrc.py new file mode 100644 index 00000000..2e093cb0 --- /dev/null +++ b/examples/BasicC++/scripts/add_aliases_to_qrc.py @@ -0,0 +1,14 @@ +import re + +filename = 'src/BasicC++/resources.qrc' +with open(filename, 'r') as f: + content = f.read() + +prefix = '../../../../src/' +search_pattern = rf'{prefix}(.*?)' +replace_pattern = rf'{prefix}\g<1>' + +result = re.sub(search_pattern, replace_pattern, content) + +with open(filename, 'w') as f: + f.write(result) diff --git a/examples/BasicC++/src/BasicC++.pro b/examples/BasicC++/src/BasicC++.pro new file mode 100644 index 00000000..4e7f21d8 --- /dev/null +++ b/examples/BasicC++/src/BasicC++.pro @@ -0,0 +1,26 @@ +TEMPLATE = app + +# Application name +TARGET = BasicC++ + +CONFIG += c++17 + +# Makes compiler emit warnings if deprecated feature is used +DEFINES += QT_DEPRECATED_WARNINGS + +QT += core quick qml + +SOURCES += \ + BasicC++/main.cpp + +RESOURCES += BasicC++/resources.qrc + +# Additional import path used to resolve QML modules in Qt Creator's code model +QML_IMPORT_PATH += \ + BasicC++ \ + ../../../src/EasyApp + +# Additional import path used to resolve QML modules just for Qt Quick Designer +QML_DESIGNER_IMPORT_PATH += \ + BasicC++ \ + ../../../src/EasyApp diff --git a/examples/BasicC++/src/BasicC++.qmlproject b/examples/BasicC++/src/BasicC++.qmlproject new file mode 100644 index 00000000..a5e58c22 --- /dev/null +++ b/examples/BasicC++/src/BasicC++.qmlproject @@ -0,0 +1,41 @@ +import QmlProject 1.1 + +Project { + mainFile: "BasicC++/main.qml" + + // List of module and plugin directories passed to QML runtime + importPaths: [ + "BasicC++", + "../../../src", // EasyApp + ] + + // Include .qml files from specified directory and its subdirectories + QmlFiles { + directory: "BasicC++" + } + QmlFiles { + directory: "../../../src/EasyApp" + } + + // Include .js files from specified directory and its subdirectories + JavaScriptFiles { + directory: "BasicC++" + } + JavaScriptFiles { + directory: "../../../src/EasyApp" + } + + // Include Module Definition Files (qmldir), as well as .ts and .qrc + // from specified directory and its subdirectories + Files { + directory: "BasicC++" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + Files { + directory: "../../../src/EasyApp" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + +} diff --git a/examples/BasicC++/src/BasicC++/Backends/MockBackend.qml b/examples/BasicC++/src/BasicC++/Backends/MockBackend.qml new file mode 100644 index 00000000..44da4805 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Backends/MockBackend.qml @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +import Backends.MockQml as MockLogic + + +QtObject { + + property var project: MockLogic.Project + property var status: MockLogic.Status + property var report: MockLogic.Report + +} + + diff --git a/examples/BasicC++/src/BasicC++/Backends/MockQml/Project.qml b/examples/BasicC++/src/BasicC++/Backends/MockQml/Project.qml new file mode 100644 index 00000000..566751ba --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Backends/MockQml/Project.qml @@ -0,0 +1,74 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + property bool created: false + + property string name: '' + + readonly property var info: { + 'description': '', + 'location': '', + 'creationDate': '' + } + + readonly property var examples: [ + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3 (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3-Raw (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Raw_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI, 2 phases', + 'name': 'La0.5Ba0.5CoO3-Mult-Phases (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Mult-Phases_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D20@ILL', + 'name': 'Co2SiO4 (D20)', + 'path': ':/Examples/Co2SiO4_D20@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, G41@LLB', + 'name': 'Dy3Al5O12 (G41)', + 'path': ':/Examples/Dy3Al5O12_G41@LLB/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D1A@ILL', + 'name': 'PbSO4 (D1A)', + 'path': ':/Examples/PbSO4_D1A@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, 3T2@LLB', + 'name': 'LaMnO3 (3T2)', + 'path': ':/Examples/LaMnO3_3T2@LLB/project.cif' + } + ] + + function create() { + console.debug(`Creating project '${name}'`) + info.creationDate = `${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}` + infoChanged() // this signal is not emitted automatically when only part of the object is changed + created = true + } + + function save() { + console.debug(`NOT IMPLEMENTED: Saving project '${name}'`) + } + + function editInfo(path, new_value) { + console.debug(`NOT IMPLEMENTED: Changing project info.${path} from '${info.path}' to '${new_value}'`) + } + +} diff --git a/examples/BasicC++/src/BasicC++/Backends/MockQml/Report.qml b/examples/BasicC++/src/BasicC++/Backends/MockQml/Report.qml new file mode 100644 index 00000000..84132709 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Backends/MockQml/Report.qml @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + property bool created: false + + readonly property string asHtml: ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Summary

    Project information

    NameLa0.5Ba0.5CoO3
    Descriptionneutrons, powder, constant wavelength
    No. of phases1
    No. of experiments1

    Crystal data

    Phase datablocklbco
    Crystal system, space groupcubic,  P m -3 m

    Data collection

    Experiment datablockhrpt
    Radiation probeneutron
    Measured range: min, max, inc (°)10.0,  164.85,  0.05
    + + +' + +} diff --git a/examples/BasicC++/src/BasicC++/Backends/MockQml/Status.qml b/examples/BasicC++/src/BasicC++/Backends/MockQml/Status.qml new file mode 100644 index 00000000..452ca9e5 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Backends/MockQml/Status.qml @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property string project: 'Undefined' + readonly property string phasesCount: '1' + readonly property string experimentsCount: '1' + readonly property string calculator: 'CrysPy' + readonly property string minimizer: 'Lmfit (leastsq)' + readonly property string variables: '31 (3 free, 28 fixed)' + +} diff --git a/examples/BasicC++/src/BasicC++/Backends/MockQml/qmldir b/examples/BasicC++/src/BasicC++/Backends/MockQml/qmldir new file mode 100644 index 00000000..7fb05624 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Backends/MockQml/qmldir @@ -0,0 +1,5 @@ +module MockQml + +singleton Project Project.qml +singleton Report Report.qml +singleton Status Status.qml diff --git a/examples/BasicC++/src/BasicC++/Backends/qmldir b/examples/BasicC++/src/BasicC++/Backends/qmldir new file mode 100644 index 00000000..fdc15f20 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Backends/qmldir @@ -0,0 +1,3 @@ +module Logic + +singleton MockBackend MockBackend.qml diff --git a/examples/BasicC++/src/BasicC++/Gui/ApplicationWindow.qml b/examples/BasicC++/src/BasicC++/Gui/ApplicationWindow.qml new file mode 100644 index 00000000..835e886f --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/ApplicationWindow.qml @@ -0,0 +1,114 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui as Gui +import Gui.Globals as Globals + +EaComponents.ApplicationWindow { + + /////////////////// + // APPLICATION BAR + /////////////////// + + // Left group of application bar tool buttons + appBarLeftButtons: [ + + EaElements.ToolButton { + enabled: Globals.BackendWrapper.projectCreated + highlighted: true + fontIcon: 'save' + ToolTip.text: qsTr('Save current state of the project') + onClicked: Globals.BackendWrapper.projectSave() + } + + ] + + // Right group of application bar tool buttons + appBarRightButtons: [ + + EaElements.ToolButton { + fontIcon: 'cog' + ToolTip.text: qsTr('Application preferences') + onClicked: EaGlobals.Vars.showAppPreferencesDialog = true + } + + ] + + // Central group of application bar page buttons (workflow tabs) + // Page buttons for the pages described below + appBarCentralTabs.contentData: [ + + // Home page + EaElements.AppBarTabButton { + id: homeButton + fontIcon: 'home' + text: qsTr('Home') + ToolTip.text: qsTr('Home') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.homeButton = homeButton + } + }, + // Home page + + // Project page + EaElements.AppBarTabButton { + id: projectButton + enabled: false + fontIcon: 'archive' + text: qsTr('Project') + ToolTip.text: qsTr('Project description page') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.projectButton = projectButton + } + }, + // Project page + + // Summary page + EaElements.AppBarTabButton { + id: summaryButton + enabled: false + fontIcon: 'clipboard-list' + text: qsTr('Summary') + ToolTip.text: qsTr('Summary of the work done') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton = summaryButton + } + } + // Summary page + ] + + ////////////////////////////////// + // APP PAGES (MAIN AREA + SIDEBAR) + ////////////////////////////////// + + // Pages for the tab buttons described above + contentArea: [ + Loader { source: 'Pages/Home/Content.qml' }, + Loader { source: 'Pages/Project/Layout.qml' }, + Loader { source: 'Pages/Report/Layout.qml' } + ] + + ///////////// + // STATUS BAR + ///////////// + + statusBar: Gui.StatusBar {} + + /////// + // MISC + /////// + + onClosing: Qt.quit() + + Component.onCompleted: console.debug(`Application window loaded ::: ${this}`) + Component.onDestruction: console.debug(`Application window destroyed ::: ${this}`) + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Globals/ApplicationInfo.qml b/examples/BasicC++/src/BasicC++/Gui/Globals/ApplicationInfo.qml new file mode 100644 index 00000000..deb3a378 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Globals/ApplicationInfo.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property var about: { + 'name': 'BasicC++', + 'namePrefix': 'Basic', + 'nameSuffix': 'C++', + 'namePrefixForLogo': 'basic', + 'nameSuffixForLogo': 'c++', + 'homePageUrl': 'https://github.com/EasyScience/EasyExample', + 'issuesUrl': 'https://github.com/EasyScience/EasyExample/issues', + 'licenseUrl': 'https://github.com/EasyScience/EasyExample/LICENCE.md', + 'dependenciesUrl': 'https://github.com/EasyScience/EasyExample/DEPENDENCIES.md', + 'version': '1.0.0', + 'icon': Qt.resolvedUrl('../Resources/Logos/App.svg'), + 'date': new Date().toISOString().slice(0,10), + 'developerYearsFrom': '2019', + 'developerYearsTo': '2024', + 'description': 'Example of a desktop application of basic complexity with Python backend and EasyApp-based GUI', + 'developerIcons': [ + { + 'url': 'https://ess.eu', + 'icon': Qt.resolvedUrl('../Resources/Logos/ESS.png'), + 'heightScale': 3.0 + } + ] + } + +} + diff --git a/examples/BasicC++/src/BasicC++/Gui/Globals/BackendWrapper.qml b/examples/BasicC++/src/BasicC++/Gui/Globals/BackendWrapper.qml new file mode 100644 index 00000000..c0d36666 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Globals/BackendWrapper.qml @@ -0,0 +1,67 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +// This module is registered in the main.py file and allows access to the properties +// and backend methods of the singleton object of the ‘PyBackend’ class. +// If ‘PyBackend’ is not defined, then 'MockBackend' from directory 'Backends' is used. +// It is needed to run the GUI frontend via the qml runtime tool without any Python backend. +import Backends as Backends + + +QtObject { + + //////////////// + // Backend proxy + //////////////// + + readonly property var activeBackend: { + if (typeof Backends.PyBackend !== 'undefined') { + console.debug('REAL python backend is in use') + return Backends.PyBackend + } else { + console.debug('MOCK QML backend is in use') + return Backends.MockBackend + } + } + + ///////////// + // Status bar + ///////////// + + readonly property string statusProject: activeBackend.status.project + readonly property string statusPhasesCount: activeBackend.status.phasesCount + readonly property string statusExperimentsCount: activeBackend.status.experimentsCount + readonly property string statusCalculator: activeBackend.status.calculator + readonly property string statusMinimizer: activeBackend.status.minimizer + readonly property string statusVariables: activeBackend.status.variables + + /////////////// + // Project page + /////////////// + + readonly property var projectInfo: activeBackend.project.info + readonly property var projectExamples: activeBackend.project.examples + + property bool projectCreated: activeBackend.project.created + onProjectCreatedChanged: activeBackend.project.created = projectCreated + property string projectName: activeBackend.project.name + onProjectNameChanged: activeBackend.project.name = projectName + + function projectCreate() { activeBackend.project.create() } + function projectSave() { activeBackend.project.save() } + function projectEditInfo(path, new_value) { activeBackend.project.editInfo(path, new_value) } + + /////////////// + // Summary page + /////////////// + + readonly property string reportAsHtml: activeBackend.report.asHtml + + property bool reportCreated: activeBackend.report.created + onReportCreatedChanged: activeBackend.report.created = reportCreated +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Globals/References.qml b/examples/BasicC++/src/BasicC++/Gui/Globals/References.qml new file mode 100644 index 00000000..0d9d7812 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Globals/References.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + + +// Initialisation of the reference dictionary. It is filled in later, when the required object is +// created and its unique id is assigned and added here instead of 'null'. After that, any object +// whose id is stored here can be accessed from any other qml file. +QtObject { + + // Populated in ApplicationWindows.qml + readonly property var applicationWindow: { + 'appBarCentralTabs': { + 'homeButton': null, + 'projectButton': null, + 'summaryButton': null, + } + } + + // Populated in Pages/... + readonly property var pages: { + 'project': { + 'sidebar': { + 'basic': { + 'popups': { + 'openCifFile': null + } + } + } + } + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Globals/qmldir b/examples/BasicC++/src/BasicC++/Gui/Globals/qmldir new file mode 100644 index 00000000..00d72e33 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Globals/qmldir @@ -0,0 +1,5 @@ +module Globals + +singleton ApplicationInfo ApplicationInfo.qml +singleton BackendWrapper BackendWrapper.qml +singleton References References.qml diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Home/Content.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Home/Content.qml new file mode 100644 index 00000000..e0b7a198 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Home/Content.qml @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Item { + + Column { + anchors.centerIn: parent + + // Application logo + Image { + id: appLogo + + source: Globals.ApplicationInfo.about.icon + anchors.horizontalCenter: parent.horizontalCenter + width: EaStyle.Sizes.fontPixelSize * 5 + fillMode: Image.PreserveAspectFit + antialiasing: true + } + // Application logo + + // Application name + Row { + id: appName + + property string fontFamily: EaStyle.Fonts.thirdFontFamily + property string fontPixelSize: EaStyle.Sizes.fontPixelSize * 4 + + anchors.horizontalCenter: parent.horizontalCenter + + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.Light + text: Globals.ApplicationInfo.about.namePrefixForLogo + } + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.DemiBold + text: Globals.ApplicationInfo.about.nameSuffixForLogo + } + } + // Application name + + // Application version + EaElements.Label { + id: appVersion + + anchors.horizontalCenter: parent.horizontalCenter + + text: { + return qsTr('Version') + ` ${Globals.ApplicationInfo.about.version} (${Globals.ApplicationInfo.about.date})` + } + } + // Application version + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Start button + EaElements.SideBarButton { + id: startButton + + anchors.horizontalCenter: parent.horizontalCenter + + fontIcon: 'rocket' + text: qsTr('Start') + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.projectButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.projectButton.toggle() + } + } + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Links + Row { + id: links + + anchors.horizontalCenter: parent.horizontalCenter + spacing: EaStyle.Sizes.fontPixelSize * 3 + + // Left links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('About %1'.arg(Globals.ApplicationInfo.about.name)) + onClicked: EaGlobals.Vars.showAppAboutDialog = true + Loader { source: 'Popups/About.qml' } + } + EaElements.Button { + text: qsTr('Online documentation') + onClicked: Qt.openUrlExternally('https://github.com/EasyScience/EasyApp') + } + EaElements.Button { + text: qsTr('Get in touch online') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Left links + + // Right links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('Tutorial') + ' 1: ' + qsTr('App interface') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 2: ' + qsTr('Basic usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 3: ' + qsTr('Advanced usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Right links + } + // Links + } + + Component.onCompleted: console.debug(`Home page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Home page destroyed ::: ${this}`) + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Home/Popups/About.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Home/Popups/About.qml new file mode 100644 index 00000000..11815fdd --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Home/Popups/About.qml @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.AboutDialog { + + visible: EaGlobals.Vars.showAppAboutDialog + onClosed: EaGlobals.Vars.showAppAboutDialog = false + + appIconPath: Globals.ApplicationInfo.about.icon + appUrl: Globals.ApplicationInfo.about.homePageUrl + + appPrefixName: Globals.ApplicationInfo.about.namePrefixForLogo + appSuffixName: Globals.ApplicationInfo.about.nameSuffixForLogo + appVersion: Globals.ApplicationInfo.about.version + appDate: Globals.ApplicationInfo.about.date + + eulaUrl: Globals.ApplicationInfo.about.licenseUrl + oslUrl: Globals.ApplicationInfo.about.dependenciesUrl + + description: Globals.ApplicationInfo.about.description + developerIcons: Globals.ApplicationInfo.about.developerIcons + developerYearsFrom: Globals.ApplicationInfo.about.developerYearsFrom + developerYearsTo: Globals.ApplicationInfo.about.developerYearsTo + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Layout.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Layout.qml new file mode 100644 index 00000000..6c03c65c --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Layout.qml @@ -0,0 +1,59 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.projectCreated ? + '' : + qsTr('No project defined') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Description') } + ] + + items: [ + Loader { source: 'MainArea/Description.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') }, + EaElements.TabButton { text: qsTr('Text mode controls'); enabled: false } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' }, + Loader { source: 'Sidebar/Text/Layout.qml' } + ] + + continueButton.text: Globals.BackendWrapper.projectCreated ? + qsTr('Continue') : + qsTr('Continue without project') + + continueButton.onClicked: { + console.debug(`Clicking '${continueButton.text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.toggle() + } + } + + Component.onCompleted: console.debug(`Project page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Project page destroyed ::: ${this}`) + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/MainArea/Description.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/MainArea/Description.qml new file mode 100644 index 00000000..8ce72b2f --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/MainArea/Description.qml @@ -0,0 +1,89 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + readonly property int commonSpacing: EaStyle.Sizes.fontPixelSize * 1.5 + + color: EaStyle.Colors.mainContentBackground + + Column { + id: container + + anchors.top: parent.top + anchors.left: parent.left + + anchors.topMargin: commonSpacing + anchors.leftMargin: commonSpacing * 1.5 + + spacing: commonSpacing + + // Project title + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + font.family: EaStyle.Fonts.secondFontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize * 3 + font.weight: Font.ExtraLight + validator: RegularExpressionValidator { regularExpression: /^[a-zA-Z][a-zA-Z0-9_\-\.]{1,30}$/ } + placeholderText: qsTr("Enter project name here") + text: Globals.BackendWrapper.projectName + onEditingFinished: Globals.BackendWrapper.projectName = text + } + // Project title + + // Project info + Grid { + columns: 2 + rowSpacing: 0 + columnSpacing: commonSpacing + + EaElements.Label { + font.bold: true + text: qsTr('Description:') + } + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + placeholderText: qsTr("Enter project description here") + text: Globals.BackendWrapper.projectInfo.description + onEditingFinished: Globals.BackendWrapper.projectEditInfo('description', text) + } + + EaElements.Label { + font.bold: true + text: qsTr('Location:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.location + } + + EaElements.Label { + font.bold: true + text: qsTr('Created:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.creationDate + } + } + // Project info + + // Project image + Image { + width: EaStyle.Sizes.fontPixelSize * 25 + fillMode: Image.PreserveAspectFit + } + // Project image + + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml new file mode 100644 index 00000000..065031c7 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No examples available') + + model: Globals.BackendWrapper.projectExamples + + // header + header: EaComponents.TableViewHeader { + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + EaComponents.TableViewLabel { + flexibleWidth: true + horizontalAlignment: Text.AlignLeft + text: qsTr('name / description') + } + } + // header + + // delegate + delegate: EaComponents.TableViewDelegate { + mouseArea.onPressed: { + const filePath = tableView.model[index].path + console.debug(`Loading example: ${filePath}`) + } + + EaComponents.TableViewLabel { + text: index + 1 + color: EaStyle.Colors.themeForegroundMinor + } + + EaComponents.TableViewTwoRowsAdvancedLabel { + fontIcon: 'archive' + text: tableView.model[index].name + minorText: tableView.model[index].description + ToolTip.text: tableView.model[index].description + } + } + // delegate + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml new file mode 100644 index 00000000..cb1ab180 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +//import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Grid { + + columns: 2 + spacing: EaStyle.Sizes.fontPixelSize + + // button 1 + EaElements.SideBarButton { + fontIcon: 'plus-circle' + text: qsTr('Create a new project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + EaGlobals.Vars.showProjectDescriptionDialog = true + } + + Loader { + source: '../Popups/ProjectDescription.qml' + } + } + // button 1 + + // button 2 + EaElements.SideBarButton { + fontIcon: 'upload' + text: qsTr('Open an existing project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.pages.project.sidebar.basic.popups.openCifFile.open() + } + + Loader { + source: '../Popups/OpenCifFile.qml' + } + } + // button 2 + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml new file mode 100644 index 00000000..8357f95a --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtCore + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No recent projects found') + + // Header row + header: EaComponents.TableViewHeader { + + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + } + // Header row + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Layout.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..23952b4b --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Layout.qml @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Get started') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/GetStarted.qml' } + } + + EaElements.GroupBox { + title: qsTr('Examples') + icon: 'database' + + Loader { source: 'Groups/Examples.qml' } + } + + EaElements.GroupBox { + title: qsTr('Recent projects') + icon: 'archive' + + Loader { source: 'Groups/Recent.qml' } + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml new file mode 100644 index 00000000..649bb8a8 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +FileDialog{ + + id: openCifFileDialog + + fileMode: FileDialog.OpenFile + nameFilters: [ 'CIF files (*.cif)'] + + onAccepted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + Globals.References.pages.project.sidebar.basic.popups.openCifFile = openCifFileDialog + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml new file mode 100644 index 00000000..dcc2277b --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ProjectDescriptionDialog { + + visible: EaGlobals.Vars.showProjectDescriptionDialog + onClosed: EaGlobals.Vars.showProjectDescriptionDialog = false + + projectName: Globals.BackendWrapper.projectName + projectDescription: Globals.BackendWrapper.projectInfo.description + + onAccepted: { + Globals.BackendWrapper.projectName = projectName + Globals.BackendWrapper.projectEditInfo('description', projectDescription) + Globals.BackendWrapper.projectCreate() + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + projectLocation = Globals.BackendWrapper.projectInfo.location + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml new file mode 100644 index 00000000..4bc89207 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column { + + property int labelsCount: 50 + + spacing: EaStyle.Sizes.fontPixelSize + + Repeater { + model: labelsCount + EaElements.Label { + text: `Label ${index+1} of ${labelsCount}` + } + } + +} + diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Layout.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..273d95a0 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Extra/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Scrolling') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/Scrolling.qml' } + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Text/Layout.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Text/Layout.qml new file mode 100644 index 00000000..3c9c9d63 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Project/Sidebar/Text/Layout.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + + +EaComponents.SideBarColumn {} + diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Layout.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Layout.qml new file mode 100644 index 00000000..3beddbdd --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Layout.qml @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.reportCreated ? + '' : + qsTr('No Summary Generated') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Summary') } + ] + + items: [ + Loader { source: 'MainArea/Summary.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' } + ] + + continueButton.visible: false + } + + Component.onCompleted: console.debug(`Summary page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Summary page destroyed ::: ${this}`) + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Report/MainArea/Summary.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/MainArea/Summary.qml new file mode 100644 index 00000000..0168ba3a --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/MainArea/Summary.qml @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + color: EaStyle.Colors.textViewBackground + Behavior on color { EaAnimations.ThemeChange {} } + + // Flickable + Flickable { + id: flick + + anchors.fill: parent + + contentWidth: textArea.contentWidth + contentHeight: textArea.contentHeight + + clip: true + flickableDirection: Flickable.VerticalFlick + + ScrollBar.vertical: EaElements.ScrollBar { + policy: ScrollBar.AsNeeded + interactive: false + } + + // Main text area + EaElements.TextArea { + id: textArea + + readOnly: true + + width: flick.width + topPadding: 0 + bottomPadding: 0 + padding: 2.5 * EaStyle.Sizes.fontPixelSize + + textFormat: TextEdit.RichText + text: Globals.BackendWrapper.reportAsHtml + } + // Main text area + + } + // Flickable + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml new file mode 100644 index 00000000..e80a6b4c --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs +import QtCore + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Column { + + property string projectLocation: Globals.BackendWrapper.projectInfo.location + + EaLogic.Utils.osPathSep() + + 'summary' + + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + format selector + Row { + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + EaElements.TextField { + id: nameField + width: saveButton.width - formatField.width - parent.spacing + topInset: nameLabel.height + topPadding: topInset + padding + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter summary file name here') + Component.onCompleted: text = 'summary' + EaElements.Label { + id: nameLabel + text: qsTr('Name') + } + } + // Name field + + // Format selector + EaElements.ComboBox { + id: formatField + topInset: formatLabel.height + topPadding: topInset + padding + width: EaStyle.Sizes.fontPixelSize * 10 + textRole: 'text' + valueRole: 'value' + model: [ + { value: 'html', text: qsTr('HTML') } + ] + EaElements.Label { + id: formatLabel + text: qsTr('Format') + } + } + // Format selector + } + // Name field + format selector + + // Location field + EaElements.TextField { + id: reportLocationField + width: saveButton.width + topInset: locationLabel.height + topPadding: topInset + padding + rightPadding: chooseButton.width + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter report location here') + Component.onCompleted: text = projectLocation + + EaElements.Label { + id: locationLabel + text: qsTr('Location') + } + + EaElements.ToolButton { + id: chooseButton + anchors.right: parent.right + topPadding: parent.topPadding + showBackground: false + fontIcon: 'folder-open' + ToolTip.text: qsTr('Choose report parent directory') + onClicked: reportParentDirDialog.open() + } + } + // Location field + + // Save button + EaElements.SideBarButton { + id: saveButton + wide: true + fontIcon: 'download' + text: qsTr('Save') + } + // Save button + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Layout.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..472d957a --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Basic/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + enabled: false + title: qsTr('Export summary') + icon: 'download' + collapsed: false + + Loader { source: 'Groups/Export.qml' } + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml new file mode 100644 index 00000000..9f478042 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column {} + diff --git a/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Layout.qml b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..ef2a2edc --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Pages/Report/Sidebar/Extra/Layout.qml @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Empty') + icon: 'rocket' + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.icns b/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.icns new file mode 100644 index 0000000000000000000000000000000000000000..70975cb15da57f34bc198449a13b91090c21bd08 GIT binary patch literal 296301 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

      a>A?nc*<%B-9y1he#`rAtv1l-33l@ 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
        a>A?nc*<%B-9y1he#`rAtv1l-33l@ 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
          a>A?nc*<%B-9y1he#`rAtv1l-33l@ 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
            a>A?nc*<%B-9y1he#`rAtv1l-33l@ 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
            + +

            Summary report

            + +
            +

            Project

            +

            + Name: Slanting line
            + Description: Straight line, negative slope, Siglent SDS1202X-E
            + Model: Line
            + Experimental data: Siglent SDS1202X-E
            + Last modified: 09.02.2023 14:13
            +

            +
            + +
            +

            Software

            +

            + Analysis: EasyExample v0.8.4-beta
            + Charts: Plotly JavaScript v2.18.0
            + Calculation engine: Custom
            + Minimization engine: Custom
            +

            +
            + +
            +

            Model

            + + +
            Line function: y = M•x + C
            +
            + +
            +

            Parameters

            + + + + +
            No. Parameter Value Units
            1 Slope M 3.0000
            2 y-Intercept C 1.0000
            +
            + +
            +

            Fitting

            +
            +
            + +
            + + + + + + diff --git a/src/EasyApp/Gui/Html/BlankPage.html b/src/EasyApp/Gui/Html/BlankPage.html new file mode 100644 index 00000000..bd54434b --- /dev/null +++ b/src/EasyApp/Gui/Html/BlankPage.html @@ -0,0 +1,3 @@ + + + diff --git a/src/EasyApp/Gui/Html/PTSans-Bold.ttf b/src/EasyApp/Gui/Html/PTSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f82c3bda5018d34dfbb46a9740c38cda916671e6 GIT binary patch literal 288340 zcmdqK2b@*K6~}+(zTJJhZ!1MaL0qbci0ra7V~n&_A_@Xxjk*FV2`vH<+J4VHhU`Gv!0xFjK|Nds~eeW&BlK$8hxcG>c%DKn1U>F+OGW_HCqv(x{1)YO(KYaZwwlm8O( z4?2p7Y}Zowb7Q#gany`?$G*Ae!9C1s|6^9U+w@tJTS~rMw}V-y{@jn8(Q@qUQdhZ% z{C&w^KeJ`V)E&D_x!!D-Jk4O?%wiHck0qane!== zv2u$nXD*JpMoiID?kL;ZS}dzOj!NRJ;sfO86q8y1<@*TpsV`5Aw<`H_lE-J%PxO?v zvza#6j<=uM&+SYTjhc9fRk_`)-2K=p-5RTjs;x3wY&E`gWDm~X`GA`bt=(m9BQ)_{{VD?y+;*d5TyShRz?gQ}P4 z;%l>jNJ|D0g&ioTUd31DB36{WBn;u$OA{^XeGM? z?A4DtaazZbcaQ_s&Ar1GBw@Y6d3V@7NqCsT`FBvMkne7*^7$7kB;U3QNk2IW|C)r` zTAh#oUJ@RfgeNEAWl4B<64qLKk9Tu1>;j6+(ZfBs??;&r3p| ze?ArNyXPXS7`OjT&YgR}A{YN`k)5{9?N~(S&_i}yg!$LkkD4}ep*xJ5s4o$Hx^k82 zTi?7e)3bT}{@o9#Kdb(%(NoT~S8Wy->mo<1aD>RAWuRKL(B>_3g)iTih5xZ44p z@|RN&IACY+ln4(+$bQxVVEAEzfzU_o^aYtp`|er4Fw<+?{`>5|aKXq<3wIlNK&P%< z>qjlTXWae^?-|*t>j4Llt1Qnc97~6R=PW#z^&!1HV41N0!reM8v;)pMOE@R&-@WU? z1!tYr=`8Az+%K|wHi&SxVZ?4p1d;#;k{GqfEf@zfg6>^ADWZGV?p@*YfRWIy=)32H z{YSxRS89Z^InRY>=Jg zDqK6at=rD+;2PXux2xO3?d7Jrx$b25OSd-a6b+6RM-NA@WL)N=%(a=tnR`mAO2(EP zTykj1(bEWdtLVJa%p{=`u6o(*LSJ!R^O|>fBnw&BkNDA zzoGtb^?$E_vTM7p9lCbw+N*27Zc(?gZnfRocH5%c*4?^v+o9VY-45$EwdW&!k6Po_ z)T}vk&1GvIUi0{xWo!3Zx6`_T>keOc|GG!lEnWA_XAxeI#$}hgD%ZhvbA4Pt*W`w} zVQ!2Y=YHsph3_>{N6+^|(ep)oyONrceM$}~IlN>}$yp`$mwaAYSK7I>N0zFOKhs7sa>5x5l@`3*#H(>*A~9i{b%sn=jXWIp@o1Umoz~ zpfCRP#rdD#`Ni>H?EJ;hFNSuWPC((3E0|6F}p^^B_Xs?M%Dv@)(-U-?Pp zy6hvk!T)a_;yY)HqV^U|K5ou*J7jvxyqWZ8yI8c>*fI6iYy8-~>T!*RJ(bf(R5B{q z(zc=R*v@D=KDGo5b=JW;V{g5T{+rk=Evdq4=@vR!PdW(j4WFyzMfl&+>{+KMityKSG~Gg@MmwY84c&3aqEmX_)B+{CZ`ojiHQY`6DU{~j@? zWwP7jtACH0Hg}#I{?)(JrybeicKMp$S(B%`L5zK-yZ-*SkN@p4YtEFJuJc#_&YeGd zuIupCzv$8-QTek-0>AU$-hF%rd z-o8)V$b6i}V{J%r3|>N28$HVJ7@u!+zHF%X2{zB>6PKYbTVVSI4sImwhqMAorz7p6 z+!k0SnnbHn*e`_CaZ7j@Wc_F{T_|5;CndQ~_Td)(Ub%JO4;rNVQrr`6LFt{5R$98; zmud$!<@O=D+C@9ilTG42Tq(t0DUDP7x1$Cf^0kv>7IPQ5f4IByu@U*pqHCk;qGO_C zqwAv^NGWqyxvSmv?uHF=)>w(#p8jSB*Oy!+^gq?E&b0xr?CXcvob=olnB%n(^xV@% z+3q&l_O!iitnFui#M+*;rMALex3}yA`>%auYh4?9;hwH9{nv@^EO(*1*j?^!c2Bt1 zq7Knv(d_8a=&|StkAEY3af8jda=c7WWVRhvxjp`72lTWfI@k$GHZbBIU`;jsR+-p*^f+{`$+wj|85jN|x+{{m=|KOP^WI{tO-kE^>yN(9P1{n`HR=}i zhA`M?Zk4 zvE<#!dPS!b=AijGVGH+XbG?my-|Zd08%-xJvRyLugcksplDZxZk}sH zqXXlQGlzipILk%j;xD64*2#?o*ER7wgxm0p-QF!m+u`Q#HHq_l@UCGxK+Fji+ z@O0$9EAiFV;Hu*Pxc9j3W#7&81V8c7R-|_(B%eE!w5x3^_X8`9wzeksO8jB8H2#F= z_;UAZ{IPq)wsmun-|NtuYu%}TXUX67w7$q^A}|0bjRwabDi3vOaLcLdFdOXtgsk7O zZ78#&WFOsZySh8Ub1V7K2{R*&z!2BK{ZQoIhTiH6@{S?TCAPi0(z;Q;TV}TP%$yFK zY5gU8FL%j)1IQc_zwUK`9;AyD+&1wlbkRWgGVo&bhj@Kn57I?3)WWCkrHf*aE~K-g zneRaEn}Q4@LFvNlLApqxI{p$}G`s3}CGf9kfc4DlLAodghmVD?ci#xnou^^ zEStyf-jdzR_GJ6Azl}o1KJI(;qiPef%MC;6L9$80%!Sq~Gn#wajO=!Uu&dgUYKNNB13*>d!<2%hf+9tXMrlYm2j z2Y^TQH1Oq<(P*p6qV@6WOdaKw2Oc~P(LEbE31@0^^W%@AT4eT5 z>a}-Ky5u7s(Tk_?Ic@P$$~F_<0p1Rv%re>;vi9{ofq3!z7~!6TeTccCuE{N!Mz8KH2gjNL>DX1G^4N6Nk7~AMct6o z&j>qG9vhRqGh0LNbSq0k*-|u_I;>UQsB15DAv=&Rt|#1$5PeJLnZ3Dxh&q?qaM@R} z?~%`y-^=@yqmlXN)(tdm|=8DhI;*tzIcE7?X97IF7>Xp_Uea$Qf&RR%mLQj&5rNmzDp9{jZovBPTo$D z6MpJMY-ShVN54#1iSLqs+m7pFfmMKPPU9ktO+M#dW0FI#FZztsrsP|^K2!as?IpGM z)Xwl-zD;i!rujFtmksXo_K?y^Lwu_IgZEkZjWqOr3}2Fl^qC(;1H7LK_L|_&<4x=< z-}kA$wBvlcRo~0l%(pGsd)gN!{e#APe$1u%+{*e%5^iW?eoV_)*V_>?clc`eBJgIo zj!Fri1U?3yfadn}OZ)K5z1SX8yTt}OXz0we?yaq%m@~*8&Vmp#AC-8*n%h~I zV)>%3BMWTIpS0VLsbHQ?JB$XFnr%4+_@~)c|25nCF|*FQn|1l4S^c$U-S%dAYn53~ z*1GyouJ8S3JA$(xxcmK!wW}S>`g7elLd#-iLvAzMWlOVNx!&zgvti54hBLx#?rpYv z4`89$=us>L4F^6o8~cdagoDi{F%Pys^*QiWvmdZdcUV^dT8FooP1(lm$lsd%@IPkL z;bj*0vmP~@{axU4vpMa7ab|M~=l{d(n8{|x?QC|!L1rg)GduamW~a`qp#7JqDZ&oO5A|J>}s?*nH5 z7qfy!ogSHK_SiDB$GLu@4(Jb{i>IjHQ=gkHC2lD_%+l3n|5{-7>;b^DX3s(UIqLiT zyJj!U2VO9HaWrs_*-KlPy>^Y+%CpVh-W50(c+Tt{p1j`qCGc;vcj4n*^!o0XX78T@ zJZSboPvAsgh1tJ{0)H@D4W5sX-$&1zt!V#Kl^ z%s%UF_T}H`#eN5@GnbhJa9zTBV#(pajlgGOwlmkZ7MKM*Y_45*fa`XjncHHhxh;nP%=UC->8j)Yz#?;7 zv5dCW0^l)oTh{~3$aOv$p!_z>7;SSTz_MRGlM~&32)t;n`_@1+@NWrzPW~7 z0C;L7-++GRnm#Z$a3A0*fa^hf0oMYbnj1V7SZZzv=|iBmGjsFb{R6Pp+^#1A&zk$* zHo!T+yXJQLE^sDruQ6?6uDP?hJ&7MP4ET$=yCTlGIuiiJ{cM(gXa|Lbjl9qPKDN~==W6Q^|Skc zr_G%)(A?Q0%$;*K@FcL@+k>dZ!NOGsAoSOyDG59RSa-PXH+M8}xbc zkIen{Pv(C2UtSG(+}vf=<}Rm>R}M9Ibz5`SoCjQH?)taQ{k1>vin*JR$xZNaTQ76B zqxUI*EY zInbh7R$6Lbv#9Q2i`t%GQTrV%>cCQOC+5YwFzei%ygjeAsCN&GwttYt`e`f!ud-;T zvn*{M=oK2{*XnxlW&hZfk!R+ z{#1*`EVgLxvn|@^Ba0@2bKlh#P5PTf`+aHAfpr!gG=WKmQi~2b2>6jjEyFCDLjI!~ zEt=j8OtNTZe~V^!w&=$TEt)&pqIrL?=x9cF$Lwd(vDaC2+#4310PT~nu;`QzE&6E$ z%mLoA=+xsaI;{-o0Q3UR1)i|z=hXYmV}Uii25}MaiA85WW6>{m0p7RhT;z4Z-T*SV z;8lx$2|vHQ!=ekpbK%XveZbQeT}1pvT>q*cu+pMm_W_PJCISJ4)cNA!0O4;>vgmiG zTJ(G5`}?&PUGgi7F5lmxD^IrQD&%#|B#W*?kJo=-(O=QqO~~9zoP3V03pk7c?;yF2B(zh{{q zdji*6re`Gp&pof?wFh|ZMSL%4ZU-OR9SIy`neC4Np0iA!tu3=dJ@5rDiwp!#1eRK6 z$8CVWS*9Oz-8=orGW}UkYv=^9PSW^@Wd;njOw+rT8Fa5@hU{yZox1_Qu*`R;2jkR; zVGBomYcdxdZu7sz_A;#{jkA4h zyiH(Da$lRo%F_OJfE{QD*}?V$RwfU%!>q+ccBNn8`3Gw_@7T{-**TjPoNMh*F2ici zi>&`#$jZz|toi(g6`=d=Ro0^}wd-uHU#+>q{$fk)VY|@|x5;+CO|eI9s$cVYl2xC_ zS@(I@jEPSUcX1WBuVo`-v@Lb?jt2iS@)&{HoC%tPz#EGM8nYsDc^gFIg?BwAh(n zW2kY?)oKNfwWD^d9&N$;(Uz_wYfPWItyo9utwGsmtU{^uF znXX3JTlTh_U{`OrCdEqG3VX?3wpZ*md%>26H7fi4CReGZu`c){H{H!}Gu6y@@qGLcGs{bcAZ}j z{foPim9d4ajor-Z*xy(myNwmHMXZtC!7ABett_!pb`NW1_pw^`0PAHBv10a5*32GZ z)$B3W&7NT8>?zjHp7yI}&$52Dj1{yOSVMb>RkT-FM_cY*V=ZkZt7&hrp7s_iYVWY7 zwu)7?_gPo_H!ExZVQuY0R@c_BzP64Pwoh1NThA)n=d81R$x55C)}~hrOIU9!W5unU zHMbnAZdI(i)v)qb$J$$4R^QsQ{?>sNxQ?vBZOtlNXV&4mMB7I7eyyszU#;pDZ5Q>9 zwvYNmJ4Ah>9ix8HPEr4;A!>{U@D9PiXb|ri4T*+EJ4fG%c8R_l?HYYA+ASIu4QG}2 z7Q4;<&MN8O>{fe_wbuJsWxbv?)4O=NaB(yu8X1j>nxoyLJ)+Uk_oF?dG0|Sp-qF}- zT(nO#KAI3sjP~VSh5e%aqXVJ?ql2P@qaQ?vuu^zf)Dj)eoZl~^DSlPzv6uy>wqUjKVhx$ zBvu<2u-^DnRvb@b&GF}~I-bG0<5{dc{(`l~b6I^npY_LIvI2P#YmmQY@NqHgkiTOk z@)Fh}FJ(3Ia@HfSU`6sztVv#-UoB)+owdmuS)E+S`sB^5Q2vcI%G+3_Tom0N-4UfL ziFZf$ME6GbMfXP!L=Q#}@z&Wtqb1QJe(n45=!xjb=&5L_-DCGgPe=cXp2^OiIjw*H zVf~YEWOmq$mdSHw&CIrhux!}jbEY0WwXDSl*amrR3)f{MC%1s4Y)S}5g0W>@c2t6TY6x?qrp%hxGI{dUne%c}^OxCC35ls8EE^SY zO!YzK?gb*1M;5NDcAq?J#*CJLt?J04o60>3xhjt;T$k)|c*~rUqxi{=PWYOZgrgG< zrX`j9exX$54-3~-dlr$Y`cctM*_f8e^XE-1o9=_EF-1vL(~EA(#)P^}55eA{)XY$7 z@1l%VGmCD@_72%+`XDV1oOuAX0fm)$qf&HThV4h*~aFWWd^a7D`z)20m^JhX9Wg{MoF!+qL-p#lGZ zVWg0!p@09z0qNDihWu4y{;H7Ll#d&jzZ#Uk3N*nta7aEbPh(L3G;UCy#-Nl&LsK4K zLmo>*9!o(t zzQmw>i9z`igYqQ?=eZi3=Vfr7m%({n2Inyk&SM^&$2>TXd2k-{kUZug`T7pY(-@Mc zF(gl8NS?-!JdGiF8bk6lhU94s&C?i~r!h27V`!en&^(Qyc^X6WG=}DB3@%_vX`s!- zN*em7sSW*88V&tZ8V&tZ8V&tZ8V&tZ8V&tZ8V&u^dNlOU(`d-k$n)Hg*Lg#p`-Z&s z8}jvN$lF1~&_TY9Hw_tp+794KP;g?ETKOv zp+794KP;g?ETKOvp+794KP;g?ETKOvp+7tfFq(!Z^oJ+(hbQ!hC-jFW^oJ+(hbQ!h zC-jFW^oJ+(hbQ!hC-jFW^oJ+(hbQz$B=kol^hPA~MkMq`B=klk^hPA~MkMq`B=klk z^hPA~MkMq`B=klk^hPH1Mke(gnbdb=LVsjJe`G>`WI}&rLVsjx#Y39Xl!Swk2?rw+ z4n`&%j7&HfnQ$;F;b2t4!Kj3TQ3(g55)MWs9E?inj7m5dl}KPzB7so}{ZR@1Q3?G~ z3H?zC{ZR@1=7fH8Lccko-<;4-dg7+$gnn~Ezd51boX~Gh=rbd_5b_UfNb)y^`VMRi^aeHtdIK9hy@pW(JU&8?kI>hL(ATG7)IeXJ(3fu* z6^1!i0V>bM6!R!OXc&=m#_BKDf3) z4UI`>F{oj{z{ZNHbLTOJo;P)huWe&PpgLkusO5-3o?3HLf6pzU=Z4Uy6Q=2&8}7X{ z2t7B1UK)g+8$vIQ=B6PDo*@aIAqk!#37(*;=BD5bo120Z2$TGwmfRxtO2KM)wYEI0RFw{LUSMI%;5PD4! zdYKW1It^?HJPvFKbsE?Z>NKz+$Yx+ekWFIllnZqj*brnhupyz}=*_!%U}HkR(OU}l z3H{JKxKHSZ=D~eJzcHcTn9y%b=r<xW0 ze?UTiKvMq!3H<>H{Q*O(lR@RcfnF2gj)8*i5*;-bT^Gd%eT6*3ytaa_niAPGC9-Ks zcxy^{Yf5-)N_Yz{xp`ny!dp|qTT>#NrbISPiENq@*)#>&3`%4*D3R5mL{@_mSq(~L zF=)WRY96-x&741D>YSE&v*vhi2ZgrXJSenT!a!|MXtUf0$qx!$QS+eC6%mHo4WjGu z4`ltOmrn0@bjzG7{d3E_X|rZZXkq5ImjA$Hovx&U+avlhL+!8m&yO9~C)fOE&W;}@ z*BRSYGsr$qiFMrZlH|J7dhB>?a$RN}c04?}&f26MtCH(->)3Zqa$R8~`z}nba}~Mn zS0~q%)~|btr^@#3-Y1E#?)Goqwh44=xH9HT=W)*F&HSA>=Q7(mhndsa#LcySz%*u1 z`!RnyhgsI0nEP#J7Wh!+Pp2|7JA(Mx%%Q5pkseb${{=9a{{yIJZd>pF_qV=WkFyr? zv@lt!{Qs{+O` zV3ew0I4O%Yy7%Jg3808&J-9SXBK6y8UL>l}dC+`+wpT^$DzZjDdTtbd17oq=B)7 zvY0WXjqtG(_^oICW7G2Ak+en|x z^T9gXmz8%&>sBZ$PdL?Ea@w}0f?4TvJg!tKE#Pi}^QrKt)>-fvYI!q}<9xzUYo!K1 zruxq$UR=v3iLvS@%aIafNz?dIr77*B?$v z*Anu%jc zcQWNeJyMD@Jtoa<5AQ`qa1mlIo`U0WK&Lpe8s(FD;o*6Q{0oMk}0$VNgy2q1wYo>(u?^O?jNJS zXNbrBb0~Oniu&PC3>K2et3fKr@9r5izdKX zvF&NxCTSeuu@`(s%9FGuD-1f2caRp9Z)1%Xx8nLuj(PV0k6OHH(i<%5^S+t%L+etX z5UfajpyVzs&f)!qAl2Z3^zMRucxod-pQ#To_8Y;Q&m#XEN(3L1)=)l1UP1S2k*&vM z#Vw)=mRzc89@{UoB^ zKwPU$gtilOQ_TNZu;|%E(o;{g;dpLyyr*`QjzYrtA{{3Lt7^t7LW|wdI@2+LMjz@w zl}mLDdRBiW-Z$)({ueteuIpYH}tZ->Dq3 zaP?YBkrk#rik{}e=t#YHnxo#2{?idmI@(A}2}>B)sO5>e#?irg)qa8oinXLsOlxVk z&hvGa5ZaA!s|`vf!D=)j2p(B2G3YVWEa)p8VHPA3#?W779jVuqPo7FIRL}2BdLnsD z)giU#V(kv|vQw`$$3L}h%KH^-QhxeKk3aNoq7Z7Nkxz&V{r8dFsYe#o5U(~RDQNtv zUQzAl7}7MF4ec^Wpt#>tyVgih{HK}=?LgMQp{)lAr25;utO^p)liGNmV@C7zrsp?3 zuj$(<^4Pi_xl#Wy&U2(O`&`bn?FO$Z9Z7;ghd~13GaWG%#^J$=f=y_SBs`U;8Vn<& z)^(o+R(U2_L~0cp+owKkL+jmq?PZgJQWzKMJ{4)ou-DGhUcDdS6lT0hv%Q?(%PqXqIQ@*O{9_) zE%6(kv~)d}nTd3cp~3gndsEvmgA}Yc#kYCMhtZOHptMZ|I}jFma#0t}@bso9f5}O_ zZ0Lt1QRUWb!-joPXhmP=x5Icf9S4MQsoGibGf3b|`Z}Vh|8DfP|KI6;bKQl0Lf&(8 z&n26)I9Xb-rvK#`MAH4Lrx1qk^-832&UbR>CxIyBr zM_j?j&M9g?0}}6{XRohorTqt9hYR@pDY^D6WvBc<%M9`lK*}7y9J%X+HSdP@6CVqgsX*te#o=muHX_ z==okPU$qOZPOUY}fJhr5MczYg=E+w49fMZY(ljP1NIvzy zg)w2UgH6lho60$O$pV#4OIo@}{ZN`W%u{?_3(|;UQ*B5Vo{lyKwz8kiYf_SvZq$x~ z?~>+%Mm9B~QvTpIzwS9HV3svVAHg<6WmC_avIuEiEhV(RZ!)JL3aP9$#~moOw#Lm- zEXJQ&S@AQ(=K9azIsX4JSGIYZC_L#*%s=VuZNu_&V(H4wrbZe;(`r}hgXL*wqM6_) zQe7QQs^)2BN%A)Z`4@Yi4M#v5j;vKq_L7c;WXJ0D3*75DYy!_@W8i%>K15G#f%iSQ zE?#Myz=*h+`t3(fty0zdl3Gn3Ps$|jG&eYs_-^Ewkfeu|-2F(M$p0;k;1j%_9VZa5oNuj_ zp8iWpbhTQjXHw}*oK7UZK(#ejqsbHKiL)S?5!4~@tpCW;s-$oo;ORH}>%Dy`mD3uf zI2{Iz<99qcwN|+=rF5s*eF?{rFRWb(v$ztsnqS=;9OHesJ6Od*Sn~|B(sT4UXe)>Q zCv2kULX=cH<&;z=l0FQqDle*g`q;pkWFjq#mjV`fNYM^_NdA)&d|IDZ{l{<$bFh$& z`KTvlEO|s#xQ7!4*-L6#*DRLK-d_I&3l!HQp(1`&?}E;Y`IY21*1@K1KvI=W3751Z zd5rN=n1K97p%GyUF)Ay}j0yg`OxHbeT`2W>rNEZ5@bnZk*U(sRv2icdfeBS zO|hz6Yx$>+}TQrf~@sJpB~vJ4zb%Rw4nk2iR)Z~LB#Mv2oI6YPXn zmDerIx6LK)+hJ?{wu*f8T=>^BRAD{o2<|n04}EnQjjBfttKu5hg;|I&77VRUqku5p z5`XHeg*TKP!j)o<1EcuY`yBG^TF=%SAal4+dk;MqhxrCQJEd;}30Gk>B|4jXPS7)n zxYP5AN*&?z&hQih7lD$fs*ehNncf7__*I;!L>TKA%i%ku==~dwc{N@aeT_R?*Gz9K zd|l0o-(%2ND?B$zv*IW48&=bbSIATsJyGb1cf(PNQc_8YAN7;P{OUPXm&He-n3bj>Qcty3{gtFMFAfWorB; z9S085=i9Ws2tyb-OAcDMR80zVLaF6Qr>ax&b9vhO!y7IEzqr=ALYS4*>Z1H$7 zEhBiw*0L;&Qd4^`mXdT4=G4M-tmGRckb0#t3Gbqs%4P&sq9<9kuwa?#T0z0~f{lh& z8Cr@kOP5MX<(bw^(wXP2Q8p<$l79=o!QxuaL&&~Tc?Jnci^cCyO0uEMc&~j?43cXm zr?je;nc^taOfr>C%B#z}rIw`@E7_!2)A-HvD#-><7~bVl&9$y3Sx8S|Mo6_Qw6}uC z7ys&YRIl(pf!dem1NA(vmXPW~In;_ZV;E9GTi@`#&a@Tk9oGJQv98!3>3Li-m8X)N zO-(%vm#m_&)te`qA5e*FM2NanJtqtX8`U}FyDS;msGAzj5!BEB`2jrASg zNB*i&R_NEl`!#wqBb9w>-J8SNk1_v5M!Ks1Tx34nOLode?~OLXrL1iLV|LX=Z^v!O zPg-_ET7i3w&o);=Y3Uo;1uPSZO*xaDZTK$twMnVa1~#Nx{1&(DNcJsD4sU|XcGccO z@2eK6_q`o&oaguw{On|Jj4so|-WVl%iJmTcyu55D4+^N=>{LW@4 zt-h1}?~kU=nQ6VkFGcj-6#eSpV;z=hn%-2!_fr&`*}n6(7x6vAsO@aw-+JrzH~2Ty zEq*3m9WRNWx9a$#ctw0OyQDl5uZ*vWSH&O1Z<6w2{CvDNelR}II>w7U?r-%2W{#LI z6M}a+a98|R{5W`@j9=z_6zt-FulD(TYeV?We`7vk6dx@7Rux|vpBSGRUmMSf7f^#& zIIm;xmph?xMm)!|G2ayAi!$HpKq{-_b|T0{m}3= z{Z`0@A;@Q4d=k6Ttc^d3*TtVAl{e$}W4?l@11WtJpG5dm;C1ox?GI6b^W{kWDLDOS z{6PGU>VTHtr9R+~-~aYlRRYY_R)@SVz;<4+_Rv@vFJ-5lCy5h;^Gs6CA>VJ}yS^Qr zcqRFJ#gBl0v9G}^;D04v2Hb{>*2e#)9#6+-Snv2(*zm*gi{BFeo8<3~|1!>p;$PFwr0oZY{h9Uf@?R7$`4-HRHD1L}dzFgc#$Mj> z{J#nIwRi?utL*io_+-Av)Sf)wzWu)ATh}JE7W4H@+TLoYsFkh4cm7WY+^G&59r0&i z{V@J4e$QV$;c0A?>l;MuVqGb_QTqY&C(usYYgck?{|&Hhlm!WZJCCPTdb}q77@bHy zw?Pewefz`9|34d-ga1$Q4#;0=KMekj z>>A0e1G{L48a(=~ky9XPznij8^#C;~_WuR9$|U%o-?+T2rx06wU5Nc=SG3t@@Bzu6`3AN<=lD_%!;l zYq>fN{O?ki)E^@c^6_n7j%v>K)Z(=GUiwt^56j{02I~<2($m|<=c=Rp>;8(L_!R&> zrS}TC&&#Md{@Yy(Gq{Gq`x5Zg;RU4W930By(YkcRrviTn*PHuQo{f+A5yi1T-u^k0e-)lDACv+)r>qc}9-?Q`SwG$uZuUi3BHsYNhG)mZo; zH1H($wgNkP3>#eT?PsO8E{%`z015tc#NAgOTgDfLbnHT-m-nno{HSeDz0YJ9!q?-y z;$y@kci@8JU0l7HVr;G1G`2V-N3nnILa+9?tQ1UY@si{dvPX_2AGM@y=G#Fc`(m8M z*LZ_;Jo*OGQJd3P_&x7i{g^s_m^evfdCbSDWqa|*fTzhQff4LiAASr(7G(WCoNFxn zUMS(^{hl8Kt4F#X&Nb#>T%5*fx~mxNzC~M; zS6KzEx2Vw*=;b4Cq03{wF%RX}eQQ8Q-{gpoPIIY!QT~(oLTr4Ax0toEbZq2};IX{@ zr2WPxp;ZhglxzlY)yc2RuPe^K`-zNY)EE#r%@@ALiKbl*hnnCRFs zF_ZruuD*DyT@vf{Wm~7O+OjJpyCiCFMD2_?+V6=tmc0=7+h7mG!`c6Es^9(ahkQ|1 z-;Z&ighA+A58?O3(>&9Pi?ZdZE)9;<0z&B18 z@O{$_zipa+*Yu+N*G%;l)9}?&?WTB}W-!_BN%NUo(n|_Ufgf`DB;`H zUw@SG4ea!6pRYyha_oGcoM~N@Uga}w#n-XZQ{1L!8dpPV8W-xArpO!CL3^tNIzpo+ z4+UuyOQw*nyoF<{!sTYKlt+@@Do-QeD8wr*9Lg7ta^zl!S9-`_g|}&!2jvaeIx^d! z5?^)5>urYuYv_$v@`8GavJ0D-~fAvghe*R~Be*572b|lmn zTy&?ae#vil<}5;LHy@)NtHZei@oWg>bM__d>q{!8D>>>(+lI7lxl>#{-#||(a^bH# zLA4MUW}{l?+uq|49_^JaT&lOq>3%!jHWcX4&bI;`+ar-aKGb!{A?#bjhoBd+Y+r=G z-yZ1e@rlQ9DD0c3E84xe541(UYZ1n@taQ-Fr-k|?sPaJx-k}7)p>M>8-;h+A&+&i$ z;+wSJucjhN1$~8ls=MSRSrs7YRcR>{V^v&`Wh&1!HOMr*OT&=A&^m+Pt4qAC{A;0g zb@Uc5OV^k7lV|-D5n-_WqKM>D>sZA{MdC~KRe!B;89qfVGX1uH+O9>JO8`wg2=8 z{?ur>YPqs?kjUJQU|iugkpL)4M{b z(OvsI6yl}lO^&LIvv}{CM)bm0u=yFDCH1J<(?K!eNW*$=yV82J&qF<_$|E1G(!GeO z*RA(S^1R!7zo!`aKOOQ`+OJ!lrcXXLZF7Bmx_nmf+bW?nwX_|5`|QPaJ-K>#PbHfD z;HM9D>Fq)JdnR}l7K751Pls@HgOBdq3zzDhmJ4+fZo>o0uZkn3rYWsM^;x0cQoev& z_)~mr9_QnW)0AFMM4&DD!HcB)70QM@DMeY8juLOfTjCwG6NmQV2){mY6CNYP|KIsr zXk((P`l-(8QIMBp)>>{sHX(1}I^AYk z!^;o@f-pA-ZflMFv zsJu?8;N1?5^yF=qy?ICaCictFP91ylL~;mwuuo$zixd2A6+dN13hg_gy(F}A#6Q_9 zLc2m}M+kOu#d<=XFe8#?~+I77Y$O07rv+8aOU@M>#unn*+dydu< zb|vgaNIP`Q{kuNEX!hV9OLzz{3pfe57Pt<8E_-RWcPq&AI`F3L?mpoD-|PvBFN~^y zuJODGd{Hmp1bB4r4A!Yj-7fJRZWM43a5wNUt0kpwhLyQ_zy-iED~mMtE_EZUi`xsB z2t4Qa7472l_9ky{^7bZgZ}Rr`d3%$$H+g%LSNo3k#_P|v>S!Fkov$D=3sT2?%;AKy z;#F>Dyw)8991r}2{e@2?JQMf@@GI_rM|cV0V#2$C`?!88{=hvAyu@z*zwFqKkklfE$?a$k6kZ+it*NfF#p} z+IFF~U8rprYAYG+5}$(<&q0dkAjNZ#;yKolI<2Qp>#39Kv!42_r#`BS>am`BtcUmY z@V*}2*TcJbTMuvR;cY#)~xZUw;fzd^wTg%kc4`+Z7lE z?2a@>vm@z#TptJ=1RPA<4+v)v&P3|-2#+B=9ylRhjpW~k(^c+NuFoX=1#kg*entFm zDfc_>f6x6T++R+fzX5j=znJ)c5Z*<2H{m_R-%Gyx$ag>C!^HiQxF_RR(b`LHDdE$E z%&fZ=@c26LX8a7&SmjvdWmn|Y?qkY)!u_X&>j^(2{G2dGGpzqdjxZw35S9?u5w-!^ za@{3<8I8Y;#$S%+5;u>yG;pyzV@sqUWY8x5<28k^|VhfPi0vpHuKEQacClF2~ z+?Q|?upediCp>_-1A&8pgMl9ahk;AI%Pg*E!_!aU<5b`@;AgSyMj6WKLOW3>ss*L4BW!~9fWrhE(ZPq+y}n<2_GPQ2zZ$M{{+Vp z@;yTM7{I$uXl4N#Szs@6|1$6@u$=pkDf=m9J|p~`xG&=u9P4LjXo1Vbce&E|H?D%P zny@XsNW1t+w*~iG0iA$ti0?vAu`Tgkf$qR|lt)#V zGHiMoJfGofv637s$+40cc5>8sM*TB=@;W~bTbFw^_Y~)Sxy89lbH4zN&&|&LFn3sP zQf^GHAHSV}wiVOMUoAgBHzxaG_MO~)*_GLsvv*||@%wW2=Ik}uE3%gWzXr>z;Fw)> z3Qy6Q{V>`%xq%ADDmo&)G-r=(CZJ$sEnoMeBUf?~>^E_;A; zc-auH`jyp}wJj?tJ)Hac(uv&n^QraR?OnP@>G0BB2nUt+=U33Hv@^dQO6xfH_UCY2 zmpuSb0xXp0x-HjFmk!T^(n?BumCPhgC%H-vE8Sbbway`BL%3ExptM7J6+&MoV52Pc zMmk7P=TjxkB}1f}k|8BE*_X*F9N^N~8cX56aOHErS#DD1lgwMvUzVMYZ5^YGQf#R8 zszgtowZ3XyLjOfKnlW$jszliL@0+YiY5hAw zTYpGbAHHhkA>GYxHhb6=cCgd_bsMfe6jmPou+iRh8?Q0k-)ePXQ!5J_uPQk9iqm>R z8}@|T@+;R7v}@Y`vWjq{-}Ou@2_?Kwz6Z}4yYXz%gO#8@=za{(B3JXq_Fvh(@iv}X z7tyoGr_95r%wr$L_Uw7s-qpoRT$^~E+Y(RNjq!XBpeN}WQcfdfWz>f;YMHAeuk!5` zzvfPlZ)Hp}&z;AbXNH)y?hwXWjD8u9(}NQ8Ix!!*Iq^Sx{^*jmqc+ za`9Es(ee9?d2V3La}Q&ldl>Uv%b4c|#ymGL=DCeA&*JFU@sjA``0?m>@mdakmzIzDmq0^!XCH zd>;L;N0&<(kG_cB+Mu`R(cA0jZ3TK;;l5yeW9-v=<8YZwH$rDkG@u+uT_zrom2il^c?qa!?D@Du$7bIqv2%@w$%}SZgJ;f zTNiSDQOw$6ycnDM5Sv;HZ(H3#n{t_*wX`vJzbI5)9vthA3Qz;k2k~P z&G2|5Jl+R?55eC{@b`3LPq)F}-Ha?ALRM`UPxQfVGPF3gzmBZL4&wQC3~ldf)_VWS zyyGH9*^80v-Ta4(qb;!~x>}U~WnXEoKc%hZbnmUMj?qY#7Ttq(+k<(7{>&M4WX@n0 z<^j5q`xCtUXvPVSmU;%|>*9BO>~?k~Z{YojQQXz>bM|N6>b{P5KW>QGbv1q(JoVry z1J7_qg7-0kxsK7xpBcT}$>`-#MudwQ5iYj7;(swVf16Rvjf`R*W%P18qn1UCSRR7@ z_VymD>mRer?H9zy@fD2n7Q1Zx5u?1DT_yUdjo*c%JK*SXwzoQS+K4I>pNgw3D%Fmx{_JNE93jA=i6XgLOma$ zo_B%uRj~G=o?XB?f;v7x{hk5)3hMV1^?QnXJp!d=)azmD^)M74hvE*@>kaC)gnB(p zot8lT6Y6w7)L(@9YN#)V`umJtm%zb`)N2VN*d^3$Ia0Y2XL9(ycLe`gX8{id{?4{tKoJPoW203ZzUf4Nw~br)yJ2)Zg}AyypbhKd6GK3L$C23 zo~sh5qn2A@i&>sfKBsTU(l=y@J&}B`&^KhgWvb*-V%Ry{c7#$LHBsC%#Ie&nSByOQ zy_x$rJ@)s({yulh!T!FLkahHd_UBx4+104KN-re!&8@s7M9e@ z_e7rB%V47|G1pkaxMd`7T-0!<{|cHySj7maiZ?EHWAEa__|Lo<>n8DD$o?C=8FH9w zVP)Cm*Yl>wU)cfp7G`Y!&d$Ggvg_~N%-i12 zZodyR`g+vA-Lcf~@B18k`@YD&zOS;Q@9XU5`!?@)yvHuStJ%T#BX;lon4Nn+W7po8 z9eXqE)|+Lg-b!}qt@UHEEf|e$#dvHR_PqTOJJ`-*_u9GaTzgD(9HX!k*{}8#_Nx6E z`_!Jv9<}GNKkWtVP5UeMrTr~?(*A+{X#dDwv{$hY?X|qk@fY@=y@|bNZ)M-v+p!V9 zdKW!YQJJ+U%9NCrmS>|(CR3`7gG=*Al;N@@S5{i8zcSsHmzC*;yK;g|Nv5=f;*=pR zib^u&D(s`Px}b~^n%1Wpw^&&5%LygE%o-OyBgjm#0iswuU z^0~yA{!oV`1U7i(wdyK1K7t+=TCPy^6C;yFVdNY+sR{P5X_STzM60ZW!OoUoZzhh2M5-c z^){{MuF8iHi^po^0Hl-9G<8GER@G_NiWJ-M50m8P5Zlsb$f=Sv9F>>&`K`$2)Rfem zReiWoeyK-h>n}YFCL4J^W`C)Ren!L?ZWe=8kMIuU0Pn1*tA#6rhiIv zI6z;43a>91!KUTfq#VQ_sBsnURaMbeopdHv>}!Heix0&jm?E1-ML}3-L-s7Q5*mz5 zHeFeh+H^$)$*7Gi1$MnTmR5lq?AdIlM8cHK$?S3jo-=F~ekn%wj8`v;mv~hPS%MG} zA@eQq(j^&6aFNU9U|9zZN4Yq{y(i%>eL`aMN)PviUoi)J-dj@us^JXrS(L0&SfX4J z9CA{R^vqRcX=k#|p z%PY#Mr%n}4ZgLeWoAo$S+&)uMnrfC*;1-oDr;f!JC1**tg3bw(A*rGUpBQXM)!pP# zR+&>-j*4JL<-FX8HF%pQJ{7GOw&;b^^Wtd++ZKXcc@B;ePUIMog2$c7WB`E=gj}VUglrG|I^=qEc>T+dtD;I*SbQV`@eN(&(j$pS zwc3CCa9$9`X$~T_L#4iE@CIH9df^j}6u0hE5s8K{h(ZqIR#EX$UQ(VzaxkV0wTVsps%`qGtO`A< zcG+BF(^+g%=aG;zV52no&C?yfmaP-xkD}|C5A7GuU)> zT`sZd%1Y@ftG>CwF5^6ESL5Y{vKapc;X$jsyozW{1jCkWV38(}EvZy#gn&FHDX=9r zoh_?WuAn^ds+!r#sw(j62sW+ZT1AKmmaSU(BRD|WW`R91ClTrl>M6&ZQcX!UI&s9v zl(tH13HF<1fSI0^mE|~3JZ}EvE}xos3c6reXXLF0<;M(Gj(uRj;4ZDIMi*X26=jv4 zZR~>r<=INSW@QzgI$I?U5fRM*27Mbq5#FZd#}O6;{8%n0xg`uB3e{2C#4pQCE0VLa zq8h}+B+OQNOGG_bLQ*?5h{_5&PBq+sQ8>g`dZw~M#-*|#QK+Kl65Sk{EHABK5Uqwx zQf1xO+jO?3N<4BTzN(_!FcNRma7vqjb`e#7DXQUwbWkYwRXK5@c*T~;rhPt?=WSc= zq+rt?QMvciHEk+QLk=voQezTEcA3P;WLd$cYq^5Ya)wCi^3=U?Q(i^Qy$3<#P-9?7 z_L54{6b&m<6EE-9_9#-fxL8?EweBP89IYkW{uT~S$HUM(Ia6sn751K1HFlI`HfWz!m#z$T3h z<^y|-nT6JCvx;0AMMD-}TvbtBRfPkS+L={EDbw#jgDlMCCgJY0?QO!1UWNWH}#>%ULYs_KO>frRm06&N} zC<{K|Bsrk!`N>v>8u>a^=c;LDo)fsnv?!r_Z_~bA$ivVZXq4gAhmnx8@R7{8Hcma8Vhy_lSOAqA`I;|%2y8#bM!dJ5kyhXe%`}*l-S(u(oR0 zt{{zHB!-Kwz>8yW)wmq#B#ceGtzszh>NF}Og#pQvQ@u*HZm|bVwF$K7wOL)MURW_S zf{N-~O_gFe;SahJ7yMR|3l3_M#+pDJO{p^!f$N{vBuvZpMg2GtQv7`IZY z@L9Ri91n&vWVMgBxJB8t7yqVz%4=&xoFnm7xeC)WFhfvp&%s^5kvNw~{K0r9obce= zp69g^PP`nds3(>v^$IuY3*}RrR)g~`g-1ecx~_c{ewt3OqPjZRG=qr(yMD4Q+lB~m z<-AQ-GmMj4!WyW#?-fgVtl`PJq5{ID=+8%^5OhO3!gv*htE-k;)uYj_WYb*LvA9Bc%%)N3iVBz@;#Tq>Kir6!m4;J%Td-+742Hp>u%?zlLIu^+ z09?%gg~*R<5T>ySwu7W(bm#_`f?vm}=3ou$l>jutpp<%b*)(KHtFElArYWh?;NYH| zI_2F;P`waf<~7(f>GGbk2U-Cv`$TZSMX(_7%BImVS2aBHl2Tp`*Og_J)yOW`bai`d zTK+}MZ{{eks|CBHUlZJUrEFS4k_}@dN)=TvXywyE=O4~uo35#<;Z|}$((3F{jX1~9 zupaMeq4sc zemHvB7Csi6RwslIEr-r=%G9o`t`3WWQ;i5}U^`cdkaVA`sjQMslUxgJ=|p3ba#-S^ z`c)vnhLMz90cf%5YW07fZM2Ep(W1s26*L@lj~~YSgSE1*rk0^Z7>QI$EtHXZFyl~b z^{6#fGVpR5uE$sd4z+;vOhgA4}akSNqLrh$3f4QR?Lne0$QhU=Ow5}Q`dHgi<8 zsS|OI+ThNsaz?#0ae|k{NW4?POU9rK%Kd*HC3>;Y;h#n>SuHKr|wY ztSGI49dFZ!9$I*PCb&5ebggp9A;AZ8cs#aL)Ya9M%XGo!O%+~BtHMF^)FH|`YPOITh=Vpg5U;CPNuhl}I4|Ec1pT1Ig9ZqBzdHdRy6a=>4#1c}>|g z4J_DnC4&|XH1OJO+SF8fnP8c<6;<$!kTm>|O;^^|Rn_EjRFCm07VN8`F$vNkKW0~h znU-U846a##Dv>QQYJoNX97sjcm=uJq`xwSC)i{(kwKOFxK-H|u$r4pUHcgA=22d|V zrPXkQP17#aihQe3{R*LTOL)}`bcm>|BU-HwHv*S59`svL zR;xzNa0z9hH*6Z?6)H@zj+T`5y`Y}Np;}(ircE1+KnJqmkWE+f;K+d^7((?31wyXBDH@^hgC&?Xglz#zny==ctEH)ue4*CBs@yU!GsC(~?+4Xc(o` z|Nmg@&4XmS?)$#(o_W(V)62bm_r3S-*?Zob_b}Lq_dpULNZA795($73Ov*M%h-8Sx zCP>ka$fP1sl*=KiB5_fY63dFX*nePNX9Pl)T%yB>02RCVl8U*+uRr$s?&{pS6LAT3!rob zyRBwnbfSk_^%lVn4P=Iv6{6~;G*z>gNt>Pn)9L}cM8DOjpaT&oj7xghG`y}zjWnXm zgiTat3vNzM*qV1etN6f|)5RI1>m!c8+_(yx3YW-LYlg5`lR! z)0BO~r++}D**ZsW+j#lvFes!=j7C{QARw~Uzng1F?*>LA(9%r`pfWJD3luwyq`D-A z%xbPgOF547=b1K0>neun1*EoV0K>FSw@g&NB(Q7@zG}vX+6vCdEeS4@>hyKVbYpGV zh%nu060B&RsXxQC`KG>ogK53e%mk{&Fx`YPgfi!@yY74*3d*SZ8sSGKqpfhrp40cqL1YVa$%TmB9|qlu`=Ph-RQJj+bId)94+3f zN(dUHo0t~*0MTjlh9`TIYqof+p1M(ay;By`Vp()|aCsF|u_^V7n6~4;1k=8&CMR`d z2TEgAFfw2o<4}5?M%5J;BdJ7M^(wP%YJ|VQXB^A1ZtOKoo6m`9&cPX$Od~4MJ}^y~ z1E&4NHcU60PN!rV6I?8nX-zn822>Gytp(E(5Hu^LZnYeCYxL3NTmcpugjv@*BEbww z^$p_)rgbuycCfGT4sq*S9 z#TJzLt~rlByKE?n5^!2ff5f7(GaA%GS#F5y&~fClndwwHdS~BVNIyc*Vw#8-Wfs$$ zl_o|DLYZ^dJr6CZqGAy^G)xPw+PrNr?AtBJZ6icobtPn4R73VQrQ}q&kJu&+fJT(d zxTcV{&Cuf$;@P6z<-1X=hGUpU4mZe6r|or652`euXg3^@NS1Uvr<#=y$2zCRK^d8& zI!7s^Rdr)V8j+v~gAGBV%RylC^-a6OdDq(=n$F1PjZOm7QktguUwYFBJT9!(cS>Fx`P5**31F4(79+R?}Ly2;eDDK&hP+m+UWMI`m;hz2jmBlC0K} zX=)E7v(o+$dRMlKQ?1h8G9ZSYS7p z4l^-bCz9v7vTtE}jW^50qzLtl+7f@wwngl%>8Q%IUc2qljQFBB-(nj5-9oI_T?7=p zL-#Sx8B3h9uG7J^yGg&H1s6=CG8&%m6LC@U^gYeO*A3BP+U#F4?HEH<%+qsa(rJy5 zQg@Y&!Ejg}rTWSiLUS>j0@J0P(X6Z6$TXwxB8df6jUWgDmda!P>hs#2?X9X_m0RmKcF|O*M70}p>Sk+Dg!nLV%yWu%>A6esq z5wNH_=Uxn6OliD3`I!vz4&w%?@6eMl?Uqb)$juf^t7b2gno%H8LGntb?RJIuI|2oZ zlQv{d26nhA<&beyCgTODGZ;r@iKw;T@j+a*!aQWwh1O$C({i|EeDeiNGvJK2Y7x3a zPDh0!rs2x-#B@v1S;Laq7#tfh{e^b5Y+`RT3(bm9vf4hofmd-_#!ZtgywyEwyI@+n z>>Q`8>s+{g9@=38Ul0qKx=Cd;{UB(R4Ev^)#5A!GrIxJ&61*n4XH37SIcWkl#!}?i z1Ovp2a=Bjy=8|bnWo+lxy7rbi@Jgo3F+sBtf-p^~=7en1#%p5BFpXq^=|-c{b~`Nx z`$$ZO=xbXXz*@_u+%%HfsO?&|3qA^ZAFO0BLOYSX?5zb;1Ri^_Vi(Z1%@w59A6_3`POFoyY5TCVeHUZbRN24!8Gwt zzhRh`ze(K;(?J+6m=28jY?vk(LTYtHHdij0_Kcyb<7kZ=iOQGkmW@%eR30wLl!2*l z!CoD)Xl&=!y7rP=omS{u1mG;A!qrf1Ld?r17AB_EVVZVmGy8!EmCe+sShTcTG95-P zjgQF$qkgMHxoIR@{q5NuD+oJiw15t5VeWS@;hJ0)J%`;Sd)xI|_!5Y6xsMbQmJq5o zpCPuv5aokND68cozqN;sVHSs`4LnHHUDjgi-&-{?QgTIz;2YP7;ILRl-_V7f$_>KLXac$Hqrv@Wqo zVwwh^>rG?WjJWdibRy!$Htd#6IpdLxRl{5sTuVeGfXG>wFLYFWPR*g@3sEi04|McRt#7Cl2^co61;={BR^ zg=sk@>v){VGgE9EIS-f^23)%xxI{bH!)4o!6?9@hgaGVK&e3TH5;YW98XKndMgt;% zY4LH!w0g>rVy;k%1BvzKrjJw8F{ia$jM#Aqvm316Dik-l+BMH$>t1WxG1#S?Jh2cUh_BNv*QEnk` zC?qVww+aWrHlM^pQg4RHZ|!m6+O}J5o_v(=nh?DW`&Zu z9$C+Njx%;}~VF6dCimWZG4-T#?O{%X$ZfX&slr zdX|ikQg@Y&VORnb<&sJV15@9EJ^H$2+S*XJaRfM$sI#eD!b?LlZL(})2`nyvFvf<^ zp>-To&6>3M0iA%*12#YBO;T)7N{TUpJa*jSOxoL=cfB;oqjH}Qct{5zt zcA1okJfo6OM#MuLcvVlS+GSoESxCP|2tizduc(6&Ui759=`hh!GTjP?#Ls02s%9^f z+IhlmiY!CuX-1$Qvpp z@=Z){(0?{@Tc)GrLo$wlSG$;}io`TpP)v6iJusalNlWNDPJG6+AzDl;bvg^C!U0tbQ6_8UL$-|%iN1$UWO-ja zZu~fy1`;}jaSW5vE~TpF)XNe@II$)pOcFm4(`1zz5|QhAXA~*2-cp!N5#)80h_S%z zlIda`R**E!PA87&s|Kqt>bzMdvmm40qq{hlg~4o#?nuf-J%pWgP<6moC-e z!W)tL5;u^6F8d6rZ)U(d%u~f!;SJ&&czul5b<7|uNmG=yQew|^14kM=Oq4iAg$rP0HsRc5 zmX$@WV?*c=>t%5Xh%dJ*PUzbKHb3Xha`d*C##4)Jk8;yUj7F4?>p4m4!8GCvraKbt z3_79|oDZgr4{0;{1IxnHRvZbIaEw(n*Y+Jg!Q>iD+ex54#kRmX_dAJ~M+q)p$LM1* zuFs=9-AGKEx-FQdc@ngsB%T=sTz#2K^Gv2nyAkq4n=(g4`b~!EG)RN8iz3FZ znAY4WR^CQuvlL+}7!gC5Mp{TQJ4B-Sf!|5VG)%>ct-^)*6<)h+NtP7r?g@+xK0UMxt?0KA!I;nIAh& zCc~iV*ouo-#)rgDpouyt$PShP>a9a~8K!v;-{p`C9E5F0u{x)dhU)vkVJKm*Cw`Hn z0bCgCSd8l%SUOmt>*{*y&7@2cFpymxs2&zMHL#1p~{a&FX}FO%$E?ur%LPD`c({(ZwH4$TI$C+PJ}nifedCS|GVgCv4! zWsV8un2cV`!YnLH8Z(+v&wN9lvNz};WId9`FiluRb|LQOEm`;S8VH$f(Om`McGxA#WTY$HM zo$Yki3C`JBo|iU;n<3{|&_wdf)G=&x<+9#!ThC(Jd{7@&64R!;%Eo|c8MY>uWcmQ0 zMO(~luA}OWKiJt+W0g5iOQy>)p_sEn7VGMz%-(rL8rI~HY`lbhwNZ&z%)~khUpkP#}v-%gsu5J?{`urGqF^NhQ$7cCvnb)TssW`+_ke9nM-CA;ASkV z&biN+wume%OzXiCEU1g#*Dpjl+Q6^JnF-J^(h;xW-hGJ&g5INo7 zj$wL}S;Q=5CZS}y6r9>_AbdO45TQdkJu%%$g1|*5xW1RsZ$wmB^MxPB8bg*N5i>~D zmpG+#7P`hTy{S{xJ9bL6q)B`OSB>#1Gsw=1!Yak`4W@%Kbpo;NxkO%-5@0Bq*9Az3 zK@w1uYRfc6+b3wN&ndwf*>^(9r9=qUF8#qyL#|Yri_B{(m+<0lF%?KtF7m?jUdM*e zAy%(pzA(!N(@6-^ZU;-G+lwit2M1v%>jZ&^B^dbho}2igmlr|ex`hmbrrS|m#0EDK z)hAlfi4zCQ0P_T<6$IryeESrS7_^J9CBDVAoh&j@X_w1luV+Co%^?7fkp>8yOrnPB z$_m|(jHce$VOdC};S@=uVVXe)LIcSGw{tbrU|RaE=0IF9y5lO%3vp{C@k%|d8T+VtK`;SP-Yex z;ZKj~FUsi!8w~`4VcMY&^I*Yr0~<+9yIgpamRK+?dBZqj<&qj;9c_YkfN8}A8LxN^ z?M~6{TBTS=ta*kc&yP8j+=jTETTX%PB( zH%MKtD>84pJsl zr*7Ph%aW#)8nlSl@F{EqF)f=(1!MWSVOs9ITQWV|Et&SbCDVMW6r9=`rtLA}l5+at z1{0Q97zuOBl&oJ$@JZHhQijLJBBU#hT#WKL;cI9X{Hed<9%id&O#l?A% z)^!WRbnHh?j1O9bgS;E7%Bp?{xmv$iFzr`Z&%%0rm_~Iq z=n^Egm{iI2K@!2VGG~M*O{QH8)1LNc)O=%uHeihl-3!xv(=ZLtVp?_~!p&vc5IH^C zOOewJidp1}7rQLkmtd@N?8a`t2wKW#OtWNT*~Egx$gz@X zk2_6p<%rkVor<5uZVJ<^%Nh(}Iz+7yeJI>03IZA_lsmw4(CtUL=l5hpAZ-;Fagehl zF^x@QnC>Kw;}Pu>(-}INzKeKZyQm0Qn7-RhBw-Vb^8_EX8x8YbVwgrBi*YK1QJ9B$ zxG5POx-oWGkx*%rQHIPV7qQ$&`H?g)dFd-^Wd-t?z7CykLI?BJJojNbD$bbB_XwTI zT~~L$OmfD9fb){N*t4YAFwM$BEPt40mR^2uDXXP}Os3sbp4iP}jZotbIK8BolqJn6 zHEXOG1$2z(HoR6K`vvDpOcN@^W|BMa!8HG$aD0%7Y4m@$5YwKRE(NEyES$rip3+?~ z9Yl?0=oW-UagqHn=pl=+l9>9zk7MPRhJctR!8DykxP&m9ZRP1Vbgr6Jj;KhZ8a! z;mt%e62rI)(_u&>F&a@mhUqx>{XR^)*n^06f(nX@FrSXZMY84|-WZML;l5Ewdzs`;hH7$BuN3D=P;r~i zf@vTLC=^yPOcKAj!L;d$*vkn|noPU&)4oc=5n9^TJpyzu=XMDP^G(CFVzV%fZzAF5 zF%=HelUZINERD|Ybu|a#aUan_a0;}N=`F~@3ku@~EEI7ZU~&0T*pEWPG_DU!W90aV z^+s0}BF+ob@~g09HXAw>Yh-#@JZ*U^EPD@FH;u&Z4+b5f8-{&@s+cxJ$MD9)c@#1O zY*JzC>7|%1rE1A^%!othn_Q9^<1{UqCS2Swxha~B>4o$#f9H zpqR#$TQFTD9uA?H9*y%Tprip2wVoGKZW>992St>G{b5`L0piPZS+gOg%UB<+Koj|H zUU+D<%yn5RqRFbfK%SYxMP3@j8dgLI09^2p!ok3LRVACbWqLXZ4K?31-3hcV35vX^PqJDPGKK=FJzBc~c_R*`~iJ zXB0PDk=IQS71&!*I6xMem?2CfuvqjWrh9w?rrW+^eGW_`?9~7pz6;ZSTi%M8_6^g6 z;m{GfQ8YjjdJxiRFt@1WC)&-GOQyRW9T(HUViIewi3Ot|O)eWFj*~Mn9-%@bLR)D7 z)2wN4ZQfv7;ej%b`X$rln9w{*&@R8Jt)fZfP3&SF+T6edWGdEiDq)d&7|&X3IGW(0 z191qWeLtbx-8hL=>291xgHh5Af+0*}4|7(Kr<>GxkMuj zHH?A|5%aUkLzi(Ih_74SRB{`|l`(EuYS`@se$q~Qcp}E$aC(P-G1K1GIOOc4J~1d# z%0D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
            Lt&U)TLkf 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�O- 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 literal 0 HcmV?d00001 diff --git a/src/EasyApp/Gui/Html/PTSans-Regular.ttf b/src/EasyApp/Gui/Html/PTSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..adaf6718ab6b375374b2c16124607bc467eeaa5e GIT binary patch literal 278612 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 + + + + + + + + + + + + + + +

            +
            +
            + + + + + + diff --git a/src/EasyApp/Gui/Html/Plotly1dMeasVsCalc.html b/src/EasyApp/Gui/Html/Plotly1dMeasVsCalc.html new file mode 100644 index 00000000..9874b1a7 --- /dev/null +++ b/src/EasyApp/Gui/Html/Plotly1dMeasVsCalc.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + +
            +
            +
            + + + + + + diff --git a/src/EasyApp/Gui/Html/Plotly2dHeatmap.html b/src/EasyApp/Gui/Html/Plotly2dHeatmap.html new file mode 100644 index 00000000..bcebec92 --- /dev/null +++ b/src/EasyApp/Gui/Html/Plotly2dHeatmap.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + +
            +
            +
            + + + + + + diff --git a/src/EasyApp/Gui/Html/Plotly3dMesh.html b/src/EasyApp/Gui/Html/Plotly3dMesh.html new file mode 100644 index 00000000..8d3ceac5 --- /dev/null +++ b/src/EasyApp/Gui/Html/Plotly3dMesh.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + +
            +
            +
            + + + + + diff --git a/src/EasyApp/Gui/Html/Plotly3dScatter.html b/src/EasyApp/Gui/Html/Plotly3dScatter.html new file mode 100644 index 00000000..0e48da28 --- /dev/null +++ b/src/EasyApp/Gui/Html/Plotly3dScatter.html @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + +
            +
            +
            + + + + + diff --git a/src/EasyApp/Gui/Html/Plotly3dSurface.html b/src/EasyApp/Gui/Html/Plotly3dSurface.html new file mode 100644 index 00000000..21542144 --- /dev/null +++ b/src/EasyApp/Gui/Html/Plotly3dSurface.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + +
            +
            +
            + + + + + diff --git a/src/EasyApp/Gui/Html/plotly-2.18.0.min.js b/src/EasyApp/Gui/Html/plotly-2.18.0.min.js new file mode 100644 index 00000000..e09ee775 --- /dev/null +++ b/src/EasyApp/Gui/Html/plotly-2.18.0.min.js @@ -0,0 +1,8 @@ +/** +* plotly.js v2.18.0 +* Copyright 2012-2023, 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={98847:function(t,e,r){"use strict";var n=r(71828),i={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg":"overflow:hidden;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>: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])}},98222:function(t,e,r){"use strict";t.exports=r(82887)},27206:function(t,e,r){"use strict";t.exports=r(60822)},59893:function(t,e,r){"use strict";t.exports=r(23381)},5224:function(t,e,r){"use strict";t.exports=r(83832)},59509:function(t,e,r){"use strict";t.exports=r(72201)},75557:function(t,e,r){"use strict";t.exports=r(91815)},40338:function(t,e,r){"use strict";t.exports=r(21462)},35080:function(t,e,r){"use strict";t.exports=r(51319)},61396:function(t,e,r){"use strict";t.exports=r(57516)},40549:function(t,e,r){"use strict";t.exports=r(98128)},49866:function(t,e,r){"use strict";t.exports=r(99442)},36089:function(t,e,r){"use strict";t.exports=r(93740)},19548:function(t,e,r){"use strict";t.exports=r(8729)},35831:function(t,e,r){"use strict";t.exports=r(93814)},61039:function(t,e,r){"use strict";t.exports=r(14382)},97040:function(t,e,r){"use strict";t.exports=r(51759)},77986:function(t,e,r){"use strict";t.exports=r(10421)},24296:function(t,e,r){"use strict";t.exports=r(43102)},58872:function(t,e,r){"use strict";t.exports=r(92165)},29626:function(t,e,r){"use strict";t.exports=r(3325)},65591:function(t,e,r){"use strict";t.exports=r(36071)},69738:function(t,e,r){"use strict";t.exports=r(43905)},92650:function(t,e,r){"use strict";t.exports=r(35902)},35630:function(t,e,r){"use strict";t.exports=r(69816)},73434:function(t,e,r){"use strict";t.exports=r(94507)},27909:function(t,e,r){"use strict";var n=r(19548);n.register([r(27206),r(5224),r(58872),r(65591),r(69738),r(92650),r(49866),r(25743),r(6197),r(97040),r(85461),r(73434),r(54201),r(81299),r(47645),r(35630),r(77986),r(83043),r(93005),r(96881),r(4534),r(50581),r(40549),r(77900),r(47582),r(35080),r(21641),r(17280),r(5861),r(29626),r(10021),r(65317),r(96268),r(61396),r(35831),r(16122),r(46163),r(40344),r(40338),r(48131),r(36089),r(55334),r(75557),r(19440),r(99488),r(59893),r(97393),r(98222),r(61039),r(24296),r(66398),r(59509)]),t.exports=n},46163:function(t,e,r){"use strict";t.exports=r(15154)},96881:function(t,e,r){"use strict";t.exports=r(64943)},50581:function(t,e,r){"use strict";t.exports=r(21164)},55334:function(t,e,r){"use strict";t.exports=r(54186)},65317:function(t,e,r){"use strict";t.exports=r(94873)},10021:function(t,e,r){"use strict";t.exports=r(67618)},54201:function(t,e,r){"use strict";t.exports=r(58810)},5861:function(t,e,r){"use strict";t.exports=r(20593)},16122:function(t,e,r){"use strict";t.exports=r(29396)},83043:function(t,e,r){"use strict";t.exports=r(13551)},48131:function(t,e,r){"use strict";t.exports=r(46858)},47582:function(t,e,r){"use strict";t.exports=r(17988)},21641:function(t,e,r){"use strict";t.exports=r(68868)},96268:function(t,e,r){"use strict";t.exports=r(20467)},19440:function(t,e,r){"use strict";t.exports=r(91271)},99488:function(t,e,r){"use strict";t.exports=r(21461)},97393:function(t,e,r){"use strict";t.exports=r(85956)},25743:function(t,e,r){"use strict";t.exports=r(52979)},66398:function(t,e,r){"use strict";t.exports=r(32275)},17280:function(t,e,r){"use strict";t.exports=r(6419)},77900:function(t,e,r){"use strict";t.exports=r(61510)},81299:function(t,e,r){"use strict";t.exports=r(87619)},93005:function(t,e,r){"use strict";t.exports=r(93601)},40344:function(t,e,r){"use strict";t.exports=r(96595)},47645:function(t,e,r){"use strict";t.exports=r(70954)},6197:function(t,e,r){"use strict";t.exports=r(47462)},4534:function(t,e,r){"use strict";t.exports=r(17659)},85461:function(t,e,r){"use strict";t.exports=r(19990)},82884: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}]},50215:function(t,e,r){"use strict";var n=r(82884),i=r(41940),a=r(85555),o=r(44467).templatedArray;r(24695),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"}}})},3749:function(t,e,r){"use strict";var n=r(71828),i=r(89298),a=r(92605).draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},"range"===a&&s(e,r),"range"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t["a"+a],l=t[a+"ref"],u=t["a"+a+"ref"],c=t["_"+a+"padplus"],f=t["_"+a+"padminus"],h={x:1,y:-1}[a]*t[a+"shift"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,v=p-h,g=3*t.startarrowsize*t.arrowwidth||0,y=g+h,m=g-h;if(u===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:v}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(c,y),ppadminus:Math.max(f,m)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else y=s?y+s:y,m=s?m-s:m,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(c,d,y),ppadminus:Math.max(f,v,m)});t._extremes[n]=r}t.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},44317:function(t,e,r){"use strict";var n=r(71828),i=r(73972),a=r(44467).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;r2/3?"right":"center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var Y=!1,W=["x","y"],X=0;X1)&&(nt===rt?((pt=it.r2fraction(e["a"+et]))<0||pt>1)&&(Y=!0):Y=!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(Y)R.remove();else{var bt=0,_t=0;if("left"!==e.align&&(bt=(A-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,A,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 kt,At=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(_),A=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(A);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),Z=G.append("path").attr("d","M"+h+","+p+"L"+l+","+f).style("stroke-width",V+"px").call(u.stroke,u.rgb(H));if(g(Z,q,e),k.annotationPosition&&Z.node().parentNode&&!a){var Y=l,W=f;if(e.standoff){var X=Math.sqrt(Math.pow(l-h,2)+Math.pow(f-p,2));Y+=e.standoff*(h-l)/X,W+=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-Y)+","+(p-W),transform:s(Y,W)}).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&&At(0,0),D&&d.init({element:R.node(),gd:t,prepFn:function(){kt=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),At(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)+kt}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit("plotly_clickannotation",Z(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=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 k=b*Math.cos(f),A=b*Math.sin(f);c.x+=k,c.y+=A,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(E1){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))}}},2468:function(t,e,r){"use strict";var n=r(73972),i=r(71828);t.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:r(26997)}}},layoutAttributes:r(26997),handleDefaults:r(20226),includeBasePlot:function(t,e){var r=n.subplotsRegistry.gl3d;if(r)for(var a=r.attrRegex,o=Object.keys(t),s=0;s=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;e0?n>=l:n<=l));i++)n>c&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ut=Math.pow(10,Math.floor(Math.log(lt)/Math.LN10));ot*=ut*u.roundUp(lt/ut,[2,5,10]),(Math.abs(q.start)/q.size+1e-6)%1<2e-6&&(it.tick0=0)}it.dtick=ot}it.domain=o?[rt+O/R.h,rt+K-O/R.h]:[rt+P/R.w,rt+K-P/R.w],it.setScale(),t.attr("transform",c(Math.round(R.l),Math.round(R.t)));var ct,ft=t.select("."+A.cbtitleunshift).attr("transform",c(-Math.round(R.l),-Math.round(R.t))),ht=it.ticklabelposition,pt=it.title.font.size,dt=t.select("."+A.cbaxis),vt=0,gt=0;function yt(n,i){var a={propContainer:it,propName:e._propPrefix+"title",traceIndex:e._traceIndex,_meta:e._meta,placeholder:z._dfltTitle.colorbar,containerGroup:t.select("."+A.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&&at||!o&&!at)&&("top"===j&&(t=P+R.l+R.w*I,e=O+R.t+R.h*(1-rt-K)+3+.75*pt),"bottom"===j&&(t=P+R.l+R.w*I,e=O+R.t+R.h*(1-rt)-3-.25*pt),"right"===j&&(e=O+R.t+R.h*D+3+.75*pt,t=P+R.l+R.w*rt),yt(it._id+"title",{attributes:{x:t,y:e,"text-anchor":o?"start":"middle"}}))},function(){if(!o&&!at||o&&at){var a,l=t.select("."+A.cbtitle),f=l.select("text"),h=[-M/2,M/2],d=l.select(".h"+it._id+"title-math-group").node(),v=15.6;if(f.node()&&(v=parseInt(f.node().style.fontSize,10)*w),d?(a=p.bBox(d),gt=a.width,(vt=a.height)>v&&(h[1]-=(vt-v)/2)):f.node()&&!f.classed(A.jsPlaceholder)&&(a=p.bBox(f.node()),gt=a.width,vt=a.height),o){if(vt){if(vt+=5,"top"===j)it.domain[1]-=vt/R.h,h[1]*=-1;else{it.domain[0]+=vt/R.h;var y=g.lineCount(f);h[1]+=(1-y)*v}l.attr("transform",c(h[0],h[1])),it.setScale()}}else gt&&("right"===j&&(it.domain[0]+=(gt+pt/2)/R.w),l.attr("transform",c(h[0],h[1])),it.setScale())}t.selectAll("."+A.cbfills+",."+A.cblines).attr("transform",o?c(0,Math.round(R.h*(1-it.domain[1]))):c(Math.round(R.w*it.domain[0]),0)),dt.attr("transform",o?c(0,Math.round(-R.t)):c(Math.round(-R.l),0));var m=t.select("."+A.cbfills).selectAll("rect."+A.cbfill).attr("style","").data(Z);m.enter().append("rect").classed(A.cbfill,!0).style("stroke","none"),m.exit().remove();var x=U.map(it.c2p).map(Math.round).sort((function(t,e){return t-e}));m.each((function(t,a){var s=[0===a?U[0]:(Z[a]+Z[a-1])/2,a===Z.length-1?U[1]:(Z[a]+Z[a+1])/2].map(it.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",$).attr(o?"y":"x",n.min(s)).attr(o?"width":"height",Math.max(W,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=H(t).replace("e-","");l.attr("fill",i(c).toHexString())}}));var b=t.select("."+A.cblines).selectAll("path."+A.cbline).data(B.color&&B.width?Y:[]);b.enter().append("path").classed(A.cbline,!0),b.exit().remove(),b.each((function(t){var e=$,r=Math.round(it.c2p(t))+B.width/2%1;n.select(this).attr("d","M"+(o?e+","+r:r+","+e)+(o?"h":"v")+W).call(p.lineGroupStyle,B.width,V(t),B.dash)})),dt.selectAll("g."+it._id+"tick,path").remove();var _=$+W+(M||0)/2-("outside"===e.ticks?1:0),T=s.calcTicks(it),k=s.getTickSigns(it)[2];return s.drawTicks(r,it,{vals:"inside"===it.ticks?s.clipEnds(it,T):T,layer:dt,path:s.makeTickPath(it,_,k),transFn:s.makeTransTickFn(it)}),s.drawLabels(r,it,{vals:T,layer:dt,transFn:s.makeTransTickLabelFn(it),labelFns:s.makeLabelFns(it,_)})},function(){if(o&&!at||!o&&at){var t,i,a=it.position||0,s=it._offset+it._length/2;if("right"===j)i=s,t=R.l+R.w*a+10+pt*(it.showticklabels?1:.5);else if(t=s,"bottom"===j&&(i=R.t+R.h*a+10+(-1===ht.indexOf("inside")?it.tickfont.size:0)+("intside"!==it.ticks&&e.ticklen||0)),"top"===j){var l=N.text.split("
            ").length;i=R.t+R.h*a+10-W-w*pt*l}yt((o?"h":"v")+it._id+"title",{avoid:{selection:n.select(r).selectAll("g."+it._id+"tick"),side:j,offsetTop:o?0:R.t,offsetLeft:o?R.l:0,maxShift:o?z.width:z.height},attributes:{x:t,y:i,"text-anchor":"middle"},transform:{rotate:o?-90:0,offset:0}})}},a.previousPromises,function(){var n,s=W+M/2;-1===ht.indexOf("inside")&&(n=p.bBox(dt.node()),s+=o?n.width:n.height),ct=ft.select("text");var u=0,f=o&&"top"===j,v=!o&&"right"===j,g=0;if(ct.node()&&!ct.classed(A.jsPlaceholder)){var m,x=ft.select(".h"+it._id+"title-math-group").node();x&&(o&&at||!o&&!at)?(u=(n=p.bBox(x)).width,m=n.height):(u=(n=p.bBox(ft.node())).right-R.l-(o?$:nt),m=n.bottom-R.t-(o?nt:$),o||"top"!==j||(s+=n.height,g=n.height)),v&&(ct.attr("transform",c(u/2+pt/2,0)),u*=2),s=Math.max(s,o?u:m)}var b=2*(o?P:O)+s+S+M/2,w=0;!o&&N.text&&"bottom"===C&&D<=0&&(b+=w=b/2,g+=w),z._hColorbarMoveTitle=w,z._hColorbarMoveCBTitle=g;var F=S+M;t.select("."+A.cbbg).attr("x",(o?$:nt)-F/2-(o?P:0)).attr("y",(o?nt:$)-(o?J:O+g-w)).attr(o?"width":"height",Math.max(b-w,2)).attr(o?"height":"width",Math.max(J+F,2)).call(d.fill,E).call(d.stroke,e.bordercolor).style("stroke-width",S);var B=v?Math.max(u-10,0):0;if(t.selectAll("."+A.cboutline).attr("x",(o?$:nt+P)+B).attr("y",(o?nt+O-J:$)+(f?vt:0)).attr(o?"width":"height",Math.max(W,2)).attr(o?"height":"width",Math.max(J-(o?2*O+vt:2*P+B),2)).call(d.stroke,e.outlinecolor).style({fill:"none","stroke-width":M}),t.attr("transform",c(R.l-(o?Q*b:0),R.t-(o?0:(1-tt)*b-g))),!o&&(S||i(E).getAlpha()&&!i.equals(z.paper_bgcolor,E))){var U=dt.selectAll("text"),V=U[0].length,H=t.select("."+A.cbbg).node(),q=p.bBox(H),G=p.getTranslate(t);U.each((function(t,e){var r=V-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=q.right+G.x+nt-S-2+I-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=q.left+G.x+nt+S+2-s)<0&&(n=0)}n&&(V<3?this.setAttribute("transform","translate("+n+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}}))}var Z={},Y=T[L],X=k[L],K=T[C],et=k[C],rt=b-W;o?("pixels"===h?(Z.y=D,Z.t=J*K,Z.b=J*et):(Z.t=Z.b=0,Z.yt=D+l*K,Z.yb=D-l*et),"pixels"===_?(Z.x=I,Z.l=b*Y,Z.r=b*X):(Z.l=rt*Y,Z.r=rt*X,Z.xl=I-y*Y,Z.xr=I+y*X)):("pixels"===h?(Z.x=I,Z.l=J*Y,Z.r=J*X):(Z.l=Z.r=0,Z.xl=I+l*Y,Z.xr=I-l*X),"pixels"===_?(Z.y=1-D,Z.t=b*K,Z.b=b*et):(Z.t=rt*K,Z.b=rt*et,Z.yt=D-y*K,Z.yb=D+y*et)),a.autoMargin(r,e._id,Z)}],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()}}},76228:function(t,e,r){"use strict";var n=r(71828);t.exports=function(t){return n.isPlainObject(t.colorbar)}},12311:function(t,e,r){"use strict";t.exports={moduleType:"component",name:"colorbar",attributes:r(63583),supplyDefaults:r(62499),draw:r(98981).draw,hasColorbar:r(76228)}},50693:function(t,e,r){"use strict";var n=r(63583),i=r(30587).counter,a=r(78607),o=r(63282).scales;function s(t){return"`"+t+"`"}a(o),t.exports=function(t,e){t=t||"";var r,a=(e=e||{}).cLetter||"c",l=("onlyIfNumerical"in e?e.onlyIfNumerical:Boolean(t),"noScale"in e?e.noScale:"marker.line"===t),u="showScaleDflt"in e?e.showScaleDflt:"z"===a,c="string"==typeof e.colorscaleDflt?o[e.colorscaleDflt]:null,f=e.editTypeOverride||"",h=t?t+".":"";"colorAttr"in e?(r=e.colorAttr,e.colorAttr):s(h+(r={z:"z",c:"color"}[a]));var p=a+"auto",d=a+"min",v=a+"max",g=a+"mid",y=(s(h+p),s(h+d),s(h+v),{});y[d]=y[v]=void 0;var m={};m[p]=!1;var x={};return"color"===r&&(x.color={valType:"color",arrayOk:!0,editType:f||"style"},e.anim&&(x.color.anim=!0)),x[p]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:y},x[d]={valType:"number",dflt:null,editType:f||"plot",impliedEdits:m},x[v]={valType:"number",dflt:null,editType:f||"plot",impliedEdits:m},x[g]={valType:"number",dflt:null,editType:"calc",impliedEdits:y},x.colorscale={valType:"colorscale",editType:"calc",dflt:c,impliedEdits:{autocolorscale:!1}},x.autocolorscale={valType:"boolean",dflt:!1!==e.autoColorDflt,editType:"calc",impliedEdits:{colorscale:void 0}},x.reversescale={valType:"boolean",dflt:!1,editType:"plot"},l||(x.showscale={valType:"boolean",dflt:u,editType:"calc"},x.colorbar=n),e.noColorAxis||(x.coloraxis={valType:"subplotid",regex:i("coloraxis"),dflt:null,editType:"calc"}),x}},78803:function(t,e,r){"use strict";var n=r(92770),i=r(71828),a=r(52075).extractOpts;t.exports=function(t,e,r){var o,s=t._fullLayout,l=r.vals,u=r.containerStr,c=u?i.nestedProperty(e,u).get():e,f=a(c),h=!1!==f.auto,p=f.min,d=f.max,v=f.mid,g=function(){return i.aggNums(Math.min,null,l)},y=function(){return i.aggNums(Math.max,null,l)};void 0===p?p=g():h&&(p=c._colorAx&&n(p)?Math.min(p,g()):g()),void 0===d?d=y():h&&(d=c._colorAx&&n(d)?Math.max(d,y()):y()),h&&void 0!==v&&(d-v>v-p?p=v-(d-v):d-v=0?s.colorscale.sequential:s.colorscale.sequentialminus,f._sync("colorscale",o))}},33046:function(t,e,r){"use strict";var n=r(71828),i=r(52075).hasColorscale,a=r(52075).extractOpts;t.exports=function(t,e){function r(t,e){var r=t["_"+e];void 0!==r&&(t[e]=r)}function o(t,i){var o=i.container?n.nestedProperty(t,i.container).get():t;if(o)if(o.coloraxis)o._colorAx=e[o.coloraxis];else{var s=a(o),l=s.auto;(l||void 0===s.min)&&r(o,i.min),(l||void 0===s.max)&&r(o,i.max),s.autocolorscale&&r(o,"colorscale")}}for(var 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;c4/3-s?o:s}},70461:function(t,e,r){"use strict";var n=r(71828),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]}},64505:function(t,e){"use strict";e.selectMode=function(t){return"lasso"===t||"select"===t},e.drawMode=function(t){return"drawclosedpath"===t||"drawopenpath"===t||"drawline"===t||"drawrect"===t||"drawcircle"===t},e.openMode=function(t){return"drawline"===t||"drawopenpath"===t},e.rectMode=function(t){return"select"===t||"drawline"===t||"drawrect"===t||"drawcircle"===t},e.freeMode=function(t){return"lasso"===t||"drawclosedpath"===t||"drawopenpath"===t},e.selectingOrDrawing=function(t){return e.freeMode(t)||e.rectMode(t)}},28569:function(t,e,r){"use strict";var n=r(48956),i=r(57035),a=r(38520),o=r(71828).removeElement,s=r(85555),l=t.exports={};l.align=r(92807),l.getCursor=r(70461);var u=r(26041);function c(){var t=document.createElement("div");t.className="dragcover";var e=t.style;return e.position="fixed",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background="none",document.body.appendChild(t),t}function f(t){return n(t.changedTouches?t.changedTouches[0]:t,document.body)}l.unhover=u.wrapped,l.unhoverRaw=u.raw,l.init=function(t){var e,r,n,u,h,p,d,v,g=t.gd,y=1,m=g._context.doubleClickDelay,x=t.element;g._mouseDownTime||(g._mouseDownTime=0),x.style.pointerEvents="all",x.onmousedown=_,a?(x._ontouchstart&&x.removeEventListener("touchstart",x._ontouchstart),x._ontouchstart=_,x.addEventListener("touchstart",_,{passive:!1})):x.ontouchstart=_;var b=t.clampFn||function(t,e,r){return Math.abs(t)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},26041:function(t,e,r){"use strict";var n=r(11086),i=r(79990),a=r(24401).getGraphDiv,o=r(26675),s=t.exports={};s.wrapped=function(t,e,r){(t=a(t))._fullLayout&&i.clear(t._fullLayout._uid+o.HOVERID),s.raw(t,e,r)},s.raw=function(t,e){var r=t._fullLayout,i=t._hoverdata;e||(e={}),e.target&&!t._dragged&&!1===n.triggerHandler(t,"plotly_beforehover",e)||(r._hoverlayer.selectAll("g").remove(),r._hoverlayer.selectAll("line").remove(),r._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,e.target&&i&&t.emit("plotly_unhover",{event:e,points:i}))}},79952:function(t,e){"use strict";e.P={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"},e.u={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"}},91424:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=i.numberFormat,o=r(92770),s=r(84267),l=r(73972),u=r(7901),c=r(21081),f=i.strTranslate,h=r(63893),p=r(77922),d=r(18783).LINE_SPACING,v=r(37822).DESELECTDIM,g=r(34098),y=r(39984),m=r(23469).appendArrayPointValue,x=t.exports={};function b(t,e,r){var n=e.fillpattern,i=n&&x.getPatternAttr(n.shape,0,"");if(i){var a=x.getPatternAttr(n.bgcolor,0,null),o=x.getPatternAttr(n.fgcolor,0,null),s=n.fgopacity,l=x.getPatternAttr(n.size,0,8),c=x.getPatternAttr(n.solidity,0,.3),f=e.uid;x.pattern(t,"point",r,f,i,l,c,void 0,n.fillmode,a,o,s)}else e.fillcolor&&t.call(u.fill,e.fillcolor)}x.font=function(t,e,r,n){i.isPlainObject(e)&&(n=e.color,r=e.size,e=e.family),e&&t.style("font-family",e),r+1&&t.style("font-size",r+"px"),n&&t.call(u.fill,n)},x.setPosition=function(t,e,r){t.attr("x",e).attr("y",r)},x.setSize=function(t,e,r){t.attr("width",e).attr("height",r)},x.setRect=function(t,e,r,n,i){t.call(x.setPosition,e,r).call(x.setSize,n,i)},x.translatePoint=function(t,e,r,n){var i=r.c2p(t.x),a=n.c2p(t.y);return!!(o(i)&&o(a)&&e.node())&&("text"===e.node().nodeName?e.attr("x",i).attr("y",a):e.attr("transform",f(i,a)),!0)},x.translatePoints=function(t,e,r){t.each((function(t){var i=n.select(this);x.translatePoint(t,i,e,r)}))},x.hideOutsideRangePoint=function(t,e,r,n,i,a){e.attr("display",r.isPtWithinRange(t,i)&&n.isPtWithinRange(t,a)?null:"none")},x.hideOutsideRangePoints=function(t,e){if(e._hasClipOnAxisFalse){var r=e.xaxis,i=e.yaxis;t.each((function(e){var a=e[0].trace,o=a.xcalendar,s=a.ycalendar,u=l.traceIs(a,"bar-like")?".bartext":".point,.textpoint";t.selectAll(u).each((function(t){x.hideOutsideRangePoint(t,n.select(this),r,i,o,s)}))}))}},x.crispRound=function(t,e,r){return e&&o(e)?t._context.staticPlot?e:e<1?1:Math.round(e):r||0},x.singleLineStyle=function(t,e,r,n,i){e.style("fill","none");var a=(((t||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||"";u.stroke(e,n||a.color),x.dashLine(e,s,o)},x.lineGroupStyle=function(t,e,r,i){t.style("fill","none").each((function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,s=i||a.dash||"";n.select(this).call(u.stroke,r||a.color).call(x.dashLine,s,o)}))},x.dashLine=function(t,e,r){r=+r||0,e=x.dashStyle(e,r),t.style({"stroke-dasharray":e,"stroke-width":r+"px"})},x.dashStyle=function(t,e){e=+e||1;var r=Math.max(e,3);return"solid"===t?t="":"dot"===t?t=r+"px,"+r+"px":"dash"===t?t=3*r+"px,"+3*r+"px":"longdash"===t?t=5*r+"px,"+5*r+"px":"dashdot"===t?t=3*r+"px,"+r+"px,"+r+"px,"+r+"px":"longdashdot"===t&&(t=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),t},x.singleFillStyle=function(t,e){var r=n.select(t.node());b(t,((r.data()[0]||[])[0]||{}).trace||{},e)},x.fillGroupStyle=function(t,e){t.style("stroke-width",0).each((function(t){var r=n.select(this);t[0].trace&&b(r,t[0].trace,e)}))};var _=r(90998);x.symbolNames=[],x.symbolFuncs=[],x.symbolBackOffs=[],x.symbolNeedLines={},x.symbolNoDot={},x.symbolNoFill={},x.symbolList=[],Object.keys(_).forEach((function(t){var e=_[t],r=e.n;x.symbolList.push(r,String(r),t,r+100,String(r+100),t+"-open"),x.symbolNames[r]=t,x.symbolFuncs[r]=e.f,x.symbolBackOffs[r]=e.backoff||0,e.needLine&&(x.symbolNeedLines[r]=!0),e.noDot?x.symbolNoDot[r]=!0:x.symbolList.push(r+200,String(r+200),t+"-dot",r+300,String(r+300),t+"-open-dot"),e.noFill&&(x.symbolNoFill[r]=!0)}));var w=x.symbolNames.length;function T(t,e,r,n){var i=t%100;return x.symbolFuncs[i](e,r,n)+(t>=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 k={x1:1,x2:0,y1:0,y2:0},A={x1:0,x2:0,y1:1,y2:0},M=a("~f"),S={radial:{node:"radialGradient"},radialreversed:{node:"radialGradient",reversed:!0},horizontal:{node:"linearGradient",attrs:k},horizontalreversed:{node:"linearGradient",attrs:k,reversed:!0},vertical:{node:"linearGradient",attrs:A},verticalreversed:{node:"linearGradient",attrs:A,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=100;var f=rt(t,r),h=G(t,r);e.attr("d",T(c,l,f,h))}var p,d,v,g=!1;if(t.so)v=s.outlierwidth,d=s.outliercolor,p=o.outliercolor;else{var y=(s||{}).width;v=(t.mlw+1||y+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,d="mlc"in t?t.mlcc=n.lineScale(t.mlc):i.isArrayOrTypedArray(s.color)?u.defaultLine:s.color,i.isArrayOrTypedArray(o.color)&&(p=u.defaultLine,g=!0),p="mc"in t?t.mcc=n.markerScale(t.mc):o.color||"rgba(0,0,0,0)",n.selectedColorFn&&(p=n.selectedColorFn(t))}if(t.om)e.call(u.stroke,p).style({"stroke-width":(v||1)+"px",fill:"none"});else{e.style("stroke-width",(t.isBlank?0:v)+"px");var m=o.gradient,b=t.mgt;b?g=!0:b=m&&m.type,i.isArrayOrTypedArray(b)&&(b=b[0],S[b]||(b=0));var _=o.pattern,w=_&&x.getPatternAttr(_.shape,t.i,"");if(b&&"none"!==b){var k=t.mgc;k?g=!0:k=m.color;var A=r.uid;g&&(A+="-"+t.i),x.gradient(e,a,A,b,[[0,k],[1,p]],"fill")}else if(w){var M=x.getPatternAttr(_.bgcolor,t.i,null),E=x.getPatternAttr(_.fgcolor,t.i,null),L=_.fgopacity,C=x.getPatternAttr(_.size,t.i,8),P=x.getPatternAttr(_.solidity,t.i,.3),O=t.mcc||i.isArrayOrTypedArray(_.shape)||i.isArrayOrTypedArray(_.bgcolor)||i.isArrayOrTypedArray(_.size)||i.isArrayOrTypedArray(_.solidity),I=r.uid;O&&(I+="-"+t.i),x.pattern(e,"point",a,I,w,C,P,t.mcc,_.fillmode,M,E,L)}else u.fill(e,p);v&&u.stroke(e,d)}},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 Z,Y,W,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=Z/180*Math.PI,b=Y/180*Math.PI,_=x-y,w=Q(b)*tt(_),T=tt(b)*Q(m)-Q(b)*tt(m)*Q(_);c=-$(w,T)-Math.PI,Z=f,Y=h}var k=et(v,[Q(c),0]),A=et(g,[tt(c),0]);i=$(k[1]+A[1],k[0]+A[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-W,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 W=r,X=n,J=t.i,K=e.uid,i}x.getMarkerAngle=rt},90998:function(t,e,r){"use strict";var n,i,a,o,s=r(95616),l=r(39898).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;y0;e.each((function(e){var f,h=e[0].trace,p=h.error_x||{},d=h.error_y||{};h.ids&&(f=function(t){return t.id});var v=o.hasMarkers(h)&&h.marker.maxdisplayed>0;d.visible||p.visible||(e=[]);var g=n.select(this).selectAll("g.errorbar").data(e,f);if(g.exit().remove(),e.length){p.visible||g.selectAll("path.xerror").remove(),d.visible||g.selectAll("path.yerror").remove(),g.style("opacity",1);var y=g.enter().append("g").classed("errorbar",!0);c&&y.style("opacity",0).transition().duration(s.duration).style("opacity",1),a.setClipUrl(g,r.layerClipId,t),g.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(!v||t.vis){var a,o=e.select("path.yerror");if(d.visible&&i(r.x)&&i(r.yh)&&i(r.ys)){var f=d.width;a="M"+(r.x-f)+","+r.yh+"h"+2*f+"m-"+f+",0V"+r.ys,r.noYS||(a+="m-"+f+",0h"+2*f),o.size()?c&&(o=o.transition().duration(s.duration).ease(s.easing)):o=e.append("path").style("vector-effect","non-scaling-stroke").classed("yerror",!0),o.attr("d",a)}else o.remove();var h=e.select("path.xerror");if(p.visible&&i(r.y)&&i(r.xh)&&i(r.xs)){var g=(p.copy_ystyle?d:p).width;a="M"+r.xh+","+(r.y-g)+"v"+2*g+"m0,-"+g+"H"+r.xs,r.noXS||(a+="m0,-"+g+"v"+2*g),h.size()?c&&(h=h.transition().duration(s.duration).ease(s.easing)):h=e.append("path").style("vector-effect","non-scaling-stroke").classed("xerror",!0),h.attr("d",a)}else h.remove()}}))}}))}},62662:function(t,e,r){"use strict";var n=r(39898),i=r(7901);t.exports=function(t){t.each((function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll("path.yerror").style("stroke-width",r.thickness+"px").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(i.stroke,a.color)}))}},77914:function(t,e,r){"use strict";var n=r(41940),i=r(528).hoverlabel,a=r(1426).extendFlat;t.exports={hoverlabel:{bgcolor:a({},i.bgcolor,{arrayOk:!0}),bordercolor:a({},i.bordercolor,{arrayOk:!0}),font:n({arrayOk:!0,editType:"none"}),align:a({},i.align,{arrayOk:!0}),namelength:a({},i.namelength,{arrayOk:!0}),editType:"none"}}},30732:function(t,e,r){"use strict";var n=r(71828),i=r(73972);function a(t,e,r,i){i=i||n.identity,Array.isArray(t)&&(e[0][r]=i(t))}t.exports=function(t){var e=t.calcdata,r=t._fullLayout;function o(t){return function(e){return n.coerceHoverinfo({hoverinfo:e},{_module:t._module},r)}}for(var s=0;s=0&&r.index_[0]._length||ot<0||ot>w[0]._length)return d.unhoverRaw(t,e)}else at="xpx"in e?e.xpx:_[0]._length/2,ot="ypx"in e?e.ypx:w[0]._length/2;if(e.pointerX=at+_[0]._offset,e.pointerY=ot+w[0]._offset,V="xval"in e?y.flat(l,e.xval):y.p2c(_,at),H="yval"in e?y.flat(l,e.yval):y.p2c(w,ot),!i(V[0])||!i(H[0]))return o.warn("Fx.hover failed",e,t),d.unhoverRaw(t,e)}var ut=1/0;function ct(t,r){for(G=0;Gtt&&(et.splice(0,tt),ut=et[0].distance),m&&0!==B&&0===et.length){Q.distance=B,Q.index=!1;var f=Y._module.hoverPoints(Q,K,$,"closest",{hoverLayer:c._hoverlayer});if(f&&(f=f.filter((function(t){return t.spikeDistance<=B}))),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=ht(v),(!nt.vLinePoint||nt.vLinePoint.spikeDistance>h.spikeDistance)&&(nt.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=ht(x),(!nt.hLinePoint||nt.hLinePoint.spikeDistance>h.spikeDistance)&&(nt.hLinePoint=h))}}}}}function ft(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)Tt-1;kt--)Et(et[kt]);et=At,gt()}var Lt=t._hoverdata,Ct=[],Pt=j(t),Ot=U(t);for(q=0;q1||et.length>1)||"closest"===P&&it&&et.length>1,Gt=p.combine(c.plot_bgcolor||p.background,c.paper_bgcolor),Zt=O(et,{gd:t,hovermode:P,rotateLabels:qt,bgColor:Gt,container:c._hoverlayer,outerContainer:c._paper.node(),commonLabelOpts:c.hoverlabel,hoverdistance:c.hoverdistance});if(y.isUnifiedHover(P)||(function(t,e,r){var n,i,a,o,s,l,u,c=0,f=1,h=t.size(),p=new Array(h),d=0;function v(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(a<.01)){if(i<-.01){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var u=0;for(o=0;oe.pmax&&u++;for(o=t.length-1;o>=0&&!(u<=0);o--)(l=t[o]).pos>e.pmax-1&&(l.del=!0,u--);for(o=0;o=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(u<=0);o--)(l=t[o]).pos+l.dp+l.size>e.pmax&&(l.del=!0,u--)}}}for(t.each((function(t){var n=t[e],i="x"===n._id.charAt(0),a=n.range;0===d&&a&&a[0]>a[1]!==i&&(f=-1),p[d++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(i?T:1)/2,pmin:0,pmax:i?r.width:r.height}]})),p.sort((function(t,e){return t[0].posref-e[0].posref||f*(e[0].traceIndex-t[0].traceIndex)}));!n&&c<=h;){for(c++,n=!0,o=0;o.01&&m.pmin===x.pmin&&m.pmax===x.pmax){for(s=y.length-1;s>=0;s--)y[s].dp+=i;for(g.push.apply(g,y),p.splice(o+1,1),u=0,s=g.length-1;s>=0;s--)u+=g[s].dp;for(a=u/g.length,s=g.length-1;s>=0;s--)g[s].dp-=a;n=!1}else o++}p.forEach(v)}for(o=p.length-1;o>=0;o--){var b=p[o];for(s=b.length-1;s>=0;s--){var _=b[s],w=_.datum;w.offset=_.dp,w.del=_.del}}}(Zt,qt?"xa":"ya",c),D(Zt,qt,c._invScaleX,c._invScaleY)),s&&s.tagName){var Yt=g.getComponentMethod("annotations","hasClickToShow")(t,Ct);f(n.select(s),Yt?"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,Lt)&&(Lt&&t.emit("plotly_unhover",{event:e,points:Lt}),t.emit("plotly_hover",{event:e,points:t._hoverdata,xaxes:_,yaxes:w,xvals:V,yvals:H}))}(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=j(i),o=U(i),s=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:!1,bgColor:e.bgColor||p.background,container:n.select(e.container),outerContainer:e.outerContainer||e.container}),l=0,u=0;return s.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,k=e.fontSize||m.HOVERFONTSIZE,A=t[0],E=A.xa,L=A.ya,P=a.charAt(0),O=P+"Label",D=A[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"+(S+m.width/2)+"v"+x+(2*S+m.height)+"H-"+(S+m.width/2)+"V"+x+M+"H-"+M+"Z")}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+(A.y0+A.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");var O,I=m.height/2,z=F-m.top-I,R="clip"+i._uid+"commonlabel"+L._id;if(g=0?st:lt+ft=0?lt:xt+ft=0?at:ot+ht=0?ot:bt+ht=0,"top"!==t.idealAlign&&G||!Z?G?(O+=R/2,t.anchor="start"):t.anchor="middle":(O-=R/2,t.anchor="end");else if(t.pos=O,G=P+z/2+Y<=B,Z=P-z/2-Y>=0,"left"!==t.idealAlign&&G||!Z)if(G)P+=z/2,t.anchor="start";else{t.anchor="middle";var W=Y/2,X=P+W-B,J=P-W;X>0&&(P-=X),J<0&&(P+=-J)}else P-=z/2,t.anchor="end";w.attr("text-anchor",t.anchor),E&&A.attr("text-anchor",t.anchor),e.attr("transform",s(P,O)+(u?l(_):""))})),_t}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=B(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=B(r,t.nameLength),""}))}return[l,s]}function D(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=r.select("text.nums"),s=t.anchor,l="end"===s?-1:1,u={start:1,end:-1,middle:0}[s],f=u*(M+S),p=f+u*(t.txwidth+S),d=0,v=t.offset,g="middle"===s;g&&(f-=t.tx2width/2,p+=t.txwidth/2+S),e&&(v*=-A,d=t.offset*k),r.select("path").attr("d",g?"M-"+a(t.bx/2+t.tx2width/2)+","+o(v-t.by/2)+"h"+a(t.bx)+"v"+o(t.by)+"h-"+a(t.bx)+"Z":"M0,0L"+a(l*M+d)+","+o(M+v)+"v"+o(t.by/2-M)+"h"+a(l*t.bx)+"v-"+o(t.by)+"H"+a(l*M+d)+"V"+o(v-M)+"Z");var y=d+f,m=v+t.ty0-t.by/2+S,x=t.textAlign||"auto";"auto"!==x&&("left"===x&&"start"!==s?(i.attr("text-anchor","start"),y=g?-t.bx/2-t.tx2width/2+S:-t.bx-S):"right"===x&&"end"!==s&&(i.attr("text-anchor","end"),y=g?t.bx/2-t.tx2width/2-S:t.bx+S)),i.call(c.positionText,a(y),o(m)),t.tx2width&&(r.select("text.name").call(c.positionText,a(p+u*S+d),o(v+t.ty0-t.by/2+S)),r.select("rect").call(h.setRect,a(p+(u-1)*t.tx2width/2+d),o(v-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function z(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 R(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,k=i.spikecolor||_,A=v.getPxPosition(t,i);if(-1!==w.indexOf("toaxis")||-1!==w.indexOf("across")){if(-1!==w.indexOf("toaxis")&&(x=A,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:k,"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:A+("right"!==i.side?T:-T),cy:y,r:T,fill:k}).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 F(t,e){return!e||e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint}function B(t,e){return c.plainText(t||"",{len:e,allowedTags:["br","sub","sup","b","i","em"]})}function N(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 j(t){return t.offsetTop+t.clientTop}function U(t){return t.offsetLeft+t.clientLeft}function V(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),i=n.x,a=n.y,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)}}},38048:function(t,e,r){"use strict";var n=r(71828),i=r(7901),a=r(23469).isUnifiedHover;t.exports=function(t,e,r,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&a(e.hovermode)&&(o.font||(o.font={}),l("size"),l("family"),l("color"),s?(o.bgcolor||(o.bgcolor=i.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),r("hoverlabel.bgcolor",o.bgcolor),r("hoverlabel.bordercolor",o.bordercolor),r("hoverlabel.namelength",o.namelength),n.coerceFont(r,"hoverlabel.font",o.font),r("hoverlabel.align",o.align)}},98212:function(t,e,r){"use strict";var n=r(71828),i=r(528);t.exports=function(t,e){function r(r,a){return void 0!==e[r]?e[r]:n.coerce(t,e,i,r,a)}return r("clickmode"),r("hovermode")}},30211:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=r(28569),o=r(23469),s=r(528),l=r(88335);t.exports={moduleType:"component",name:"fx",constants:r(26675),schema:{layout:s},attributes:r(77914),layoutAttributes:s,supplyLayoutGlobalDefaults:r(22774),supplyDefaults:r(54268),supplyLayoutDefaults:r(34938),calc:r(30732),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(t,e,r){return i.castOption(t,e,"hoverlabel."+r)},castHoverinfo:function(t,e,r){return i.castOption(t,r,"hoverinfo",(function(r){return i.coerceHoverinfo({hoverinfo:r},{_module:t._module},e)}))},hover:l.hover,unhover:a.unhover,loneHover:l.loneHover,loneUnhover:function(t){var e=i.isD3Selection(t)?t:n.select(t);e.selectAll("g.hovertext").remove(),e.selectAll(".spikeline").remove()},click:r(75914)}},528:function(t,e,r){"use strict";var n=r(26675),i=r(41940),a=i({editType:"none"});a.family.dflt=n.HOVERFONT,a.size.dflt=n.HOVERFONTSIZE,t.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:a,grouptitlefont:i({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}},34938:function(t,e,r){"use strict";var n=r(71828),i=r(528),a=r(98212),o=r(38048);t.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}a(t,e)&&(r("hoverdistance"),r("spikedistance")),"select"===r("dragmode")&&r("selectdirection");var s=e._has("mapbox"),l=e._has("geo"),u=e._basePlotModules.length;"zoom"===e.dragmode&&((s||l)&&1===u||s&&l&&2===u)&&(e.dragmode="pan"),o(t,e,r),n.coerceFont(r,"hoverlabel.grouptitlefont",e.hoverlabel.font)}},22774:function(t,e,r){"use strict";var n=r(71828),i=r(38048),a=r(528);t.exports=function(t,e){i(t,e,(function(r,i){return n.coerce(t,e,a,r,i)}))}},83312:function(t,e,r){"use strict";var n=r(71828),i=r(30587).counter,a=r(27670).Y,o=r(85555).idRegex,s=r(44467),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"===k("pattern")&&(h=!0),g._hasSubplotGrid=h;var x,b,_="top to bottom"===k("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",k,w,x,m),y:c("y",k,T,b,y,_)}}else delete e.grid}function k(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;n1);if(!1===_&&(e.legend=void 0),(!1!==_||f.uirevision)&&(p("uirevision",e.uirevision),!1!==_)){p("bgcolor",e.paper_bgcolor),p("bordercolor"),p("borderwidth");var w,T,k,A=i.coerceFont(p,"font",e.font),M="h"===p("orientation");if(M?(w=0,n.getComponentMethod("rangeslider","isVisible")(t.xaxis)?(T=1.1,k="bottom"):(T=-.1,k="top")):(w=1.02,T=1,k="auto"),p("traceorder",x),u.isGrouped(e.legend)&&p("tracegroupgap"),p("entrywidth"),p("entrywidthmode"),p("itemsizing"),p("itemwidth"),p("itemclick"),p("itemdoubleclick"),p("groupclick"),p("x",w),p("xanchor"),p("y",T),p("yanchor",k),p("valign"),i.noneOrAll(f,h,["x","y"]),p("title.text")){p("title.side",M?"left":"top");var S=i.extendFlat({},A,{size:i.bigFont(A.size)});i.coerceFont(p,"title.font",S)}}}},43969:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=r(74875),o=r(73972),s=r(11086),l=r(28569),u=r(91424),c=r(7901),f=r(63893),h=r(85167),p=r(14928),d=r(18783),v=d.LINE_SPACING,g=d.FROM_TL,y=d.FROM_BR,m=r(82424),x=r(53630),b=r(10130);function _(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 w(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 T(t,e,r){var n,a,s=t.data()[0][0],l=s.trace,c=o.traceIs(l,"pie-like"),h=!r._inHover&&e._context.edits.legendText&&!c,d=r._maxNameLength;s.groupTitle?(n=s.groupTitle.text,a=s.groupTitle.font):(a=r.font,r.entries?n=s.text:(n=c?s.label:l.name,l._meta&&(n=i.templateString(n,l._meta))));var v=i.ensureSingle(t,"text","legendtext");v.attr("text-anchor","start").call(u.font,a).text(h?k(n,d):n);var g=r.itemwidth+2*p.itemGap;f.positionText(v,g,0),h?v.call(f.makeEditable,{gd:e,text:n}).call(M,t,e,r).on("edit",(function(n){this.text(k(n,d)).call(M,t,e,r);var a=s.trace._fullInput||{},u={};if(o.hasTransform(a,"groupby")){var c=o.getTransformIndices(a,"groupby"),f=c[c.length-1],h=i.keyedContainer(a,"transforms["+f+"].styles","target","value.name");h.set(s.trace._group,n),u=h.constructUpdate()}else u.name=n;return o.call("_guiRestyle",e,u,l.index)})):M(v,t,e,r)}function k(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 A(t,e){var r,a=e._context.doubleClickDelay,o=1,s=i.ensureSingle(t,"rect","legendtoggle",(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||(s.on("mousedown",(function(){(r=(new Date).getTime())-e._legendMouseDownTimea&&(o=Math.max(o-1,1)),w(e,r,t,o,n.event)}})))}function M(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();r||(r=e._fullLayout.legend);var s,l,c=r.borderwidth,h=(1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font).size*v;if(o){var d=u.bBox(o);s=d.height,l=d.width,1===n?u.setTranslate(a,c,c+.75*s):u.setTranslate(a,0,.25*s)}else{var g=t.select(1===n?".legendtitletext":".legendtext"),y=f.lineCount(g),m=g.node();if(s=h*y,l=m?u.bBox(m).width:0,1===n)"left"===r.title.side&&(l+=2*p.itemGap),f.positionText(g,c+p.titlePad,c+h);else{var x=2*p.itemGap+r.itemwidth;i.groupTitle&&(x=p.itemGap,l-=r.itemwidth),f.positionText(g,x,-h*((y-1)/2-.3))}}1===n?(r._titleWidth=l,r._titleHeight=s):(i.lineHeight=h,i.height=Math.max(s,16)+3,i.width=l)}else t.remove()}(e,r,n,i)}))}function S(t){return i.isRightAnchor(t)?"right":i.isCenterAnchor(t)?"center":"left"}function E(t){return i.isBottomAnchor(t)?"bottom":i.isMiddleAnchor(t)?"middle":"top"}t.exports=function(t,e){return e||(e=t._fullLayout.legend||{}),function(t,e){var r,s,f=t._fullLayout,h="legend"+f._uid,d=e._inHover;if(d?(r=e.layer,h+="-hover"):r=f._infolayer,r){if(t._legendMouseDownTime||(t._legendMouseDownTime=0),d){if(!e.entries)return;s=m(e.entries,e)}else{if(!t.calcdata)return;s=f.showlegend&&m(t.calcdata,e)}var v=f.hiddenlabels||[];if(!(d||f.showlegend&&s.length))return r.selectAll(".legend").remove(),f._topdefs.select("#"+h).remove(),a.autoMargin(t,"legend");var k=i.ensureSingle(r,"g","legend",(function(t){d||t.attr("pointer-events","all")})),L=i.ensureSingleById(f._topdefs,"clipPath",h,(function(t){t.append("rect")})),C=i.ensureSingle(k,"rect","bg",(function(t){t.attr("shape-rendering","crispEdges")}));C.call(c.stroke,e.bordercolor).call(c.fill,e.bgcolor).style("stroke-width",e.borderwidth+"px");var P=i.ensureSingle(k,"g","scrollbox"),O=e.title;if(e._titleWidth=0,e._titleHeight=0,O.text){var I=i.ensureSingle(P,"text","legendtitletext");I.attr("text-anchor","start").call(u.font,O.font).text(O.text),M(I,P,t,e,1)}else P.selectAll(".legendtitletext").remove();var D=i.ensureSingle(k,"rect","scrollbar",(function(t){t.attr(p.scrollBarEnterAttrs).call(c.fill,p.scrollBarColor)})),z=P.selectAll("g.groups").data(s);z.enter().append("g").attr("class","groups"),z.exit().remove();var R=z.selectAll("g.traces").data(i.identity);R.enter().append("g").attr("class","traces"),R.exit().remove(),R.style("opacity",(function(t){var e=t[0].trace;return o.traceIs(e,"pie-like")?-1!==v.indexOf(t[0].label)?.5:1:"legendonly"===e.visible?.5:1})).each((function(){n.select(this).call(T,t,e)})).call(x,t,e).each((function(){d||n.select(this).call(A,t)})),i.syncOrAsync([a.previousPromises,function(){return function(t,e,r,i){var a=t._fullLayout;i||(i=a.legend);var o=a._size,s=b.isVertical(i),l=b.isGrouped(i),c="fraction"===i.entrywidthmode,f=i.borderwidth,h=2*f,d=p.itemGap,v=i.itemwidth+2*d,g=2*(f+d),y=E(i),m=i.y<0||0===i.y&&"top"===y,x=i.y>1||1===i.y&&"bottom"===y,w=i.tracegroupgap,T={};i._maxHeight=Math.max(m||x?a.height/2:o.h,30);var k=0;i._width=0,i._height=0;var A=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(s)r.each((function(t){var e=t[0].height;u.setTranslate(this,f+A[0],f+A[1]+i._height+e/2+d),i._height+=e,i._width=Math.max(i._width,t[0].width)})),k=v+i._width,i._width+=d+v+h,i._height+=g,l&&(e.each((function(t,e){u.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var M=S(i),L=i.x<0||0===i.x&&"right"===M,C=i.x>1||1===i.x&&"left"===M,P=x||m,O=a.width/2;i._maxWidth=Math.max(L?P&&"left"===M?o.l+o.w:O:C?P&&"right"===M?o.r+o.w:O:o.w,2*v);var I=0,D=0;r.each((function(t){var e=_(t,i,v);I=Math.max(I,e),D+=e})),k=null;var z=0;if(l){var R=0,F=0,B=0;e.each((function(){var t=0,e=0;n.select(this).selectAll("g.traces").each((function(r){var n=_(r,i,v),a=r[0].height;u.setTranslate(this,A[0],A[1]+f+d+a/2+e),e+=a,t=Math.max(t,n),T[r[0].trace.legendgroup]=t}));var r=t+d;F>0&&r+f+F>i._maxWidth?(z=Math.max(z,F),F=0,B+=R+w,R=e):R=Math.max(R,e),u.setTranslate(this,F,B),F+=r})),i._width=Math.max(z,F)+f,i._height=B+R+g}else{var N=r.size(),j=D+h+(N-1)*d=i._maxWidth&&(z=Math.max(z,q),V=0,H+=U,i._height+=U,U=0),u.setTranslate(this,A[0]+f+V,A[1]+f+H+e/2+d),q=V+r+d,V+=n,U=Math.max(U,e)})),j?(i._width=V+h,i._height=U+g):(i._width=Math.max(z,q)+h,i._height+=U+g)}}i._width=Math.ceil(Math.max(i._width+A[0],i._titleWidth+2*(f+p.titlePad))),i._height=Math.ceil(Math.max(i._height+A[1],i._titleHeight+2*(f+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var G=t._context.edits,Z=G.legendText||G.legendPosition;r.each((function(t){var e=n.select(this).select(".legendtoggle"),r=t[0].height,a=t[0].trace.legendgroup,o=_(t,i,v);l&&""!==a&&(o=T[a]);var f=Z?v:k||o;s||c||(f+=d/2),u.setRect(e,0,-r/2,f,r)}))}(t,z,R,e)},function(){var s,c,v,m,x=f._size,b=e.borderwidth;if(!d){var _=function(t){var e=t._fullLayout.legend,r=S(e),n=E(e);return a.autoMargin(t,"legend",{x:e.x,y:e.y,l:e._width*g[r],r:e._width*y[r],b:e._effHeight*y[n],t:e._effHeight*g[n]})}(t);if(_)return;var T=x.l+x.w*e.x-g[S(e)]*e._width,A=x.t+x.h*(1-e.y)-g[E(e)]*e._effHeight;if(f.margin.autoexpand){var M=T,O=A;T=i.constrain(T,0,f.width-e._width),A=i.constrain(A,0,f.height-e._effHeight),T!==M&&i.log("Constrain legend.x to make legend fit inside graph"),A!==O&&i.log("Constrain legend.y to make legend fit inside graph")}u.setTranslate(k,T,A)}if(D.on(".drag",null),k.on("wheel",null),d||e._height<=e._maxHeight||t._context.staticPlot){var I=e._effHeight;d&&(I=e._height),C.attr({width:e._width-b,height:I-b,x:b/2,y:b/2}),u.setTranslate(P,0,0),L.select("rect").attr({width:e._width-2*b,height:I-2*b,x:b,y:b}),u.setClipUrl(P,h,t),u.setRect(D,0,0,0,0),delete e._scrollY}else{var z,R,F,B=Math.max(p.scrollBarMinHeight,e._effHeight*e._effHeight/e._height),N=e._effHeight-B-2*p.scrollBarMargin,j=e._height-e._effHeight,U=N/j,V=Math.min(e._scrollY||0,j);C.attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-b,x:b/2,y:b/2}),L.select("rect").attr({width:e._width-2*b+p.scrollBarWidth+p.scrollBarMargin,height:e._effHeight-2*b,x:b,y:b+V}),u.setClipUrl(P,h,t),G(V,B,U),k.on("wheel",(function(){G(V=i.constrain(e._scrollY+n.event.deltaY/N*j,0,j),B,U),0!==V&&V!==j&&n.event.preventDefault()}));var H=n.behavior.drag().on("dragstart",(function(){var t=n.event.sourceEvent;z="touchstart"===t.type?t.changedTouches[0].clientY:t.clientY,F=V})).on("drag",(function(){var t=n.event.sourceEvent;2===t.buttons||t.ctrlKey||(R="touchmove"===t.type?t.changedTouches[0].clientY:t.clientY,G(V=function(t,e,r){var n=(r-e)/U+t;return i.constrain(n,0,j)}(F,z,R),B,U))}));D.call(H);var q=n.behavior.drag().on("dragstart",(function(){var t=n.event.sourceEvent;"touchstart"===t.type&&(z=t.changedTouches[0].clientY,F=V)})).on("drag",(function(){var t=n.event.sourceEvent;"touchmove"===t.type&&(R=t.changedTouches[0].clientY,G(V=function(t,e,r){var n=(e-r)/U+t;return i.constrain(n,0,j)}(F,z,R),B,U))}));P.call(q)}function G(r,n,i){e._scrollY=t._fullLayout.legend._scrollY=r,u.setTranslate(P,0,-r),u.setRect(D,e._width,p.scrollBarMargin+r*i,p.scrollBarWidth,n),L.select("rect").attr("y",b+r)}t._context.edits.legendPosition&&(k.classed("cursor-move",!0),l.init({element:k.node(),gd:t,prepFn:function(){var t=u.getTranslate(k);v=t.x,m=t.y},moveFn:function(t,r){var n=v+t,i=m+r;u.setTranslate(k,n,i),s=l.align(n,0,x.l,x.l+x.w,e.xanchor),c=l.align(i,0,x.t+x.h,x.t,e.yanchor)},doneFn:function(){void 0!==s&&void 0!==c&&o.call("_guiRelayout",t,{"legend.x":s,"legend.y":c})},clickFn:function(e,n){var i=r.selectAll("g.traces").filter((function(){var t=this.getBoundingClientRect();return n.clientX>=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom}));i.size()>0&&w(t,k,i,e,n)}}))}],t)}}(t,e)}},82424:function(t,e,r){"use strict";var n=r(73972),i=r(10130);t.exports=function(t,e){var r,a,o=e._inHover,s=i.isGrouped(e),l=i.isReversed(e),u={},c=[],f=!1,h={},p=0,d=0;function v(t,r){if(""!==t&&i.isGrouped(e))-1===c.indexOf(t)?(c.push(t),f=!0,u[t]=[r]):u[t].push(r);else{var n="~~i"+p;c.push(n),u[n]=[r],p++}}for(r=0;rA&&(k=A)}w[r][0]._groupMinRank=k,w[r][0]._preGroupSort=r}var M=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(w.forEach((function(t,e){t[0]._preGroupSort=e})),w.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),r=0;rr?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,k=g(m.size,8,10),A=g(m.solidity,.5,1),M="legend-"+c.uid;i.call(s.pattern,"legend",e,M,x,k,A,p,m.fillmode,b,_,T)}else i.call(l.fill,y);o&&l.stroke(i,a.mlc||h.color)}))}function k(t,e,r){var o=t[0],s=o.trace,l=r?s.visible&&s.type===r:i.traceIs(s,r),u=n.select(e).select("g.legendpoints").selectAll("path.legend"+r).data(l?[t]:[]);if(u.enter().append("path").classed("legend"+r,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",_),u.exit().remove(),u.size()){var c=(s.marker||{}).line,p=w(h(c.width,o.pts),c,5,2),d=a.minExtend(s,{marker:{line:{width:p}}});d.marker.line.color=c.color;var v=a.minExtend(o,{trace:d});f(u,v,d)}}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){k(t,this,"funnelarea")})).each((function(t){k(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,k=_.reversescale,A=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",A+"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(k),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",A+(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(k),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 k=n.select(this).select("g.legendpoints"),A=k.selectAll("path.scatterpts").data(h?r:[]);A.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",_),A.exit().remove(),A.call(s.pointStyle,i,e),h&&(r[0].mrc=3);var M=k.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)}))}))}},42068:function(t,e,r){"use strict";r(93348),t.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}},26023:function(t,e,r){"use strict";var n=r(73972),i=r(74875),a=r(41675),o=r(24255),s=r(34031).eraseActiveShape,l=r(71828),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;i1?(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"]:A?(O=["hoverClosestCartesian","hoverCompareCartesian"],I=["resetViewSankey"]):O=["toggleHover"],v&&(O=["toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"]),(function(t){for(var e=0;e0)){var v=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a=n.max)e=F[r+1];else if(t=n.pmax)e=F[r+1];else if(t=0;k--){var A=r.append("path").attr(g).style("opacity",k?.1:y).call(o.stroke,x).call(o.fill,m).call(s.dashLine,k?"solid":_,k?4+b:b);if(d(A,t,a),w){var M=l(t.layout,"selections",a);A.style({cursor:"move"});var S={element:A.node(),plotinfo:p,gd:t,editHelpers:M,isActiveSelection:!0},E=n(u,t);i(E,A,S)}else A.style("pointer-events",k?"all":"none");T[k]=A}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)}}}},53777:function(t,e,r){"use strict";var n=r(79952).P,i=r(1426).extendFlat;t.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:i({},n,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}},90849: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")}},35855:function(t,e,r){"use strict";var n=r(64505).selectMode,i=r(51873).clearOutline,a=r(60165),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(y-1,b=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(y)){Z(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=k(f,t)),c&&(i._fullLayout._noEmitSelectedAtStart=!0,a.call("_guiRelayout",i,{selections:c}).then((function(){e&&A(i)}))),i._fullLayout._outlining=!1)}n.selection={},n.selection.selectionDefs=t.selectionDefs=[],n.selection.mergedPolygons=t.mergedPolygons=[]}function W(t){return t._id}function X(t,e,r,n){if(!t.calcdata)return[];var i,a,o,s=[],l=e.map(W),u=r.map(W);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)k._fullLayout._deactivateShape(k);else if(!x){var r=A.clickmode;L.done(At).then((function(){if(L.clear(At),2===t){for(bt.remove(),K=0;K-1&&V(e,k,n.xaxes,n.yaxes,n.subplot,n,bt),"event"===r&&ft(k,void 0);l.click(k,e)})).catch(M.error)}},n.doneFn=function(){kt.remove(),L.done(At).then((function(){L.clear(At),!S&&J&&n.selectionDefs&&(J.subtract=xt,n.selectionDefs.push(J),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,W)),(S||x)&&Y(n,S),n.doneFnCompleted&&n.doneFnCompleted(Mt),b&&ft(k,at)})).catch(M.error)}},clearOutline:x,clearSelectionsCache:Y,selectOnClick:V}},89827:function(t,e,r){"use strict";var n=r(50215),i=r(82196).line,a=r(79952).P,o=r(1426).extendFlat,s=r(44467).templatedArray;r(24695),t.exports=s("shape",{visible:{valType:"boolean",dflt:!0,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:o({},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:o({},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:o({},i.color,{editType:"arraydraw"}),width:o({},i.width,{editType:"calc+arraydraw"}),dash:o({},a,{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"},editType:"arraydraw"})},5627:function(t,e,r){"use strict";var n=r(71828),i=r(89298),a=r(21459),o=r(30477);function s(t){return u(t.line.width,t.xsizemode,t.x0,t.x1,t.path,!1)}function l(t){return u(t.line.width,t.ysizemode,t.y0,t.y1,t.path,!0)}function u(t,e,r,i,s,l){var u=t/2,c=l;if("pixel"===e){var f=s?o.extractPathCoords(s,l?a.paramIsY:a.paramIsX):[r,i],h=n.aggNums(Math.max,null,f),p=n.aggNums(Math.min,null,f),d=p<0?Math.abs(p)+u:u,v=h>0?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;o1&&(2!==t.length||"Z"!==t[1][0])&&(0===E&&(t[0][0]="M"),e[S]=t,T(),k())}}()}}function B(t,r){!function(t,r){if(e.length)for(var n=0;nx?(k=f,E="y0",A=x,L="y1"):(k=x,E="y1",A=f,L="y0"),X(n),$(s,r),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l="";"paper"===n||o.autorange||(l+=n),"paper"===i||s.autorange||(l+=i),c.setClipUrl(t,l?"clip"+r._fullLayout._uid+l:null,r)}(e,r,t),W.moveFn="move"===I?J:K,W.altKey=n.altKey)},doneFn:function(){m(t)||(p(e),Q(s),_(e,t,r),n.call("_guiRelayout",t,l.getUpdateObj()))},clickFn:function(){m(t)||Q(s)}};function X(r){if(m(t))I=null;else if(R)I="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=W.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!F&&i>10&&a>10&&!r.shiftKey?h.getCursor(o/i,1-s/a):"move";p(e,l),I=l.split("-")[0]}}function J(n,i){if("path"===r.type){var a=function(t){return t},o=a,l=a;D?B("xanchor",r.xanchor=G(b+n)):(o=function(t){return G(H(t)+n)},N&&"date"===N.type&&(o=v.encodeDate(o))),z?B("yanchor",r.yanchor=Z(T+i)):(l=function(t){return Z(q(t)+i)},U&&"date"===U.type&&(l=v.encodeDate(l))),B("path",r.path=w(O,o,l))}else D?B("xanchor",r.xanchor=G(b+n)):(B("x0",r.x0=G(u+n)),B("x1",r.x1=G(y+n))),z?B("yanchor",r.yanchor=Z(T+i)):(B("y0",r.y0=Z(f+i)),B("y1",r.y1=Z(x+i)));e.attr("d",g(t,r)),$(s,r)}function K(n,i){if(F){var a=function(t){return t},o=a,l=a;D?B("xanchor",r.xanchor=G(b+n)):(o=function(t){return G(H(t)+n)},N&&"date"===N.type&&(o=v.encodeDate(o))),z?B("yanchor",r.yanchor=Z(T+i)):(l=function(t){return Z(q(t)+i)},U&&"date"===U.type&&(l=v.encodeDate(l))),B("path",r.path=w(O,o,l))}else if(R){if("resize-over-start-point"===I){var c=u+n,h=z?f-i:f+i;B("x0",r.x0=D?c:G(c)),B("y0",r.y0=z?h:Z(h))}else if("resize-over-end-point"===I){var p=y+n,d=z?x-i:x+i;B("x1",r.x1=D?p:G(p)),B("y1",r.y1=z?d:Z(d))}}else{var m=function(t){return-1!==I.indexOf(t)},_=m("n"),j=m("s"),V=m("w"),Y=m("e"),W=_?k+i:k,X=j?A+i:A,J=V?M+n:M,K=Y?S+n:S;z&&(_&&(W=k-i),j&&(X=A-i)),(!z&&X-W>10||z&&W-X>10)&&(B(E,r[E]=z?W:Z(W)),B(L,r[L]=z?X:Z(X))),K-J>10&&(B(C,r[C]=D?J:G(J)),B(P,r[P]=D?K:G(K)))}e.attr("d",g(t,r)),$(s,r)}function $(t,e){(D||z)&&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 a=H(D?e.xanchor:i.midRange(r?[e.x0,e.x1]:v.extractPathCoords(e.path,d.paramIsX))),o=q(z?e.yanchor:i.midRange(r?[e.y0,e.y1]:v.extractPathCoords(e.path,d.paramIsY)));if(a=v.roundPositionForSharpStrokeRendering(a,1),o=v.roundPositionForSharpStrokeRendering(o,1),D&&z){var s="M"+(a-1-1)+","+(o-1-1)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";n.attr("d",s)}else if(D){var l="M"+(a-1-1)+","+(o-9-1)+"v18 h2 v-18 Z";n.attr("d",l)}else{var u="M"+(a-9-1)+","+(o-1-1)+"h18 v2 h-18 Z";n.attr("d",u)}}()}function Q(t){t.selectAll(".visual-cue").remove()}h.init(W),Y.node().onmousemove=X}(t,D,l,e,r,I):!0===l.editable&&D.style("pointer-events",P||u.opacity(S)*M<=.5?"stroke":"all");D.node().addEventListener("click",(function(){return function(t,e){if(x(t)){var r=+e.node().getAttribute("data-index");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void T(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=T,y(t)}}}(t,D)}))}l._input&&!1!==l.visible&&("below"!==l.layer?k(t._fullLayout._shapeUpperLayer):"paper"===l.xref||"paper"===l.yref?k(t._fullLayout._shapeLowerLayer):b._hadPlotinfo?k((b.mainplotinfo||b).shapelayer):k(t._fullLayout._shapeLowerLayer))}function _(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,"").replace(/[xyz][1-9]* *domain/g,"");c.setClipUrl(t,n?"clip"+e._fullLayout._uid+n:null,e)}function w(t,e,r){return t.replace(d.segmentRE,(function(t){var n=0,i=t.charAt(0),a=d.paramIsX[i],o=d.paramIsY[i],s=d.numParams[i];return i+t.substr(1).replace(d.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function T(t){x(t)&&t._fullLayout._activeShapeIndex>=0&&(l(t),delete t._fullLayout._activeShapeIndex,y(t))}t.exports={draw:y,drawOne:b,eraseActiveShape:function(t){if(x(t)){l(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e0&&lp&&(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,k=Math.abs(w-c),A=Math.abs(T-h),M="A"+k+","+A,S=w+k+","+T;return"M"+S+M+" 0 1,1 "+w+","+(T-A)+M+" 0 0,1 "+S+"Z"}},89853:function(t,e,r){"use strict";var n=r(34031);t.exports={moduleType:"component",name:"shapes",layoutAttributes:r(89827),supplyLayoutDefaults:r(84726),supplyDrawNewShapeDefaults:r(45547),includeBasePlot:r(76325)("shapes"),calcAutorange:r(5627),draw:n.draw,drawOne:n.drawOne}},75067:function(t,e,r){"use strict";var n=r(41940),i=r(35025),a=r(1426).extendDeepAll,o=r(30962).overrideAll,s=r(85594),l=r(44467).templatedArray,u=r(98292),c=l("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});t.exports=o(l("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:c,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:a(i({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:s.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:n({})},font:n({}),activebgcolor:{valType:"color",dflt:u.gripBgActiveColor},bgcolor:{valType:"color",dflt:u.railBgColor},bordercolor:{valType:"color",dflt:u.railBorderColor},borderwidth:{valType:"number",min:0,dflt:u.railBorderWidth},ticklen:{valType:"number",min:0,dflt:u.tickLength},tickcolor:{valType:"color",dflt:u.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:u.minorTickLength}}),"arraydraw","from-root")},98292:function(t){"use strict";t.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}},12343:function(t,e,r){"use strict";var n=r(71828),i=r(85501),a=r(75067),o=r(98292).name,s=a.steps;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}for(var s=i(t,e,{name:"steps",handleItemDefaults:u}),l=0,c=0;c0&&(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(A,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;c0||h<0){var m={left:[-d,0],right:[d,0],top:[0,-d],bottom:[0,d]}[b.side];e.attr("transform",l(m[0],m[1]))}}}return R.call(F),I&&(E?R.on(".opacity",null):(A=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}}},7163:function(t,e,r){"use strict";var n=r(41940),i=r(22399),a=r(1426).extendFlat,o=r(30962).overrideAll,s=r(35025),l=r(44467).templatedArray,u=l("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});t.exports=o(l("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:u,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:a(s({editType:"arraydraw"}),{}),font:n({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:i.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")},75909: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:"▼"}}},64897:function(t,e,r){"use strict";var n=r(71828),i=r(85501),a=r(7163),o=r(75909).name,s=a.buttons;function l(t,e,r){function o(r,i){return n.coerce(t,e,a,r,i)}o("visible",i(t,e,{name:"buttons",handleItemDefaults:u}).length>0)&&(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})}},13689:function(t,e,r){"use strict";var n=r(39898),i=r(74875),a=r(7901),o=r(91424),s=r(71828),l=r(63893),u=r(44467).arrayEditor,c=r(18783).LINE_SPACING,f=r(75909),h=r(25849);function p(t){return t._index}function d(t,e){return+t.attr(f.menuIndexAttrName)===e._index}function v(t,e,r,n,i,a,o,s){e.active=o,u(t.layout,f.name,e).applyUpdate("active",o),"buttons"===e.type?y(t,n,null,null,e):"dropdown"===e.type&&(i.attr(f.menuIndexAttrName,"-1"),g(t,n,i,a,e),s||y(t,n,i,a,e))}function g(t,e,r,n,i){var a=s.ensureSingle(e,"g",f.headerClassName,(function(t){t.style("pointer-events","all")})),l=i._dims,u=i.active,c=i.buttons[u]||f.blankHeaderOpts,h={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},p={width:l.headerWidth,height:l.headerHeight};a.call(m,i,c,t).call(M,i,h,p),s.ensureSingle(e,"text",f.headerArrowClassName,(function(t){t.attr("text-anchor","end").call(o.font,i.font).text(f.arrowSymbol[i.direction])})).attr({x:l.headerWidth-f.arrowOffsetX+i.pad.l,y:l.headerHeight/2+f.textOffsetY+i.pad.t}),a.on("click",(function(){r.call(S,String(d(r,i)?-1:i._index)),y(t,e,r,n,i)})),a.on("mouseover",(function(){a.call(w)})),a.on("mouseout",(function(){a.call(T,i)})),o.setTranslate(e,l.lx,l.ly)}function y(t,e,r,a,o){r||(r=e).attr("pointer-events","all");var l=function(t){return-1==+t.attr(f.menuIndexAttrName)}(r)&&"buttons"!==o.type?[]:o.buttons,u="dropdown"===o.type?f.dropdownButtonClassName:f.buttonClassName,c=r.selectAll("g."+u).data(s.filterVisible(l)),h=c.enter().append("g").classed(u,!0),p=c.exit();"dropdown"===o.type?(h.attr("opacity","0").transition().attr("opacity","1"),p.transition().attr("opacity","0").remove()):p.remove();var d=0,g=0,y=o._dims,x=-1!==["up","down"].indexOf(o.direction);"dropdown"===o.type&&(x?g=y.headerHeight+f.gapButtonHeader:d=y.headerWidth+f.gapButtonHeader),"dropdown"===o.type&&"up"===o.direction&&(g=-f.gapButtonHeader+f.gapButton-y.openHeight),"dropdown"===o.type&&"left"===o.direction&&(d=-f.gapButtonHeader+f.gapButton-y.openWidth);var b={x:y.lx+d+o.pad.l,y:y.ly+g+o.pad.t,yPad:f.gapButton,xPad:f.gapButton,index:0},k={l:b.x+o.borderwidth,t:b.y+o.borderwidth};c.each((function(s,l){var u=n.select(this);u.call(m,o,s,t).call(M,o,b),u.on("click",(function(){n.event.defaultPrevented||(s.execute&&(s.args2&&o.active===l?(v(t,o,0,e,r,a,-1),i.executeAPICommand(t,s.method,s.args2)):(v(t,o,0,e,r,a,l),i.executeAPICommand(t,s.method,s.args))),t.emit("plotly_buttonclicked",{menu:o,button:s,active:o.active}))})),u.on("mouseover",(function(){u.call(w)})),u.on("mouseout",(function(){u.call(T,o),c.call(_,o)}))})),c.call(_,o),x?(k.w=Math.max(y.openWidth,y.headerWidth),k.h=b.y-k.t):(k.w=b.x-k.l,k.h=Math.max(y.openHeight,y.headerHeight)),k.direction=o.direction,a&&(c.size()?function(t,e,r,n,i,a){var o,s,l,u=i.direction,c="up"===u||"down"===u,h=i._dims,p=i.active;if(c)for(s=0,l=0;l0?[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;cw,A=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(k?[0]:[]);L.exit().on(".drag",null).remove(),L.enter().append("rect").classed("scrollbar-horizontal",!0).call(i.fill,s.barColor),k?(this.hbar=L.attr({rx:s.barRadius,ry:s.barRadius,x:S,y:E,width:A,height:M}),this._hbarXMin=S+A/2,this._hbarTranslateMax=w-A):(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=k?p+M+.5:p+.5,U=o._topdefs.selectAll("#"+R).data(k||C?[0]:[]);if(U.exit().remove(),U.enter().append("clipPath").attr("id",R).append("rect"),k||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),k||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));k&&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)}}},18783:function(t){"use strict";t.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}},24695:function(t){"use strict";t.exports={axisRefDescription:function(t,e,r){return["If set to a",t,"axis id (e.g. *"+t+"* or","*"+t+"2*), the `"+t+"` position refers to a",t,"coordinate. If set to *paper*, the `"+t+"`","position refers to the distance from the",e,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",e,"("+r+"). If set to a",t,"axis ID followed by","*domain* (separated by a space), the position behaves like for","*paper*, but refers to the distance in fractions of the domain","length from the",e,"of the domain of that axis: e.g.,","*"+t+"2 domain* refers to the domain of the second",t," axis and a",t,"position of 0.5 refers to the","point between the",e,"and the",r,"of the domain of the","second",t,"axis."].join(" ")}}},22372:function(t){"use strict";t.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"▲"},DECREASING:{COLOR:"#FF4136",SYMBOL:"▼"}}},31562: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"}},74808:function(t){"use strict";t.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}},29659: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]}},87381:function(t){"use strict";t.exports={circle:"●","circle-open":"○",square:"■","square-open":"□",diamond:"◆","diamond-open":"◇",cross:"+",x:"❌"}},37822:function(t){"use strict";t.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},50606: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:"−"}},77922: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}},8729:function(t,e,r){"use strict";e.version=r(11506).version,r(7417),r(98847);for(var n=r(73972),i=e.register=n.register,a=r(10641),o=Object.keys(a),s=0;s",""," ",""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}},99863: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}},26348:function(t,e,r){"use strict";var n=r(64872),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)}}},73627:function(t,e){"use strict";var r=Array.isArray,n=ArrayBuffer,i=DataView;function a(t){return n.isView(t)&&!(t instanceof i)}function o(t){return r(t)||a(t)}function s(t,e,r){if(o(t)){if(o(t[0])){for(var n=r,i=0;ii.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=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 k=T[1],A=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===k.length)return c;var C;k=Number(k);try{var P=g.getComponentMethod("calendars","getCal")(r);if(w){var O="i"===A.charAt(A.length-1);A=parseInt(A,10),C=P.newDate(k,P.toMonthIndex(k,A,O),M)}else C=P.newDate(k,Number(A),M)}catch(t){return c}return C?(C.toJD()-v)*f+S*h+E*p+L*d:c}k=2===k.length?(Number(k)+2e3-b)%100+b:Number(k),A-=1;var I=new Date(Date.UTC(2e3,A,M,S,E));return I.setUTCFullYear(k),I.getUTCMonth()!==A||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,k=3*h,A=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&&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;o0&&(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;r1||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}},81697:function(t,e,r){"use strict";var n=r(92770),i=r(84267),a=r(25075),o=r(21081),s=r(22399).defaultLine,l=r(73627).isArrayOrTypedArray,u=a(s);function c(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return u;var e=a(t);return e.length?e:u}function h(t){return n(t)?t:1}t.exports={formatColor:function(t,e,r){var n,i,s,p,d,v=t.color,g=l(v),y=l(e),m=o.extractOpts(t),x=[];if(n=void 0!==m.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=g?function(t,e){return void 0===t[e]?u:a(n(t[e]))}:f,s=y?function(t,e){return void 0===t[e]?1:h(t[e])}:h,g||y)for(var b=0;b1?(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}},71828:function(t,e,r){"use strict";var n=r(39898),i=r(84096).g0,a=r(60721).WU,o=r(92770),s=r(50606),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(65487),f.keyedContainer=r(66636),f.relativeAttr=r(6962),f.isPlainObject=r(41965),f.toLogRange=r(58163),f.relinkPrivateKeys=r(51332);var p=r(73627);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(64872);f.mod=d.mod,f.modHalf=d.modHalf;var v=r(96554);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(41631);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(65888);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(78607);var m=r(80038);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(35657);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(26348);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(99863);f.isLeftAnchor=_.isLeftAnchor,f.isCenterAnchor=_.isCenterAnchor,f.isRightAnchor=_.isRightAnchor,f.isTopAnchor=_.isTopAnchor,f.isMiddleAnchor=_.isMiddleAnchor,f.isBottomAnchor=_.isBottomAnchor;var w=r(87642);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(1426);f.extendFlat=T.extendFlat,f.extendDeep=T.extendDeep,f.extendDeepAll=T.extendDeepAll,f.extendDeepNoArrays=T.extendDeepNoArrays;var k=r(47769);f.log=k.log,f.warn=k.warn,f.error=k.error;var A=r(30587);f.counterRegex=A.counter;var M=r(79990);f.throttle=M.throttle,f.throttleDone=M.done,f.clearThrottle=M.clear;var S=r(24401);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(64213),f.identity=r(23389),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 D=/^\w*$/;f.templateString=function(t,e){var r={};return t.replace(f.TEMPLATE_STRING_REGEX,(function(t,n){var i;return D.test(n)?i=e[n]:(r[n]=r[n]||f.nestedProperty(e,n).get,i=r[n]()),f.isValidTextValue(i)?i:""}))};var z={max:10,count:0,name:"hovertemplate"};f.hovertemplateString=function(){return B.apply(z,arguments)};var R={max:10,count:0,name:"texttemplate"};f.texttemplateString=function(){return B.apply(R,arguments)};var F=/^[:|\|]/;function B(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,c,h,p="_xother"===s||"_yother"===s,d="_xother_"===s||"_yother_"===s,v="xother_"===s||"yother_"===s,g="xother"===s||"yother"===s||p||v||d,y=s;if((p||d)&&(y=y.substring(1)),(v||d)&&(y=y.substring(0,y.length-1)),g){if(void 0===(u=e[y]))return""}else for(h=3;h=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 N=2e9;f.seedPseudoRandom=function(){N=2e9},f.pseudoRandom=function(){var t=N;return N=(69069*N+1)%4294967296,Math.abs(N-t)<429496729?f.pseudoRandom():N/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 j=f.getFirefoxVersion(),U=null!==j&&j<86;f.getPositionFromD3Event=function(){return U?[n.event.layerX,n.event.layerY]:[n.event.offsetX,n.event.offsetY]}},41965:function(t){"use strict";t.exports=function(t){return window&&window.process&&window.process.versions?"[object Object]"===Object.prototype.toString.call(t):"[object Object]"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty("hasOwnProperty")}},66636:function(t,e,r){"use strict";var n=r(65487),i=/^\w*$/;t.exports=function(t,e,r,a){var o,s,l;r=r||"name",a=a||"value";var u={};e&&e.length?(l=n(t,e),s=l.get()):s=t,e=e||"";var c={};if(s)for(o=0;o2)return u[e]=2|u[e],h.set(t,null);if(f){for(o=e;o1){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")}}},77310:function(t,e,r){"use strict";var n=r(39898);t.exports=function(t,e,r){var i=t.selectAll("g."+r.replace(/\s/g,".")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append("g").attr("class",r),i.order();var a=t.classed("rangeplot")?"nodeRangePlot3":"node3";return i.each((function(t){t[0][a]=n.select(this)})),i}},35657:function(t,e,r){"use strict";var n=r(79576);e.init2dArray=function(t,e){for(var r=new Array(t),n=0;ne/2?t-Math.round(t/e)*e:t}}},65487:function(t,e,r){"use strict";var n=r(92770),i=r(73627).isArrayOrTypedArray;function a(t,e){return function(){var r,n,o,s,l,u=t;for(s=0;s/g),l=0;la||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}}},79749:function(t,e,r){"use strict";var n=r(58617),i=r(98580);t.exports=function(t,e,a){var o=t._fullLayout,s=!0;return o._glcanvas.each((function(n){if(n.regl)n.regl.preloadCachedCode(a);else if(!n.pick||o._has("parcoords")){try{n.regl=i({canvas:this,attributes:{antialias:!n.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||r.g.devicePixelRatio,extensions:e||[],cachedCode:a||{}})}catch(t){s=!1}n.regl||(s=!1),s&&this.addEventListener("webglcontextlost",(function(e){t&&t.emit&&t.emit("plotly_webglcontextlost",{event:e,layer:n.key})}),!1)}})),s||n({container:o._glcontainer.node()}),s}},45142:function(t,e,r){"use strict";var n=r(92770),i=r(35791);t.exports=function(t){var e;if("string"!=typeof(e=t&&t.hasOwnProperty("userAgent")?t.userAgent:function(){var t;return"undefined"!=typeof navigator&&(t=navigator.userAgent),t&&t.headers&&"string"==typeof t.headers["user-agent"]&&(t=t.headers["user-agent"]),t}()))return!0;var r=i({ua:{headers:{"user-agent":e}},tablet:!0,featureDetect:!1});if(!r)for(var a=e.split(" "),o=1;o-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}},75138:function(t){"use strict";t.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;ni.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;re}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;ia.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)]}},78614:function(t,e,r){"use strict";var n=r(25075);t.exports=function(t){return t?n(t):[0,0,0,1]}},63893:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=i.strTranslate,o=r(77922),s=r(18783).LINE_SPACING,l=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;e.convertToTspans=function(t,r,g){var S=t.text(),E=!t.attr("data-notex")&&r&&r._context.typesetMath&&"undefined"!=typeof MathJax&&S.match(l),P=n.select(t.node().parentNode);if(!P.empty()){var O=t.attr("class")?t.attr("class").split(" ")[0]:"text";return O+="-math",P.selectAll("svg."+O).remove(),P.selectAll("g."+O+"-group").remove(),t.style("display",null).attr({"data-unformatted":S,"data-math":"N"}),E?(r&&r._promises||[]).push(new Promise((function(e){t.style("display","none");var r=parseInt(t.node().style.fontSize,10),o={fontSize:r};!function(t,e,r){var a,o,s,l,h=parseInt((MathJax.version||"").split(".")[0]);if(2===h||3===h){var p=function(){var r="math-output-"+i.randstr({},64),a=(l=n.select("body").append("div").attr({id:r}).style({visibility:"hidden",position:"absolute","font-size":e.fontSize+"px"}).text(t.replace(u,"\\lt ").replace(c,"\\gt "))).node();return 2===h?MathJax.Hub.Typeset(a):MathJax.typeset([a])},d=function(){var e=l.select(2===h?".MathJax_SVG":".MathJax"),a=!e.empty()&&l.select("svg").node();if(a){var o,s=a.getBoundingClientRect();o=2===h?n.select("body").select("#MathJax_SVG_glyphs"):e.select("defs"),r(e,o,s)}else i.log("There was an error in the tex syntax.",t),r();l.remove()};2===h?MathJax.Hub.Queue((function(){return o=i.extendDeepAll({},MathJax.Hub.config),s=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:f},displayAlign:"left"})}),(function(){if("SVG"!==(a=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer("SVG")}),p,d,(function(){if("SVG"!==a)return MathJax.Hub.setRenderer(a)}),(function(){return void 0!==s&&(MathJax.Hub.processSectionDelay=s),MathJax.Hub.Config(o)})):3===h&&(o=i.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=f,"svg"!==(a=MathJax.config.startup.output)&&(MathJax.config.startup.output="svg"),MathJax.startup.defaultReady(),MathJax.startup.promise.then((function(){p(),d(),"svg"!==a&&(MathJax.config.startup.output=a),MathJax.config=o})))}else i.warn("No MathJax version:",MathJax.version)}(E[2],o,(function(n,i,o){P.selectAll("svg."+O).remove(),P.selectAll("g."+O+"-group").remove();var s=n&&n.select("svg");if(!s||!s.node())return I(),void e();var l=P.append("g").classed(O+"-group",!0).attr({"pointer-events":"none","data-unformatted":S,"data-math":"Y"});l.node().appendChild(s.node()),i&&i.node()&&s.node().insertBefore(i.node().cloneNode(!0),s.node().firstChild);var u=o.width,c=o.height;s.attr({class:O,height:c,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var f=t.node().style.fill||"black",h=s.select("g");h.attr({fill:f,stroke:f});var p=h.node().getBoundingClientRect(),d=p.width,v=p.height;(d>u||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,k=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function A(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="...".length,a=t.split(m),o=[],s="",l=0,u=0;ui?o.push(c.substr(0,d-i)+"..."):o.push(c.substr(0,d));break}s=""}}return o.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;oa.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)}},58163:function(t,e,r){"use strict";var n=r(92770);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}},90973:function(t,e,r){"use strict";var n=t.exports={},i=r(78776).locationmodeToLayer,a=r(96892).zL;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}},37815: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"}}},92177:function(t){"use strict";t.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{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"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}},14458:function(t,e,r){"use strict";var n=r(73972);t.exports=function(t){for(var e,r,i=n.layoutArrayContainers,a=n.layoutArrayRegexes,o=t.split("[")[0],s=0;s0&&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;n1&&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,k,A,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-(A?0:1))a.warn("index out of range",f,_);else if(void 0!==k)T.length>1&&a.warn("Insertion & removal are incompatible with edits to the same index.",f,_),u(k)?P.push(_):A?("add"===k&&(k={}),L.splice(_,0,k),C&&C.splice(_,0,{})):a.warn("Unrecognized full object edit value",f,_,k),-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=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=Y(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$/,Z=/^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/;function Y(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(),Y=I.get();if(void 0!==D){M[O]=D,S[O]="reverse"===B?D:R(Y);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(Z)&&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(k)){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(A,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?A.calc=!0:A.plot=!0):("dragmode"===O&&(!1===D&&!1!==Y||!1!==D&&!1===Y)||l._has("scatter-like")&&l._has("regl")&&"dragmode"===O&&("lasso"===D||"select"===D)&&"lasso"!==Y&&"select"!==Y||l._has("gl2d")?A.plot=!0:X?T.update(A,X):A.calc=!0,I.set(D))}}for(r in y)b.applyContainerArrayChanges(t,h(a,r),y[r],A,h)||(A.plot=!0);for(var ut in C){var ct=(L=p.getFromId(t,ut))&&L._constraintGroup;if(ct)for(var ft in A.calc=!0,ct)C[ft]||(p.getFromId(t,ft)._constraintShrinkable=!0)}return(W(t)||e.height||e.width)&&(A.plot=!0),(A.plot||A.calc)&&(A.layoutReplot=!0),{flags:A,rangesAltered:C,undoit:S,redoit:M,eventData:g}}function W(t){var e=t._fullLayout,r=e.width,n=e.height;return t.layout.autosize&&h.plotAutoSize(t,t.layout,e),e.width!==r||e.height!==n}function X(t,r,n,i){t=o.getGraphDiv(t),_.clearPromiseQueue(t),o.isPlainObject(r)||(r={}),o.isPlainObject(n)||(n={}),Object.keys(r).length&&(t.changed=!0),Object.keys(n).length&&(t.changed=!0);var a=_.coerceTraceIndices(t,i),s=N(t,o.extendFlat({},r),a),l=s.flags,c=Y(t,o.extendFlat({},n)),f=c.flags;(l.calc||f.calc)&&(t.calcdata=void 0),l.clearAxisTypes&&_.clearAxisTypes(t,a,n);var p=[];f.layoutReplot?p.push(w.layoutReplot):l.fullReplot?p.push(e._doPlot):(p.push(h.previousPromises),V(t,f,c)||h.supplyDefaults(t),l.style&&p.push(w.doTraceStyle),(l.colorbars||f.colorbars)&&p.push(w.doColorBars),f.legend&&p.push(w.doLegend),f.layoutstyle&&p.push(w.layoutStyles),f.axrange&&H(p,c.rangesAltered),f.ticks&&p.push(w.doTicksRelayout),f.modebar&&p.push(w.doModeBar),f.camera&&p.push(w.doCamera),p.push(M)),p.push(h.rehover,h.redrag,h.reselect),u.add(t,X,[t,s.undoit,c.undoit,s.traces],X,[t,s.redoit,c.redoit,s.traces]);var d=o.syncOrAsync(p,t);return d&&d.then||(d=Promise.resolve(t)),d.then((function(){return t.emit("plotly_update",{data:s.eventData,layout:c.eventData}),t}))}function J(t){return function(e){e._fullLayout._guiEditing=!0;var r=t.apply(null,arguments);return e._fullLayout._guiEditing=!1,r}}var K=[{pattern:/^hiddenlabels/,attr:"legend.uirevision"},{pattern:/^((x|y)axis\d*)\.((auto)?range|title\.text)/},{pattern:/axis\d*\.showspikes$/,attr:"modebar.uirevision"},{pattern:/(hover|drag)mode$/,attr:"modebar.uirevision"},{pattern:/^(scene\d*)\.camera/},{pattern:/^(geo\d*)\.(projection|center|fitbounds)/},{pattern:/^(ternary\d*\.[abc]axis)\.(min|title\.text)$/},{pattern:/^(polar\d*\.radialaxis)\.((auto)?range|angle|title\.text)/},{pattern:/^(polar\d*\.angularaxis)\.rotation/},{pattern:/^(mapbox\d*)\.(center|zoom|bearing|pitch)/},{pattern:/^legend\.(x|y)$/,attr:"editrevision"},{pattern:/^(shapes|annotations)/,attr:"editrevision"},{pattern:/^title\.text$/,attr:"editrevision"}],$=[{pattern:/^selectedpoints$/,attr:"selectionrevision"},{pattern:/(^|value\.)visible$/,attr:"legend.uirevision"},{pattern:/^dimensions\[\d+\]\.constraintrange/},{pattern:/^node\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\.)name$/},{pattern:/colorbar\.title\.text$/},{pattern:/colorbar\.(x|y)$/,attr:"editrevision"}];function Q(t,e){for(var r=0;r1;)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)&&k.push(d);y=k}}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&&A<5&&(A++,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===A&&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=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=i&&(r._input||{})._templateitemname;o&&(a=i);var s,l=e+"["+a+"]";function u(){s={},o&&(s[l]={},s[l].templateitemname=o)}function c(t,e){o?n.nestedProperty(s[l],t).set(e):s[l+"."+t]=e}function f(){var t=s;return u(),t}return u(),{modifyBase:function(t,e){s[t]=e},modifyItem:c,getUpdateObj:f,applyUpdate:function(e,r){e&&c(e,r);var i=f();for(var a in i)n.nestedProperty(t,a).set(i[a])}}}},61549:function(t,e,r){"use strict";var n=r(39898),i=r(73972),a=r(74875),o=r(71828),s=r(33306),l=r(7901),u=r(91424),c=r(92998),f=r(64168),h=r(89298),p=r(18783),d=r(99082),v=d.enforce,g=d.clean,y=r(71739).doAutoRange,m="start";function x(t,e,r){for(var n=0;n=t[1]||i[1]<=t[0])&&a[0]e[0])return!0}return!1}function b(t){var r,i,s,c,d,v,g=t._fullLayout,y=g._size,m=y.p,b=h.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(u.setSize,g.width,g.height),t._context.setBackground(t,g.paper_bgcolor),e.drawMainTitle(t),f.manage(t),!g._has("cartesian"))return a.previousPromises(t);function w(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;rT?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)}},403:function(t,e,r){"use strict";var n=r(92770),i=r(72391),a=r(74875),o=r(71828),s=r(25095),l=r(5900),u=r(70942),c=r(11506).version,f={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};t.exports=function(t,e){var r,h,p,d;function v(t){return!(t in e)||o.validate(e[t],f[t])}if(e=e||{},o.isPlainObject(t)?(r=t.data||[],h=t.layout||{},p=t.config||{},d={}):(t=o.getGraphDiv(t),r=o.extendDeep([],t.data),h=o.extendDeep({},t.layout),p=t._context,d=t._fullLayout||{}),!v("width")&&null!==e.width||!v("height")&&null!==e.height)throw new Error("Height and width should be pixel values.");if(!v("format"))throw new Error("Export format is not "+o.join2(f.format.values,", "," or ")+".");var g={};function y(t,r){return o.coerce(e,g,f,t,r)}var m=y("format"),x=y("width"),b=y("height"),_=y("scale"),w=y("setBackground"),T=y("imageDataOnly"),k=document.createElement("div");k.style.position="absolute",k.style.left="-5000px",document.body.appendChild(k);var A=o.extendFlat({},h);x?A.width=x:null===e.width&&n(d.width)&&(A.width=d.width),b?A.height=b:null===e.height&&n(d.height)&&(A.height=d.height);var M=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=s.getRedrawFunc(k);function E(){return new Promise((function(t){setTimeout(t,s.getDelay(k._fullLayout))}))}function L(){return new Promise((function(t,e){var r=l(k,m,_),n=k._fullLayout.width,f=k._fullLayout.height;function h(){i.purge(k),document.body.removeChild(k)}if("full-json"===m){var p=a.graphJson(k,!1,"keepdata","object",!0,!0);return p.version=c,p=JSON.stringify(p),h(),t(T?p:s.encodeJSON(p))}if(h(),"svg"===m)return t(T?r:s.encodeSVG(r));var d=document.createElement("canvas");d.id=o.randstr(),u({format:m,width:n,height:f,scale:_,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){i.newPlot(k,r,A,M).then(S).then(E).then(L).then((function(e){t(function(t){return T?t.replace(s.IMAGE_URL_PREFIX,""):t}(e))})).catch((function(t){e(t)}))}))}},84936:function(t,e,r){"use strict";var n=r(71828),i=r(74875),a=r(86281),o=r(72075).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(d("unused",a,y.concat(x.length)));var A,M,S,E,L,C=x.length,P=Array.isArray(k);if(P&&(C=Math.min(C,k.length)),2===b.dimensions)for(M=0;Mx[M].length&&i.push(d("unused",a,y.concat(M,x[M].length)));var O=x[M].length;for(A=0;A<(P?Math.min(O,k[M].length):O);A++)S=P?k[M][A]:k,E=m[M][A],L=x[M][A],n.validate(E,S)?L!==E&&L!==+E&&i.push(d("dynamic",a,y.concat(M,A),E,L)):i.push(d("value",a,y.concat(M,A),E))}else i.push(d("array",a,y.concat(M),m[M]));else for(M=0;M1&&p.push(d("object","layout"))),i.supplyDefaults(v);for(var g=v._fullData,y=r.length,m=0;m0&&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;_A;)k=o(k,-u,h);for(;k<=A;)k=o(k,u,h);T=o(k,-u,h)}else{for(k=g+(w=Math.round((A-g)/c))*c;k>A;)k-=c;for(;k<=A;)k+=c;T=k-c}y[_]=p?T:d?k:(T+k)/2,m[_]=T,x[_]=k}return{vals:y,starts:m,ends:x}}},89502:function(t){"use strict";t.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}},71739:function(t,e,r){"use strict";var n=r(39898),i=r(92770),a=r(71828),o=r(50606).FP_SAFE,s=r(73972),l=r(91424),u=r(41675),c=u.getFromId,f=u.isLinked;function h(t,e){var r,n,i=[],o=t._fullLayout,s=d(o,e,0),l=d(o,e,1),u=v(t,e),c=u.min,f=u.max;if(0===c.length||0===f.length)return a.simpleMap(e.range,e.r2l);var h=c[0].val,g=f[0].val;for(r=1;r0&&((T=E-s(x)-l(b))>L?k/T>C&&(_=x,w=b,C=k/T):k/E>C&&(_={val:x.val,nopad:1},w={val:b.val,nopad:1},C=k/E));if(h===g){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;a=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 x(t){return i(t)&&Math.abs(t)=e}t.exports={getAutoRange:h,makePadFn:d,doAutoRange:function(t,e,r){if(e.setScale(),e.autorange){e.range=r?r.slice():h(t,e),e._r=e.range.slice(),e._rl=a.simpleMap(e._r,e.r2l);var n=e._input,i={};i[e._attr+".range"]=e.range,i[e._attr+".autorange"]=e.autorange,s.call("_storeDirectGUIEdit",t.layout,t._fullLayout._preGUI,i),n.range=e.range.slice(),n.autorange=e.autorange}var o=e._anchorAxis;if(o&&o.rangeslider){var l=o.rangeslider[e._name];l&&"auto"===l.rangemode&&(l.range=h(t,e)),o._input.rangeslider[e._name]=a.extendFlat({},l)}},findExtremes:function(t,e,r){r||(r={}),t._m||t.setScale();var n,a,s,l,u,c,f,h,p,d=[],v=[],m=e.length,b=r.padded||!1,_=r.tozero&&("linear"===t.type||"-"===t.type),w="log"===t.type,T=!1,k=r.vpadLinearized||!1;function A(t){if(Array.isArray(t))return T=!0,function(e){return Math.max(Number(t[e]||0),0)};var e=Math.max(Number(t||0),0);return function(){return e}}var M=A((t._m>0?r.ppadplus:r.ppadminus)||r.ppad||0),S=A((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=A(r.vpadplus||r.vpad),L=A(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:v}},89298:function(t,e,r){"use strict";var n=r(39898),i=r(92770),a=r(74875),o=r(73972),s=r(71828),l=s.strTranslate,u=r(63893),c=r(92998),f=r(7901),h=r(91424),p=r(13838),d=r(66287),v=r(50606),g=v.ONEMAXYEAR,y=v.ONEAVGYEAR,m=v.ONEMINYEAR,x=v.ONEMAXQUARTER,b=v.ONEAVGQUARTER,_=v.ONEMINQUARTER,w=v.ONEMAXMONTH,T=v.ONEAVGMONTH,k=v.ONEMINMONTH,A=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(18783),j=N.MID_SHIFT,U=N.CAP_SHIFT,V=N.LINE_SPACING,H=N.OPPOSITE_SIDE,q=t.exports={};q.setConvert=r(21994);var G=r(4322),Z=r(41675),Y=Z.idSort,W=Z.isLinked;q.id2name=Z.id2name,q.name2id=Z.name2id,q.cleanId=Z.cleanId,q.list=Z.list,q.listIds=Z.listIds,q.getFromId=Z.getFromId,q.getFromTrace=Z.getFromTrace;var X=r(71739);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*A&&h===2*M&&(t.dtick=A):f===2*A&&h===3*M?t.dtick=A:f!==A||(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:Y<=N;Y=q.tickIncrement(Y,W,f,o)){if(D&&H++,R.rangebreaks&&!f){if(Y=p)break}if(C.length>d||Y===Z)break;Z=Y;var X={value:Y};D?(U&&Y!==(0|Y)&&(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>=k?h=c>=k&&c<=w?c:T:r===A&&f>=A?h=A: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>A&&(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)),"boundaries"===t.tickson||t.showdividers){var g=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[g(o.x-.5),g(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=0,a=c(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case"date":case"linear":for(e=0;e=o(i)))){r=n;break}break;case"log":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,k=e._vals=q.calcTicks(e),A=[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+=kt(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]+=kt(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,k=t.side,A=t._id.charAt(0),M=t.tickangle;if("x"===A)b=(_=!f&&"bottom"===k||f&&"top"===k)?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"===k?U:90===M&&"top"===k?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"===A){if(b=(_=!f&&"left"===k||f&&"right"===k)?1:-1,f&&(b*=-1),y=p,m=d*b,x=0,f||90!==Math.abs(M)||(x=-90===M&&"left"===k||90===M&&"right"===k?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 Y(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;n2*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;n=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]n?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)}},15258: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;nn?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?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 Z(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;cb[1]-1/4096&&(e.domain=s),i.noneOrAll(t.domain,e.domain,s),"sync"===e.tickmode&&(e.tickmode="auto")}return r("layer"),e}},89426:function(t,e,r){"use strict";var n=r(59652);t.exports=function(t,e,r,i,a){a||(a={});var o=a.tickSuffixDflt,s=n(t);r("tickprefix")&&r("showtickprefix",s),r("ticksuffix",o)&&r("showticksuffix",s)}},42449:function(t,e,r){"use strict";var n=r(18783).FROM_BL;t.exports=function(t,e,r){void 0===r&&(r=n[t.constraintoward||"center"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*r;t.range=t._input.range=[t.l2r(a+(i[0]-a)*e),t.l2r(a+(i[1]-a)*e)],t.setScale()}},21994:function(t,e,r){"use strict";var n=r(39898),i=r(84096).g0,a=r(71828),o=a.numberFormat,s=r(92770),l=a.cleanNumber,u=a.ms2DateTime,c=a.dateTime2ms,f=a.ensureNumber,h=a.isArrayOrTypedArray,p=r(50606),d=p.FP_SAFE,v=p.BADNUM,g=p.LOG_CLIP,y=p.ONEWEEK,m=p.ONEDAY,x=p.ONEHOUR,b=p.ONEMIN,_=p.ONESEC,w=r(41675),T=r(85555),k=T.HOUR_PATTERN,A=T.WEEKDAY_PATTERN;function M(t){return Math.pow(10,t)}function S(t){return null!=t}t.exports=function(t,e){e=e||{};var r=t._id||"x",p=r.charAt(0);function E(e,r){if(e>0)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;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,k=f?p[0]:0,A=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,k,A).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)}},951:function(t,e,r){"use strict";var n=r(73972).traceIs,i=r(4322);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;r0?".":"")+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;f0&&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 k=(d.range[0]+d.range[1])/2,A=(v.range[0]+v.range[1])/2;if(n._isScoped)x={lon:k,lat:A};else if(n._isClipped){x={lon:k,lat:A},b={lon:k,lat:A,roll:b.roll};var M=f.type,S=w.lonaxisSpan[M]/2||180,L=w.lataxisSpan[M]/2||90;_=[k-S,k+S],T=[A-L,A+L]}else x={lon:k,lat:A},b={lon:k,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(A(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)}},44622:function(t,e,r){"use strict";var n=r(27659).AU,i=r(71828).counterRegex,a=r(69082),o="geo",s=i(o),l={};l.geo={valType:"subplotid",dflt:o,editType:"calc"},t.exports={attr:o,name:o,idRoot:o,idRegex:s,attrRegex:s,attributes:l,layoutAttributes:r(77519),supplyLayoutDefaults:r(82161),plot:function(t){for(var e=t._fullLayout,r=t.calcdata,i=e._subplots.geo,s=0;s0&&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"})}},74455:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=r(73972),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),o=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,g=(Math.atan2(h,c)-Math.atan2(u,i))*s,y=(Math.atan2(h,c)-Math.atan2(u,-i))*s;return b(r[0],r[1],a,g)<=b(r[0],r[1],v,y)?[a,g,r[2]]:[v,y,r[2]]}function b(t,e,r,n){var i=_(r-t),a=_(n-e);return Math.sqrt(i*i+a*a)}function _(t){return(t%360+540)%360-180}function w(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 T(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*s,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*s,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*s]}function k(t,e){for(var r=0,n=0,i=t.length;nMath.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).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})}},65500:function(t,e,r){"use strict";var n=r(77894),i=r(27670).Y,a=r(1426).extendFlat,o=r(71828).counterRegex;function s(t,e,r){return{x:{valType:"number",dflt:t,editType:"camera"},y:{valType:"number",dflt:e,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}t.exports={_arrayAttrRegexps:[o("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:a(s(0,0,1),{}),center:a(s(0,0,0),{}),eye:a(s(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:i({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:n,yaxis:n,zaxis:n,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot",_deprecated:{cameraposition:{valType:"info_array",editType:"camera"}}}},13133:function(t,e,r){"use strict";var n=r(78614),i=["xaxis","yaxis","zaxis"];function a(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}a.prototype.merge=function(t){for(var e=0;e<3;++e){var r=t[i[e]];r.visible?(this.enabled[e]=r.showspikes,this.colors[e]=n(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness):(this.enabled[e]=!1,this.drawSides[e]=!1)}},t.exports=function(t){var e=new a;return e.merge(t),e}},96085: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;ar.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},w.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?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(h.traceCoordinate[3]),t.valuehoverformat),S.push("value: "+T.valueLabel),h.textLabel&&S.push(h.textLabel),x=S.join("
            ")):x=h.textLabel;var E={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};d.appendArrayPointValue(E,_,w),t._module.eventData&&(E=_._module.eventData(E,h,_,{},w));var L={points:[E]};if(e.fullSceneLayout.hovermode){var C=[];d.loneHover({trace:_,x:(.5+.5*m[0]/m[3])*s,y:(.5-.5*m[1]/m[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:x,name:c.name,color:d.castHoverOption(_,w,"bgcolor")||c.color,borderColor:d.castHoverOption(_,w,"bordercolor"),fontFamily:d.castHoverOption(_,w,"font.family"),fontSize:d.castHoverOption(_,w,"font.size"),fontColor:d.castHoverOption(_,w,"font.color"),nameLength:d.castHoverOption(_,w,"namelength"),textAlign:d.castHoverOption(_,w,"align"),hovertemplate:f.castOption(_,w,"hovertemplate"),hovertemplateLabels:f.extendFlat({},E,T),eventData:[E]},{container:n,gd:r,inOut_bbox:C}),E.bbox=C[0]}h.buttons&&h.distance<5?r.emit("plotly_click",L):r.emit("plotly_hover",L),this.oldEventData=L}else d.loneUnhover(n),this.oldEventData&&r.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},w.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 A(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()}},w.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)},w.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"}}},w.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())},w.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},w.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},w.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},w.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},w.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},w.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=f.noop}},w.make4thDimension=function(){var t=this,e=t.graphDiv._fullLayout;t._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},p.setConvert(t._mockAxis,e)},t.exports=_},90060:function(t){"use strict";t.exports=function(t,e,r,n){n=n||t.length;for(var i=new Array(n),a=0;aOpenStreetMap
            contributors',a=['© Carto',i].join(" "),o=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),s={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:i,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}]},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}]},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:a,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}]},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:a,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}]},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:o,tiles:["https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}]},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:o,tiles:["https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}]},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),tiles:["https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}]}},l=n(s);t.exports={requiredVersion:"1.10.1",styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install mapbox-gl@1.10.1."].join("\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:",l.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\')'}}},13056:function(t,e,r){"use strict";var n=r(71828);t.exports=function(t,e){var r=t.split(" "),i=r[0],a=r[1],o=n.isArrayOrTypedArray(e)?n.mean(e):e,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s}return{anchor:u[0]&&u[1]?u.join("-"):u[0]?u[0]:u[1]?u[1]:"center",offset:c}}},50101:function(t,e,r){"use strict";var n=r(44517),i=r(71828),a=i.strTranslate,o=i.strScale,s=r(27659).AU,l=r(77922),u=r(39898),c=r(91424),f=r(63893),h=r(10481),p="mapbox",d=e.constants=r(77734);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(23585),e.supplyLayoutDefaults=r(77882),e.plot=function(t){var e=t._fullLayout,r=t.calcdata,a=e._subplots.mapbox;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;l_/2){var w=y.split("|").join("
            ");x.text(w).attr("data-unformatted",w).call(f.convertToTspans,t),b=c.bBox(x.node())}x.attr("transform",a(-3,8-b.height)),m.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var T=1;b.width+6>_&&(T=_/(b.width+6));var k=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];m.attr("transform",a(k[0],k[1])+o(T))}},e.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots.mapbox,n=0;n0){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;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=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 k=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],A=["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=c.extendFlat({},i),u=a.l,f=a.r,h=a.t,d=a.b,v=e._pushmargin,g=e._pushmarginIds,y=e.minreducedwidth,m=e.minreducedheight;if(!1!==e.margin.autoexpand){for(var x in v)g[x]||delete v[x];for(var b in v.base={l:{val:0,size:u},r:{val:1,size:f},t:{val:1,size:h},b:{val:0,size:d}},v){var w=v[b].l||{},T=v[b].b||{},k=w.val,A=w.size,M=T.val,S=T.size;for(var E in v){if(o(A)&&v[E].r){var L=v[E].r.val,C=v[E].r.size;if(L>k){var O=(A*L+(C-r)*k)/(L-k),I=(C*(1-k)+(A-r)*(1-L))/(L-k);O+I>u+f&&(u=O,f=I)}}if(o(S)&&v[E].t){var D=v[E].t.val,z=v[E].t.size;if(D>M){var R=(S*D+(z-n)*M)/(D-M),F=(z*(1-M)+(S-n)*(1-D))/(D-M);R+F>d+h&&(d=R,h=F)}}}}}var B=c.constrain(r-a.l-a.r,2,y),N=c.constrain(n-a.t-a.b,2,m),j=Math.max(0,r-B),U=Math.max(0,n-N);if(j){var V=(u+f)/j;V>1&&(u/=V,f/=V)}if(U){var H=(d+h)/U;H>1&&(d/=H,h/=H)}if(i.l=Math.round(u),i.r=Math.round(f),i.t=Math.round(h),i.b=Math.round(d),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(l,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 q=3*(1+Object.keys(g).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;i1e-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;t=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,k=Math.abs(w/_);T>k?(v=h,x=(p-(g=h*k))/i.h/2,y=[s[0],s[1]],m=[f[0]+x,f[1]-x]):(g=p,x=(h-(v=p/k))/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 A,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?(A=D,D="top"):"clockwise"===D&&(A=D,D="bottom"),r.radialAxis=r.mockAxis(t,e,a,{_id:"x",side:D,_trueSide:A,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),k=m?T:h.clipEnds(g,T),A=h.getTickSigns(g)[2];m&&(("top"===g.ticks&&"bottom"===g.side||"bottom"===g.ticks&&"top"===g.side)&&(A=-A),"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,A),transFn:x,crisp:!1}),h.drawGrid(n,g,{vals:k,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}},k=j(d);r.angularTickLayout!==k&&(i["angular-axis"].selectAll("."+v._id+"tick").remove(),r.angularTickLayout=k);var A,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?(A=S.map(y),o.angleDelta(A[0],A[1])<0&&(A=A.slice().reverse())):A=null,r.vangles=A,"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,k=s.cy,A=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,k)),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,Z,Y={element:F,gd:c,subplot:s.id,plotinfo:{id:s.id,xaxis:s.xaxis,yaxis:s.yaxis},xaxes:[s.xaxis],yaxes:[s.yaxis]};function W(t,e){return Math.sqrt(t*t+e*e)}function X(t,e){return W(t-A,e-M)}function J(t,e){return Math.atan2(M-e,t-A)}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,Y),r.indexOf("event")>-1&&m.click(c,e,s.id)}Y.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+=A+y[0],N+=M+y[1]}switch(l){case"zoom":Y.clickFn=st,u||(Y.moveFn=C?it:rt,Y.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,k,V)).attr("fill-rule","evenodd"),Z=g.makeCorners(h,T,k),w(c)}());break;case"select":case"lasso":b(t,n,a,Y,l)}},y.init(Y)},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:zn?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;o0?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){for(var n=[],i=0;i=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})}},64380:function(t,e,r){"use strict";var n=r(39898),i=r(84267),a=r(73972),o=r(71828),s=o.strTranslate,l=o._,u=r(7901),c=r(91424),f=r(21994),h=r(1426).extendFlat,p=r(74875),d=r(89298),v=r(28569),g=r(30211),y=r(64505),m=y.freeMode,x=y.rectMode,b=r(92998),_=r(47322).prepSelect,w=r(47322).selectOnClick,T=r(47322).clearOutline,k=r(47322).clearSelectionsCache,A=r(85555);function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}t.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=this,n=e[r.id],i=e._size;r._hasClipOnAxisFalse=!1;for(var a=0;aE*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*k-_,_-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-k],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 A=p.yaxis.domain[0],M=p.aaxis=h({},t.aaxis,{range:[w,_-T-k],side:"left",tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+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-k,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,k],side:"right",tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+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=A.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(){k(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,n,f,h,p,d,y,b,T,k,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),k.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),k=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)}},73972:function(t,e,r){"use strict";var n=r(47769),i=r(64213),a=r(75138),o=r(41965),s=r(24401).addStyleRule,l=r(1426),u=r(9012),c=r(10820),f=l.extendFlat,h=l.extendDeepAll;function p(t){var r=t.name,i=t.categories,a=t.meta;if(e.modules[r])n.log("Type "+r+" already registered");else{e.subplotsRegistry[t.basePlotModule.name]||function(t){var r=t.name;if(e.subplotsRegistry[r])n.log("Plot type "+r+" already registered.");else for(var i in y(t),e.subplotsRegistry[r]=t,e.componentsRegistry)b(i,t.name)}(t.basePlotModule);for(var o={},l=0;l-1&&(f[p[r]].title={text:""});for(r=0;r")?"":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}},75341:function(t,e,r){"use strict";var n=r(71828);t.exports=function(t,e){for(var r=0;rf+u||!n(c))}for(var p=0;pa))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?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){k||(L=function(t){return Math.min(A(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(A(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}},60822:function(t,e,r){"use strict";t.exports={attributes:r(1486),layoutAttributes:r(43641),supplyDefaults:r(90769).supplyDefaults,crossTraceDefaults:r(90769).crossTraceDefaults,supplyLayoutDefaults:r(13957),calc:r(92290),crossTraceCalc:r(11661).crossTraceCalc,colorbar:r(4898),arraysToCalcdata:r(75341),plot:r(17295).plot,style:r(16688).style,styleOnSelect:r(16688).styleOnSelect,hoverPoints:r(95423).hoverPoints,eventData:r(58065),selectPoints:r(81974),moduleType:"trace",name:"bar",basePlotModule:r(93612),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}},43641:function(t){"use strict";t.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},13957:function(t,e,r){"use strict";var n=r(73972),i=r(89298),a=r(71828),o=r(43641);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;p0}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?q:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?q(t):t>e?Math.ceil(t):Math.floor(t)};B=G(B,N,z),N=G(N,B,z),j=G(j,U,!z),U=G(U,j,!z)}var Z=A(a.ensureSingle(O,"path"),P,g,y);if(Z.style("vector-effect","non-scaling-stroke").attr("d",isNaN((N-B)*(U-j))||V&&t._context.staticPlot?"M0,0Z":"M"+B+","+j+"V"+U+"H"+N+"V"+j+"Z").call(l.setClipUrl,e.layerClipId,t),!P.uniformtext.mode&&R){var Y=l.makePointStyleFns(f);l.singlePointStyle(u,Z,f,Y,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 k=a.castOption(o,x.i,"customdata");return k&&(_.customdata=k),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&&Z>0&&(G<=W&&Z<=X||G<=X&&Z<=W||(I?W>=G*(X/Z):X>=Z*(W/G)))?w="inside":(w="outside",H.remove(),H=null)):w="inside"),!H){var J=(H=P(r,D,Y=a.ensureUniformFontSize(t,"outside"===w?U:j))).attr("transform");if(H.attr("transform",""),G=(q=l.bBox(H.node())).width,Z=q.height,H.attr("transform",J),G<=0||Z<=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,A=0,M=s?k(e,t):k(r,n);return s?(b=e-M*o,T=M*y):(w=n+M*o,A=-M*y),{textX:m,textY:x,targetX:b,targetY:w,anchorX:T,anchorY:A,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=Y.size,h("histogram"===O.type?"bar":O.type,K,C),R.transform=K;var Q=A(H,C,g,y);a.setTransormAndDisplay(Q,K)}else r.select("text").remove()}(t,e,O,r,p,B,N,j,U,g,y),e.layerClipId&&l.hideOutsideRangePoint(u,O.select("text"),w,C,f.xcalendar,f.ycalendar)}));var j=!1===f.cliponaxis;l.setClipUrl(u,j?null:e.layerClipId,t)}));u.getComponentMethod("errorbars","plot")(t,O,e,g)},toMoveInsideBar:L}},81974: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;n1||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}},98340:function(t,e,r){"use strict";var n=r(7901),i=r(52075).hasColorscale,a=r(1586),o=r(71828).coercePattern;t.exports=function(t,e,r,s,l){var u=r("marker.color",s),c=i(t,"marker");c&&a(t,e,l,r,{prefix:"marker.",cLetter:"c"}),r("marker.line.color",n.defaultLine),i(t,"marker.line")&&a(t,e,l,r,{prefix:"marker.line.",cLetter:"c"}),r("marker.line.width"),r("marker.opacity"),o(r,"marker.pattern",u,c),r("selected.marker.color"),r("unselected.marker.color")}},72597:function(t,e,r){"use strict";var n=r(39898),i=r(71828);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=oh.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]}}},23381:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"barpolar",basePlotModule:r(23580),categories:["polar","bar","showLegend"],attributes:r(55023),layoutAttributes:r(40151),supplyDefaults:r(6135),supplyLayoutDefaults:r(19860),calc:r(74692).calc,crossTraceCalc:r(74692).crossTraceCalc,plot:r(60173),colorbar:r(4898),formatLabels:r(98608),style:r(16688).style,styleOnSelect:r(16688).styleOnSelect,hoverPoints:r(27379),selectPoints:r(81974),meta:{}}},40151: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"}}},19860:function(t,e,r){"use strict";var n=r(71828),i=r(40151);t.exports=function(t,e,r){var a,o={};function s(r,o){return n.coerce(t[a]||{},e[a],i,r,o)}for(var l=0;l0?(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),p=e.layers.frontplot.select("g.barlayer");a.makeTraceGroups(p,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","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=c.c2p(t.s0),s=t.rp1=c.c2p(t.s1),p=t.thetag0=f.c2g(t.p0),d=t.thetag1=f.c2g(t.p1);if(i(o)&&i(s)&&i(p)&&i(d)&&o!==s&&p!==d){var v=c.c2g(t.s1),g=(p+d)/2;t.ct=[l.c2p(v*Math.cos(g)),u.c2p(v*Math.sin(g))],e=h(o,s,p,d)}else e="M0,0Z";a.ensureSingle(r,"path").attr("d",e)})),o.setClipUrl(r,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}},53522:function(t,e,r){"use strict";var n=r(82196),i=r(1486),a=r(22399),o=r(12663).axisHoverFormat,s=r(5386).f,l=r(1426).extendFlat,u=n.marker,c=u.line;t.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:n.xperiod,yperiod:n.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:n.xperiodalignment,yperiodalignment:n.yperiodalignment,xhoverformat:o("x"),yhoverformat:o("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:l({},u.symbol,{arrayOk:!1,editType:"plot"}),opacity:l({},u.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:l({},u.angle,{arrayOk:!1,editType:"calc"}),size:l({},u.size,{arrayOk:!1,editType:"calc"}),color:l({},u.color,{arrayOk:!1,editType:"style"}),line:{color:l({},c.color,{arrayOk:!1,dflt:a.defaultLine,editType:"style"}),width:l({},c.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:n.fillcolor,whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},offsetgroup:i.offsetgroup,alignmentgroup:i.alignmentgroup,selected:{marker:n.selected.marker,editType:"style"},unselected:{marker:n.unselected.marker,editType:"style"},text:l({},n.text,{}),hovertext:l({},n.hovertext,{}),hovertemplate:s({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"}}},48518:function(t,e,r){"use strict";var n=r(92770),i=r(89298),a=r(42973),o=r(71828),s=r(50606).BADNUM,l=o._;t.exports=function(t,e){var r,u,m,x,b,_,w,T=t._fullLayout,k=i.getFromId(t,e.xaxis||"x"),A=i.getFromId(t,e.yaxis||"y"),M=[],S="violin"===e.type?"_numViolins":"_numBoxes";"h"===e.orientation?(m=k,x="x",b=A,_="y",w=!!e.yperiodalignment):(m=A,x="y",b=k,_="x",w=!!e.xperiodalignment);var E,L,C,P,O,I,D=function(t,e,r,i){var s,l=e+"0"in t;if(e in t||l&&"d"+e in t){var u=r.makeCalcdata(t,e);return[a(t,r,e,u).vals,u]}s=l?t[e+"0"]:"name"in t&&("category"===r.type||n(t.name)&&-1!==["linear","log"].indexOf(r.type)||o.isDateTime(t.name)&&"date"===r.type)?t.name:i;for(var c="multicategory"===r.type?r.r2c_just_indices(s):r.d2c(s,0,t[e+"calendar"]),f=t._length,h=new Array(f),p=0;pE.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 Z=V("lowerfence");E.lf=Z!==s&&Z<=E.q1?Z:p(E,C,P);var Y=V("upperfence");E.uf=Y!==s&&Y>=E.q3?Y:d(E,C,P);var W=V("mean");E.mean=W!==s?W:P?o.mean(C,P):(E.q1+E.q3)/2;var X=V("sd");E.sd=W!==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)}},37188:function(t,e,r){"use strict";var n=r(89298),i=r(71828),a=r(99082).getAxisGroup,o=["v","h"];function s(t,e,r,o){var s,l,u,c=e.calcdata,f=e._fullLayout,h=o._id,p=h.charAt(0),d=[],v=0;for(s=0;s1,b=1-f[t+"gap"],_=1-f[t+"groupgap"];for(s=0;s0){var q=E.pointpos,G=E.jitter,Z=E.marker.size/2,Y=0;q+G>=0&&((Y=V*(q+G))>M?(H=!0,j=Z,B=Y):Y>R&&(j=Z,B=M)),Y<=M&&(B=M);var W=0;q-G<=0&&((W=-V*(q-G))>S?(H=!0,U=Z,N=W):W>F&&(U=Z,N=S)),W<=S&&(N=S)}else B=M,N=S;var X=new Array(u.length);for(l=0;l0?(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;ot.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=e.xaxis,c=e.yaxis;i.makeTraceGroups(a,r,"trace boxes").each((function(t){var e,r,i=n.select(this),a=t[0],f=a.t,h=a.trace;f.wdPos=f.bdPos*h.whiskerwidth,!0!==h.visible||f.empty?i.remove():("h"===h.orientation?(e=c,r=u):(e=u,r=c),o(i,{pos:e,val:r},h,f),s(i,{x:u,y:c},h,f),l(i,{pos:e,val:r},h,f))}))},plotBoxAndWhiskers:o,plotPoints:s,plotBoxMean:l}},24626:function(t){"use strict";t.exports=function(t,e){var r,n,i=t.cd,a=t.xaxis,o=t.yaxis,s=[];if(!1===e)for(r=0;r=10)return null;for(var r=1/0,a=-1/0,o=t.length,s=0;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;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}},20347:function(t,e,r){"use strict";var n=r(89298),i=r(1426).extendFlat;t.exports=function(t,e,r){var a,o,s,l,u,c,f,h,p,d,v,g,y,m,x=t["_"+e],b=t[e+"axis"],_=b._gridlines=[],w=b._minorgridlines=[],T=b._boundarylines=[],k=t["_"+r],A=t[r+"axis"];"array"===b.tickmode&&(b.tickvals=x.slice());var M=t._xctrl,S=t._yctrl,E=M[0].length,L=M.length,C=t._a.length,P=t._b.length;n.prepTicks(b),"array"===b.tickmode&&delete b.tickvals;var O=b.smoothing?3:1;function I(n){var i,a,o,s,l,u,c,f,p,d,v,g,y=[],m=[],x={};if("b"===e)for(a=t.b2j(n),o=Math.floor(Math.max(0,Math.min(P-2,a))),s=a-o,x.length=P,x.crossLength=C,x.xy=function(e){return t.evalxy([],e,a)},x.dxy=function(e,r){return t.dxydi([],e,o,r,s)},i=0;i0&&(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=A,x.value=n,x.constvar=r,x.index=h,x.x=y,x.y=m,x.smoothing=A.smoothing,x}function D(n){var i,a,o,s,l,u=[],c=[],f={};if(f.length=x.length,f.crossLength=k.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}))}}},83311:function(t,e,r){"use strict";var n=r(89298),i=r(1426).extendFlat;t.exports=function(t,e){var r,a,o,s=e._labels=[],l=e._gridlines;for(r=0;re.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(p-=180,l=-l),{angle:p,flip:l,p:t.c2p(n,e,r),offsetMultplier:u}}},89740:function(t,e,r){"use strict";var n=r(39898),i=r(91424),a=r(27669),o=r(67961),s=r(11651),l=r(63893),u=r(71828),c=u.strRotate,f=u.strTranslate,h=r(18783);function p(t,e,r,s,l,u){var c="const-"+l+"-lines",f=r.selectAll("."+c).data(u);f.enter().append("path").classed(c,!0).style("vector-effect","non-scaling-stroke"),f.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")})),f.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=e.xaxis,c=e.yaxis,f=t._fullLayout._clips;u.makeTraceGroups(i,r,"trace").each((function(e){var r=n.select(this),i=e[0],h=i.trace,v=h.aaxis,g=h.baxis,m=u.ensureSingle(r,"g","minorlayer"),x=u.ensureSingle(r,"g","majorlayer"),b=u.ensureSingle(r,"g","boundarylayer"),_=u.ensureSingle(r,"g","labellayer");r.style("opacity",h.opacity),p(l,c,x,0,"a",v._gridlines),p(l,c,x,0,"b",g._gridlines),p(l,c,m,0,"a",v._minorgridlines),p(l,c,m,0,"b",g._minorgridlines),p(l,c,b,0,"a-boundary",v._boundarylines),p(l,c,b,0,"b-boundary",g._boundarylines);var w=d(t,l,c,h,0,_,v._labels,"a-label"),T=d(t,l,c,h,0,_,g._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,_,h,0,l,c,w,T),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()}},11435:function(t,e,r){"use strict";var n=r(35509),i=r(65888).findBin,a=r(45664),o=r(20349),s=r(54495),l=r(73057);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}}},72505:function(t,e,r){"use strict";var n=r(71828);t.exports=function(t,e,r){var i,a,o,s=[],l=[],u=t[0].length,c=t.length;function f(e,r){var n,i=0,a=0;return e>0&&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",k,"after",A,"iterations"),t}},19237:function(t,e,r){"use strict";var n=r(71828).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}},69568:function(t,e,r){"use strict";var n=r(5386).f,i=r(19316),a=r(50693),o=r(9012),s=r(22399).defaultLine,l=r(1426).extendFlat,u=i.marker.line;t.exports=l({locations:{valType:"data_array",editType:"calc"},locationmode:i.locationmode,z:{valType:"data_array",editType:"calc"},geojson:l({},i.geojson,{}),featureidkey:i.featureidkey,text:l({},i.text,{}),hovertext:l({},i.hovertext,{}),marker:{line:{color:l({},u.color,{dflt:s}),width:l({},u.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:i.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:i.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:l({},o.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:n(),showlegend:l({},o.showlegend,{dflt:!1})},a("",{cLetter:"z",editTypeOverride:"calc"}))},38675:function(t,e,r){"use strict";var n=r(92770),i=r(50606).BADNUM,a=r(78803),o=r(75225),s=r(66279);function l(t){return t&&"string"==typeof t}t.exports=function(t,e){var r,u=e._length,c=new Array(u);r=e.geojson?function(t){return l(t)||n(t)}:l;for(var f=0;f")}}(t,f,o),[t]}},51319:function(t,e,r){"use strict";t.exports={attributes:r(69568),supplyDefaults:r(61869),colorbar:r(61243),calc:r(38675),calcGeoJSON:r(99841).calcGeoJSON,plot:r(99841).plot,style:r(99636).style,styleOnSelect:r(99636).styleOnSelect,hoverPoints:r(42300),eventData:r(92069),selectPoints:r(81253),moduleType:"trace",name:"choropleth",basePlotModule:r(44622),categories:["geo","noOpacity","showLegend"],meta:{}}},99841:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=r(41327),o=r(90973).getTopojsonFeatures,s=r(71739).findExtremes,l=r(99636).style;t.exports={calcGeoJSON:function(t,e){for(var r=t[0].trace,n=e[r.geo],i=n._subplot,l=r.locationmode,u=r._length,c="geojson-id"===l?a.extractTraceFeature(t):o(r,i.topojson),f=[],h=[],p=0;p=0;n--){var i=r[n].id;if("string"==typeof i&&0===i.indexOf("water"))for(var a=n+1;a=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}},12674:function(t,e,r){"use strict";var n=r(50693),i=r(12663).axisHoverFormat,a=r(5386).f,o=r(2418),s=r(9012),l=r(1426).extendFlat,u={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:a({editType:"calc"},{keys:["norm"]}),uhoverformat:i("u",1),vhoverformat:i("v",1),whoverformat:i("w",1),xhoverformat:i("x"),yhoverformat:i("y"),zhoverformat:i("z"),showlegend:l({},s.showlegend,{dflt:!1})};l(u,n("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"})),["opacity","lightposition","lighting"].forEach((function(t){u[t]=o[t]})),u.hoverinfo=l({},s.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"}),u.transforms=void 0,t.exports=u},31371:function(t,e,r){"use strict";var n=r(78803);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;uo.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)}}}},90654:function(t,e,r){"use strict";var n=r(21081),i=r(86068),a=r(53572);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}}}},36914: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}}},83179:function(t,e,r){"use strict";var n=r(92770),i=r(14523),a=r(7901),o=a.addOpacity,s=a.opacity,l=r(74808),u=l.CONSTRAINT_REDUCTION,c=l.COMPARISON_OPS2;t.exports=function(t,e,r,a,l,f){var h,p,d,v=e.contours,g=r("contours.operation");v._operation=u[g],function(t,e){var r;-1===c.indexOf(e.operation)?(t("contours.value",[0,1]),Array.isArray(e.value)?e.value.length>2?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)}},64237:function(t,e,r){"use strict";var n=r(74808),i=r(92770);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("=")}},67217: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")}},84857:function(t,e,r){"use strict";var n=r(71828);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;r1e3){n.warn("Too many contours, clipping at 1000",t);break}return l}},53572:function(t){"use strict";t.exports=function(t){return t.end+t.size/1e6}},81696:function(t,e,r){"use strict";var n=r(71828),i=r(36914);function a(t,e,r,n){return Math.abs(t[0]-e[0])20&&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]}(f,r,e),p=[s(t,e,[-h[0],-h[1]])],d=t.z.length,v=t.z[0].length,g=e.slice(),y=h.slice();for(u=0;u<1e4;u++){if(f>20?(f=i.CHOOSESADDLE[f][(h[0]||h[1])<0?0:1],t.crossings[c]=i.SADDLEREMAINDER[f]):delete t.crossings[c],!(h=i.NEWDELTA[f])){n.log("Found bad marching index:",f,e,t.level);break}p.push(s(t,e,h)),e[0]+=h[0],e[1]+=h[1],c=e.join(","),a(p[p.length-1],p[p.length-2],o,l)&&p.pop();var m=h[0]&&(e[0]<0||e[0]>v-2)||h[1]&&(e[1]<0||e[1]>d-2);if(e[0]===g[0]&&e[1]===g[1]&&h[0]===y[0]&&h[1]===y[1]||r&&m)break;f=t.crossings[c]}1e4===u&&n.log("Infinite loop in contour?");var x,b,_,w,T,k,A,M,S,E,L,C,P,O,I,D=a(p[0],p[p.length-1],o,l),z=0,R=.2*t.smoothing,F=[],B=0;for(u=1;u=B;u--)if((x=F[u])=B&&x+F[b]M&&S--,t.edgepaths[S]=L.concat(p,E));break}V||(t.edgepaths[M]=p.concat(E))}for(M=0;Mt?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=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;f+="L"+n}if(s===t.edgepaths.length){i.log("unclosed perimeter path");break}h=s,(d=-1===p.indexOf(h))&&(h=p[0],f+="Z")}for(h=0;hn.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;cr.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)}}},84426:function(t,e,r){"use strict";var n=r(39898),i=r(91424),a=r(70035),o=r(86068);t.exports=function(t){var e=n.select(t).selectAll("g.contour");e.style("opacity",(function(t){return t[0].trace.opacity})),e.each((function(t){var e=n.select(this),r=t[0].trace,a=r.contours,s=r.line,l=a.size||1,u=a.start,c="constraint"===a.type,f=!c&&"lines"===a.coloring,h=!c&&"fill"===a.coloring,p=f||h?o(r):null;e.selectAll("g.contourlevel").each((function(t){n.select(this).selectAll("path").call(i.lineGroupStyle,s.width,f?p(t.level):s.color,s.dash)}));var d=a.labelfont;if(e.selectAll("g.contourlabels text").each((function(t){i.font(n.select(this),{family:d.family,size:d.size,color:d.color||(f?p(t.level):s.color)})})),c)e.selectAll("g.contourfill path").style("fill",r.fillcolor);else if(h){var v;e.selectAll("g.contourfill path").style("fill",(function(t){return void 0===v&&(v=t.level),p(t.level+.5*l)})),void 0===v&&(v=u),e.selectAll("g.contourbg path").style("fill",p(v-.5*l))}})),a(t)}},8724:function(t,e,r){"use strict";var n=r(1586),i=r(14523);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)}},88085:function(t,e,r){"use strict";var n=r(21606),i=r(70600),a=r(50693),o=r(1426).extendFlat,s=i.contours;t.exports=o({carpet:{valType:"string",editType:"calc"},z:n.z,a:n.x,a0:n.x0,da:n.dx,b:n.y,b0:n.y0,db:n.dy,text:n.text,hovertext:n.hovertext,transpose:n.transpose,atype:n.xtype,btype:n.ytype,fillcolor:i.fillcolor,autocontour:i.autocontour,ncontours:i.ncontours,contours:{type:s.type,start:s.start,end:s.end,size:s.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:s.showlines,showlabels:s.showlabels,labelfont:s.labelfont,labelformat:s.labelformat,operation:s.operation,value:s.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:i.line.color,width:i.line.width,dash:i.line.dash,smoothing:i.line.smoothing,editType:"plot"},transforms:void 0},a("",{cLetter:"z",autoColorDflt:!1}))},59885:function(t,e,r){"use strict";var n=r(78803),i=r(71828),a=r(68296),o=r(4742),s=r(824),l=r(43907),u=r(70769),c=r(75005),f=r(22882),h=r(18670);t.exports=function(t,e){var r=e._carpetTrace=f(t,e);if(r&&r.visible&&"legendonly"!==r.visible){if(!e.a||!e.b){var p=t.data[r.index],d=t.data[e.index];d.a||(d.a=p.a),d.b||(d.b=p.b),c(d,e,e._defaultColor,t._fullLayout)}var v=function(t,e){var r,c,f,h,p,d,v,g=e._carpetTrace,y=g.aaxis,m=g.baxis;y._minDtick=0,m._minDtick=0,i.isArray1D(e.z)&&a(e,y,m,"a","b",["z"]),r=e._a=e._a||e.a,h=e._b=e._b||e.b,r=r?y.makeCalcdata(e,"_a"):[],h=h?m.makeCalcdata(e,"_b"):[],c=e.a0||0,f=e.da||1,p=e.b0||0,d=e.db||1,v=e._z=o(e._z||e.z,e.transpose),e._emptypoints=l(v),s(v,e._emptypoints);var x=i.maxRowLength(v),b="scaled"===e.xtype?"":r,_=u(e,b,c,f,x,y),w="scaled"===e.ytype?"":h,T={a:_,b:u(e,w,p,d,v.length,m),z:v};return"levels"===e.contours.type&&"none"!==e.contours.coloring&&n(t,e,{vals:v,containerStr:"",cLetter:"z"}),[T]}(t,e);return h(e,e._z),v}}},75005:function(t,e,r){"use strict";var n=r(71828),i=r(67684),a=r(88085),o=r(83179),s=r(67217),l=r(8724);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}},93740:function(t,e,r){"use strict";t.exports={attributes:r(88085),supplyDefaults:r(75005),colorbar:r(90654),calc:r(59885),plot:r(51048),style:r(84426),moduleType:"trace",name:"contourcarpet",basePlotModule:r(93612),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}},51048:function(t,e,r){"use strict";var n=r(39898),i=r(27669),a=r(67961),o=r(91424),s=r(71828),l=r(87678),u=r(81696),c=r(29854),f=r(36914),h=r(84857),p=r(87558),d=r(20083),v=r(22882),g=r(4536);function y(t,e,r){var n=t.getPointAtLength(e),i=t.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function m(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]);return[t[0]/e,t[1]/e]}function x(t,e){var r=Math.abs(t[0]*e[0]+t[1]*e[1]);return Math.sqrt(1-r*r)/r}t.exports=function(t,e,r,b){var _=e.xaxis,w=e.yaxis;s.makeTraceGroups(b,r,"contour").each((function(r){var b=n.select(this),T=r[0],k=T.trace,A=k._carpetTrace=v(t,k),M=t.calcdata[A.index][0];if(A.visible&&"legendonly"!==A.visible){var S=T.a,E=T.b,L=k.contours,C=p(L,e,T),P="constraint"===L.type,O=L._operation,I=P?"="===O?"lines":"fill":L.coloring,D=[[S[0],E[E.length-1]],[S[S.length-1],E[E.length-1]],[S[S.length-1],E[0]],[S[0],E[0]]];l(C);var z=1e-8*(S[S.length-1]-S[0]),R=1e-8*(E[E.length-1]-E[0]);u(C,z,R);var F,B,N,j,U=C;"constraint"===L.type&&(U=h(C,O)),function(t,e){var r,n,i,a,o,s,l,u,c;for(r=0;r=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)0?+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 k=["interpolate",["linear"],["get","z"],b.min,0,b.max,1];return i.extendFlat(u.heatmap.paint,{"heatmap-weight":d?k: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}},79429:function(t,e,r){"use strict";var n=r(71828),i=r(1586),a=r(64096);t.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}var l=s("lon")||[],u=s("lat")||[],c=Math.min(l.length,u.length);c?(e._length=c,s("z"),s("radius"),s("below"),s("text"),s("hovertext"),s("hovertemplate"),i(t,e,o,s,{prefix:"",cLetter:"z"})):e.visible=!1}},62474:function(t){"use strict";t.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}},84684:function(t,e,r){"use strict";var n=r(89298),i=r(28178).hoverPoints,a=r(28178).getExtraText;t.exports=function(t,e,r){var o=i(t,e,r);if(o){var s=o[0],l=s.cd,u=l[0].trace,c=l[s.index];if(delete s.color,"z"in c){var f=s.subplot.mockAxis;s.z=c.z,s.zLabel=n.tickText(f,f.c2l(c.z),"hover").text}return s.extraText=a(u,c,l[0].t.labels),[s]}}},93814:function(t,e,r){"use strict";t.exports={attributes:r(64096),supplyDefaults:r(79429),colorbar:r(61243),formatLabels:r(15636),calc:r(85070),plot:r(7336),hoverPoints:r(84684),eventData:r(62474),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n=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}},49789:function(t,e,r){"use strict";var n=r(71828);t.exports=function(t,e){for(var r=0;r"),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]}}},51759:function(t,e,r){"use strict";t.exports={attributes:r(1285),layoutAttributes:r(10440),supplyDefaults:r(26199).supplyDefaults,crossTraceDefaults:r(26199).crossTraceDefaults,supplyLayoutDefaults:r(93138),calc:r(9532),crossTraceCalc:r(8984),plot:r(80461),style:r(68266).style,hoverPoints:r(63341),eventData:r(34598),selectPoints:r(81974),moduleType:"trace",name:"funnel",basePlotModule:r(93612),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}},10440: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"}}},93138:function(t,e,r){"use strict";var n=r(71828),i=r(10440);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;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)}))}))}}},86807:function(t,e,r){"use strict";var n=r(34e3),i=r(9012),a=r(27670).Y,o=r(5386).f,s=r(5386).s,l=r(1426).extendFlat;t.exports={labels:n.labels,label0:n.label0,dlabel:n.dlabel,values:n.values,marker:{colors:n.marker.colors,line:{color:l({},n.marker.line.color,{dflt:null}),width:l({},n.marker.line.width,{dflt:1}),editType:"calc"},editType:"calc"},text:n.text,hovertext:n.hovertext,scalegroup:l({},n.scalegroup,{}),textinfo:l({},n.textinfo,{flags:["label","text","value","percent"]}),texttemplate:s({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:l({},i.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:o({},{keys:["label","color","value","text","percent"]}),textposition:l({},n.textposition,{values:["inside","none"],dflt:"inside"}),textfont:n.textfont,insidetextfont:n.insidetextfont,title:{text:n.title.text,font:n.title.font,position:l({},n.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:a({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}},6452:function(t,e,r){"use strict";var n=r(74875);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)}},89574:function(t,e,r){"use strict";var n=r(32354);t.exports={calc:function(t,e){return n.calc(t,e)},crossTraceCalc:function(t){n.crossTraceCalc(t,{type:"funnelarea"})}}},86282:function(t,e,r){"use strict";var n=r(71828),i=r(86807),a=r(27670).c,o=r(90769).handleText,s=r(37434).handleLabelsAndValues;t.exports=function(t,e,r,l){function u(r,a){return n.coerce(t,e,i,r,a)}var c=u("labels"),f=u("values"),h=s(c,f),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(u("label0"),u("dlabel")),p){e._length=p,u("marker.line.width")&&u("marker.line.color",l.paper_bgcolor),u("marker.colors"),u("scalegroup");var d,v=u("text"),g=u("texttemplate");if(g||(d=u("textinfo",Array.isArray(v)?"text+percent":"percent")),u("hovertext"),u("hovertemplate"),g||d&&"none"!==d){var y=u("textposition");o(t,e,l,u,y,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}a(e,l,u),u("title.text")&&(u("title.position"),n.coerceFont(u,"title.font",l.font)),u("aspectratio"),u("baseratio")}else e.visible=!1}},10421:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"funnelarea",basePlotModule:r(6452),categories:["pie-like","funnelarea","showLegend"],attributes:r(86807),layoutAttributes:r(80097),supplyDefaults:r(86282),supplyLayoutDefaults:r(57402),calc:r(89574).calc,crossTraceCalc:r(89574).crossTraceCalc,plot:r(79187),style:r(71858),styleOne:r(63463),meta:{}}},80097:function(t,e,r){"use strict";var n=r(92774).hiddenlabels;t.exports={hiddenlabels:n,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}},57402:function(t,e,r){"use strict";var n=r(71828),i=r(80097);t.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r("hiddenlabels"),r("funnelareacolorway",e.colorway),r("extendfunnelareacolors")}},79187:function(t,e,r){"use strict";var n=r(39898),i=r(91424),a=r(71828),o=a.strScale,s=a.strTranslate,l=r(63893),u=r(17295).toMoveInsideBar,c=r(72597),f=c.recordMinTextSize,h=c.clearMinTextSize,p=r(53581),d=r(14575),v=d.attachFxHandlers,g=d.determineInsideTextFont,y=d.layoutAreas,m=d.prerenderTitles,x=d.positionTitleOutside,b=d.formatSliceLabel;function _(t,e){return"l"+(e[0]-t[0])+","+(e[1]-t[1])}t.exports=function(t,e){var r=t._context.staticPlot,c=t._fullLayout;h("funnelarea",c),m(e,t),y(e,c._size),a.makeTraceGroups(c._funnelarealayer,e,"trace").each((function(e){var h=n.select(this),d=e[0],y=d.trace;!function(t){if(t.length){var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.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(E()),o=t.length-1;o>-1;o--)if(!(s=t[o]).hidden){var p=s.v/c;f+=p,h.push(E())}var d=1/0,v=-1/0;for(o=0;o-1;o--)if(!(s=t[o]).hidden){var M=h[A+=1][0],S=h[A][1];s.TL=[-M,S],s.TR=[M,S],s.BL=T,s.BR=k,s.pxmid=(_=s.TR,w=s.BR,[.5*(_[0]+w[0]),.5*(_[1]+w[1])]),T=s.TL,k=s.TR}}function E(){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 k=p.castOption(y.textposition,o.pts),A=x.selectAll("g.slicetext").data(o.text&&"none"!==k?[0]:[]);A.enter().append("g").classed("slicetext",!0),A.exit().remove(),A.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))}))}))}))}},71858:function(t,e,r){"use strict";var n=r(39898),i=r(63463),a=r(72597).resizeText;t.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(".trace");a(t,e,"funnelarea"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll("path.surface").each((function(t){n.select(this).call(i,t,e)}))}))}},21606:function(t,e,r){"use strict";var n=r(82196),i=r(9012),a=r(41940),o=r(12663).axisHoverFormat,s=r(5386).f,l=r(5386).s,u=r(50693),c=r(1426).extendFlat;t.exports=c({z:{valType:"data_array",editType:"calc"},x:c({},n.x,{impliedEdits:{xtype:"array"}}),x0:c({},n.x0,{impliedEdits:{xtype:"scaled"}}),dx:c({},n.dx,{impliedEdits:{xtype:"scaled"}}),y:c({},n.y,{impliedEdits:{ytype:"array"}}),y0:c({},n.y0,{impliedEdits:{ytype:"scaled"}}),dy:c({},n.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:c({},n.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:c({},n.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:c({},n.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:c({},n.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:c({},n.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:c({},n.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:o("x"),yhoverformat:o("y"),zhoverformat:o("z",1),hovertemplate:s(),texttemplate:l({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:a({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:c({},i.showlegend,{dflt:!1})},{transforms:void 0},u("",{cLetter:"z",autoColorDflt:!1}))},90757:function(t,e,r){"use strict";var n=r(73972),i=r(71828),a=r(89298),o=r(42973),s=r(17562),l=r(78803),u=r(68296),c=r(4742),f=r(824),h=r(43907),p=r(70769),d=r(50606).BADNUM;function v(t){for(var e=[],r=t.length,n=0;nz){I("x scale is not linear");break}}if(x.length&&"fast"===P){var R=(x[x.length-1]-x[0])/(x.length-1),F=Math.abs(R/100);for(k=0;kF){I("y scale is not linear");break}}}var B=i.maxRowLength(T),N="scaled"===e.xtype?"":r,j=p(e,N,g,y,B,M),U="scaled"===e.ytype?"":x,V=p(e,U,b,_,T.length,S);C||(e._extremes[M._id]=a.findExtremes(M,j),e._extremes[S._id]=a.findExtremes(S,V));var H={x:j,y:V,z:T,text:e._text||e.text,hovertext:e._hovertext||e.hovertext};if(e.xperiodalignment&&m&&(H.orig_x=m),e.yperiodalignment&&w&&(H.orig_y=w),N&&N.length===j.length-1&&(H.xCenter=N),U&&U.length===V.length-1&&(H.yCenter=U),L&&(H.xRanges=A.xRanges,H.yRanges=A.yRanges,H.pts=A.pts),E||l(t,e,{vals:T,cLetter:"z"}),E&&e.contours&&"heatmap"===e.contours.coloring){var q={type:"contour"===e.type?"heatmap":"histogram2d",xcalendar:e.xcalendar,ycalendar:e.ycalendar};H.xfill=p(q,N,g,y,B,M),H.yfill=p(q,U,b,_,T.length,S)}return[H]}},4742:function(t,e,r){"use strict";var n=r(92770),i=r(71828),a=r(50606).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;f=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]}))}},46248:function(t,e,r){"use strict";var n=r(30211),i=r(71828),a=r(89298),o=r(21081).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,k=v.zhoverformat,A=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(A=[2*m[0]-m[1]],S=1;Sv&&(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}},58623:function(t,e,r){"use strict";var n=r(71828);t.exports=function(t,e){t("texttemplate");var r=n.extendFlat({},e.font,{color:"auto",size:"auto"});n.coerceFont(t,"textfont",r)}},70769:function(t,e,r){"use strict";var n=r(73972),i=r(71828).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;c0;)w=T.c2p(F[E]),E--;for(w0;)S=k.c2p(B[E]),E--;if(SZt||Zt>k._length))for(L=Vt;LWt||Wt>T._length)){var Xt=c({x:Yt,y:Gt},I,t._fullLayout);Xt.x=Yt,Xt.y=Gt;var Jt=O.z[E][L];void 0===Jt?(Xt.z="",Xt.zLabel=""):(Xt.z=Jt,Xt.zLabel=s.tickText(Bt,Jt,"hover").text);var Kt=O.text&&O.text[E]&&O.text[E][L];void 0!==Kt&&!1!==Kt||(Kt=""),Xt.text=Kt;var $t=l.texttemplateString(Rt,Xt,t._fullLayout._d3locale,Xt,I._meta||{});if($t){var Qt=$t.split("
            "),te=Qt.length,ee=0;for(C=0;C0&&(a=!0);for(var l=0;la){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]u?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(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),k=T[0],A=T[1],M="string"==typeof k.size,S=[],E=M?S:k,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(k.start),p=U(k.end)+(r-o.tickIncrement(r,k.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],Z?et.ph0=et.ph1=P[r].length?A[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,k.size,!1,_)-$[0].p),s($,e),i.isArrayOrTypedArray(e.selectedpoints)&&i.tagSelected($,e,X),$},calcAllAutoBins:h}},72406:function(t){"use strict";t.exports={eventDataKeys:["binNumber"]}},82222:function(t,e,r){"use strict";var n=r(71828),i=r(41675),a=r(73972).traceIs,o=r(26125),s=n.nestedProperty,l=r(99082).getAxisGroup,u=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],c=["x","y"];t.exports=function(t,e){var r,f,h,p,d,v,g,y=e._histogramBinOpts={},m=[],x={},b=[];function _(t,e){return n.coerce(r._input,r,r._module.attributes,t,e)}function w(t){return"v"===t.orientation?"x":"y"}function T(t,r,a){var o=t.uid+"__"+a;r||(r=o);var s=function(t,r){return i.getFromTrace({_fullLayout:e},t,r).type}(t,a),l=t[a+"calendar"]||"",u=y[r],c=!0;u&&(s===u.axType&&l===u.calendar?(c=!1,u.traces.push(t),u.dirs.push(a)):(r=o,s!==u.axType&&n.warn(["Attempted to group the bins of trace",t.index,"set on a","type:"+s,"axis","with bins on","type:"+u.axType,"axis."].join(" ")),l!==u.calendar&&n.warn(["Attempted to group the bins of trace",t.index,"set with a",l,"calendar","with bins",u.calendar?"on a "+u.calendar+" calendar":"w/o a set calendar"].join(" ")))),c&&(y[r]={traces:[t],dirs:[a],axType:s,calendar:t[a+"calendar"]||""}),t["_"+a+"bingroup"]=r}for(d=0;dS&&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 A.size,I=[],D=[],z=P?I:w,R=O?D:A,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],Z=!1,Y=[],W=[],X="z"in e?e.z:"marker"in e&&Array.isArray(e.marker.color)?e.marker.color:"";X&&"count"!==U&&(Z="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),Z&&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=A.size,it=b(A.start),at=b(A.end)+(it-i.tickIncrement(it,nt,!1,m))/1e6;for(r=it;r=0&&p=0&&d-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),k(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=A(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,{hovered:!1}),s.x0===s.x1||s.y0===s.y1?s._text="":s._text=h(s,r,C,e,L)||"";var k=i.ensureSingle(d,"g","slicetext"),S=i.ensureSingle(k,"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}},69816:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"icicle",basePlotModule:r(96346),categories:[],animatable:!0,attributes:r(46291),layoutAttributes:r(92894),supplyDefaults:r(56524),supplyLayoutDefaults:r(21070),calc:r(46584).y,crossTraceCalc:r(46584).T,plot:r(85596),style:r(82454).style,colorbar:r(4898),meta:{}}},92894:function(t){"use strict";t.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}},21070:function(t,e,r){"use strict";var n=r(71828),i=r(92894);t.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r("iciclecolorway",e.colorway),r("extendiciclecolors")}},21538:function(t,e,r){"use strict";var n=r(674),i=r(14102);t.exports=function(t,e,r){var a=r.flipX,o=r.flipY,s="h"===r.orientation,l=r.maxDepth,u=e[0],c=e[1];l&&(u=(t.height+1)*e[0]/Math.min(t.height+1,l),c=(t.height+1)*e[1]/Math.min(t.height+1,l));var f=n.partition().padding(r.pad.inner).size(s?[e[1],u]:[e[0],c])(t);return(s||a||o)&&i(f,e,{swapXY:s,flipX:a,flipY:o}),f}},85596:function(t,e,r){"use strict";var n=r(80694),i=r(90666);t.exports=function(t,e,r,a){return n(t,e,r,a,{type:"icicle",drawDescendants:i})}},82454:function(t,e,r){"use strict";var n=r(39898),i=r(7901),a=r(71828),o=r(72597).resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,"marker.line.color")||i.defaultLine,u=a.castOption(r,s,"marker.line.width")||0;t.style("stroke-width",u).call(i.fill,n.color).call(i.stroke,l).style("opacity",o?r.leaf.opacity:null)}t.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(".trace");o(t,e,"icicle"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style("opacity",r.opacity),e.selectAll("path.surface").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},17230:function(t,e,r){"use strict";for(var n=r(9012),i=r(5386).f,a=r(1426).extendFlat,o=r(51877).colormodel,s=["rgb","rgba","rgba256","hsl","hsla"],l=[],u=[],c=0;c0||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),k=o.x0+(f+.5)*s.dx,A=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:k,xLabelVal:k,yVal:A,yLabelVal:A,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]}})]}}}},94507:function(t,e,r){"use strict";t.exports={attributes:r(17230),supplyDefaults:r(13245),calc:r(71113),plot:r(60775),style:r(12826),hoverPoints:r(28749),eventData:r(30835),moduleType:"trace",name:"image",basePlotModule:r(93612),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}},60775:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=i.strTranslate,o=r(77922),s=r(51877),l=i.isIOS()||i.isSafari()||i.isIE();t.exports=function(t,e,r,u){var c=e.xaxis,f=e.yaxis,h=!(l||t._context._exportedPlot);i.makeTraceGroups(u,r,"im").each((function(e){var r=n.select(this),l=e[0],u=l.trace,p=("fast"===u.zsmooth||!1===u.zsmooth&&h)&&!u._hasZ&&u._hasSource&&"linear"===c.type&&"linear"===f.type;u._realImage=p;var d,v,g,y,m,x,b=l.z,_=l.x0,w=l.y0,T=l.w,k=l.h,A=u.dx,M=u.dy;for(x=0;void 0===d&&x0;)v=c.c2p(_+x*A),x--;for(x=0;void 0===y&&x0;)m=f.c2p(w+x*M),x--;vO[0];if(I||D){var z=d+S/2,R=y+E/2;C+="transform:"+a(z+"px",R+"px")+"scale("+(I?-1:1)+","+(D?-1:1)+")"+a(-z+"px",-R+"px")+";"}}L.attr("style",C);var F=new Promise((function(t){if(u._hasZ)t();else if(u._hasSource)if(u._canvas&&u._canvas.el.width===T&&u._canvas.el.height===k&&u._canvas.source===u.source)t();else{var e=document.createElement("canvas");e.width=T,e.height=k;var r=e.getContext("2d",{willReadFrequently:!0});u._image=u._image||new Image;var n=u._image;n.onload=function(){r.drawImage(n,0,0),u._canvas={el:e,source:u.source},t()},n.setAttribute("src",u.source)}})).then((function(){var t,e;if(u._hasZ)e=B((function(t,e){return b[e][t]})),t=e.toDataURL("image/png");else if(u._hasSource)if(p)t=u.source;else{var r=u._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,T,k).data;e=B((function(t,e){var n=4*(e*T+t);return[r[n],r[n+1],r[n+2],r[n+3]]})),t=e.toDataURL("image/png")}L.attr({"xlink:href":t,height:E,width:S,x:d,y:y})}));t._promises.push(F)}function B(t){var e=document.createElement("canvas");e.width=S,e.height=E;var r,n=e.getContext("2d",{willReadFrequently:!0}),a=function(t){return i.constrain(Math.round(c.c2p(_+t*A)-d),0,S)},o=function(t){return i.constrain(Math.round(f.c2p(w+t*M)-y),0,E)},h=s.colormodel[u.colormodel],p=h.colormodel||u.colormodel,v=h.fmt;for(x=0;x0}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 k(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 A(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 A(t,(h.bulletNumberDomainSize-q)*B.w,B.h)}}}else v=B.l+b[H]*B.w,L=function(t){return A(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",A=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=k(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 A})).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=k(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,A,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=k(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,A,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 Z=I.selectAll("g.angular").data(z?e:[]);Z.exit().remove();var Y=I.selectAll("g.angularaxis").data(z?e:[]);Y.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,A=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])),A.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),A.selectAll("g.xangularaxistick,path,text").remove(),(o=k(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:A,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:A,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 Z=_.selectAll("g.threshold-arc").data(F);Z.enter().append("g").classed("threshold-arc",!0).append("path"),Z.select("path").call(P).call(T),Z.exit().remove();var Y=_.selectAll("g.gauge-outline").data([x]);Y.enter().append("g").classed("gauge-outline",!0).append("path"),Y.select("path").call(P).call(T),Y.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:Z,layer:Y,size:B,gaugeBg:C,gaugeOutline:P,transitionOpts:r,onComplete:g});var W=I.selectAll("g.bullet").data(R?e:[]);W.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 A=y.h,M=c.gauge.bar.thickness*A,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)*A})).attr("height",(function(t){return t.thickness*A}))}(i=k(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",(A-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*A).attr("y2",(1-(1-c.gauge.threshold.thickness)/2)*A).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:W,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(Y.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)}))}))}},16249:function(t,e,r){"use strict";var n=r(50693),i=r(12663).axisHoverFormat,a=r(5386).f,o=r(2418),s=r(9012),l=r(1426).extendFlat,u=r(30962).overrideAll,c=t.exports=u(l({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}},y:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}},z:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}},y:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}},z:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:a(),xhoverformat:i("x"),yhoverformat:i("y"),zhoverformat:i("z"),valuehoverformat:i("value",1),showlegend:l({},s.showlegend,{dflt:!1})},n("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:o.opacity,lightposition:o.lightposition,lighting:o.lighting,flatshading:o.flatshading,contour:o.contour,hoverinfo:l({},s.hoverinfo)}),"calc","nested");c.flatshading.dflt=!0,c.lighting.facenormalsepsilon.dflt=0,c.x.editType=c.y.editType=c.z.editType=c.value.editType="calc+clearAxisTypes",c.transforms=void 0},56959:function(t,e,r){"use strict";var n=r(78803),i=r(88489).processGrid,a=r(88489).filter;t.exports=function(t,e){e._len=Math.min(e.x.length,e.y.length,e.z.length,e.value.length),e._x=a(e.x,e._len),e._y=a(e.y,e._len),e._z=a(e.z,e._len),e._value=a(e.value,e._len);var r=i(e);e._gridFill=r.fill,e._Xs=r.Xs,e._Ys=r.Ys,e._Zs=r.Zs,e._len=r.len;for(var o=1/0,s=-1/0,l=0;l0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function R(t,e){return null===t?e:t}function F(e,r,n){C();var i,a,o,l=[r],u=[n];if(s>=1)l=[r],u=[n];else if(s>0){var c=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?n[p]:L(d,v,y);h[p]=x>-1?x:O(d,v,y,R(e,m))}i=h[0],a=h[1],o=h[2],t._meshI.push(i),t._meshJ.push(a),t._meshK.push(o),++g}}function B(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 N(t,e,r){return t>=e&&t<=r}function j(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function U(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 V(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return j(e[0][3])&&j(e[1][3])&&j(e[2][3])?(F(t,e,r),!0):a<3&&V(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=B(h,c,n,i),d=B(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=B(f,c,n,i),d=B(h,c,n,i);o=l(t,[d,p,c],[-1,-1,r[a[0]]])||o,u=!0}})),o}function H(t,e,r,n){var i=!1,a=U(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(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){F(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=F(t,[u,c,f],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var p=B(h,u,r,n),d=B(h,c,r,n),g=B(h,f,r,n);i=F(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=B(f,u,r,n),d=B(f,c,r,n),g=B(h,c,r,n),y=B(h,u,r,n);v?(i=F(t,[u,y,p],[e[l[0]],-1,-1])||i,i=F(t,[c,d,g],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(t,n,i){F(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=B(c,u,r,n),d=B(f,u,r,n),g=B(h,u,r,n);v?(i=F(t,[u,p,d],[e[l[0]],-1,-1])||i,i=F(t,[u,d,g],[e[l[0]],-1,-1])||i,i=F(t,[u,g,p],[e[l[0]],-1,-1])||i):i=F(null,[p,d,g],[-1,-1,-1])||i,s=!0}}))),i}function q(t,e,r,n,i,a,o,s,l,u,c){var f=!1;return d&&(z(t,"A")&&(f=H(null,[e,r,n,a],u,c)||f),z(t,"B")&&(f=H(null,[r,n,i,l],u,c)||f),z(t,"C")&&(f=H(null,[r,a,o,l],u,c)||f),z(t,"D")&&(f=H(null,[n,a,s,l],u,c)||f),z(t,"E")&&(f=H(null,[r,n,a,l],u,c)||f)),v&&(f=H(t,[r,n,a,l],u,c)||f),f}function G(t,e,r,n,i,a,o,s){return[!0===s[0]||V(t,U([e,r,n]),[e,r,n],a,o),!0===s[1]||V(t,U([n,i,e]),[n,i,e],a,o)]}function Z(t,e,r,n,i,a,o,s,l){return s?G(t,e,r,i,n,a,o,l):G(t,r,i,n,e,a,o,l)}function Y(t,e,r,n,i,a,o){var s,l,u,c,f=!1,h=function(){f=V(t,[s,l,u],[-1,-1,-1],i,a)||f,f=V(t,[u,c,s],[-1,-1,-1],i,a)||f},p=o[0],d=o[1],v=o[2];return p&&(s=I(U([k(e,r-0,n-0)])[0],U([k(e-1,r-0,n-0)])[0],p),l=I(U([k(e,r-0,n-1)])[0],U([k(e-1,r-0,n-1)])[0],p),u=I(U([k(e,r-1,n-1)])[0],U([k(e-1,r-1,n-1)])[0],p),c=I(U([k(e,r-1,n-0)])[0],U([k(e-1,r-1,n-0)])[0],p),h()),d&&(s=I(U([k(e-0,r,n-0)])[0],U([k(e-0,r-1,n-0)])[0],d),l=I(U([k(e-0,r,n-1)])[0],U([k(e-0,r-1,n-1)])[0],d),u=I(U([k(e-1,r,n-1)])[0],U([k(e-1,r-1,n-1)])[0],d),c=I(U([k(e-1,r,n-0)])[0],U([k(e-1,r-1,n-0)])[0],d),h()),v&&(s=I(U([k(e-0,r-0,n)])[0],U([k(e-0,r-0,n-1)])[0],v),l=I(U([k(e-0,r-1,n)])[0],U([k(e-0,r-1,n-1)])[0],v),u=I(U([k(e-1,r-1,n)])[0],U([k(e-1,r-1,n-1)])[0],v),c=I(U([k(e-1,r-0,n)])[0],U([k(e-1,r-0,n-1)])[0],v),h()),f}function W(t,e,r,n,i,a,o,s,l,u,c,f){var h=t;return f?(d&&"even"===t&&(h=null),q(h,e,r,n,i,a,o,s,l,u,c)):(d&&"odd"===t&&(h=null),q(h,l,s,o,a,i,n,r,e,u,c))}function X(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(L-M)?[A,L]:[L,M];d=!0,$(r,C[0],C[1]),d=!1}}var I=[[Math.min(S,M),Math.max(S,M)],[Math.min(A,E),Math.max(A,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=rt(1,"x"===r?b-1:"y"===r?_-1:w-1);f.length>0&&(n[a]="x"===r?Q(e,f,o,s,h,n[a]):"y"===r?tt(e,f,o,s,h,n[a]):et(e,f,o,s,h,n[a]),a++),c.length>0&&(n[a]="x"===r?X(e,c,o,s,n[a]):"y"===r?J(e,c,o,s,n[a]):K(e,c,o,s,n[a]),a++)}var v=t.caps[r];v.show&&v.fill&&(D(v.fill),n[a]="x"===r?X(e,[0,b-1],o,s,n[a]):"y"===r?J(e,[0,_-1],o,s,n[a]):K(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}}},82738:function(t,e,r){"use strict";var n=r(71828),i=r(73972),a=r(16249),o=r(1586);function s(t,e,r,n,a){var s=a("isomin"),l=a("isomax");null!=l&&null!=s&&s>l&&(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}},64943:function(t,e,r){"use strict";t.exports={attributes:r(16249),supplyDefaults:r(82738).supplyDefaults,calc:r(56959),colorbar:{min:"cmin",max:"cmax"},plot:r(22674).createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:r(58547),categories:["gl3d","showLegend"],meta:{}}},2418:function(t,e,r){"use strict";var n=r(50693),i=r(12663).axisHoverFormat,a=r(5386).f,o=r(54532),s=r(9012),l=r(1426).extendFlat;t.exports=l({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:a({editType:"calc"}),xhoverformat:i("x"),yhoverformat:i("y"),zhoverformat:i("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"},transforms:void 0},n("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:o.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:l({},o.contours.x.show,{}),color:o.contours.x.color,width:o.contours.x.width,editType:"calc"},lightposition:{x:l({},o.lightposition.x,{dflt:1e5}),y:l({},o.lightposition.y,{dflt:1e5}),z:l({},o.lightposition.z,{dflt:0}),editType:"calc"},lighting:l({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc"},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc"},editType:"calc"},o.lighting),hoverinfo:l({},s.hoverinfo,{editType:"calc"}),showlegend:l({},s.showlegend,{dflt:!1})})},82932:function(t,e,r){"use strict";var n=r(78803);t.exports=function(t,e){e.intensity&&n(t,e,{vals:e.intensity,containerStr:"",cLetter:"c"})}},91134:function(t,e,r){"use strict";var n=r(9330).gl_mesh3d,i=r(9330).delaunay_triangulate,a=r(9330).alpha_shape,o=r(9330).convex_hull,s=r(81697).parseColorScale,l=r(78614),u=r(21081).extractOpts,c=r(90060);function f(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var h=f.prototype;function p(t){for(var e=[],r=t.length,n=0;n=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;oy):g=A>w,y=A;var M=u(w,T,k,A);M.pos=_,M.yc=(w+A)/2,M.i=b,M.dir=g?"increasing":"decreasing",M.x=M.pos,M.y=[k,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;a"+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}},54186:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"ohlc",basePlotModule:r(93612),categories:["cartesian","svg","showLegend"],meta:{},attributes:r(2522),supplyDefaults:r(16169),calc:r(3485).calc,plot:r(72314),style:r(53101),hoverPoints:r(66449).hoverPoints,selectPoints:r(67324)}},14555:function(t,e,r){"use strict";var n=r(73972),i=r(71828);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}}},72314:function(t,e,r){"use strict";var n=r(39898),i=r(71828);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}))}}))}},67324:function(t){"use strict";t.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;r=t.length)return!1;if(void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(r))for(e=0;e0;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)}},94873:function(t,e,r){"use strict";t.exports={attributes:r(99506),supplyDefaults:r(14647),calc:r(28699),plot:r(45784),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:r(27677),categories:["noOpacity"],meta:{}}},45460:function(t,e,r){"use strict";var n=r(39898),i=r(29502).k4,a=r(72391),o=r(30211),s=r(71828),l=s.strTranslate,u=r(91424),c=r(84267),f=r(63893);function h(t,e,r,i){var a=e._context.staticPlot,o=t.map(F.bind(0,e,r)),c=i.selectAll("g.parcatslayer").data([null]);c.enter().append("g").attr("class","parcatslayer").style("pointer-events",a?"none":"all");var h=c.selectAll("g.trace.parcats").data(o,p),m=h.enter().append("g").attr("class","trace parcats");h.attr("transform",(function(t){return l(t.x,t.y)})),m.append("g").attr("class","paths");var x=h.select("g.paths").selectAll("path.path").data((function(t){return t.paths}),p);x.attr("fill",(function(t){return t.model.color}));var w=x.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",(function(t){return t.model.color})).attr("fill-opacity",0);_(w),x.attr("d",(function(t){return t.svgD})),w.empty()||x.sort(v),x.exit().remove(),x.on("mouseover",g).on("mouseout",y).on("click",b),m.append("g").attr("class","dimensions");var A=h.select("g.dimensions").selectAll("g.dimension").data((function(t){return t.dimensions}),p);A.enter().append("g").attr("class","dimension"),A.attr("transform",(function(t){return l(t.x,0)})),A.exit().remove();var M=A.selectAll("g.category").data((function(t){return t.categories}),p),S=M.enter().append("g").attr("class","category");M.attr("transform",(function(t){return l(0,t.y)})),S.append("rect").attr("class","catrect").attr("pointer-events","none"),M.select("rect.catrect").attr("fill","none").attr("width",(function(t){return t.width})).attr("height",(function(t){return t.height})),T(S);var E=M.selectAll("rect.bandrect").data((function(t){return t.bands}),p);E.each((function(){s.raiseToTop(this)})),E.attr("fill",(function(t){return t.color}));var D=E.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",(function(t){return t.color})).attr("fill-opacity",0);E.attr("fill",(function(t){return t.color})).attr("width",(function(t){return t.width})).attr("height",(function(t){return t.height})).attr("y",(function(t){return t.y})).attr("cursor",(function(t){return"fixed"===t.parcatsViewModel.arrangement?"default":"perpendicular"===t.parcatsViewModel.arrangement?"ns-resize":"move"})),k(D),E.exit().remove(),S.append("text").attr("class","catlabel").attr("pointer-events","none");var z=e._fullLayout.paper_bgcolor;M.select("text.catlabel").attr("text-anchor",(function(t){return d(t)?"start":"end"})).attr("alignment-baseline","middle").style("text-shadow",f.makeTextShadow(z)).style("fill","rgb(0, 0, 0)").attr("x",(function(t){return d(t)?t.width+5:-5})).attr("y",(function(t){return t.height/2})).text((function(t){return t.model.categoryLabel})).each((function(t){u.font(n.select(this),t.parcatsViewModel.categorylabelfont),f.convertToTspans(n.select(this),e)})),S.append("text").attr("class","dimlabel"),M.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",(function(t){return"fixed"===t.parcatsViewModel.arrangement?"default":"ew-resize"})).attr("x",(function(t){return t.width/2})).attr("y",-5).text((function(t,e){return 0===e?t.parcatsViewModel.model.dimensions[t.model.dimensionInd].dimensionLabel:null})).each((function(t){u.font(n.select(this),t.parcatsViewModel.labelfont)})),M.selectAll("rect.bandrect").on("mouseover",L).on("mouseout",C),M.exit().remove(),A.call(n.behavior.drag().origin((function(t){return{x:t.x,y:0}})).on("dragstart",P).on("drag",O).on("dragend",I)),h.each((function(t){t.traceSelection=n.select(this),t.pathSelection=n.select(this).selectAll("g.paths").selectAll("path.path"),t.dimensionSelection=n.select(this).selectAll("g.dimensions").selectAll("g.dimension")})),h.exit().remove()}function p(t){return t.key}function d(t){var e=t.parcatsViewModel.dimensions.length,r=t.parcatsViewModel.dimensions[e-1].model.dimensionInd;return t.model.dimensionInd===r}function v(t,e){return t.model.rawColor>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=A(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=A(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,k={countLabel:y,categoryLabel:g,probabilityLabel:_.toFixed(3)},A=[];-1!==f.parcatsViewModel.hoverinfoItems.indexOf("count")&&A.push(["Count:",k.countLabel].join(" ")),-1!==f.parcatsViewModel.hoverinfoItems.indexOf("probability")&&(A.push("P(color ∩ "+g+"): "+k.probabilityLabel),A.push("P("+g+" | color): "+w.toFixed(3)),A.push("P(color | "+g+"): "+T.toFixed(3)));var M=A.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:k,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")),k(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)}},45784:function(t,e,r){"use strict";var n=r(45460);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)}},73362:function(t,e,r){"use strict";var n=r(50693),i=r(13838),a=r(41940),o=r(27670).Y,s=r(1426).extendFlat,l=r(44467).templatedArray;t.exports={domain:o({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:a({editType:"plot"}),tickfont:a({editType:"plot"}),rangefont:a({editType:"plot"}),dimensions:l("dimension",{label:{valType:"string",editType:"plot"},tickvals:s({},i.tickvals,{editType:"plot"}),ticktext:s({},i.ticktext,{editType:"plot"}),tickformat:s({},i.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:s({editType:"calc"},n("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"})),unselected:{line:{color:{valType:"color",dflt:"#7f7f7f",editType:"plot"},opacity:{valType:"number",min:0,max:1,dflt:"auto",editType:"plot"},editType:"plot"},editType:"plot"}}},57920:function(t,e,r){"use strict";var n=r(25706),i=r(39898),a=r(28984).keyFun,o=r(28984).repeat,s=r(71828).sorterAsc,l=r(71828).strTranslate,u=n.bar.snapRatio;function c(t,e){return t*(1-u)+e*u}var f=n.bar.snapClose;function h(t,e){return t*(1-f)+e*f}function p(t,e,r,n){if(function(t,e){for(var r=0;r=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 k(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 A(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(A)).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(k).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(A)):[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]}}},71791:function(t,e,r){"use strict";t.exports={attributes:r(73362),supplyDefaults:r(3633),calc:r(24639),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:r(49351),categories:["gl","regl","noOpacity","noHover"],meta:{}}},49351:function(t,e,r){"use strict";var n=r(39898),i=r(27659).a0,a=r(21341),o=r(77922);e.name="parcoords",e.plot=function(t){var e=i(t.calcdata,"parcoords")[0];e.length&&a(t,e)},e.clean=function(t,e,r,n){var i=n._has&&n._has("parcoords"),a=e._has&&e._has("parcoords");i&&!a&&(n._paperdiv.selectAll(".parcoords").remove(),n._glimages.selectAll("*").remove())},e.toSVG=function(t){var e=t._fullLayout._glimages,r=n.select(t).selectAll(".svg-container");r.filter((function(t,e){return e===r.size()-1})).selectAll(".gl-canvas-context, .gl-canvas-focus").each((function(){var t=this,r=t.toDataURL("image/png");e.append("svg:image").attr({xmlns:o.svg,"xlink:href":r,preserveAspectRatio:"none",x:0,y:0,width:t.style.width,height:t.style.height})})),window.setTimeout((function(){n.selectAll("#filterBarPattern").attr("id","filterBarPattern")}),60)}},24639:function(t,e,r){"use strict";var n=r(71828).isArrayOrTypedArray,i=r(21081),a=r(28984).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;rf&&(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")}},1602:function(t,e,r){"use strict";var n=r(71828).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)}},67618:function(t,e,r){"use strict";var n=r(71791);n.plot=r(21341),t.exports=n},83398:function(t,e,r){"use strict";var n=r(56068),i=n(["precision highp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\n p17_20, p21_24, p25_28, p29_32,\n p33_36, p37_40, p41_44, p45_48,\n p49_52, p53_56, p57_60, colors;\n\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\n\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\nuniform float maskHeight;\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\nuniform vec4 contextColor;\nuniform sampler2D maskTexture, palette;\n\nbool isPick = (drwLayer > 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(25706).maxDimensionCount,s=r(71828),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 v(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(T,0,0,r.canvasWidth,r.canvasHeight);var p=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&no._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(A)).style("cursor","default");var G=H.selectAll("."+m.cn.axisHeading).data(v,d);G.enter().append("g").classed(m.cn.axisHeading,!0);var Z=G.selectAll("."+m.cn.axisTitle).data(v,d);Z.enter().append("text").classed(m.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",o?"none":"auto"),Z.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 Y=H.selectAll("."+m.cn.axisExtent).data(v,d);Y.enter().append("g").classed(m.cn.axisExtent,!0);var W=Y.selectAll("."+m.cn.axisExtentTop).data(v,d);W.enter().append("g").classed(m.cn.axisExtentTop,!0),W.attr("transform",u(0,-m.axisExtentOffset));var X=W.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=Y.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,A,t)}},21341:function(t,e,r){"use strict";var n=r(17171),i=r(79749),a=r(1602).isVisible,o={};function s(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}(t.exports=function(t,e){var r=t._fullLayout;if(i(t,[],o)){var l={},u={},c={},f={},h=r._size;e.forEach((function(e,r){var n=e[0].trace;c[r]=n.index;var i=f[r]=n._fullInput.index;l[r]=t.data[i].dimensions,u[r]=t.data[i].dimensions.slice()})),n(t,e,{width:h.w,height:h.h,margin:{t:h.t,r:h.r,b:h.b,l:h.l}},{filterChanged:function(e,n,i){var a=u[e][n],o=i.map((function(t){return t.slice()})),s="dimensions["+n+"].constraintrange",l=r._tracePreGUI[t._fullData[c[e]]._fullInput.uid];if(void 0===l[s]){var h=a.constraintrange;l[s]=h||null}var p=t._fullData[c[e]].dimensions[n];o.length?(1===o.length&&(o=o[0]),a.constraintrange=o,p.constraintrange=o.slice(),o=[o]):(delete a.constraintrange,delete p.constraintrange,o=null);var d={};d[s]=o,t.emit("plotly_restyle",[d,[f[e]]])},hover:function(e){t.emit("plotly_hover",e)},unhover:function(e){t.emit("plotly_unhover",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return s(t,e,r)-s(t,e,n)}}(r,u[e].filter(a));l[e].sort(n),u[e].filter((function(t){return!a(t)})).sort((function(t){return u[e].indexOf(t)})).forEach((function(t){l[e].splice(l[e].indexOf(t),1),l[e].splice(u[e].indexOf(t),0,t)})),t.emit("plotly_restyle",[{dimensions:[l[e]]},[f[e]]])}})}}).reglPrecompiled=o},34e3:function(t,e,r){"use strict";var n=r(9012),i=r(27670).Y,a=r(41940),o=r(22399),s=r(5386).f,l=r(5386).s,u=r(1426).extendFlat,c=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"},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({},c,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:u({},c,{}),outsidetextfont:u({},c,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:u({},c,{}),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({},c,{}),titleposition:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"calc"}}}},13584:function(t,e,r){"use strict";var n=r(74875);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)}},32354:function(t,e,r){"use strict";var n=r(92770),i=r(84267),a=r(7901),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;c0){s=!0;break}}s||(o=0)}return{hasLabels:r,hasValues:a,len:o}}t.exports={handleLabelsAndValues:l,supplyDefaults:function(t,e,r,n){function u(r,n){return i.coerce(t,e,a,r,n)}var c=l(u("labels"),u("values")),f=c.len;if(e._hasLabels=c.hasLabels,e._hasValues=c.hasValues,!e._hasLabels&&e._hasValues&&(u("label0"),u("dlabel")),f){e._length=f,u("marker.line.width")&&u("marker.line.color"),u("marker.colors"),u("scalegroup");var h,p=u("text"),d=u("texttemplate");if(d||(h=u("textinfo",Array.isArray(p)?"text+percent":"percent")),u("hovertext"),u("hovertemplate"),d||h&&"none"!==h){var v=u("textposition");s(t,e,n,u,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(v)||"auto"===v||"outside"===v)&&u("automargin"),("inside"===v||"auto"===v||Array.isArray(v))&&u("insidetextorientation")}o(e,n,u);var g=u("hole");if(u("title.text")){var y=u("title.position",g?"middle center":"top center");g||"middle center"!==y||(e.title.position="top center"),i.coerceFont(u,"title.font",n.font)}u("sort"),u("direction"),u("rotation"),u("pull")}else e.visible=!1}}},20007:function(t,e,r){"use strict";var n=r(23469).appendArrayMultiPointValues;t.exports=function(t,e){var r={curveNumber:e.index,pointNumbers:t.pts,data:e._input,fullData:e,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return 1===t.pts.length&&(r.pointNumber=r.i=t.pts[0]),n(r,e,t.pts),"funnelarea"===e.type&&(delete r.v,delete r.i),r}},53581:function(t,e,r){"use strict";var n=r(71828);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;r"),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=k(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:A(a,o/e),rotate:M(i)}}function k(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:A(a,o/e),rotate:M(i+Math.PI/2)}}function A(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 k=y.hole;if(i.v===v.vTotal){var A="M"+(u+i.px0[0])+","+(c+i.px0[1])+P(i.px0,i.pxmid,!0,1)+P(i.pxmid,i.px0,!0,1)+"Z";k?d.attr("d","M"+(u+k*i.px0[0])+","+(c+k*i.px0[1])+P(i.px0,i.pxmid,!1,k)+P(i.pxmid,i.px0,!1,k)+"Z"+A):d.attr("d",A)}else{var M=P(i.px0,i.px1,!0,1);if(k){var S=1-k;d.attr("d","M"+(u+k*i.px1[0])+","+(c+k*i.px1[1])+P(i.px1,i.px0,!1,k)+"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,k=void 0===_?i.pxmid:D(v.r,_);if(d.targetX=u+k[0]*d.rCenter+(d.x||0),d.targetY=c+k[1]*d.rCenter+(d.y||0),R(d,m),d.outside){var A=d.targetY;i.yLabelMin=A-m.height/2,i.yLabelMid=A,i.yLabelMax=A+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 k=n.select(this).selectAll("g.titletext").data(y.title.text?[0]:[]);if(k.enter().append("g").classed("titletext",!0),k.exit().remove(),k.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 A=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-A.left,0),r:Math.max(A.right-(v.cx+v.r),0),b:Math.max(A.bottom-(v.cy+v.r),0),t:Math.max(v.cy-v.r-A.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}},68357:function(t,e,r){"use strict";var n=r(39898),i=r(63463),a=r(72597).resizeText;t.exports=function(t){var e=t._fullLayout._pielayer.selectAll(".trace");a(t,e,"pie"),e.each((function(t){var e=t[0].trace,r=n.select(this);r.style({opacity:e.opacity}),r.selectAll("path.surface").each((function(t){n.select(this).call(i,t,e)}))}))}},63463:function(t,e,r){"use strict";var n=r(7901),i=r(53581).castOption;t.exports=function(t,e,r){var a=r.marker.line,o=i(a.color,e.pts)||n.defaultLine,s=i(a.width,e.pts)||0;t.style("stroke-width",s).call(n.fill,e.color).call(n.stroke,o)}},10959:function(t,e,r){"use strict";var n=r(82196);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}},42743:function(t,e,r){"use strict";var n=r(9330).gl_pointcloud2d,i=r(78614),a=r(71739).findExtremes,o=r(34603);function s(t,e){this.scene=t,this.uid=e,this.type="pointcloud",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color="rgb(0, 0, 0)",this.name="",this.hoverinfo="all",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=n(t.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var l=s.prototype;l.handlePick=function(t){var e=this.idToIndex[t.pointId];return{trace:this,dataCoord:t.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*e],this.pickXYData[2*e+1]]:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:this.color,name:this.name,pointIndex:e,hoverinfo:this.hoverinfo}},l.update=function(t){this.index=t.index,this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(t),this.color=o(t,{})},l.updateFast=function(t){var e,r,n,o,s,l,u=this.xData=this.pickXData=t.x,c=this.yData=this.pickYData=t.y,f=this.pickXYData=t.xy,h=t.xbounds&&t.ybounds,p=t.indices,d=this.bounds;if(f){if(n=f,e=f.length>>>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}},33876:function(t,e,r){"use strict";var n=r(71828),i=r(10959);t.exports=function(t,e,r){function a(r,a){return n.coerce(t,e,i,r,a)}a("x"),a("y"),a("xbounds"),a("ybounds"),t.xy&&t.xy instanceof Float32Array&&(e.xy=t.xy),t.indices&&t.indices instanceof Int32Array&&(e.indices=t.indices),a("text"),a("marker.color",r),a("marker.opacity"),a("marker.blend"),a("marker.sizemin"),a("marker.sizemax"),a("marker.border.color",r),a("marker.border.arearatio"),e._length=null}},20593:function(t,e,r){"use strict";["*pointcloud* trace is deprecated!","Please consider switching to the *scattergl* trace type."].join(" "),t.exports={attributes:r(10959),supplyDefaults:r(33876),calc:r(36563),plot:r(42743),moduleType:"trace",name:"pointcloud",basePlotModule:r(4796),categories:["gl","gl2d","showLegend"],meta:{}}},39953:function(t,e,r){"use strict";var n=r(41940),i=r(9012),a=r(22399),o=r(77914),s=r(27670).Y,l=r(5386).f,u=r(50693),c=r(44467).templatedArray,f=r(12663).descriptionOnlyNumbers,h=r(1426).extendFlat,p=r(30962).overrideAll;(t.exports=p({hoverinfo:h({},i.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:o.hoverlabel,domain:s({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:f("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:n({}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:a.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:["value","label"]})},link:{arrowlen:{valType:"number",min:0,dflt:0},label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:a.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:o.hoverlabel,hovertemplate:l({},{keys:["value","label"]}),colorscales:c("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:h(u().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")).transforms=void 0},75536:function(t,e,r){"use strict";var n=r(30962).overrideAll,i=r(27659).a0,a=r(60436),o=r(528),s=r(6964),l=r(28569),u=r(47322).prepSelect,c=r(71828),f=r(73972),h="sankey";function p(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,a="pan"===n.dragmode?"move":"crosshair",o=r._bgRect;if(o&&"pan"!==i&&"zoom"!==i){s(o,a);var h={_id:"x",c2p:c.identity,_offset:r._sankey.translateX,_length:r._sankey.width},p={_id:"y",c2p:c.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:o.node(),plotinfo:{id:e,xaxis:h,yaxis:p,fillRangeItems:c.noop},subplot:e,xaxes:[h],yaxes:[p],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;rm&&(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})}},85247:function(t){"use strict";t.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}},26857:function(t,e,r){"use strict";var n=r(71828),i=r(39953),a=r(7901),o=r(84267),s=r(27670).c,l=r(38048),u=r(44467),c=r(85501);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}},29396:function(t,e,r){"use strict";t.exports={attributes:r(39953),supplyDefaults:r(26857),calc:r(92930),plot:r(60436),moduleType:"trace",name:"sankey",basePlotModule:r(75536),selectPoints:r(84564),categories:["noOpacity"],meta:{}}},60436:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=i.numberFormat,o=r(3393),s=r(30211),l=r(7901),u=r(85247).cn,c=i._;function f(t){return""!==t}function h(t,e){return t.filter((function(t){return t.key===e.traceId}))}function p(t,e){n.select(t).select("path").style("fill-opacity",e),n.select(t).select("rect").style("fill-opacity",e)}function d(t){n.select(t).select("text.name").style("fill","black")}function v(t){return function(e){return-1!==t.node.sourceLinks.indexOf(e.link)||-1!==t.node.targetLinks.indexOf(e.link)}}function g(t){return function(e){return-1!==e.node.sourceLinks.indexOf(t.link)||-1!==e.node.targetLinks.indexOf(t.link)}}function y(t,e,r){e&&r&&h(r,e).selectAll("."+u.sankeyLink).filter(v(e)).call(x.bind(0,e,r,!1))}function m(t,e,r){e&&r&&h(r,e).selectAll("."+u.sankeyLink).filter(v(e)).call(b.bind(0,e,r,!1))}function x(t,e,r,n){var i=n.datum().link.label;n.style("fill-opacity",(function(t){if(!t.link.concentrationscale)return.4})),i&&h(e,t).selectAll("."+u.sankeyLink).filter((function(t){return t.link.label===i})).style("fill-opacity",(function(t){if(!t.link.concentrationscale)return.4})),r&&h(e,t).selectAll("."+u.sankeyNode).filter(g(t)).call(y)}function b(t,e,r,n){var i=n.datum().link.label;n.style("fill-opacity",(function(t){return t.tinyColorAlpha})),i&&h(e,t).selectAll("."+u.sankeyLink).filter((function(t){return t.link.label===i})).style("fill-opacity",(function(t){return t.tinyColorAlpha})),r&&h(e,t).selectAll(u.sankeyNode).filter(g(t)).call(m)}function _(t,e){var r=t.hoverlabel||{},n=i.nestedProperty(r,e).get();return!Array.isArray(n)&&n}t.exports=function(t,e){for(var r=t._fullLayout,i=r._paper,h=r._size,v=0;v"),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})}}})}},3393:function(t,e,r){"use strict";var n=r(49887),i=r(29502).k4,a=r(39898),o=r(30838),s=r(86781),l=r(85247),u=r(84267),c=r(7901),f=r(91424),h=r(71828),p=h.strTranslate,d=h.strRotate,v=r(28984),g=v.keyFun,y=v.repeat,m=v.unwrap,x=r(63893),b=r(73972),_=r(18783),w=_.CAP_SHIFT,T=_.LINE_SPACING;function k(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,k=n();for(var A 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=k.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(k)}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:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function A(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,i){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,a,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;el&&C[y].gap;)y--;for(x=C[y].s,v=C.length-1;v>y;v--)C[v].s=x;for(;lS[f]&&f=0;f--){var h=t[f];if("scatter"===h.type&&h.xaxis===u.xaxis&&h.yaxis===u.yaxis){h.opacity=void 0;break}}}}}},17438:function(t,e,r){"use strict";var n=r(71828),i=r(73972),a=r(82196),o=r(47581),s=r(34098),l=r(67513),u=r(73927),c=r(565),f=r(49508),h=r(11058),p=r(94039),d=r(82410),v=r(28908),g=r(71828).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=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 aY!=(N=D[O][1])>=Y&&(R=D[O-1][0],F=D[O][0],N-B&&(z=R+(F-R)*(Y-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 W=s.defaultLine;return s.opacity(f.fillcolor)?W=f.fillcolor:s.opacity((f.line||{}).color)&&(W=f.line.color),n.extendFlat(t,{distance:t.maxHoverDistance,x0:H,x1:q,y0:Y,y1:Y,color:W,hovertemplate:!1}),delete t.index,f.text&&!Array.isArray(f.text)?t.text=String(f.text):t.text=f.name,[t]}}}},67368:function(t,e,r){"use strict";var n=r(34098);t.exports={hasLines:n.hasLines,hasMarkers:n.hasMarkers,hasText:n.hasText,isBubble:n.isBubble,attributes:r(82196),layoutAttributes:r(21479),supplyDefaults:r(17438),crossTraceDefaults:r(34936),supplyLayoutDefaults:r(79334),calc:r(47761).calc,crossTraceCalc:r(72626),arraysToCalcdata:r(75225),plot:r(32663),colorbar:r(4898),formatLabels:r(8225),style:r(16296).style,styleOnSelect:r(16296).styleOnSelect,hoverPoints:r(33720),selectPoints:r(98002),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:r(93612),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}},21479:function(t){"use strict";t.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}},79334:function(t,e,r){"use strict";var n=r(71828),i=r(21479);t.exports=function(t,e){var r,a="group"===e.barmode;"group"===e.scattermode&&("scattergap",r=a?e.bargap:.2,n.coerce(t,e,i,"scattergap",r))}},11058:function(t,e,r){"use strict";var n=r(71828).isArrayOrTypedArray,i=r(52075).hasColorscale,a=r(1586);t.exports=function(t,e,r,o,s,l){l||(l={});var u=(t.marker||{}).color;s("line.color",r),i(t,"line")?a(t,e,o,s,{prefix:"line.",cLetter:"c"}):s("line.color",!n(u)&&u||r),s("line.width"),l.noDash||s("line.dash"),l.backoff&&s("line.backoff")}},34621:function(t,e,r){"use strict";var n=r(91424),i=r(50606),a=i.BADNUM,o=i.LOG_CLIP,s=o+.5,l=o-.5,u=r(71828),c=u.segmentsIntersect,f=u.constrain,h=r(47581);t.exports=function(t,e){var r,i,o,p,d,v,g,y,m,x,b,_,w,T,k,A,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),Z=0;function Y(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 W(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[Z-1][0],i=r===G[Z-1][1];if(!n||!i)if(Z>1){var a=e===G[Z-2][0],o=r===G[Z-2][1];n&&(e===at||e===ot)&&a?o?Z--:G[Z-1]=t:i&&(r===st||r===lt)&&o?a?Z--:G[Z-1]=t:G[Z++]=t}else G[Z++]=t}function dt(t){G[Z-1][0]!==t[0]&&G[Z-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(Z)if(et){var n=nt(et,e);n.length>1&&(dt(n[0]),G[Z++]=n[1])}else rt=nt(G[Z-1],e)[0],G[Z++]=rt;else G[Z++]=[K||e[0],$||e[1]];var i=G[Z-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[Z++]=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,Z))}var mt=N.slice(N.length-1);if(z&&"h"!==mt&&"v"!==mt){for(var xt=!1,bt=-1,_t=[],wt=0;wt=0?l=p:(l=p=h,h++),l0?Math.max(r,a):0}}},4898:function(t){"use strict";t.exports={container:"marker",min:"cmin",max:"cmax"}},49508:function(t,e,r){"use strict";var n=r(7901),i=r(52075).hasColorscale,a=r(1586),o=r(34098);t.exports=function(t,e,r,s,l,u){var c=o.isBubble(t),f=(t.line||{}).color;u=u||{},f&&(r=f),l("marker.symbol"),l("marker.opacity",c?.7:1),l("marker.size"),u.noAngle||(l("marker.angle"),u.noAngleRef||l("marker.angleref"),u.noStandOff||l("marker.standoff")),l("marker.color",r),i(t,"marker")&&a(t,e,s,l,{prefix:"marker.",cLetter:"c"}),u.noSelect||(l("selected.marker.color"),l("unselected.marker.color"),l("selected.marker.size"),l("unselected.marker.size")),u.noLine||(l("marker.line.color",f&&!Array.isArray(f)&&e.marker.color!==f?f:c?n.background:n.defaultLine),i(t,"marker.line")&&a(t,e,s,l,{prefix:"marker.line.",cLetter:"c"}),l("marker.line.width",c?1:0)),c&&(l("marker.sizeref"),l("marker.sizemin"),l("marker.sizemode")),u.gradient&&"none"!==l("marker.gradient.type")&&l("marker.gradient.color")}},73927:function(t,e,r){"use strict";var n=r(71828).dateTick0,i=r(50606).ONEWEEK;function a(t,e){return n(e,t%i==0?1:0)}t.exports=function(t,e,r,n,i){if(i||(i={x:!0,y:!0}),i.x){var o=n("xperiod");o&&(n("xperiod0",a(o,e.xcalendar)),n("xperiodalignment"))}if(i.y){var s=n("yperiod");s&&(n("yperiod0",a(s,e.ycalendar)),n("yperiodalignment"))}}},32663:function(t,e,r){"use strict";var n=r(39898),i=r(73972),a=r(71828),o=a.ensureSingle,s=a.identity,l=r(91424),u=r(34098),c=r(34621),f=r(68687),h=r(61082).tester;function p(t,e,r,f,p,d,v){var g;!function(t,e,r,i,o){var s=r.xaxis,l=r.yaxis,c=n.extent(a.simpleMap(s.range,s.r2c)),f=n.extent(a.simpleMap(l.range,l.r2c)),h=i[0].trace;if(u.hasMarkers(h)){var p=h.marker.maxdisplayed;if(0!==p){var d=i.filter((function(t){return t.x>=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 m(t){return y?t.transition():t}var x=r.xaxis,b=r.yaxis,_=f[0].trace,w=_.line,T=n.select(d),k=o(T,"g","errorbars"),A=o(T,"g","lines"),M=o(T,"g","points"),S=o(T,"g","text");if(i.getComponentMethod("errorbars","plot")(t,k,r,v),!0===_.visible){var E,L;m(T).style("opacity",_.opacity);var C=_.fill.charAt(_.fill.length-1);"x"!==C&&"y"!==C&&(C=""),f[0][r.isRangePlot?"nodeRangePlot3":"node3"]=T;var P,O,I="",D=[],z=_._prevtrace;z&&(I=z._prevRevpath||"",L=z._nextFill,D=z._polygons);var R,F,B,N,j,U,V,H="",q="",G=[],Z=a.noop;if(E=_._ownFill,u.hasLines(_)||"none"!==_.fill){for(L&&L.datum(f),-1!==["hv","vh","hvh","vhv"].indexOf(w.shape)?(R=l.steps(w.shape),F=l.steps(w.shape.split("").reverse().join(""))):R=F="spline"===w.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),w.smoothing):l.smoothopen(t,w.smoothing)}:function(t){return"M"+t.join("L")},B=function(t){return F(t.reverse())},G=c(f,{xaxis:x,yaxis:b,trace:_,connectGaps:_.connectgaps,baseTolerance:Math.max(w.width||1,3)/4,shape:w.shape,backoff:w.backoff,simplify:w.simplify,fill:_.fill}),V=_._polygons=new Array(G.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()}},98002:function(t,e,r){"use strict";var n=r(34098);t.exports=function(t,e){var r,i,a,o,s=t.cd,l=t.xaxis,u=t.yaxis,c=[],f=s[0].trace;if(!n.hasMarkers(f)&&!n.hasText(f))return[];if(!1===e)for(r=0;r0){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;e-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;n=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}},13551:function(t,e,r){"use strict";t.exports={plot:r(58925),attributes:r(44542),markerSymbols:r(87381),supplyDefaults:r(21428),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:r(36563),moduleType:"trace",name:"scatter3d",basePlotModule:r(58547),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}},97001:function(t,e,r){"use strict";var n=r(82196),i=r(9012),a=r(5386).f,o=r(5386).s,s=r(50693),l=r(1426).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()}},34618:function(t,e,r){"use strict";var n=r(92770),i=r(36922),a=r(75225),o=r(66279),s=r(47761).calcMarkerSize,l=r(22882);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;u")}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)}}},46858:function(t,e,r){"use strict";t.exports={attributes:r(97001),supplyDefaults:r(98965),colorbar:r(4898),formatLabels:r(48953),calc:r(34618),plot:r(1913),style:r(16296).style,styleOnSelect:r(16296).styleOnSelect,hoverPoints:r(22931),selectPoints:r(98002),eventData:r(16165),moduleType:"trace",name:"scattercarpet",basePlotModule:r(93612),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}},1913:function(t,e,r){"use strict";var n=r(32663),i=r(89298),a=r(91424);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")}function p(t){return t+"°"}}(u,v,t,l[0].t.labels),t.hovertemplate=u.hovertemplate,[t]}}},17988:function(t,e,r){"use strict";t.exports={attributes:r(19316),supplyDefaults:r(10659),colorbar:r(4898),formatLabels:r(82719),calc:r(84622),calcGeoJSON:r(89171).calcGeoJSON,plot:r(89171).plot,style:r(33095),styleOnSelect:r(16296).styleOnSelect,hoverPoints:r(14977),eventData:r(84084),selectPoints:r(20548),moduleType:"trace",name:"scattergeo",basePlotModule:r(44622),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}},89171:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=r(90973).getTopojsonFeatures,o=r(18214),s=r(41327),l=r(71739).findExtremes,u=r(50606).BADNUM,c=r(47761).calcMarkerSize,f=r(34098),h=r(33095);t.exports={calcGeoJSON:function(t,e){var r,n,i=t[0].trace,o=e[i.geo],f=o._subplot,h=i._length;if(Array.isArray(i.locations)){var p=i.locationmode,d="geojson-id"===p?s.extractTraceFeature(t):a(i,f.topojson);for(r=0;r=g,w=2*b,T={},k=l.makeCalcdata(e,"x"),A=m.makeCalcdata(e,"y"),M=s(e,l,"x",k),S=s(e,m,"y",A),E=M.vals,L=S.vals;e._x=E,e._y=L,e.xperiodalignment&&(e._origX=k,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=A,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}]}},78232: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]}}},19635:function(t,e,r){"use strict";var n=r(92770),i=r(82019),a=r(25075),o=r(73972),s=r(71828),l=r(91424),u=r(41675),c=r(81697).formatColor,f=r(34098),h=r(39984),p=r(68645),d=r(78232),v=r(37822).DESELECTDIM,g={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},y=r(23469).appendArrayPointValue;function m(t,e){var r,i=t._fullLayout,a=e._length,o=e.textfont,l=e.textposition,u=Array.isArray(l)?l:[l],c=o.color,f=o.size,h=o.family,p={},d=t._context.plotGlPixelRatio,v=e.texttemplate;if(v){p.text=[];var g=i._d3locale,m=Array.isArray(v),x=m?Math.min(v.length,a):a,b=m?function(t){return v[t]}:function(){return v};for(r=0;rd.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}}},47148:function(t,e,r){"use strict";var n=r(71828),i=r(73972),a=r(68645),o=r(42341),s=r(47581),l=r(34098),u=r(67513),c=r(73927),f=r(49508),h=r(11058),p=r(28908),d=r(82410);t.exports=function(t,e,r,v){function g(r,i){return n.coerce(t,e,o,r,i)}var y=!!t.marker&&a.isOpenSymbol(t.marker.symbol),m=l.isBubble(t),x=u(t,e,v,g);if(x){c(t,e,v,g),g("xhoverformat"),g("yhoverformat");var b=x100},e.isDotSymbol=function(t){return"string"==typeof t?n.DOT_RE.test(t):t>200}},20794:function(t,e,r){"use strict";var n=r(73972),i=r(71828),a=r(34603);function o(t,e,r,o){var s=t.xa,l=t.ya,u=t.distance,c=t.dxy,f=t.index,h={pointNumber:f,x:e[f],y:r[f]};h.tx=Array.isArray(o.text)?o.text[f]:o.text,h.htx=Array.isArray(o.hovertext)?o.hovertext[f]:o.hovertext,h.data=Array.isArray(o.customdata)?o.customdata[f]:o.customdata,h.tp=Array.isArray(o.textposition)?o.textposition[f]:o.textposition;var p=o.textfont;p&&(h.ts=i.isArrayOrTypedArray(p.size)?p.size[f]:p.size,h.tc=Array.isArray(p.color)?p.color[f]:p.color,h.tf=Array.isArray(p.family)?p.family[f]:p.family);var d=o.marker;d&&(h.ms=i.isArrayOrTypedArray(d.size)?d.size[f]:d.size,h.mo=i.isArrayOrTypedArray(d.opacity)?d.opacity[f]:d.opacity,h.mx=i.isArrayOrTypedArray(d.symbol)?d.symbol[f]:d.symbol,h.ma=i.isArrayOrTypedArray(d.angle)?d.angle[f]:d.angle,h.mc=i.isArrayOrTypedArray(d.color)?d.color[f]:d.color);var v=d&&d.line;v&&(h.mlc=Array.isArray(v.color)?v.color[f]:v.color,h.mlw=i.isArrayOrTypedArray(v.width)?v.width[f]:v.width);var g=d&&d.gradient;g&&"none"!==g.type&&(h.mgt=Array.isArray(g.type)?g.type[f]:g.type,h.mgc=Array.isArray(g.color)?g.color[f]:g.color);var y=s.c2p(h.x,!0),m=l.c2p(h.y,!0),x=h.mrc||1,b=o.hoverlabel;b&&(h.hbg=Array.isArray(b.bgcolor)?b.bgcolor[f]:b.bgcolor,h.hbc=Array.isArray(b.bordercolor)?b.bordercolor[f]:b.bordercolor,h.hts=i.isArrayOrTypedArray(b.font.size)?b.font.size[f]:b.font.size,h.htc=Array.isArray(b.font.color)?b.font.color[f]:b.font.color,h.htf=Array.isArray(b.font.family)?b.font.family[f]:b.font.family,h.hnl=i.isArrayOrTypedArray(b.namelength)?b.namelength[f]:b.namelength);var _=o.hoverinfo;_&&(h.hi=Array.isArray(_)?_[f]:_);var w=o.hovertemplate;w&&(h.ht=Array.isArray(w)?w[f]:w);var T={};T[t.index]=h;var k=o._origX,A=o._origY,M=i.extendFlat({},t,{color:a(o,h),x0:y-x,x1:y+x,xLabelVal:k?k[f]:h.x,y0:m-x,y1:m+x,yLabelVal:A?A[f]:h.y,cd:T,distance:u,spikeDistance:c,hovertemplate:h.ht});return h.htx?M.text=h.htx:h.tx?M.text=h.tx:o.text&&(M.text=o.text),i.fillText(h,o,M),n.getComponentMethod("errorbars","hoverInfo")(h,o,M),M}t.exports={hoverPoints:function(t,e,r,n){var i,a,s,l,u,c,f,h,p,d,v=t.cd,g=v[0].t,y=v[0].trace,m=t.xa,x=t.ya,b=g.x,_=g.y,w=m.c2p(e),T=x.c2p(r),k=t.distance;if(g.tree){var A=m.p2c(w-k),M=m.p2c(w+k),S=x.p2c(T-k),E=x.p2c(T+k);i="x"===n?g.tree.range(Math.min(A,M),Math.min(x._rl[0],x._rl[1]),Math.max(A,M),Math.max(x._rl[0],x._rl[1])):g.tree.range(Math.min(A,M),Math.min(S,E),Math.max(A,M),Math.max(S,E))}else i=g.ids;var L=k;if("x"===n){var C=!!y.xperiodalignment,P=!!y.yperiodalignment;for(c=0;c=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.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 A=(m.errorXOptions||[]).concat(m.errorYOptions||[]);m.error2d.update(A)}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;g")}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),k=h.c2p(w),A=b.mrc||1;t.x0=T-A,t.x1=T+A,t.y0=k-A,t.y1=k+A;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}},20467:function(t,e,r){"use strict";t.exports={attributes:r(99181),supplyDefaults:r(76645),colorbar:r(4898),formatLabels:r(15636),calc:r(84622),plot:r(86951),hoverPoints:r(28178).hoverPoints,eventData:r(53353),selectPoints:r(86387),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.update(e)},moduleType:"trace",name:"scattermapbox",basePlotModule:r(50101),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}},86951:function(t,e,r){"use strict";var n=r(71828),i=r(15790),a=r(77734).traceLayerPrefix,o={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function s(t,e,r,n){this.type="scattermapbox",this.subplot=t,this.uid=e,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+e+"-fill",line:"source-"+e+"-line",circle:"source-"+e+"-circle",symbol:"source-"+e+"-symbol",cluster:"source-"+e+"-circle",clusterCount:"source-"+e+"-circle"},this.layerIds={fill:a+e+"-fill",line:a+e+"-line",circle:a+e+"-circle",symbol:a+e+"-symbol",cluster:a+e+"-cluster",clusterCount:a+e+"-cluster-count"},this.below=null}var l=s.prototype;l.addSource=function(t,e,r){var i={type:"geojson",data:e.geojson};r&&r.enabled&&n.extendFlat(i,{cluster:!0,clusterMaxZoom:r.maxzoom}),this.subplot.map.addSource(this.sourceIds[t],i)},l.setSourceData=function(t,e){this.subplot.map.getSource(this.sourceIds[t]).setData(e.geojson)},l.addLayer=function(t,e,r){var n={type:e.type,id:this.layerIds[t],source:this.sourceIds[t],layout:e.layout,paint:e.paint};e.filter&&(n.filter=e.filter),this.subplot.addLayer(n,r)},l.update=function(t){var e=t[0].trace,r=this.subplot,n=r.map,a=i(r.gd,t),s=r.belowLookup["trace-"+this.uid],l=!(!e.cluster||!e.cluster.enabled),u=!!this.clusterEnabled,c=this;function f(t){u?function(t){for(var e=o.cluster,r=e.length-1;r>=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;r")}}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}},91271:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:r(23580),categories:["polar","symbols","showLegend","scatter-like"],attributes:r(81245),supplyDefaults:r(22184).supplyDefaults,colorbar:r(4898),formatLabels:r(98608),calc:r(26442),plot:r(45162),style:r(16296).style,styleOnSelect:r(16296).styleOnSelect,hoverPoints:r(59150).hoverPoints,selectPoints:r(98002),meta:{}}},45162:function(t,e,r){"use strict";var n=r(32663),i=r(50606).BADNUM;t.exports=function(t,e,r){for(var a=e.layers.frontplot.select("g.scatterlayer"),o=e.xaxis,s=e.yaxis,l={xaxis:o,yaxis:s,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},u=e.radialAxis,c=e.angularAxis,f=0;f=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={}},48300:function(t,e,r){"use strict";var n=r(5386).f,i=r(5386).s,a=r(1426).extendFlat,o=r(82196),s=r(9012),l=o.line;t.exports={mode:o.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:o.text,texttemplate:i({editType:"plot"},{keys:["real","imag","text"]}),hovertext:o.hovertext,line:{color:l.color,width:l.width,dash:l.dash,backoff:l.backoff,shape:a({},l.shape,{values:["linear","spline"]}),smoothing:l.smoothing,editType:"calc"},connectgaps:o.connectgaps,marker:o.marker,cliponaxis:a({},o.cliponaxis,{dflt:!1}),textposition:o.textposition,textfont:o.textfont,fill:a({},o.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:o.fillcolor,hoverinfo:a({},s.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:o.hoveron,hovertemplate:n(),selected:o.selected,unselected:o.unselected}},30621:function(t,e,r){"use strict";var n=r(92770),i=r(50606).BADNUM,a=r(36922),o=r(75225),s=r(66279),l=r(47761).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")}}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}},85956:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"scattersmith",basePlotModule:r(7504),categories:["smith","symbols","showLegend","scatter-like"],attributes:r(48300),supplyDefaults:r(65269),colorbar:r(4898),formatLabels:r(62047),calc:r(30621),plot:r(12480),style:r(16296).style,styleOnSelect:r(16296).styleOnSelect,hoverPoints:r(11350).hoverPoints,selectPoints:r(98002),meta:{}}},12480:function(t,e,r){"use strict";var n=r(32663),i=r(50606).BADNUM,a=r(23893).smith;t.exports=function(t,e,r){for(var o=e.layers.frontplot.select("g.scatterlayer"),s=e.xaxis,l=e.yaxis,u={xaxis:s,yaxis:l,plot:e.framework,layerClipId:e._hasClipOnAxisFalse?e.clipIds.forTraces:null},c=0;c"),o.hovertemplate=h.hovertemplate,a}function x(t,e){y.push(t._hovertitle+": "+e)}}},52979:function(t,e,r){"use strict";t.exports={attributes:r(50413),supplyDefaults:r(46008),colorbar:r(4898),formatLabels:r(93645),calc:r(54337),plot:r(7507),style:r(16296).style,styleOnSelect:r(16296).styleOnSelect,hoverPoints:r(47250),selectPoints:r(98002),eventData:r(4524),moduleType:"trace",name:"scatterternary",basePlotModule:r(61639),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}},7507:function(t,e,r){"use strict";var n=r(32663);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;uh?b.sizeAvg||Math.max(b.size,3):a(e,x),p=0;pa&&l||i-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;l1&&(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||m2?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;T=0};m?(r=Math.min(y.length,b.length),l=function(t){return M(y[t])&&S(t)},f=function(t){return String(y[t])}):(r=Math.min(x.length,b.length),l=function(t){return M(x[t])&&S(t)},f=function(t){return String(x[t])}),w&&(r=Math.min(r,_.length));for(var E=0;E1){for(var O=a.randstr(),I=0;I"),name:A||D("name")?m.name:void 0,color:k("hoverlabel.bgcolor")||x.color,borderColor:k("hoverlabel.bordercolor"),fontFamily:k("hoverlabel.font.family"),fontSize:k("hoverlabel.font.size"),fontColor:k("hoverlabel.font.color"),nameLength:k("hoverlabel.namelength"),textAlign:k("hoverlabel.align"),hovertemplate:A,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,{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,{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,_)}}))}},2791:function(t,e,r){"use strict";var n=r(71828),i=r(7901),a=r(6964),o=r(53581);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}},87619:function(t,e,r){"use strict";t.exports={moduleType:"trace",name:"sunburst",basePlotModule:r(66888),categories:[],animatable:!0,attributes:r(57564),layoutAttributes:r(2654),supplyDefaults:r(17094),supplyLayoutDefaults:r(57034),calc:r(52147).calc,crossTraceCalc:r(52147).crossTraceCalc,plot:r(24714).plot,style:r(29969).style,colorbar:r(4898),meta:{}}},2654:function(t){"use strict";t.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}},57034:function(t,e,r){"use strict";var n=r(71828),i=r(2654);t.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r("sunburstcolorway",e.colorway),r("extendsunburstcolors")}},24714:function(t,e,r){"use strict";var n=r(39898),i=r(674),a=r(29502).sX,o=r(91424),s=r(71828),l=r(63893),u=r(72597),c=u.recordMinTextSize,f=u.clearMinTextSize,h=r(14575),p=r(53581).getRotationAngle,d=h.computeTransform,v=h.transformInsideText,g=r(29969).styleOne,y=r(16688).resizeText,m=r(83523),x=r(7055),b=r(2791);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"),k=r[0],A=k.trace,M=k.hierarchy,S=b.findEntryWithLevel(M,A.level),E=b.getMaxDepth(A),L=y._size,C=A.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=k.cx=L.l+L.w*(C.x[1]+C.x[0])/2,z=k.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;k.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(A.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)]},Z=function(t){return s.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,D,z)},Y=function(t){return D+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},W=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 Z(e(t))}})):f.attr("d",Z),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,A);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(A,i,y.font));w.text(e.formatSliceLabel(i,S,A,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,k),i.transform.targetX=Y(i),i.transform.targetY=W(i);var E=function(t,e){var r=t.transform;return d(r,e),r.fontSize=T.size,c(A.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(A.type,n,y),{transform:{targetX:Y(s),targetY:W(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 k=s.castOption(r,c.i,"texttemplate");if(!k)return"";var A={};c.label&&(A.label=c.label),c.hasOwnProperty("v")&&(A.value=c.v,A.valueLabel=b.formatValue(c.v,l)),A.currentPath=b.getPath(t.data),h||(A.percentParent=d/b.getValue(p),A.percentParentLabel=b.formatPercent(A.percentParent,l),A.parent=b.getPtLabel(p)),A.percentEntry=d/b.getValue(e),A.percentEntryLabel=b.formatPercent(A.percentEntry,l),A.entry=b.getPtLabel(e),A.percentRoot=d/b.getValue(f),A.percentRootLabel=b.formatPercent(A.percentRoot,l),A.root=b.getPtLabel(f),c.hasOwnProperty("color")&&(A.color=c.color);var M=s.castOption(r,c.i,"text");return(s.isValidTextValue(M)||""===M)&&(A.text=M),A.customdata=s.castOption(r,c.i,"customdata"),s.texttemplateString(k,A,i._d3locale,A,r._meta||{})}},29969:function(t,e,r){"use strict";var n=r(39898),i=r(7901),a=r(71828),o=r(72597).resizeText;function s(t,e,r){var n=e.data.data,o=!e.children,s=n.i,l=a.castOption(r,s,"marker.line.color")||i.defaultLine,u=a.castOption(r,s,"marker.line.width")||0;t.style("stroke-width",u).call(i.fill,n.color).call(i.stroke,l).style("opacity",o?r.leaf.opacity:null)}t.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(".trace");o(t,e,"sunburst"),e.each((function(t){var e=n.select(this),r=t[0].trace;e.style("opacity",r.opacity),e.selectAll("path.surface").each((function(t){n.select(this).call(s,t,r)}))}))},styleOne:s}},54532:function(t,e,r){"use strict";var n=r(7901),i=r(50693),a=r(12663).axisHoverFormat,o=r(5386).f,s=r(9012),l=r(1426).extendFlat,u=r(30962).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},18396:function(t,e,r){"use strict";var n=r(78803);t.exports=function(t,e){e.surfacecolor?n(t,e,{vals:e.surfacecolor,containerStr:"",cLetter:"c"}):n(t,e,{vals:e.z,containerStr:"",cLetter:"c"})}},43768:function(t,e,r){"use strict";var n=r(9330).gl_surface3d,i=r(9330).ndarray,a=r(9330).ndarray_linear_interpolate.d2,o=r(824),s=r(43907),l=r(71828).isArrayOrTypedArray,u=r(81697).parseColorScale,c=r(78614),f=r(21081).extractOpts;function h(t,e,r){this.scene=t,this.uid=r,this.surface=e,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var p=h.prototype;p.getXat=function(t,e,r,n){var i=l(this.data.x)?l(this.data.x[0])?this.data.x[e][t]:this.data.x[t]:t;return void 0===r?i:n.d2l(i,0,r)},p.getYat=function(t,e,r,n){var i=l(this.data.y)?l(this.data.y[0])?this.data.y[e][t]:this.data.y[e]:e;return void 0===r?i:n.d2l(i,0,r)},p.getZat=function(t,e,r,n){var i=this.data.z[e][t];return null===i&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[e][t]),void 0===r?i:n.d2l(i,0,r)},p.handlePick=function(t){if(t.object===this.surface){var e=(t.data.index[0]-1)/this.dataScaleX-1,r=(t.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(e),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);t.index=[n,i],t.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],t.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){null!=t.dataCoordinate[a]&&(t.dataCoordinate[a]*=this.scene.dataScale[a])}var o=this.data.hovertext||this.data.text;return Array.isArray(o)&&o[i]&&void 0!==o[i][n]?t.textLabel=o[i][n]:t.textLabel=o||"",t.data.dataCoordinate=t.dataCoordinate.slice(),this.surface.highlight(t.data),this.scene.glplot.spikes.position=t.dataCoordinate,!0}};var d=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function v(t,e){if(t0){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]",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"}}},51018:function(t,e,r){"use strict";var n=r(49850),i=r(1426).extendFlat,a=r(92770);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={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=u+1,a=0);return n}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,_),[]),k=f(w,T),A={},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:k,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=A[t];return A[t]=(r||0)+1,{key:t+"__"+A[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}},56269:function(t,e,r){"use strict";var n=r(1426).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}}))}},39754:function(t,e,r){"use strict";var n=r(71828),i=r(44464),a=r(27670).c;t.exports=function(t,e,r,o){function s(r,a){return n.coerce(t,e,i,r,a)}a(e,o,s),s("columnwidth"),s("header.values"),s("header.format"),s("header.align"),s("header.prefix"),s("header.suffix"),s("header.height"),s("header.line.width"),s("header.line.color"),s("header.fill.color"),n.coerceFont(s,"header.font",n.extendFlat({},o.font)),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s/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(A);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(A),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"})}},78018:function(t,e,r){"use strict";var n=r(74875);e.name="treemap",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)}},65039:function(t,e,r){"use strict";var n=r(52147);e.y=function(t,e){return n.calc(t,e)},e.T=function(t){return n._runCrossTraceCalc("treemap",t)}},43473:function(t){"use strict";t.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}},91174:function(t,e,r){"use strict";var n=r(71828),i=r(45802),a=r(7901),o=r(27670).c,s=r(90769).handleText,l=r(97313).TEXTPAD,u=r(21081),c=u.hasColorscale,f=u.handleDefaults;t.exports=function(t,e,r,u){function h(r,a){return n.coerce(t,e,i,r,a)}var p=h("labels"),d=h("parents");if(p&&p.length&&d&&d.length){var v=h("values");v&&v.length?h("branchvalues"):h("count"),h("level"),h("maxdepth"),"squarify"===h("tiling.packing")&&h("tiling.squarifyratio"),h("tiling.flip"),h("tiling.pad");var g=h("text");h("texttemplate"),e.texttemplate||h("textinfo",Array.isArray(g)?"text+label":"label"),h("hovertext"),h("hovertemplate");var y=h("pathbar.visible");s(t,e,u,h,"auto",{hasPathbar:y,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h("textposition");var m=-1!==e.textposition.indexOf("bottom");h("marker.line.width")&&h("marker.line.color",u.paper_bgcolor);var x=h("marker.colors");(e._hasColorscale=c(t,"marker","colors")||(t.marker||{}).coloraxis)?f(t,e,u,h,{prefix:"marker.",cLetter:"c"}):h("marker.depthfade",!(x||[]).length);var b=2*e.textfont.size;h("marker.pad.t",m?b/4:b),h("marker.pad.l",b/4),h("marker.pad.r",b/4),h("marker.pad.b",m?b:b/4),h("marker.cornerradius"),e._hovered={marker:{line:{width:2,color:a.contrast(u.paper_bgcolor)}}},y&&(h("pathbar.thickness",e.pathbar.textfont.size+2*l),h("pathbar.side"),h("pathbar.edgeshape")),h("sort"),h("root.color"),o(e,u,h),e._length=null}else e.visible=!1}},80694:function(t,e,r){"use strict";var n=r(39898),i=r(2791),a=r(72597).clearMinTextSize,o=r(16688).resizeText,s=r(46650);t.exports=function(t,e,r,l,u){var c,f,h=u.type,p=u.drawDescendants,d=t._fullLayout,v=d["_"+h+"layer"],g=!r;a(h,d),(c=v.selectAll("g.trace."+h).data(e,(function(t){return t[0].trace.uid}))).enter().append("g").classed("trace",!0).classed(h,!0),c.order(),!d.uniformtext.mode&&i.hasTransition(r)?(l&&(f=l()),n.transition().duration(r.duration).ease(r.easing).each("end",(function(){f&&f()})).each("interrupt",(function(){f&&f()})).each((function(){v.selectAll("g.trace").each((function(e){s(t,e,this,r,p)}))}))):(c.each((function(e){s(t,e,this,r,p)})),d.uniformtext.mode&&o(t,v.selectAll(".trace"),h)),g&&c.exit().remove()}},66209:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=r(91424),o=r(63893),s=r(37210),l=r(96362).styleOne,u=r(43473),c=r(2791),f=r(83523),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,k=d.handleSlicesExit,A=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),k(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=A(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,{hovered:!1}),s._text=(c.getPtLabel(s)||"").split("
            ").join(" ")||"";var v=i.ensureSingle(p,"g","slicetext"),k=i.ensureSingle(v,"text","",(function(t){t.attr("data-notex",1)})),C=i.ensureUniformFontSize(t,c.determineTextFont(P,s,L.font,{onPathbar:!0}));k.text(s._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(a.font,C).call(o.convertToTspans,t),s.textBB=a.bBox(k.node()),s.transform=_(s,{fontSize:C.size,onPathbar:!0}),s.transform.fontSize=C.size,T?k.transition().attrTween("transform",(function(t){var e=M(t,h,S,[g,y]);return function(t){return w(e(t))}})):k.attr("transform",w(s))}))}},52583:function(t,e,r){"use strict";var n=r(39898),i=r(71828),a=r(91424),o=r(63893),s=r(37210),l=r(96362).styleOne,u=r(43473),c=r(2791),f=r(83523),h=r(24714).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,k=v.handleSlicesExit,A=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=!I&&!C.marker.pad.t||I&&!C.marker.pad.b,z=s(r,[g,y],{packing:C.tiling.packing,squarifyratio:C.tiling.squarifyratio,flipX:C.tiling.flip.indexOf("x")>-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),k(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),k=i.ensureSingle(v,"path","surface",(function(t){t.style("pointer-events",E?"none":"all")}));T?k.transition().attrTween("d",(function(t){var e=A(t,p,j(),[g,y]);return function(t){return b(e(t))}})):k.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}),k.call(l,s,C,{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}},14102:function(t){"use strict";t.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o-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&&k&&M++,y._maxDepth=M,y._backgroundColor=v.paper_bgcolor,y._entryDepth=b.data.depth,y._atRootLevel=k;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},Z=G(0),Y=q(0),W=function(t){return Y+t},X=function(t){return Z+t};function J(t,e){return t+","+e}var K=W(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:A,strTransform:ft}):w.remove()}},96362:function(t,e,r){"use strict";var n=r(39898),i=r(7901),a=r(71828),o=r(2791),s=r(72597).resizeText;function l(t,e,r,n){var s,l,u=(n||{}).hovered,c=e.data.data,f=c.i,h=c.color,p=o.isHierarchyRoot(e),d=1;if(u)s=r._hovered.marker.line.color,l=r._hovered.marker.line.width;else if(p&&h===r.root.color)d=100,s="rgba(0,0,0,0)",l=0;else if(s=a.castOption(r,f,"marker.line.color")||i.defaultLine,l=a.castOption(r,f,"marker.line.width")||0,!r._hasColorscale&&!e.onPathbar){var v=r.marker.depthfade;if(v){var g,y=i.combine(i.addOpacity(r._backgroundColor,.75),h);if(!0===v){var m=o.getMaxDepth(r);g=isFinite(m)?o.isLeaf(e)?0:r._maxVisibleLayers-(e.data.depth-r._entryDepth):e.data.height+1}else g=e.data.depth-r._entryDepth,r._atRootLevel||g++;if(g>0)for(var x=0;x0){var b,_,w,T,k,A=t.xa,M=t.ya;"h"===d.orientation?(k=e,b="y",w=M,_="x",T=A):(k=r,b="x",w=A,_="y",T=M);var S=p[t.index];if(k>=S.span[0]&&k<=S.span[1]){var E=i.extendFlat({},t),L=T.c2p(k,!0),C=s.getKdeValue(S,d,k),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,k,d[_+"hoverformat"])+", "+p[0].t.labels.kde+" "+C.toFixed(3);for(var D=0,z=0;z")),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 k(t){return n(v,t,h[d+"hoverformat"])}}},19990:function(t,e,r){"use strict";t.exports={attributes:r(43037),layoutAttributes:r(13494),supplyDefaults:r(83266).supplyDefaults,crossTraceDefaults:r(83266).crossTraceDefaults,supplyLayoutDefaults:r(5176),calc:r(52752),crossTraceCalc:r(70766),plot:r(30436),style:r(55750).style,hoverPoints:r(61326),eventData:r(58593),selectPoints:r(81974),moduleType:"trace",name:"waterfall",basePlotModule:r(93612),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}},13494:function(t){"use strict";t.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},5176:function(t,e,r){"use strict";var n=r(71828),i=r(13494);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&&(g+=h?"M"+f[0]+","+d[1]+"V"+d[0]:"M"+f[1]+","+d[0]+"H"+f[0]),"between"!==p&&(r.isSum||s 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)}))}))}}},82887:function(t,e,r){"use strict";var n=r(89298),i=r(71828),a=r(86281),o=r(79344).p,s=r(50606).BADNUM;e.moduleType="transform",e.name="aggregate";var l=e.attributes={enabled:{valType:"boolean",dflt:!0,editType:"calc"},groups:{valType:"string",strict:!0,noBlank:!0,arrayOk:!0,dflt:"x",editType:"calc"},aggregations:{_isLinkedToArray:"aggregation",target:{valType:"string",editType:"calc"},func:{valType:"enumerated",values:["count","sum","avg","median","mode","rms","stddev","min","max","first","last","change","range"],dflt:"first",editType:"calc"},funcmode:{valType:"enumerated",values:["sample","population"],dflt:"sample",editType:"calc"},enabled:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},editType:"calc"},u=l.aggregations;function c(t,e,r,a){if(a.enabled){for(var o=a.target,l=i.nestedProperty(e,o),u=l.get(),c=function(t,e){var r=t.func,n=e.d2c,a=e.c2d;switch(r){case"count":return f;case"first":return h;case"last":return p;case"sum":return function(t,e){for(var r=0,i=0;ii&&(i=c,o=u)}}return i?a(o):s};case"rms":return function(t,e){for(var r=0,i=0,o=0;o":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)}),k(g);for(var w=o(e.transforms,r),T=0;T1?"%{group} (%{trace})":"%{group}");var l=t.styles,u=o.styles=[];if(l)for(a=0;ap)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,v.prototype),e}function v(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 m(t)}return g(t,e,r)}function g(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!v.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|w(t,e),n=d(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(rt(t,Uint8Array)){var e=new Uint8Array(t);return b(e.buffer,e.byteOffset,e.byteLength)}return x(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 "+u(t));if(rt(t,ArrayBuffer)||t&&rt(t.buffer,ArrayBuffer))return b(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(rt(t,SharedArrayBuffer)||t&&rt(t.buffer,SharedArrayBuffer)))return b(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 v.from(n,e,r);var i=function(t){if(v.isBuffer(t)){var e=0|_(t.length),r=d(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||nt(t.length)?d(0):x(t):"Buffer"===t.type&&Array.isArray(t.data)?x(t.data):void 0}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return v.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 "+u(t))}function y(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 m(t){return y(t),d(t<0?0:0|_(t))}function x(t){for(var e=t.length<0?0:0|_(t.length),r=d(e),n=0;n=p)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+p.toString(16)+" bytes");return 0|t}function w(t,e){if(v.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||rt(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 '+u(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 Q(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return tt(t).length;default:if(i)return n?-1:Q(t).length;e=(""+e).toLowerCase(),i=!0}}function T(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 F(this,e,r);case"utf8":case"utf-8":return I(this,e,r);case"ascii":return z(this,e,r);case"latin1":case"binary":return R(this,e,r);case"base64":return O(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function k(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),nt(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=v.from(e,n)),v.isBuffer(e))return 0===e.length?-1:M(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):M(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function M(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 O(t,e,r){return 0===e&&r===t.length?c.fromByteArray(t):c.fromByteArray(t.slice(e,r))}function I(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<=D)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn.length?(v.isBuffer(a)||(a=v.from(a)),a.copy(n,i)):Uint8Array.prototype.set.call(n,a,i);else{if(!v.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(n,i)}i+=a.length}return n},v.byteLength=w,v.prototype._isBuffer=!0,v.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+=" ... "),""},h&&(v.prototype[h]=v.prototype.inspect),v.prototype.compare=function(t,e,r,n,i){if(rt(t,Uint8Array)&&(t=v.from(t,t.offset,t.byteLength)),!v.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+u(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),l=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 S(this,t,e,r);case"utf8":case"utf-8":return E(this,t,e,r);case"ascii":case"latin1":case"binary":return L(this,t,e,r);case"base64":return C(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},v.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var D=4096;function z(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 j(t,e,r,n,i,a){if(!v.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 U(t,e,r,n,i){X(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 V(t,e,r,n,i){X(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 H(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 q(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,4),f.write(t,e,r,n,23,4),r+4}function G(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,8),f.write(t,e,r,n,52,8),r+8}v.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||N(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},v.prototype.readUint8=v.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},v.prototype.readUint16LE=v.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},v.prototype.readUint16BE=v.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},v.prototype.readUint32LE=v.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},v.prototype.readUint32BE=v.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},v.prototype.readBigUInt64LE=at((function(t){J(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(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||K(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||N(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},v.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(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},v.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},v.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},v.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},v.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},v.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},v.prototype.readBigInt64LE=at((function(t){J(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(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||K(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||N(t,4,this.length),f.read(this,t,!0,23,4)},v.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),f.read(this,t,!1,23,4)},v.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),f.read(this,t,!0,52,8)},v.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),f.read(this,t,!1,52,8)},v.prototype.writeUintLE=v.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||j(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||j(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},v.prototype.writeUint8=v.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,1,255,0),this[e]=255&t,e+1},v.prototype.writeUint16LE=v.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},v.prototype.writeUint16BE=v.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},v.prototype.writeUint32LE=v.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeUint32BE=v.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeBigUInt64LE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return U(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),v.prototype.writeBigUInt64BE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return V(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),v.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);j(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},v.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);j(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},v.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},v.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},v.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},v.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeBigInt64LE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return U(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),v.prototype.writeBigInt64BE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return V(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),v.prototype.writeFloatLE=function(t,e,r){return q(this,t,e,!0,r)},v.prototype.writeFloatBE=function(t,e,r){return q(this,t,e,!1,r)},v.prototype.writeDoubleLE=function(t,e,r){return G(this,t,e,!0,r)},v.prototype.writeDoubleBE=function(t,e,r){return G(this,t,e,!1,r)},v.prototype.copy=function(t,e,r,n){if(!v.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 X(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 Z.ERR_OUT_OF_RANGE("value",o,t)}!function(t,e,r){J(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||K(e,t.length-(r+1))}(n,i,a)}function J(t,e){if("number"!=typeof t)throw new Z.ERR_INVALID_ARG_TYPE(e,"number",t)}function K(t,e,r){if(Math.floor(t)!==t)throw J(t,r),new Z.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new Z.ERR_BUFFER_OUT_OF_BOUNDS;throw new Z.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(u(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 $=/[^+/0-9A-Za-z-_]/g;function Q(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 tt(t){return c.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace($,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function et(t,e,r,n){var i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function rt(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function nt(t){return t!=t}var it=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 at(t){return"undefined"==typeof BigInt?ot:t}function ot(){throw new Error("BigInt not supported")}},3910:function(t,e){"use strict";e.byteLength=function(t){var e=l(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,a=l(t),o=a[0],s=a[1],u=new i(function(t,e,r){return 3*(e+r)/4-r}(0,o,s)),c=0,f=s>0?o-4:o;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===s&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===s&&(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,s=a.length;o0)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 u(t,e,n){for(var i,a,o=[],s=e;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},3187:function(t,e){e.read=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)},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,f=n(l.ushln(c).divRound(r));return u*(s+f*Math.pow(2,-c))}var h=r.bitLength()-l.bitLength()+53;return f=n(l.ushln(h).divRound(r)),h<1023?u*f*Math.pow(2,-h):u*(f*=Math.pow(2,-1023))*Math.pow(2,1023-h)}},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 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(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,k=w>>>13,A=0|o[5],M=8191&A,S=A>>>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,Z=0|s[2],Y=8191&Z,W=Z>>>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,Y)|0)|0)+((8191&(i=(i=i+Math.imul(f,W)|0)+Math.imul(h,Y)|0))<<13)|0;u=((a=a+Math.imul(h,W)|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,Y)|0,i=(i=i+Math.imul(d,W)|0)+Math.imul(v,Y)|0,a=a+Math.imul(v,W)|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(k,U)|0,a=Math.imul(k,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,Y)|0,i=(i=i+Math.imul(y,W)|0)+Math.imul(m,Y)|0,a=a+Math.imul(m,W)|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(k,q)|0,a=a+Math.imul(k,G)|0,n=n+Math.imul(b,Y)|0,i=(i=i+Math.imul(b,W)|0)+Math.imul(_,Y)|0,a=a+Math.imul(_,W)|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,Y)|0,i=(i=i+Math.imul(T,W)|0)+Math.imul(k,Y)|0,a=a+Math.imul(k,W)|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,Y)|0,i=(i=i+Math.imul(M,W)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,W)|0,n=n+Math.imul(T,J)|0,i=(i=i+Math.imul(T,K)|0)+Math.imul(k,J)|0,a=a+Math.imul(k,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,Y)|0,i=(i=i+Math.imul(L,W)|0)+Math.imul(C,Y)|0,a=a+Math.imul(C,W)|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(k,Q)|0,a=a+Math.imul(k,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 kt=(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)+(kt>>>26)|0,kt&=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,Y)|0,i=(i=i+Math.imul(O,W)|0)+Math.imul(I,Y)|0,a=a+Math.imul(I,W)|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(k,rt)|0,a=a+Math.imul(k,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 At=(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)+(At>>>26)|0,At&=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,Y)|0,i=(i=i+Math.imul(z,W)|0)+Math.imul(R,Y)|0,a=a+Math.imul(R,W)|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(k,at)|0,a=a+Math.imul(k,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,Y),i=(i=Math.imul(B,W))+Math.imul(N,Y)|0,a=Math.imul(N,W),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(k,lt)|0,a=a+Math.imul(k,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(k,ft)|0,a=a+Math.imul(k,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(k,dt)|0))<<13)|0;u=((a=a+Math.imul(k,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]=kt,l[9]=At,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 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(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 k(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 k(t)},i(k,T),k.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},k.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},k.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)},k.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)},k.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])}function f(t){return n=[],u(t,t,c,!0),n}function h(t,e){return n=[],u(t,e,c,!1),n}},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 L=6*(S-=1),C=y[L],P=y[L+1],O=y[L+2],I=y[L+3],D=y[L+4],z=y[L+5],R=2*S,F=m[R],B=m[R+1],N=1&z,j=!!(16&z),U=c,V=w,H=k,q=A;if(N&&(U=k,V=A,H=c,q=w),!(2&z&&(O=p(t,C,P,O,U,V,B),P>=O)||4&z&&(P=d(t,C,P,O,U,V,F))>=O)){var G=O-P,Z=D-I;if(j){if(t*G*(G+Z)<4194304){if(void 0!==(M=l.scanComplete(t,C,e,P,O,U,V,I,D,H,q)))return M;continue}}else{if(t*Math.min(G,Z)<128){if(void 0!==(M=o(t,C,e,N,P,O,U,V,I,D,H,q)))return M;continue}if(t*G*Z<4194304){if(void 0!==(M=l.scanBipartite(t,C,e,N,P,O,U,V,I,D,H,q)))return M;continue}}var Y=f(t,C,P,O,U,V,F,B);if(P=p0)&&!(p1>=hi)"),h=c("lo===p0"),p=c("lo>>1,f=2*t,h=c,p=o[f*c+e];l=m?(h=y,p=m):g>=b?(h=v,p=g):(h=x,p=b):m>=b?(h=y,p=m):b>=g?(h=v,p=g):(h=x,p=b);for(var _=f*(u-1),w=f*h,T=0;Tr&&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";function e(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 s(t,e,r,n){var i=n[t*=2];return i>1,v=d-f,g=d+f,y=h,m=v,x=d,b=g,_=p,w=t+1,T=u-1,k=0;o(y,m,c)&&(k=y,y=m,m=k),o(b,_,c)&&(k=b,b=_,_=k),o(y,x,c)&&(k=y,y=x,x=k),o(m,x,c)&&(k=m,m=x,x=k),o(y,b,c)&&(k=y,y=b,b=k),o(x,b,c)&&(k=x,x=b,b=k),o(m,_,c)&&(k=m,m=_,_=k),o(m,x,c)&&(k=m,m=x,x=k),o(b,_,c)&&(k=b,b=_,_=k);for(var A=c[2*m],M=c[2*m+1],S=c[2*b],E=c[2*b+1],L=2*y,C=2*x,P=2*_,O=2*h,I=2*d,D=2*p,z=0;z<2;++z){var R=c[L+z],F=c[C+z],B=c[P+z];c[O+z]=R,c[I+z]=F,c[D+z]=B}n(v,t,c),n(g,u,c);for(var N=w;N<=T;++N)if(s(N,A,M,c))N!==w&&r(N,w,c),++w;else if(!s(N,S,E,c))for(;;){if(s(T,S,E,c)){s(T,A,M,c)?(i(N,w,T,c),++w,--T):(r(N,T,c),--T);break}if(--T>>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<=-268435456){C=-C-o|0;for(var P=0;P>>1;a(d,E);var L=0,C=0,P=0;for(k=0;k>1==d[2*k+3]>>1&&(I=2,k+=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,k=1;n?k=o:T=o;for(var A=i;A>>1;a(d,L);var C=0;for(A=0;A=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 k=0;for(x=0;x=o)l[k++]=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 k=b;b=_,_=k}x[0]=b;var A,M=x[1]=S[1];for(i&&(A=x[2]);a>0&&n[a-1][0]===c;){var S,E=(S=n[--a])[1];i?e.push([M,E,A]):e.push([M,E]),M=E}i?e.push([M,_,A]):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],k=(s?2:1)*this.pixelRatio*(i[3]*b+i[7]*_+i[11]*w+i[15]*T)/e.drawingBufferHeight,A=0;A<3;++A)this.lastCubeProps.cubeEdges[A]=f[A],this.lastCubeProps.axis[A]=h[A];var M=p;for(A=0;A<3;++A)d(p[A],A,this.bounds,f,h);e=this.gl;var S,E,L,C=v;for(A=0;A<3;++A)this.backgroundEnable[A]?C[A]=h[A]:C[A]=0;for(this._background.draw(r,n,i,a,C,this.backgroundColor),this._lines.bind(r,n,i,this),A=0;A<3;++A){var P=[0,0,0];h[A]>0?P[A]=a[1][A]:P[A]=a[0][A];for(var O=0;O<2;++O){var I=(A+1+O)%3,D=(A+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=(A+1+O)%3,D=(A+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(A=0;A<3;++A){this.lineEnable[A]&&this._lines.drawAxisLine(A,this.bounds,M[A].primalOffset,this.lineColor[A],this.lineWidth[A]*this.pixelRatio),this.lineMirror[A]&&this._lines.drawAxisLine(A,this.bounds,M[A].mirrorOffset,this.lineColor[A],this.lineWidth[A]*this.pixelRatio);var z=u(y,M[A].primalMinor),R=u(m,M[A].mirrorMinor),F=this.lineTickLength;for(O=0;O<3;++O){var B=k/r[5*O];z[O]*=F[O]*B,R[O]*=F[O]*B}this.lineTickEnable[A]&&this._lines.drawAxisTicks(A,M[A].primalOffset,z,this.lineTickColor[A],this.lineTickWidth[A]*this.pixelRatio),this.lineTickMirror[A]&&this._lines.drawAxisTicks(A,M[A].mirrorOffset,R,this.lineTickColor[A],this.lineTickWidth[A]*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),A=0;A<3;++A){var U=M[A].primalMinor,V=M[A].mirrorMinor,H=u(x,M[A].primalOffset);for(O=0;O<3;++O)this.lineTickEnable[A]&&(H[O]+=k*U[O]*Math.max(this.lineTickLength[O],0)/r[5*O]);var q=[0,0,0];if(q[A]=1,this.tickEnable[A]){for(-3600===this.tickAngle[A]?(this.tickAngle[A]=0,this.tickAlign[A]="auto"):this.tickAlign[A]=-1,E=1,"auto"===(S=[this.tickAlign[A],.5,E])[0]?S[0]=0:S[0]=parseInt(""+S[0]),L=[0,0,0],j(A,U,V),O=0;O<3;++O)H[O]+=k*U[O]*this.tickPad[O]/r[5*O];this._text.drawTicks(A,this.tickSize[A],this.tickAngle[A],H,this.tickColor[A],q,L,S)}if(this.labelEnable[A]){for(E=0,L=[0,0,0],this.labels[A].length>4&&(N(A),E=1),"auto"===(S=[this.labelAlign[A],.5,E])[0]?S[0]=0:S[0]=parseInt(""+S[0]),O=0;O<3;++O)H[O]+=k*U[O]*this.labelPad[O]/r[5*O];H[A]+=.5*(a[0][A]+a[1][A]),this._text.drawLabel(A,this.labelSize[A],this.labelAngle[A],H,this.labelColor[A],[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],k=0;k<3;++k)u[x][k]=l[x][k]/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(A=0;A<3;++A)V[A]=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 k=1/o;isFinite(g)||(g=1),a.vectorScale=g;var A=t.coneSize||.5;t.absoluteConeSize&&(A=t.absoluteConeSize*k),a.coneScale=A,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 n=r.shaders;1===arguments.length&&(t=(e=t).gl);var s=d(t,n),l=v(t,n),c=o(t,u(new Uint8Array([255,255,255,255]),[1,1,4]));c.generateMipmap(),c.minFilter=t.LINEAR_MIPMAP_LINEAR,c.magFilter=t.LINEAR;var f=i(t),p=i(t),g=i(t),y=i(t),m=i(t),x=a(t,[{buffer:f,type:t.FLOAT,size:4},{buffer:m,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:g,type:t.FLOAT,size:4},{buffer:y,type:t.FLOAT,size:2},{buffer:p,type:t.FLOAT,size:4}]),b=new h(t,c,s,l,f,p,m,g,y,x,r.traceType||"cone");return b.update(e),b}},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),k=a.mallocFloat32(2*w),A=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 k=t.dashes.slice();for(k.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,k,A,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=k,this.pointIds=b,this.pointVAO=A,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 k=T.prototype;function A(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,g.vertex,g.fragment);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.normal.location=4,e}function S(t){var e=n(t,y.vertex,y.fragment);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e}function E(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 L(t){var e=n(t,x.vertex,x.fragment);return e.attributes.position.location=0,e.attributes.id.location=1,e}function C(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 P(t){var e=n(t,_.vertex,_.fragment);return e.attributes.position.location=0,e}k.isOpaque=function(){return!this.hasAlpha},k.isTransparent=function(){return this.hasAlpha},k.pickSlots=1,k.setPickBase=function(t){this.pickId=t},k.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())},k.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())},k.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[k]&&(r.uniforms.dataAxis=u,r.uniforms.screenOffset=c,r.uniforms.color=g[t],r.uniforms.angle=y[t],a.drawArrays(a.TRIANGLES,i[k],i[A]-i[k]))),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],ki[k]&&(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[k],i[A]-i[k]))),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(2861)({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},k=t.axes||{},A=i(r,k);A.enable=!k.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:A,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=A,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)){A.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(),k=[0,0,0],A=[[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=A,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(k,v[0],g,-1e8),l.fragClipBounds[1]=E(k,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])}k=(N=P(h,n,l,this.pixelRatio)).mesh,A=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]:Z<0?1+M[1][0]:1,Y*=Y>0?1-M[0][1]:Y<0?1+M[1][1]:1],X=k.cells||[],J=k.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),k=new Array(T),A=0;A=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,k,A,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:k=g,A=x,w=v*p,T=m*p,b=d*p*h,_=y*p*h;break;case 4:k=g,A=x,b=d*p,_=y*p,w=v*p*f,T=m*p*f;break;case 3:w=v,T=m,k=g*h,A=x*h,b=d*h*p,_=y*h*p;break;case 2:w=v,T=m,b=d*h,_=y*h,k=g*h*f,A=x*h*f;break;case 1:b=d,_=y,k=g*f,A=x*f,w=v*f*p,T=m*f*p;break;default:b=d,_=y,w=v*f,T=m*f,k=g*f*h,A=x*f*h}var D=i[b+w+k],z=i[b+w+A],R=i[b+T+k],F=i[b+T+A],B=i[_+w+k],N=i[_+w+A],j=i[_+T+k],U=i[_+T+A],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 Z=n.create(),Y=n.create();n.lerp(Z,V,q,O),n.lerp(Y,H,G,O);var W=n.create();return n.lerp(W,Z,Y,I),W}(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)},k=10*n.distance(e[0],e[1])/u,A=k*k,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.lengthA&&n.scale(N,N,k/Math.sqrt(j)),n.add(N,N,C),I=d(N),n.squaredDistance(D,N)-A>-1e-4*A&&(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 k=(T+1)%8;u.push(h[T],p[T],p[k],p[k],h[k],h[T]),f.push(m,y,y,y,m,m),d.push(v,g,g,g,v,v);var A=u.length;c.push([A-6,A-5,A-4],[A-3,A-2,A-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:40,offset:0},{buffer:u,size:3,stride:40,offset:16},{buffer:u,size:3,stride:40,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,256,e.RGBA,e.UNSIGNED_BYTE);v.minFilter=e.LINEAR,v.magFilter=e.LINEAR;var g=new M(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 w in t)y[w]=t[w];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=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],T=[[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 A(t,e,r,n,i){this.position=t,this.index=e,this.uv=r,this.level=n,this.dataCoordinate=i}function M(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 A([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}!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=M.prototype;S.genColormap=function(t,e){var r=!1,n=c([l({colormap:t,nshades:256,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},S.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},S.isOpaque=function(){return!this.isTransparent()},S.pickSlots=1,S.setPickBase=function(t){this.pickId=t};var E=[0,0,0],L={showSurface:!1,showContour:!1,projections:[w.slice(),w.slice(),w.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function C(t,e){var r,n,i,a=e.axes&&e.axes.lastCubeProps.axis||E,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=L.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=L.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 L.showSurface=o,L.showContour=s,L}var P={model:w,view:w,projection:w,inverseModel:w.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},O=w.slice(),I=[1,0,0,0,1,0,0,0,1];function D(t,e){t=t||{};var r=this.gl;r.disable(r.CULL_FACE),this._colorMap.bind(0);var n=P;n.model=t.model||w,n.view=t.view||w,n.projection=t.projection||w,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=I,n.vertexColor=this.vertexColor;var s=O;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=C(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},S.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))},S.update=function(t){t=t||{},this.objectOffset=t.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in t&&(this.contourWidth=R(t.contourWidth,Number)),"showContour"in t&&(this.showContour=R(t.showContour,Boolean)),"showSurface"in t&&(this.showSurface=!!t.showSurface),"contourTint"in t&&(this.contourTint=R(t.contourTint,Boolean)),"contourColor"in t&&(this.contourColor=B(t.contourColor)),"contourProject"in t&&(this.contourProject=R(t.contourProject,(function(t){return R(t,Boolean)}))),"surfaceProject"in t&&(this.surfaceProject=t.surfaceProject),"dynamicColor"in t&&(this.dynamicColor=B(t.dynamicColor)),"dynamicTint"in t&&(this.dynamicTint=R(t.dynamicTint,Number)),"dynamicWidth"in t&&(this.dynamicWidth=R(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)}},S.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)},S.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;ei||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 p(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 d=p.prototype;function v(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 g(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 y(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=g(t);return t.texImage2D(t.TEXTURE_2D,0,n,e,r,0,n,i,null),new p(t,o,e,r,n,i)}function m(t,e,r,n,i,a){var o=g(t);return t.texImage2D(t.TEXTURE_2D,0,i,i,a,e),new p(t,o,r,n,i,a)}function x(t,e){var r=e.dtype,o=e.shape.slice(),s=t.getParameter(t.MAX_TEXTURE_SIZE);if(o[0]<0||o[0]>s||o[1]<0||o[1]>s)throw new Error("gl-texture2d: Invalid texture size");var l=v(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 c,h,d=0;if(2===o.length)d=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])d=t.ALPHA;else if(2===o[2])d=t.LUMINANCE_ALPHA;else if(3===o[2])d=t.RGB;else{if(4!==o[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");d=t.RGBA}}u!==t.FLOAT||t.getExtension("OES_texture_float")||(u=t.UNSIGNED_BYTE,l=!1);var y=e.size;if(l)c=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];h=a.malloc(y,r);var x=n(h,o,m,0);"float32"!==r&&"float64"!==r||u!==t.UNSIGNED_BYTE?i.assign(x,e):f(x,e),c=h.subarray(0,y)}var b=g(t);return t.texImage2D(t.TEXTURE_2D,0,d,o[0],o[1],0,d,u,c),l||a.free(h),new p(t,b,o[0],o[1],d,u)}Object.defineProperties(d,{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 h(this,0|t[0],0|t[1]),[0|t[0],0|t[1]]}},width:{get:function(){return this._shape[0]},set:function(t){return h(this,t|=0,this._shape[1]),t}},height:{get:function(){return this._shape[1]},set:function(t){return t|=0,h(this,this._shape[0],t),t}}}),d.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},d.dispose=function(){this.gl.deleteTexture(this.handle)},d.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)},d.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=c(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,c){var h=c.dtype,p=c.shape.slice();if(p.length<2||p.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var d=0,g=0,y=v(p,c.stride.slice());if("float32"===h?d=t.FLOAT:"float64"===h?(d=t.FLOAT,y=!1,h="float32"):"uint8"===h?d=t.UNSIGNED_BYTE:(d=t.UNSIGNED_BYTE,y=!1,h="uint8"),2===p.length)g=t.LUMINANCE,p=[p[0],p[1],1],c=n(c.data,p,[c.stride[0],c.stride[1],1],c.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=c.size,x=u.indexOf(o)<0;if(x&&u.push(o),d===l&&y)0===c.offset&&c.data.length===m?x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,c.data):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,c.data):x?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,l,c.data.subarray(c.offset,c.offset+m)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,p[0],p[1],s,l,c.data.subarray(c.offset,c.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]);d===t.FLOAT&&l===t.UNSIGNED_BYTE?f(_,c):i.assign(_,c),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 S(r),x+=r.length,(v=v.slice(r.length)).length}}function D(){return/[^a-fA-F0-9]/.test(e)?(S(v.join("")),d=l,h):(v.push(e),r=e,h+1)}function z(){return"."===e||/[eE]/.test(e)?(v.push(e),d=5,r=e,h+1):"x"===e&&1===v.length&&"0"===v[0]?(d=11,v.push(e),r=e,h+1):/[^\d]/.test(e)?(S(v.join("")),d=l,h):(v.push(e),r=e,h+1)}function R(){return"f"===e&&(v.push(e),r=e,h+=1),/[eE]/.test(e)?(v.push(e),r=e,h+1):("-"!==e&&"+"!==e||!/[eE]/.test(r))&&/[^\d]/.test(e)?(S(v.join("")),d=l,h):(v.push(e),r=e,h+1)}function F(){if(/[^\d\w_]/.test(e)){var t=v.join("");return d=M[t]?8:A[t]?7:6,S(v.join("")),d=l,h}return v.push(e),r=e,h+1}};var n=r(399),i=r(9746),a=r(9525),o=r(9458),s=r(3585),l=999,u=9999,c=["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(),k=new a(w,T,!0);c.push(k);var A=_.indexOf(e);if(!(A<0))for(_[A]=k,T[v]=y,w[g]=-1,T[g]=e,d[g]=k,k.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,k,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;r1&&-1!==n.indexOf("Macintosh")&&-1!==n.indexOf("Safari")&&(i=!0),i}},3596:function(t){"use strict";t.exports=function(t){for(var e,r=t.length,n=0;n13)&&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,k,A=c[3],M=c[7],S=c[11],E=c[12],L=c[13],C=c[14],P=c[15];if(0!==A||0!==M||0!==S){if(h[0]=A,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],k=x[3],m[0]=b[0]*_+b[4]*w+b[8]*T+b[12]*k,m[1]=b[1]*_+b[5]*w+b[9]*T+b[13]*k,m[2]=b[2]*_+b[6]*w+b[10]*T+b[14]*k,m[3]=b[3]*_+b[7]*w+b[11]*T+b[15]*k}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,k=v-d*c|0,A=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(A=0;A0){if(M=1,L[P++]=r(h[g],o,s,l),g+=T,c>0)for(A=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(A,M,u,m,b,w,O,z,B,U,o,s,l),V=C[P]=S++),P+=1,g+=T,A=2;A0)for(A=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(A,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,A=2;A0){if(A=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(A,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(A,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,k=p,A=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,k=h,A=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,Z=U,Y=q,W=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);A=l*Z,M=l*Y,N=s;t:for(k=0;k0){g=Z,Z=Y,Y=g;break t}if(rt<0)break t;N+=p}A=l*X,M=l*J,N=s;t:for(k=0;k0){g=X,X=J,J=g;break t}if(rt<0)break t;N+=p}A=l*Z,M=l*W,N=s;t:for(k=0;k0){g=Z,Z=W,W=g;break t}if(rt<0)break t;N+=p}A=l*Y,M=l*W,N=s;t:for(k=0;k0){g=Y,Y=W,W=g;break t}if(rt<0)break t;N+=p}A=l*Z,M=l*X,N=s;t:for(k=0;k0){g=Z,Z=X,X=g;break t}if(rt<0)break t;N+=p}A=l*W,M=l*X,N=s;t:for(k=0;k0){g=W,W=X,X=g;break t}if(rt<0)break t;N+=p}A=l*Y,M=l*J,N=s;t:for(k=0;k0){g=Y,Y=J,J=g;break t}if(rt<0)break t;N+=p}A=l*Y,M=l*W,N=s;t:for(k=0;k0){g=Y,Y=W,W=g;break t}if(rt<0)break t;N+=p}A=l*X,M=l*J,N=s;t:for(k=0;k0){g=X,X=J,J=g;break t}if(rt<0)break t;N+=p}for(A=l*Z,M=l*Y,S=l*W,E=l*X,L=l*J,C=l*U,P=l*H,O=l*V,B=0,N=s,k=0;k0)){if(rt<0){for(A=l*b,M=l*K,S=l*$,N=s,k=0;k0)for(;;){for(_=s+$*l,B=0,k=0;k0)){for(_=s+$*l,B=0,k=0;kV){t:for(;;){for(_=s+K*l,B=0,N=s,k=0;k1&&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(k),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 k=Math.exp(this.computedRadius[0]);k=Math.max(1e-4,k+n),this.radius.set(t,Math.log(k))},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 k=this.computedRotation,A=k[0],M=k[1],S=k[2],E=k[3],L=A*w+E*x+M*_-S*b,C=M*w+E*b+S*x-A*_,P=S*w+E*_+A*b-M*x,O=E*w-A*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;){var u=o.pop();i[u]=!1;var c=r[u];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];if(0===V){var H=d[B];j=[H]}for(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?(k=1,m=u+2*h+d):m=h*(k=-h/u)+d):(k=0,p>=0?(A=0,m=d):-p>=f?(A=1,m=f+2*p+d):m=p*(A=-p/f)+d);else if(A<0)A=0,h>=0?(k=0,m=d):-h>=u?(k=1,m=u+2*h+d):m=h*(k=-h/u)+d;else{var M=1/T;m=(k*=M)*(u*k+c*(A*=M)+2*h)+A*(c*k+f*A+2*p)+d}else k<0?(b=f+p)>(x=c+h)?(_=b-x)>=(w=u-2*c+f)?(k=1,A=0,m=u+2*h+d):m=(k=_/w)*(u*k+c*(A=1-k)+2*h)+A*(c*k+f*A+2*p)+d:(k=0,b<=0?(A=1,m=f+2*p+d):p>=0?(A=0,m=d):m=p*(A=-p/f)+d):A<0?(b=u+h)>(x=c+p)?(_=b-x)>=(w=u-2*c+f)?(A=1,k=0,m=f+2*p+d):m=(k=1-(A=_/w))*(u*k+c*A+2*h)+A*(c*k+f*A+2*p)+d:(A=0,b<=0?(k=1,m=u+2*h+d):h>=0?(k=0,m=d):m=h*(k=-h/u)+d):(_=f+p-c-h)<=0?(k=0,A=1,m=f+2*p+d):_>=(w=u-2*c+f)?(k=1,A=0,m=u+2*h+d):m=(k=_/w)*(u*k+c*(A=1-k)+2*h)+A*(c*k+f*A+2*p)+d;var S=1-k-A;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,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=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=k[0];return g(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[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),A[e]>=0&&w(A[e],v(e)),A[r]>=0&&w(A[r],v(r))}}var k=[],A=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=A[e],i=A[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 s(u(t),arguments)}function o(t,e){return a.apply(null,[t].concat(e||[]))}function s(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}var l=Object.create(null);function u(t){if(l[t])return l[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=[],s=e[2],u=[];if(null===(u=i.key.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(u[1]);""!==(s=s.substring(u[0].length));)if(null!==(u=i.key_access.exec(s)))o.push(u[1]);else{if(null===(u=i.index_access.exec(s)))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 l[t]=n}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=(o<<0)+(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,k=-g*x,A=-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]=k*r[a]+A*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),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=u(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Z),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*k+L*A+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*k+D*A+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,Z=V[14]/H,Y=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*Y,G-j*Y,Z-U*Y)},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),k=i*l+a*f+o*h,A=v*l+g*f+y*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(c(k)),E=Math.atan2(M,A),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 k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(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 k(t);case"biguint64":return T(t);case"buffer":return M(t);case"data":case"dataview":return A(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=k,e.mallocDataView=A,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",d(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(v=0;v-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(L(),"?px "),m*=Math.pow(.75,l-s),n=n.replace("?px ",L())),y+=.25*_*(l-s)}if(!0===o.superscripts){var f=t.indexOf("+"),h=r.indexOf("+"),p=f>-1?parseInt(t[1+f]):0,d=h>-1?parseInt(r[1+h]):0;p!==d&&(n=n.replace(L(),"?px "),m*=Math.pow(.75,d-p),n=n.replace("?px ",L())),y-=.25*_*(d-p)}if(!0===o.bolds){var v=t.indexOf(u)>-1,g=r.indexOf(u)>-1;!v&&g&&(n=x?n.replace("italic ","italic bold "):"bold "+n),v&&!g&&(n=n.replace("bold ",""))}if(!0===o.italics){var x=t.indexOf(c)>-1,b=r.indexOf(c)>-1;!x&&b&&(n="italic "+n),x&&!b&&(n=n.replace("italic ",""))}e.font=n}for(d=0;d",a="",o=i.length,s=a.length,l="+"===e[0]||"-"===e[0],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,d=r.substr(p,c-p).indexOf(i);u=-1!==d?d:c+s}return n}function h(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function p(t,e,r,n){var i=h(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,l.length)==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()},12856:function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var r=0;rp)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,v.prototype),e}function v(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 m(t)}return g(t,e,r)}function g(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!v.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|w(t,e),n=d(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(rt(t,Uint8Array)){var e=new Uint8Array(t);return b(e.buffer,e.byteOffset,e.byteLength)}return x(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 "+u(t));if(rt(t,ArrayBuffer)||t&&rt(t.buffer,ArrayBuffer))return b(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(rt(t,SharedArrayBuffer)||t&&rt(t.buffer,SharedArrayBuffer)))return b(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 v.from(n,e,r);var i=function(t){if(v.isBuffer(t)){var e=0|_(t.length),r=d(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||nt(t.length)?d(0):x(t):"Buffer"===t.type&&Array.isArray(t.data)?x(t.data):void 0}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return v.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 "+u(t))}function y(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 m(t){return y(t),d(t<0?0:0|_(t))}function x(t){for(var e=t.length<0?0:0|_(t.length),r=d(e),n=0;n=p)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+p.toString(16)+" bytes");return 0|t}function w(t,e){if(v.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||rt(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 '+u(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 Q(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return tt(t).length;default:if(i)return n?-1:Q(t).length;e=(""+e).toLowerCase(),i=!0}}function T(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 F(this,e,r);case"utf8":case"utf-8":return I(this,e,r);case"ascii":return z(this,e,r);case"latin1":case"binary":return R(this,e,r);case"base64":return O(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function k(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),nt(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=v.from(e,n)),v.isBuffer(e))return 0===e.length?-1:M(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):M(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function M(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 O(t,e,r){return 0===e&&r===t.length?c.fromByteArray(t):c.fromByteArray(t.slice(e,r))}function I(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<=D)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn.length?(v.isBuffer(a)||(a=v.from(a)),a.copy(n,i)):Uint8Array.prototype.set.call(n,a,i);else{if(!v.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(n,i)}i+=a.length}return n},v.byteLength=w,v.prototype._isBuffer=!0,v.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+=" ... "),""},h&&(v.prototype[h]=v.prototype.inspect),v.prototype.compare=function(t,e,r,n,i){if(rt(t,Uint8Array)&&(t=v.from(t,t.offset,t.byteLength)),!v.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+u(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),l=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 S(this,t,e,r);case"utf8":case"utf-8":return E(this,t,e,r);case"ascii":case"latin1":case"binary":return L(this,t,e,r);case"base64":return C(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},v.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var D=4096;function z(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 j(t,e,r,n,i,a){if(!v.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 U(t,e,r,n,i){X(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 V(t,e,r,n,i){X(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 H(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 q(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,4),f.write(t,e,r,n,23,4),r+4}function G(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,8),f.write(t,e,r,n,52,8),r+8}v.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||N(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||N(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},v.prototype.readUint8=v.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},v.prototype.readUint16LE=v.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},v.prototype.readUint16BE=v.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},v.prototype.readUint32LE=v.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},v.prototype.readUint32BE=v.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},v.prototype.readBigUInt64LE=at((function(t){J(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(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||K(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||N(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},v.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(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},v.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},v.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},v.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},v.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},v.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},v.prototype.readBigInt64LE=at((function(t){J(t>>>=0,"offset");var e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(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||K(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||N(t,4,this.length),f.read(this,t,!0,23,4)},v.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),f.read(this,t,!1,23,4)},v.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),f.read(this,t,!0,52,8)},v.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),f.read(this,t,!1,52,8)},v.prototype.writeUintLE=v.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||j(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||j(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},v.prototype.writeUint8=v.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,1,255,0),this[e]=255&t,e+1},v.prototype.writeUint16LE=v.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},v.prototype.writeUint16BE=v.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},v.prototype.writeUint32LE=v.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeUint32BE=v.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeBigUInt64LE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return U(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),v.prototype.writeBigUInt64BE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return V(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),v.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);j(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>0)-s&255;return e+r},v.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);j(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},v.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},v.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},v.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},v.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||j(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},v.prototype.writeBigInt64LE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return U(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),v.prototype.writeBigInt64BE=at((function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return V(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),v.prototype.writeFloatLE=function(t,e,r){return q(this,t,e,!0,r)},v.prototype.writeFloatBE=function(t,e,r){return q(this,t,e,!1,r)},v.prototype.writeDoubleLE=function(t,e,r){return G(this,t,e,!0,r)},v.prototype.writeDoubleBE=function(t,e,r){return G(this,t,e,!1,r)},v.prototype.copy=function(t,e,r,n){if(!v.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 X(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 Z.ERR_OUT_OF_RANGE("value",o,t)}!function(t,e,r){J(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||K(e,t.length-(r+1))}(n,i,a)}function J(t,e){if("number"!=typeof t)throw new Z.ERR_INVALID_ARG_TYPE(e,"number",t)}function K(t,e,r){if(Math.floor(t)!==t)throw J(t,r),new Z.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new Z.ERR_BUFFER_OUT_OF_BOUNDS;throw new Z.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(u(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 $=/[^+/0-9A-Za-z-_]/g;function Q(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 tt(t){return c.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace($,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function et(t,e,r,n){var i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function rt(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function nt(t){return t!=t}var it=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 at(t){return"undefined"==typeof BigInt?ot:t}function ot(){throw new Error("BigInt not supported")}},35791: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|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}},86781:function(t,e,r){"use strict";r.r(e),r.d(e,{sankeyCenter:function(){return h},sankeyCircular:function(){return L},sankeyJustify:function(){return f},sankeyLeft:function(){return u},sankeyRight:function(){return c}});var n=r(33064),i=r(15140),a=r(45879),o=r(2502),s=r.n(o);function l(t){return t.target.depth}function u(t){return t.depth}function c(t,e){return e-1-t.height}function f(t,e){return t.sourceLinks.length?t.depth:e-1}function h(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?(0,n.VV)(t.sourceLinks,l)-1:0}function p(t){return function(){return t}}var d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function v(t,e){return y(t.source,e.source)||t.index-e.index}function g(t,e){return y(t.target,e.target)||t.index-e.index}function y(t,e){return t.partOfCycle===e.partOfCycle?t.y0-e.y0:"top"===t.circularLinkType||"bottom"===e.circularLinkType?-1:1}function m(t){return t.value}function x(t){return(t.y0+t.y1)/2}function b(t){return x(t.source)}function _(t){return x(t.target)}function w(t){return t.index}function T(t){return t.nodes}function k(t){return t.links}function A(t,e){var r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function M(t,e){return e(t)}var S=25,E=10;function L(){var t,e,r=0,a=0,o=1,s=1,l=24,u=w,c=f,h=T,M=k,L=32,O=2,D=null;function z(){var t={nodes:h.apply(null,arguments),links:M.apply(null,arguments)};F(t),C(t,0,D),B(t),N(t),P(t,u),j(t,L,u),U(t);for(var e=4,r=0;r0?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}}(u),d=function(t,e){var i=(0,n.Fp)(t.nodes,(function(t){return t.column})),u=o-r,c=s-a,f=u/(u+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,s*=h,t.nodes.forEach((function(t){t.x0=r+t.column*((o-r-l)/i),t.x1=t.x0+l})),h}(u,p);f*=d,u.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=s/2-t.value*f,t.y1=t.y0+t.value*f):t.partOfCycle?0==I(t,i)?(t.y0=s/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=s-t.value*f-r,t.y1=t.y0+t.value*f):0==p.top||0==p.bottom?(t.y0=(s-a)/e*r,t.y1=t.y0+t.value*f):(t.y0=(s-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 l;if(i.sourceLinks.length||i.targetLinks.length)if(i.partOfCycle&&I(i,e)>0);else if(0==o&&1==a)l=i.y1-i.y0,i.y0=s/2-l/2,i.y1=s/2+l/2;else if(o==r-1&&1==a)l=i.y1-i.y0,i.y0=s/2-l/2,i.y1=s/2+l/2;else{var u=(0,n.J6)(i.sourceLinks,_),c=(0,n.J6)(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,l=e.length;for(e.sort(y),i=0;i0&&(r.y0+=n,r.y1+=n),o=r.y1+t;if((n=o-t-s)>0)for(o=r.y0-=n,r.y1-=n,i=l-2;i>=0;--i)(n=(r=e[i]).y1+t-o)>0&&(r.y0-=n,r.y1-=n),o=r.y0}))}}function U(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 z.nodeId=function(t){return arguments.length?(u="function"==typeof t?t:p(t),z):u},z.nodeAlign=function(t){return arguments.length?(c="function"==typeof t?t:p(t),z):c},z.nodeWidth=function(t){return arguments.length?(l=+t,z):l},z.nodePadding=function(e){return arguments.length?(t=+e,z):t},z.nodes=function(t){return arguments.length?(h="function"==typeof t?t:p(t),z):h},z.links=function(t){return arguments.length?(M="function"==typeof t?t:p(t),z):M},z.size=function(t){return arguments.length?(r=a=0,o=+t[0],s=+t[1],z):[o-r,s-a]},z.extent=function(t){return arguments.length?(r=+t[0][0],o=+t[1][0],a=+t[0][1],s=+t[1][1],z):[[r,a],[o,s]]},z.iterations=function(t){return arguments.length?(L=+t,z):L},z.circularLinkGap=function(t){return arguments.length?(O=+t,z):O},z.nodePaddingRatio=function(t){return arguments.length?(e=+t,z):e},z.sortNodes=function(t){return arguments.length?(D=t,z):D},z.update=function(t){return P(t,u),U(t),t.links.forEach((function(t){t.circular&&(t.circularLinkType=t.y0+t.y11||i>1)}function z(t,e,r){return t.sort(F),t.forEach((function(n,i){var a,o,s=0;if($(n,r)&&D(n))n.circularPathData.verticalBuffer=s+n.width/2;else{for(var l=0;lo.source.column)){var u=t[l].circularPathData.verticalBuffer+t[l].width/2+e;s=u>s?u:s}n.circularPathData.verticalBuffer=s+n.width/2}})),t}function R(t,e,r,i){var o=(0,n.VV)(t.links,(function(t){return t.source.y0}));t.links.forEach((function(t){t.circular&&(t.circularPathData={})})),z(t.links.filter((function(t){return"top"==t.circularLinkType})),e,i),z(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,$(n,i)&&D(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(N):u.sort(B);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(U):u.sort(j),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.h5)().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 F(t,e){return V(t)==V(e)?"bottom"==t.circularLinkType?N(t,e):B(t,e):V(e)-V(t)}function B(t,e){return t.y0-e.y0}function N(t,e){return e.y0-t.y0}function j(t,e){return t.y1-e.y1}function U(t,e){return e.y1-t.y1}function V(t){return t.target.column-t.source.column}function H(t){return t.target.x0-t.source.x1}function q(t,e){var r=O(t),n=H(e)/Math.tan(r);return"up"==K(t)?t.y1+n:t.y1-n}function G(t,e){var r=O(t),n=H(e)/Math.tan(r);return"up"==K(t)?t.y1-n:t.y1+n}function Z(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)&&Y(t,u,e,r)}))):(y>o.y0&&yo.y1)&&(u=y-o.y0+10,o=Y(o,u,e,r),t.nodes.forEach((function(t){M(t,n)!=M(o,n)&&t.column==o.column&&t.y0o.y1&&Y(t,u,e,r)})))}}))}}))}function Y(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 W(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(!J(t,e))return t.y1-e.y1;if(t.target.column>e.target.column){var r=G(e,t);return t.y1-r}if(e.target.column>t.target.column)return G(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(!J(t,e))return t.y0-e.y0;if(e.source.column0?"up":"down"}function $(t,e){return M(t.source,e)==M(t.target,e)}function Q(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.VV)(i,(function(t){return t.y0})),u=(r-e)/((0,n.Fp)(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}))}}},30838:function(t,e,r){"use strict";r.r(e),r.d(e,{sankey:function(){return w},sankeyCenter:function(){return u},sankeyJustify:function(){return l},sankeyLeft:function(){return o},sankeyLinkHorizontal:function(){return M},sankeyRight:function(){return s}});var n=r(33064),i=r(15140);function a(t){return t.target.depth}function o(t){return t.depth}function s(t,e){return e-1-t.height}function l(t,e){return t.sourceLinks.length?t.depth:e-1}function u(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?(0,n.VV)(t.sourceLinks,a)-1:0}function c(t){return function(){return t}}function f(t,e){return p(t.source,e.source)||t.index-e.index}function h(t,e){return p(t.target,e.target)||t.index-e.index}function p(t,e){return t.y0-e.y0}function d(t){return t.value}function v(t){return(t.y0+t.y1)/2}function g(t){return v(t.source)*t.value}function y(t){return v(t.target)*t.value}function m(t){return t.index}function x(t){return t.nodes}function b(t){return t.links}function _(t,e){var r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function w(){var t=0,e=0,r=1,a=1,o=24,s=8,u=m,w=l,T=x,k=b,A=32;function M(){var t={nodes:T.apply(null,arguments),links:k.apply(null,arguments)};return S(t),E(t),L(t),C(t),P(t),t}function S(t){t.nodes.forEach((function(t,e){t.index=e,t.sourceLinks=[],t.targetLinks=[]}));var e=(0,i.UI)(t.nodes,u);t.links.forEach((function(t,r){t.index=r;var n=t.source,i=t.target;"object"!=typeof n&&(n=t.source=_(e,n)),"object"!=typeof i&&(i=t.target=_(e,i)),n.sourceLinks.push(t),i.targetLinks.push(t)}))}function E(t){t.nodes.forEach((function(t){t.value=Math.max((0,n.Sm)(t.sourceLinks,d),(0,n.Sm)(t.targetLinks,d))}))}function L(e){var n,i,a;for(n=e.nodes,i=[],a=0;n.length;++a,n=i,i=[])n.forEach((function(t){t.depth=a,t.sourceLinks.forEach((function(t){i.indexOf(t.target)<0&&i.push(t.target)}))}));for(n=e.nodes,i=[],a=0;n.length;++a,n=i,i=[])n.forEach((function(t){t.height=a,t.targetLinks.forEach((function(t){i.indexOf(t.source)<0&&i.push(t.source)}))}));var s=(r-t-o)/(a-1);e.nodes.forEach((function(e){e.x1=(e.x0=t+Math.max(0,Math.min(a-1,Math.floor(w.call(null,e,a))))*s)+o}))}function C(t){var r=(0,i.b1)().key((function(t){return t.x0})).sortKeys(n.j2).entries(t.nodes).map((function(t){return t.values}));!function(){var i=(0,n.Fp)(r,(function(t){return t.length})),o=.6666666666666666*(a-e)/(i-1);s>o&&(s=o);var l=(0,n.VV)(r,(function(t){return(a-e-(t.length-1)*s)/(0,n.Sm)(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=A;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.Sm)(e.targetLinks,g)/(0,n.Sm)(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.Sm)(e.sourceLinks,y)/(0,n.Sm)(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}))}}function P(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 M.update=function(t){return P(t),t},M.nodeId=function(t){return arguments.length?(u="function"==typeof t?t:c(t),M):u},M.nodeAlign=function(t){return arguments.length?(w="function"==typeof t?t:c(t),M):w},M.nodeWidth=function(t){return arguments.length?(o=+t,M):o},M.nodePadding=function(t){return arguments.length?(s=+t,M):s},M.nodes=function(t){return arguments.length?(T="function"==typeof t?t:c(t),M):T},M.links=function(t){return arguments.length?(k="function"==typeof t?t:c(t),M):k},M.size=function(n){return arguments.length?(t=e=0,r=+n[0],a=+n[1],M):[r-t,a-e]},M.extent=function(n){return arguments.length?(t=+n[0][0],r=+n[1][0],e=+n[0][1],a=+n[1][1],M):[[t,e],[r,a]]},M.iterations=function(t){return arguments.length?(A=+t,M):A},M}var T=r(45879);function k(t){return[t.source.x1,t.y0]}function A(t){return[t.target.x0,t.y1]}function M(){return(0,T.h5)().source(k).target(A)}},39898:function(t,e,r){var n,i;(function(){var a={version:"3.8.0"},o=[].slice,s=function(t){return o.call(t)},l=self.document;function u(t){return t&&(t.ownerDocument||t.document||t).documentElement}function c(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}if(l)try{s(l.documentElement.childNodes)[0].nodeType}catch(t){s=function(t){for(var e=t.length,r=new Array(e);e--;)r[e]=t[e];return r}}if(Date.now||(Date.now=function(){return+new Date}),l)try{l.createElement("DIV").style.setProperty("opacity",0,"")}catch(t){var f=this.Element.prototype,h=f.setAttribute,p=f.setAttributeNS,d=this.CSSStyleDeclaration.prototype,v=d.setProperty;f.setAttribute=function(t,e){h.call(this,t,e+"")},f.setAttributeNS=function(t,e,r){p.call(this,t,e,r+"")},d.setProperty=function(t,e,r){v.call(this,t,e+"",r)}}function g(t,e){return te?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){for(var e=1;t*e%1;)e*=10;return e}function k(t,e){for(var r in e)Object.defineProperty(t.prototype,r,{value:e[r],enumerable:!1})}function A(){this._=Object.create(null)}function M(t){return"__proto__"==(t+="")||"\0"===t[0]?"\0"+t:t}function S(t){return"\0"===(t+="")[0]?t.slice(1):t}function E(t){return M(t)in this._}function L(t){return(t=M(t))in this._&&delete this._[t]}function C(){var t=[];for(var e in this._)t.push(S(e));return t}function P(){var t=0;for(var e in this._)++t;return t}function O(){for(var t in this._)return!1;return!0}function I(){this._=Object.create(null)}function D(t){return t}function z(t,e,r){return function(){var n=r.apply(e,arguments);return n===e?t:n}}function R(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var r=0,n=F.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 I;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(q,"\\$&")};var q=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,G={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var r in e)t[r]=e[r]};function Z(t){return G(t,J),t}var Y=function(t,e){return e.querySelector(t)},W=function(t,e){return e.querySelectorAll(t)},X=function(t,e){var r=t.matches||t[R(t,"matchesSelector")];return X=function(t,e){return r.call(t,e)},X(t,e)};"function"==typeof Sizzle&&(Y=function(t,e){return Sizzle(t,e)[0]||null},W=Sizzle,X=Sizzle.matchesSelector),a.selection=function(){return a.select(l.documentElement)};var J=a.selection.prototype=[];function K(t){return"function"==typeof t?t:function(){return Y(t,this)}}function $(t){return"function"==typeof t?t:function(){return W(t,this)}}J.select=function(t){var e,r,n,i,a=[];t=K(t);for(var o=-1,s=this.length;++o=0&&"xmlns"!==(r=t.slice(0,e))&&(t=t.slice(e+1)),tt.hasOwnProperty(r)?{space:tt[r],local:t}:t}},J.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(et(e,t[e]));return this}return this.each(et(t,e))},J.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var r=this.node(),n=(t=it(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},J.sort=function(t){t=pt.apply(this,arguments);for(var e=-1,r=this.length;++e=e&&(e=i+1);!(o=s[e])&&++e0&&(t=t.slice(0,i));var l=xt.get(t);function u(){var e=this[n];e&&(this.removeEventListener(t,e,e.$),delete this[n])}return l&&(t=l,o=_t),i?e?function(){var i=o(e,s(arguments));u.call(this),this.addEventListener(t,this[n]=i,i.$=r),i._=e}:u:e?B: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=vt,a.selection.enter.prototype=gt,gt.append=J.append,gt.empty=J.empty,gt.node=J.node,gt.call=J.call,gt.size=J.size,gt.select=function(t){for(var e,r,n,i,a,o=[],s=-1,l=this.length;++s1?Ot:t<-1?-Ot: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(h<1e-12)n=Math.log(u/o)/Ft,r=function(t){return[i+t*c,a+t*f,o*Math.exp(Ft*t*n)]};else{var p=Math.sqrt(h),d=(u*u-o*o+4*h)/(2*o*2*p),v=(u*u-o*o-4*h)/(2*u*2*p),g=Math.log(Math.sqrt(d*d+1)-d),y=Math.log(Math.sqrt(v*v+1)-v);n=(y-g)/Ft,r=function(t){var e,r=t*n,s=Rt(g),l=o/(2*p)*(s*(e=Ft*r+g,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+l*c,a+l*f,o*s/Rt(Ft*r+g)]}}return r.duration=1e3*n,r},a.behavior.zoom=function(){var t,e,r,n,i,o,s,u,f,h={x:0,y:0,k:1},p=[960,500],d=jt,v=250,g=0,y="mousedown.zoom",m="mousemove.zoom",x="mouseup.zoom",b="touchstart.zoom",_=H(w,"zoomstart","zoom","zoomend");function w(t){t.on(y,P).on(Nt+".zoom",I).on("dblclick.zoom",D).on(b,O)}function T(t){return[(t[0]-h.x)/h.k,(t[1]-h.y)/h.k]}function k(t){h.k=Math.max(d[0],Math.min(d[1],t))}function A(t,e){e=function(t){return[t[0]*h.k+h.x,t[1]*h.k+h.y]}(e),h.x+=t[0]-e[0],h.y+=t[1]-e[1]}function M(t,r,n,i){t.__chart__={x:h.x,y:h.y,k:h.k},k(Math.pow(2,i)),A(e=r,n),t=a.select(t),v>0&&(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,s).on(x,l),i=T(a.mouse(t)),o=kt(t);function s(){r=1,A(a.mouse(t),i),L(e)}function l(){n.on(m,null).on(x,null),o(r),C(e)}$i.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=kt(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);$i.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):te(t instanceof Wt?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 Zt=Gt.prototype=new Ut;function Yt(t,e,r){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new Wt(r,Math.cos(t*=It)*e,Math.sin(t)*e)}function Wt(t,e,r){return this instanceof Wt?(this.l=+t,this.a=+e,void(this.b=+r)):arguments.length<2?t instanceof Wt?new Wt(t.l,t.a,t.b):t instanceof Gt?Yt(t.h,t.c,t.l):fe((t=ie(t)).r,t.g,t.b):new Wt(t,e,r)}Zt.brighter=function(t){return new Gt(this.h,this.c,Math.min(100,this.l+Xt*(arguments.length?t:1)))},Zt.darker=function(t){return new Gt(this.h,this.c,Math.max(0,this.l-Xt*(arguments.length?t:1)))},Zt.rgb=function(){return Yt(this.h,this.c,this.l).rgb()},a.lab=Wt;var Xt=18,Jt=.95047,Kt=1.08883,$t=Wt.prototype=new Ut;function Qt(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=1*ee(n))-.4985314*(a=ee(a)*Kt)),ne(-.969266*i+1.8760108*n+.041556*a),ne(.0556434*i-.2040259*n+1.0572252*a))}function te(t,e,r){return t>0?new Gt(Math.atan2(r,e)*Dt,Math.sqrt(e*e+r*r),t):new Gt(NaN,NaN,t)}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)+""}$t.brighter=function(t){return new Wt(Math.min(100,this.l+Xt*(arguments.length?t:1)),this.a,this.b)},$t.darker=function(t){return new Wt(Math.max(0,this.l-Xt*(arguments.length?t:1)),this.a,this.b)},$t.rgb=function(){return Qt(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)/1);return Wt(116*i-16,500*(n-i),200*(i-re((.0193339*t+.119192*e+.9503041*r)/Kt)))}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(D),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(ke,e)),be=0):(be=1,we(ke))}function Ae(){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&&(e=t[a[o-2]],r=t[a[o-1]],n=t[s],(r[0]-e[0])*(n[1]-e[1])-(r[1]-e[1])*(n[0]-e[0])<=0);)--o;a[o++]=s}return a.slice(0,o)}function Ce(t,e){return t[0]-e[0]||t[1]-e[1]}a.timer=function(){Te.apply(this,arguments)},a.timer.flush=function(){Ae(),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;nEt)s=s.L;else{if(!((i=a-We(s,o))>Et)){n>-Et?(e=s.P,r=s):i>-Et?(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};nr(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 Ye(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 We(t,e){var r=t.N;if(r)return Ye(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(){or(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>=-1e-12)){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)Et||w(i-r)>Et)&&(s.splice(o,0,new ir((y=a.site,m=c,x=w(n-f)Et?{x:f,y:w(e-f)Et?{x:w(r-d)Et?{x:h,y:w(e-h)Et?{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)/Et)*Et,y:Math.round(i(t,e)/Et)*Et,i:e}}))}return o.links=function(t){return cr(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 cr(s(t)).cells.forEach((function(r,n){for(var i,a,o,s,l=r.site,u=r.edges.sort(Je),c=-1,f=u.length,h=u[f-1].edge,p=h.l===l?h.r:h.l;++ca||f>o||h=_)<<1|e>=b,T=w+4;wa&&(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:xr(r,n)})),a=wr.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 k(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)A(t,e,r,n,i,a,o,s);else{var c=t.point;t.x=t.y=t.point=null,A(t,c,l,u,i,a,o,s),A(t,e,r,n,i,a,o,s)}else t.x=r,t.y=n,t.point=e}else A(t,e,r,n,i,a,o,s)}function A(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,k(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){k(M,t,+y(t,++f),+m(t,f),p,d,v,g)},visit:function(t){vr(t,M,p,d,v,g)},find:function(t){return gr(M,t[0],t[1],p,d,v,g)}};if(f=-1,null==e){for(;++f=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?1:t(e)}}function Lr(t){return function(e){return 1-t(1-e)}}function Cr(t){return function(e){return.5*(e<.5?t(2*e):2-t(2-2*e))}}function Pr(t){return t*t}function Or(t){return t*t*t}function Ir(t){if(t<=0)return 0;if(t>=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*Ot)}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,e):t,n=e>=0?t.slice(e+1):"in";return r=Mr.get(r)||Ar,Er((n=Sr.get(n)||D)(r.apply(null,o.call(arguments,1))))},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 Yt(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 Qt(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:xr(t[0],e[0])},{i:i-2,x:xr(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:xr(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:xr(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:xr(t[0],e[0])},{i:i-2,x:xr(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 kn(t){return[a.min(t),a.max(t)]}function An(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(An),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?Zr:Gr;return i=o(t,e,l,r),a=o(e,t,l,Tr),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 Zn(t,Yn(Qn(t,e)[2])),Zn(t,Yn(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=Zn(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],Tr,!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=Pt)return l(u,p)+(s?l(s,1-p):"")+"Z";var d,v,g,y,m,x,b,_,w,T,k,A,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)<=Lt?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),k=s*Math.cos(c+M),A=s*Math.sin(c+M);var P=Math.abs(c-f+2*M)<=Lt?0:1;if(M&&_i(w,T,k,A)===1-p^P){var O=(c+f)/2;w=s*Math.cos(O),T=s*Math.sin(O),k=A=null}}else w=T=0;if(h>Et&&(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,k=(b*y+g*_)/m,A=(-b*g+y*_)/m,M=w-d,S=T-v,E=k-d,L=A-v;return M*M+S*S>E*E+L*L&&(w=k,T=A),[[w-l,T-u],[w*r/x,T*r/x]]}function Ti(){return!0}function ki(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;uLt)+",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(Gi(e=t)):e},t},a.svg.symbol=function(){var t=Yi,e=Zi;function r(r,n){return(Xi.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 Xi=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*Ki)),r=e*Ki;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/Ji),r=e*Ji/2;return"M0,"+r+"L"+e+","+-r+" "+-e+","+-r+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Ji),r=e*Ji/2;return"M0,"+-r+"L"+e+","+r+" "+-e+","+r+"Z"}});a.svg.symbolTypes=Xi.keys();var Ji=Math.sqrt(3),Ki=Math.tan(30*It);J.transition=function(t){for(var e,r,n=ea||++ia,i=sa(t),a=[],o=ra||{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)}na.call=J.call,na.empty=J.empty,na.node=J.node,na.size=J.size,a.transition=function(t,e){return t&&t.transition?ea?t.transition(e):t:a.selection().transition(t)},a.transition.prototype=na,na.select=function(t){var e,r,n,i=this.id,a=this.namespace,o=[];t=K(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,k=m.classed("extent"),A=kt(y),M=a.mouse(y),S=a.select(c(y)).on("keydown.brush",C).on("keyup.brush",P);if(a.event.changedTouches?S.on("touchmove.brush",O).on("touchend.brush",D):S.on("mousemove.brush",O).on("mouseup.brush",D),b.interrupt().selectAll("*").interrupt(),k)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(){32==a.event.keyCode&&(k||(f=null,M[0]-=o[1],M[1]-=s[1],k=2),U())}function P(){32==a.event.keyCode&&2==k&&(M[0]+=o[1],M[1]+=s[1],k=0,U())}function O(){var t=a.mouse(y),e=!1;g&&(t[0]+=g[0],t[1]+=g[1]),k||(a.event.altKey?(f||(f=[(o[0]+o[1])/2,(s[0]+s[1])/2]),M[0]=o[+(t[0]>>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;he+n||T>r+n||k=M||a===o)){var s=m[i];void 0===o&&(o=s.length);for(var l=a;l=v&&c<=y&&f>=g&&f<=b&&S.push(u)}var h=x[i],p=h[4*a+0],d=h[4*a+1],_=h[4*a+2],E=h[4*a+3],P=C(h,a+1),O=.5*n,I=i+1;L(e,r,O,I,p,d||_||E||P),L(e,r+O,O,I,d,_||E||P),L(e+O,r,O,I,_,E||P),L(e+O,r+O,O,I,E,P)}}function C(t,e){for(var r=null,n=0;null===r;)if(r=t[4*e+n],++n>t.length)return null;return r}return L(0,0,1,0,0,1),S},d;function E(t,e,r,i,a){for(var o=[],s=0;s0){e+=Math.abs(o(t[0]));for(var r=1;r2){for(l=0;l=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")}},60302:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(23132);function i(t,e,r){if(null!==t)for(var n,a,o,s,l,u,c,f,h=0,p=0,d=t.type,v="FeatureCollection"===d,g="Feature"===d,y=v?t.features.length:1,m=0;mu||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;st[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]=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")}},27138:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(94228);function i(t,e,r){if(null!==t)for(var n,a,o,s,l,u,c,f,h=0,p=0,d=t.type,v="FeatureCollection"===d,g="Feature"===d,y=v?t.features.length:1,m=0;mu||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;s=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")},e.radians2degrees=function(){throw new Error("method has been renamed to `radiansToDegrees`")},e.degrees2radians=function(){throw new Error("method has been renamed to `degreesToRadians`")},e.distanceToDegrees=function(){throw new Error("method has been renamed to `lengthToDegrees`")},e.distanceToRadians=function(){throw new Error("method has been renamed to `lengthToRadians`")},e.radiansToDistance=function(){throw new Error("method has been renamed to `radiansToLength`")},e.bearingToAngle=function(){throw new Error("method has been renamed to `bearingToAzimuth`")},e.convertDistance=function(){throw new Error("method has been renamed to `convertLength`")}},88553:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(64182);function i(t,e,r){if(null!==t)for(var n,a,o,s,l,u,c,f,h=0,p=0,d=t.type,v="FeatureCollection"===d,g="Feature"===d,y=v?t.features.length:1,m=0;mu||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;si&&(i=t[o]),t[o]1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;it.length)&&(r=t.length),t.substring(r-e.length,r)===e}var y="",m="",x="",b="",_={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 w(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 T(t){return d(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var k=function(t){function e(t){var r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),"object"!==p(t)||null===t)throw new v("options","Object",t);var i=t.message,a=t.operator,l=t.stackStartFn,u=t.actual,c=t.expected,f=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=i)r=o(this,h(e).call(this,String(i)));else if(n.stderr&&n.stderr.isTTY&&(n.stderr&&n.stderr.getColorDepth&&1!==n.stderr.getColorDepth()?(y="",m="",b="",x=""):(y="",m="",b="",x="")),"object"===p(u)&&null!==u&&"object"===p(c)&&null!==c&&"stack"in u&&u instanceof Error&&"stack"in c&&c instanceof Error&&(u=w(u),c=w(c)),"deepStrictEqual"===a||"strictEqual"===a)r=o(this,h(e).call(this,function(t,e,r){var i="",a="",o=0,s="",l=!1,u=T(t),c=u.split("\n"),f=T(e).split("\n"),h=0,d="";if("strictEqual"===r&&"object"===p(t)&&"object"===p(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===c.length&&1===f.length&&c[0]!==f[0]){var v=c[0].length+f[0].length;if(v<=10){if(!("object"===p(t)&&null!==t||"object"===p(e)&&null!==e||0===t&&0===e))return"".concat(_[r],"\n\n")+"".concat(c[0]," !== ").concat(f[0],"\n")}else if("strictEqualObject"!==r&&v<(n.stderr&&n.stderr.isTTY?n.stderr.columns:80)){for(;c[0][h]===f[0][h];)h++;h>2&&(d="\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 w=c[c.length-1],k=f[f.length-1];w===k&&(h++<2?s="\n ".concat(w).concat(s):i=w,c.pop(),f.pop(),0!==c.length&&0!==f.length);)w=c[c.length-1],k=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(y,"...").concat(b);M.length>27;)M.pop();return"".concat(_.notIdentical,"\n\n").concat(M.join("\n"),"\n")}h>3&&(s="\n".concat(y,"...").concat(b).concat(s),l=!0),""!==i&&(s="\n ".concat(i).concat(s),i="");var S=0,E=_[r]+"\n".concat(m,"+ actual").concat(b," ").concat(x,"- expected").concat(b),L=" ".concat(y,"...").concat(b," Lines skipped");for(h=0;h1&&h>2&&(C>4?(a+="\n".concat(y,"...").concat(b),l=!0):C>3&&(a+="\n ".concat(f[h-2]),S++),a+="\n ".concat(f[h-1]),S++),o=h,i+="\n".concat(x,"-").concat(b," ").concat(f[h]),S++;else if(f.length1&&h>2&&(C>4?(a+="\n".concat(y,"...").concat(b),l=!0):C>3&&(a+="\n ".concat(c[h-2]),S++),a+="\n ".concat(c[h-1]),S++),o=h,a+="\n".concat(m,"+").concat(b," ").concat(c[h]),S++;else{var P=f[h],O=c[h],I=O!==P&&(!g(O,",")||O.slice(0,-1)!==P);I&&g(P,",")&&P.slice(0,-1)===O&&(I=!1,O+=","),I?(C>1&&h>2&&(C>4?(a+="\n".concat(y,"...").concat(b),l=!0):C>3&&(a+="\n ".concat(c[h-2]),S++),a+="\n ".concat(c[h-1]),S++),o=h,a+="\n".concat(m,"+").concat(b," ").concat(O),i+="\n".concat(x,"-").concat(b," ").concat(P),S+=2):(a+=i,i="",1!==C&&0!==h||(a+="\n ".concat(O),S++))}if(S>20&&h30)for(k[26]="".concat(y,"...").concat(b);k.length>27;)k.pop();r=1===k.length?o(this,h(e).call(this,"".concat(d," ").concat(k[0]))):o(this,h(e).call(this,"".concat(d,"\n\n").concat(k.join("\n"),"\n")))}else{var A=T(u),M="",S=_[a];"notDeepEqual"===a||"notEqual"===a?(A="".concat(_[a],"\n\n").concat(A)).length>1024&&(A="".concat(A.slice(0,1021),"...")):(M="".concat(T(c)),A.length>512&&(A="".concat(A.slice(0,509),"...")),M.length>512&&(M="".concat(M.slice(0,509),"...")),"deepEqual"===a||"equal"===a?A="".concat(S,"\n\n").concat(A,"\n\nshould equal\n\n"):M=" ".concat(a," ").concat(M)),r=o(this,h(e).call(this,"".concat(A).concat(M)))}return Error.stackTraceLimit=f,r.generatedMessage=!i,Object.defineProperty(s(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=u,r.expected=c,r.operator=a,Error.captureStackTrace&&Error.captureStackTrace(s(r),l),r.stack,r.name="AssertionError",o(r)}var r,l;return 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}}),e&&f(t,e)}(e,t),r=e,l=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:d.custom,value:function(t,e){return d(this,function(t){for(var e=1;e2?"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(32791)),o("string"==typeof t,"'name' must be a string"),"string"==typeof e&&(s="not ",e.substr(0,s.length)===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-e.length,r)===e}(t," argument"))l="The ".concat(t," ").concat(a," ").concat(c(e,"type"));else{var h=("number"!=typeof f&&(f=0),f+".".length>(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(43827));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},74061:function(t,e,r){"use strict";function n(t,e){return function(t){if(Array.isArray(t))return t}(t)||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||null==s.return||s.return()}finally{if(i)throw a}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var a=void 0!==/a/g.flags,o=function(t){var e=[];return t.forEach((function(t){return e.push(t)})),e},s=function(t){var e=[];return t.forEach((function(t,r){return e.push([r,t])})),e},l=Object.is?Object.is:r(64003),u=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},c=Number.isNaN?Number.isNaN:r(15567);function f(t){return t.call.bind(t)}var h=f(Object.prototype.hasOwnProperty),p=f(Object.prototype.propertyIsEnumerable),d=f(Object.prototype.toString),v=r(43827).types,g=v.isAnyArrayBuffer,y=v.isArrayBufferView,m=v.isDate,x=v.isMap,b=v.isRegExp,_=v.isSet,w=v.isNativeError,T=v.isBoxedPrimitive,k=v.isNumberObject,A=v.isStringObject,M=v.isBooleanObject,S=v.isBigIntObject,E=v.isSymbolObject,L=v.isFloat32Array,C=v.isFloat64Array;function P(t){if(0===t.length||t.length>10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function O(t){return Object.keys(t).filter(P).concat(u(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function I(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,a=Math.min(r,n);i0?o-4:o;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===s&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===s&&(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,s=a.length;o0)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 u(t,e,n){for(var i,a,o=[],s=e;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},91358: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)}}},13547: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,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}},44781:function(t,e,r){"use strict";var n=r(53435);t.exports=function(t,e){e||(e={});var r,o,s,l,u,c,f,h,p,d,v,g=null==e.cutoff?.25:e.cutoff,y=null==e.radius?8:e.radius,m=e.channel||0;if(ArrayBuffer.isView(t)||Array.isArray(t)){if(!e.width||!e.height)throw Error("For raw data width and height should be provided by options");r=e.width,o=e.height,l=t,c=e.stride?e.stride:Math.floor(t.length/r/o)}else window.HTMLCanvasElement&&t instanceof window.HTMLCanvasElement?(f=(h=t).getContext("2d"),r=h.width,o=h.height,l=(p=f.getImageData(0,0,r,o)).data,c=4):window.CanvasRenderingContext2D&&t instanceof window.CanvasRenderingContext2D?(f=t,r=(h=t.canvas).width,o=h.height,l=(p=f.getImageData(0,0,r,o)).data,c=4):window.ImageData&&t instanceof window.ImageData&&(p=t,r=t.width,o=t.height,l=p.data,c=4);if(s=Math.max(r,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(u=l,l=Array(r*o),d=0,v=u.length;dr?r:t:te?e:t}},6475:function(t,e,r){"use strict";var n=r(53435);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]}},76857: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]}},25075:function(t,e,r){"use strict";var n=r(36652),i=r(53435),a=r(90660);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)}},90736:function(t,e,r){"use strict";var n=r(76857),i=r(10973),a=r(46775);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=(p=t.slice(1)).length;u=1,c<=4?(l=[parseInt(p[0]+p[0],16),parseInt(p[1]+p[1],16),parseInt(p[2]+p[2],16)],4===c&&(u=parseInt(p[3]+p[3],16)/255)):(l=[parseInt(p[0]+p[1],16),parseInt(p[2]+p[3],16),parseInt(p[4]+p[5],16)],8===c&&(u=parseInt(p[6]+p[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,p=f.replace(/a$/,"");s=p,c="cmyk"===p?4:"gray"===p?1:3,l=e[2].trim().split(/\s*,\s*/).map((function(t,e){if(/%$/.test(t))return e===c?parseFloat(t)/100:"rgb"===p?255*parseFloat(t)/100:parseFloat(t);if("h"===p[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==o[t])return o[t]}return parseFloat(t)})),f===p&&l.push(1),u=h||void 0===l[c]?1:l[c],l=l.slice(0,c)}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}},36652:function(t,e,r){"use strict";var n=r(90736),i=r(80009),a=r(53435);t.exports=function(t){var e,r=n(t);return r.space?((e=Array(3))[0]=a(r.values[0],0,255),e[1]=a(r.values[1],0,255),e[2]=a(r.values[2],0,255),"h"===r.space[0]&&(e=i.rgb(e)),e.push(a(r.alpha,0,1)),e):[]}},80009:function(t,e,r){"use strict";var n=r(6866);t.exports={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[a=255*l,a,a];e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];for(var u=0;u<3;u++)(n=o+1/3*-(u-1))<0?n++:n>1&&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]}},6866:function(t){"use strict";t.exports={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}},24138:function(t){t.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|ç)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|é)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|é)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|ã)o.?tom(e|é)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}},72791:function(t,e,r){"use strict";t.exports={parse:r(41004),stringify:r(53313)}},63625:function(t,e,r){"use strict";var n=r(40402);t.exports={isSize:function(t){return/^[\d\.]/.test(t)||-1!==t.indexOf("/")||-1!==n.indexOf(t)}}},41004:function(t,e,r){"use strict";var n=r(90448),i=r(38732),a=r(41901),o=r(15659),s=r(96209),l=r(83794),u=r(99011),c=r(63625).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}},53313:function(t,e,r){"use strict";var n=r(71299),i=r(63625).isSize,a=d(r(38732)),o=d(r(41901)),s=d(r(15659)),l=d(r(96209)),u=d(r(83794)),c={normal:1,"small-caps":1},f={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},h="serif";function p(t,e){if(t&&!e[t]&&!a[t])throw Error("Unknown keyword `"+t+"`");return t}function d(t){for(var e={},r=0;re?1:t>=e?0:NaN}r.d(e,{j2:function(){return n},Fp:function(){return s},J6:function(){return u},TS:function(){return c},VV:function(){return f},w6:function(){return h},Sm: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);++n=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(;++n=(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 W},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&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:r}}))}function A(t,e){for(var r,n=0,i=t.length;n0)for(var r,n,i=new Array(r),a=0;a=0&&e._call.call(null,t),e=e._next;--C}()}finally{C=0,function(){for(var t,e,r=S,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:S=e);E=t,q(n)}(),D=0}}function H(){var t=R.now(),e=t-I;e>1e3&&(z-=e,I=t)}function q(t){C||(P&&(P=clearTimeout(P)),t-D>24?(t<1/0&&(P=setTimeout(V,t-R.now()-z)),O&&(O=clearInterval(O))):(O||(I=R.now(),O=setInterval(H,1e3)),C=1,F(V)))}function G(t){return t.x}function Z(t){return t.y}j.prototype=U.prototype={constructor:j,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?B():+r)+(null==e?0:+e),this._next||E===this||(E?E._next=this:S=this,E=this),this._call=t,this._time=r,q()},stop:function(){this._call&&(this._call=null,this._time=1/0,q())}};var Y=Math.PI*(3-Math.sqrt(5));function W(t){var e,r=1,n=.001,i=1-Math.pow(n,1/300),a=0,o=.6,s=(0,y.UI)(),l=U(c),u=L("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,G,Z).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),d1?n[0]+n.slice(2):n,+t.slice(r+1)]}r.d(e,{WU:function(){return h},FF: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():"",k="$"===c?l:/[%p]/.test(w)?v:"",A=u[w],M=/[defgprs%]/.test(w);function S(t){var o,s,l,u=T,c=k;if("c"===w)c=A(t)+c,t="";else{var v=(t=+t)<0||1/t<0;if(t=isNaN(t)?y:A(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},65704:function(t,e,r){"use strict";r.r(e),r.d(e,{geoAiry:function(){return z},geoAiryRaw:function(){return D},geoAitoff:function(){return F},geoAitoffRaw:function(){return R},geoArmadillo:function(){return N},geoArmadilloRaw:function(){return B},geoAugust:function(){return U},geoAugustRaw:function(){return j},geoBaker:function(){return G},geoBakerRaw:function(){return q},geoBerghaus:function(){return W},geoBerghausRaw:function(){return Y},geoBertin1953:function(){return rt},geoBertin1953Raw:function(){return et},geoBoggs:function(){return ct},geoBoggsRaw:function(){return ut},geoBonne:function(){return vt},geoBonneRaw:function(){return dt},geoBottomley:function(){return yt},geoBottomleyRaw:function(){return gt},geoBromley:function(){return xt},geoBromleyRaw:function(){return mt},geoChamberlin:function(){return Et},geoChamberlinAfrica:function(){return St},geoChamberlinRaw:function(){return At},geoCollignon:function(){return Ct},geoCollignonRaw:function(){return Lt},geoCraig:function(){return Ot},geoCraigRaw:function(){return Pt},geoCraster:function(){return zt},geoCrasterRaw:function(){return Dt},geoCylindricalEqualArea:function(){return Ft},geoCylindricalEqualAreaRaw:function(){return Rt},geoCylindricalStereographic:function(){return Nt},geoCylindricalStereographicRaw:function(){return Bt},geoEckert1:function(){return Ut},geoEckert1Raw:function(){return jt},geoEckert2:function(){return Ht},geoEckert2Raw:function(){return Vt},geoEckert3:function(){return Gt},geoEckert3Raw:function(){return qt},geoEckert4:function(){return Yt},geoEckert4Raw:function(){return Zt},geoEckert5:function(){return Xt},geoEckert5Raw:function(){return Wt},geoEckert6:function(){return Kt},geoEckert6Raw:function(){return Jt},geoEisenlohr:function(){return te},geoEisenlohrRaw:function(){return Qt},geoFahey:function(){return ne},geoFaheyRaw:function(){return re},geoFoucaut:function(){return ae},geoFoucautRaw:function(){return ie},geoFoucautSinusoidal:function(){return se},geoFoucautSinusoidalRaw:function(){return oe},geoGilbert:function(){return he},geoGingery:function(){return ge},geoGingeryRaw:function(){return pe},geoGinzburg4:function(){return xe},geoGinzburg4Raw:function(){return me},geoGinzburg5:function(){return _e},geoGinzburg5Raw:function(){return be},geoGinzburg6:function(){return Te},geoGinzburg6Raw:function(){return we},geoGinzburg8:function(){return Ae},geoGinzburg8Raw:function(){return ke},geoGinzburg9:function(){return Se},geoGinzburg9Raw:function(){return Me},geoGringorten:function(){return Ce},geoGringortenQuincuncial:function(){return ei},geoGringortenRaw:function(){return Le},geoGuyou:function(){return De},geoGuyouRaw:function(){return Ie},geoHammer:function(){return $},geoHammerRaw:function(){return J},geoHammerRetroazimuthal:function(){return Be},geoHammerRetroazimuthalRaw:function(){return Re},geoHealpix:function(){return Ye},geoHealpixRaw:function(){return He},geoHill:function(){return Xe},geoHillRaw:function(){return We},geoHomolosine:function(){return er},geoHomolosineRaw:function(){return tr},geoHufnagel:function(){return nr},geoHufnagelRaw:function(){return rr},geoHyperelliptical:function(){return sr},geoHyperellipticalRaw:function(){return or},geoInterrupt:function(){return fr},geoInterruptedBoggs:function(){return pr},geoInterruptedHomolosine:function(){return vr},geoInterruptedMollweide:function(){return yr},geoInterruptedMollweideHemispheres:function(){return xr},geoInterruptedQuarticAuthalic:function(){return hn},geoInterruptedSinuMollweide:function(){return _r},geoInterruptedSinusoidal:function(){return Tr},geoKavrayskiy7:function(){return Ar},geoKavrayskiy7Raw:function(){return kr},geoLagrange:function(){return Sr},geoLagrangeRaw:function(){return Mr},geoLarrivee:function(){return Cr},geoLarriveeRaw:function(){return Lr},geoLaskowski:function(){return Or},geoLaskowskiRaw:function(){return Pr},geoLittrow:function(){return Dr},geoLittrowRaw:function(){return Ir},geoLoximuthal:function(){return Rr},geoLoximuthalRaw:function(){return zr},geoMiller:function(){return Br},geoMillerRaw:function(){return Fr},geoModifiedStereographic:function(){return Jr},geoModifiedStereographicAlaska:function(){return Gr},geoModifiedStereographicGs48:function(){return Zr},geoModifiedStereographicGs50:function(){return Yr},geoModifiedStereographicLee:function(){return Xr},geoModifiedStereographicMiller:function(){return Wr},geoModifiedStereographicRaw:function(){return Nr},geoMollweide:function(){return ot},geoMollweideRaw:function(){return at},geoMtFlatPolarParabolic:function(){return tn},geoMtFlatPolarParabolicRaw:function(){return Qr},geoMtFlatPolarQuartic:function(){return rn},geoMtFlatPolarQuarticRaw:function(){return en},geoMtFlatPolarSinusoidal:function(){return an},geoMtFlatPolarSinusoidalRaw:function(){return nn},geoNaturalEarth:function(){return on.Z},geoNaturalEarth2:function(){return ln},geoNaturalEarth2Raw:function(){return sn},geoNaturalEarthRaw:function(){return on.K},geoNellHammer:function(){return cn},geoNellHammerRaw:function(){return un},geoNicolosi:function(){return dn},geoNicolosiRaw:function(){return pn},geoPatterson:function(){return _n},geoPattersonRaw:function(){return bn},geoPeirceQuincuncial:function(){return ri},geoPierceQuincuncial:function(){return ri},geoPolyconic:function(){return Tn},geoPolyconicRaw:function(){return wn},geoPolyhedral:function(){return Ln},geoPolyhedralButterfly:function(){return Rn},geoPolyhedralCollignon:function(){return Nn},geoPolyhedralWaterman:function(){return jn},geoProject:function(){return Gn},geoQuantize:function(){return ni},geoQuincuncial:function(){return ti},geoRectangularPolyconic:function(){return ai},geoRectangularPolyconicRaw:function(){return ii},geoRobinson:function(){return li},geoRobinsonRaw:function(){return si},geoSatellite:function(){return ci},geoSatelliteRaw:function(){return ui},geoSinuMollweide:function(){return Qe},geoSinuMollweideRaw:function(){return $e},geoSinusoidal:function(){return pt},geoSinusoidalRaw:function(){return ht},geoStitch:function(){return Ti},geoTimes:function(){return Ai},geoTimesRaw:function(){return ki},geoTwoPointAzimuthal:function(){return Li},geoTwoPointAzimuthalRaw:function(){return Si},geoTwoPointAzimuthalUsa:function(){return Ei},geoTwoPointEquidistant:function(){return Oi},geoTwoPointEquidistantRaw:function(){return Ci},geoTwoPointEquidistantUsa:function(){return Pi},geoVanDerGrinten:function(){return Di},geoVanDerGrinten2:function(){return Ri},geoVanDerGrinten2Raw:function(){return zi},geoVanDerGrinten3:function(){return Bi},geoVanDerGrinten3Raw:function(){return Fi},geoVanDerGrinten4:function(){return ji},geoVanDerGrinten4Raw:function(){return Ni},geoVanDerGrintenRaw:function(){return Ii},geoWagner:function(){return Vi},geoWagner4:function(){return Yi},geoWagner4Raw:function(){return Zi},geoWagner6:function(){return Xi},geoWagner6Raw:function(){return Wi},geoWagner7:function(){return Hi},geoWagnerRaw:function(){return Ui},geoWiechel:function(){return Ki},geoWiechelRaw:function(){return Ji},geoWinkel3:function(){return Qi},geoWinkel3Raw:function(){return $i}});var n=r(15002),i=Math.abs,a=Math.atan,o=Math.atan2,s=(Math.ceil,Math.cos),l=Math.exp,u=Math.floor,c=Math.log,f=Math.max,h=Math.min,p=Math.pow,d=Math.round,v=Math.sign||function(t){return t>0?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,k=P(2),A=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.r)(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.Z)(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,k=e*x*d/2,A=r*v+e*p*y,M=T*k-A*w,S=(_*T-b*A)/M/2,E=(b*k-_*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.r)(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.Z)(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,k=o*(v*y+_*h*c*d),A=o*(.5*l*p-2*_*f*u),M=.25*o*(p*u-_*f*v*l),S=o*(d*c+_*y*h),E=A*M-S*k;if(!E)break;var L=(T*A-w*S)/E,O=(w*M-T*k)/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+k);function q(t,e){var r=i(e);return rx&&--u>0);return[t/(s(o)*(V-1/g(o))),v(e)*o]};var Z=r(17889);function Y(t){var e=2*b/t;function r(t,r){var n=(0,Z.N)(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 Z.N.invert(t,r)},r}function W(){var t=5,e=(0,n.r)(Y),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,k=T*b-_*w,A=(i(k)<.5?.5:1)/k;if(o+=u=(d*w-p*T)*A,s+=c=(p*_-d*b)*A,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.Z)(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(k/_,k,b);function ot(){return(0,n.Z)(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+k*g(r))/st]}function ct(){return(0,n.Z)(ut).scale(160.857)}function ft(t){var e=0,r=(0,n.r)(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.Z)(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.r)(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-k*g(o),o-=r=(g(2*o)+2*o-b*g(n))/(2*s(2*o)+2+b*s(n)*k*s(o))}while(i(r)>m&&--l>0);return n=a-k*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.Z)(mt).scale(152.63)}var bt=r(66624),_t=r(49386);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 kt(t){return t-2*b*u((t+b)/(2*b))}function At(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]=kt(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.Z)({type:"MultiPoint",coordinates:[t,e,r]}),a=[-i[0],-i[1]],o=(0,_t.Z)(a),s=At(Mt(o(t)),Mt(o(e)),Mt(o(r)));s.invert=tt(s);var l=(0,n.Z)(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/A*t*r,A*(1-r)]}function Ct(){return(0,n.Z)(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/A-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)/A,It*A*g(e/3)]}function zt(){return(0,n.Z)(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.Z)(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.Z)(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.Z)(qt).scale(180.739)}function Zt(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 Yt(){return(0,n.Z)(Zt).scale(180.739)}function Wt(t,e){return[t*(1+s(e))/P(2+b),2*e/P(2+b)]}function Xt(){return(0,n.Z)(Wt).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.Z)(Jt).scale(173.044)}Dt.invert=function(t,e){var r=3*L(e/(It*A));return[A*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]},Zt.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+_))]},Wt.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*k;function Qt(t,e){var r=g(t/=2),n=s(t),i=P(s(e)),o=s(e/=2),l=g(e)/(o+k*n*i),u=P(2/(1+l*l)),f=P((k*o+(n+r)*i)/(k*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.Z)(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),A=y/(x+k*v*w),M=A*A,S=P(2/(1+M)),E=(k*x+(v+d)*w)/(k*x+(v-d)*w),L=P(E),C=L-1/L,O=L+1/L,I=S*C-2*c(L)-t,D=S*A*O-2*a(A)-e,z=y&&T*w*d*M/y,R=(k*v*x+w)/(2*(x+k*v*w)*(x+k*v*w)*w),F=-.5*A*S*S*S,B=F*z,N=F*R,U=(U=2*x+k*w*(v-d))*U*L,V=(k*v*x*w+b)/U,H=-k*d*y/(w*U),q=C*B-2*V/L+S*(V+V/E),G=C*N-2*H/L+S*(H+H/E),Z=A*O*B-2*z/(1+M)+S*O*z+S*A*(V-V/E),Y=A*O*N-2*R/(1+M)+S*O*R+S*A*(H-H/E),W=G*Z-Y*q;if(!W)break;var X=(D*G-I*Y)/W,J=(I*Z-D*q)/W;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),k=(b-t)/ve(T,x,b);u=h;var A,M=50;do{u-=A=(t+ve(T,x,u)*k-h)/(T(u)*k)}while(i(A)>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),k=t*s(y),A=g(k),M=_-k,S=(T-y*A)/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.Z)(me).scale(149.995)}var be=ye(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function _e(){return(0,n.Z)(be).scale(153.93)}var we=ye(5/6*b,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Te(){return(0,n.Z)(we).scale(130.945)}function ke(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}function Ae(){return(0,n.Z)(ke).scale(131.747)}ke.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.Z)(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,k=s(e),A=1/k,M=2*a*k,S=(-p*k-(-3*o+h*c)*M*(1-a))/(p*p),E=-A*M,C=-A*(o*u*S+d*c*M),O=-2*A*(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.Z)(Ee(Le)).scale(239.75)}function Pe(t,e){var r,n,o,u,c,f;if(e=.999999)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=(k-1)/(k+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.Z)(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*_,k=(-f*_-(-3*a+c*(1+3*l))*T*(1-u))/(f*f);return[b/4*(t*(-2*w*(.5*k/p*(1-l)-2*a*p*T)+-w*T*g)+-w*(a*(1+l)*k+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=(k-1)/(k+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(7613);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.r)(Re),r=e(t),i=r.rotate,a=r.stream,o=(0,ze.Z)();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(33064),je=r(72736),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=A-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?89.999999:Ue]}function Ge(t,e){return[t,1&e?-89.999999:-Ue]}function Ze(t){return[.999999*t[0],t[1]]}function Ye(){var t=4,e=(0,n.r)(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.Z)((e=180/t,r=[].concat((0,Ne.w6)(-180,180+e/2,e).map(qe),(0,Ne.w6)(180,-180-e/2,-e).map(Ge)),{type:"Polygon",coordinates:[180===e?r.map(Ze):r]}),o)},a},r.scale(239.75)}function We(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),k=s(m),A=n+o(T,r-k),M=1+c-2*r*k;m-=y=(m-u*n-r*T+M*A-.5*v*e)/(2*r*T*A)}while(i(y)>x&&--w>0);p=a*P(M),d=f*A/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.r)(We),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.Z)($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.Z)(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.r)(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.r)(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])=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.TS)(l)]}}function fr(t,e,r){var i,a;function o(r,n){for(var i=n<0?-1:1,a=e[+(n<0)],o=0,s=a.length-1;oa[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;lo&&(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 hr=[[[[-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 pr(){return fr(ut,hr).scale(160.857)}var dr=[[[[-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 vr(){return fr(tr,dr).scale(152.63)}var gr=[[[[-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 yr(){return fr(at,gr).scale(169.529)}var mr=[[[[-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 xr(){return fr(at,mr).scale(169.529).rotate([20,0])}var br=[[[[-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 _r(){return fr($e,br,tt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var wr=[[[[-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 Tr(){return fr(ht,wr).scale(152.63).rotate([-20,0])}function kr(t,e){return[3/M*t*P(b*b/3-e*e),e]}function Ar(){return(0,n.Z)(kr).scale(158.837)}function Mr(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 Sr(){var t=.5,e=(0,n.r)(Mr),r=e(t);return r.spacing=function(r){return arguments.length?e(t=+r):t},r.scale(124.75)}kr.invert=function(t,e){return[M/3*t/P(b*b/3-e*e),e]};var Er=b/k;function Lr(t,e){return[t*(1+P(s(e)))/2,e/(s(e/2)*s(t/6))]}function Cr(){return(0,n.Z)(Lr).scale(97.2672)}function Pr(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 Or(){return(0,n.Z)(Pr).scale(139.98)}function Ir(t,e){return[g(t)/s(e),y(e)*s(t)]}function Dr(){return(0,n.Z)(Ir).scale(144.049).clipAngle(89.999)}function zr(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,m=0;--h>=0;)y=d+u*(f=y)-c*m,m=v+u*m+c*f,d=(p=t[h])[0]+u*(f=d)-c*v,v=p[1]+u*v+c*f;var x,b,_=(y=d+u*(f=y)-c*m)*y+(m=v+u*m+c*f)*m;u-=x=((d=u*(f=d)-c*v-r)*y+(v=u*v+c*f-n)*m)/_,c-=b=(v*y-d*m)/_}while(i(x)+i(b)>1e-12&&--l>0);if(l){var w=P(u*u+c*c),T=2*a(.5*w),k=g(T);return[o(u*k,w*s(T)),w?L(c*k/w):0]}},r}Lr.invert=function(t,e){var r=i(t),n=i(e),a=m,o=_;nm||i(x)>m)&&--a>0);return a&&[r,n]},Ir.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)]},Fr.invert=function(t,e){return[t,2.5*a(l(.8*e))-.625*b]};var jr=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],Ur=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Vr=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Hr=[[.9245,0],[0,0],[.01943,0]],qr=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Gr(){return Jr(jr,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function Zr(){return Jr(Ur,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Yr(){return Jr(Vr,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function Wr(){return Jr(Hr,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function Xr(){return Jr(qr,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Jr(t,e){var r=(0,n.Z)(Nr(t)).rotate(e).clipAngle(90),i=(0,_t.Z)(e),a=r.center;return delete r.rotate,r.center=function(t){return arguments.length?a(i(t)):i.invert(a())},r}var Kr=P(6),$r=P(7);function Qr(t,e){var r=L(7*g(e)/(3*Kr));return[Kr*t*(2*s(2*r/3)-1)/$r,9*g(r/3)/$r]}function tn(){return(0,n.Z)(Qr).scale(164.859)}function en(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]},un.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 fn=[[[[-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 hn(){return fr(J(1/0),fn).rotate([20,0]).scale(152.63)}function pn(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 dn(){return(0,n.Z)(pn).scale(127.267)}pn.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 vn=1.0148,gn=.23185,yn=-.14499,mn=.02406,xn=1.790857183;function bn(t,e){var r=e*e;return[t,e*(vn+r*r*(gn+r*(yn+mn*r)))]}function _n(){return(0,n.Z)(bn).scale(139.319)}function wn(t,e){if(i(e)xn?e=xn:e<-1.790857183&&(e=-1.790857183);var r,n=e;do{var a=n*n;n-=r=(n*(vn+a*a*(gn+a*(yn+mn*a)))-e)/(1.0148+a*a*(1.1592500000000001+a*(.21654*a-1.01493)))}while(i(r)>m);return[t,n]},wn.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=Sn(c[1],c[0]),p=Sn(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=En(h)/En(p),Mn([1,0,c[0][0],0,1,c[0][1]],Mn([v,0,0,0,v,0],Mn([s(d),g(d),0,-g(d),s(d),0],[1,0,-f[0][0],0,1,-f[0][1]]))));e.transform=r.transform?Mn(r.transform,i):i;for(var a=r.edges,l=0,u=a.length;l0?[-e[0],0]:[180-e[0],180])};var e=zn.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])})),Ln(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])})),Jn=[],t.length?t.length>1?{type:"MultiPolygon",coordinates:t}:{type:"Polygon",coordinates:t[0]}:null}};function ti(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.Z)(r).rotate([-90,-90,45]).clipAngle(179.999)}function ei(){return ti(Le).scale(176.423)}function ri(){return ti(Ie).scale(111.48)}function ni(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 ii(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 li(){return(0,n.Z)(si).scale(152.63)}function ui(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 ci(){var t=2,e=0,r=(0,n.r)(ui),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)}oi.forEach((function(t){t[1]*=1.0144})),si.invert=function(t,e){var r=e/_,n=90*r,a=h(18,i(n/5)),o=f(0,u(a));do{var s=oi[o][1],l=oi[o+1][1],c=oi[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=oi[o][1],l=oi[o+1][1],c=oi[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=oi[o][0],T=oi[o+1][0],k=oi[h(19,o+2)][0];return[t/(T+y*(k-w)/2+y*y*(k-2*T+w)/2),n*E]};var fi=-179.9999,hi=179.9999,pi=-89.9999,di=89.9999;function vi(t){return t.length>0}function gi(t){return-90===t||90===t?[0,t]:[-180,(e=t,Math.floor(1e4*e)/1e4)];var e}function yi(t){var e=t[0],r=t[1],n=!1;return e<=fi?(e=-180,n=!0):e>=hi&&(e=180,n=!0),r<=pi?(r=-90,n=!0):r>=di&&(r=90,n=!0),n?[e,r]:t}function mi(t){return t.map(yi)}function xi(t,e,r){for(var n=0,i=t.length;n=hi||c<=pi||c>=di){a[o]=yi(l);for(var f=o+1;ffi&&ppi&&d=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(f-1)}),a[0]=gi(a[0][1]),o=-1,s=a.length}}}}function bi(t){var e,r,n,i,a,o,s=t.length,l={},u={};for(e=0;e0?b-l:l)*S],c=(0,n.Z)(t(s)).rotate(u),f=(0,_t.Z)(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 Si(t){var e=s(t);function r(t,r){var n=(0,In.M)(t,r);return n[0]*=e,n}return r.invert=function(t,r){return In.M.invert(t/e,r)},r}function Ei(){return Li([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Li(t,e){return Mi(Si,t,e)}function Ci(t){if(!(t*=2))return Z.N;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 Pi(){return Oi([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function Oi(t,e){return Mi(Ci,t,e)}function Ii(t,e){if(i(e)m&&--l>0);return[v(t)*(P(a*a+4)+a)*b/4,_*s]};var qi=4*b+3*P(3),Gi=2*P(2*b*P(3)/qi),Zi=it(Gi*P(3)/b,Gi,qi/6);function Yi(){return(0,n.Z)(Zi).scale(176.84)}function Wi(t,e){return[t*P(1-3*e*e/(b*b)),e]}function Xi(){return(0,n.Z)(Wi).scale(152.63)}function Ji(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 Ki(){return(0,n.Z)(Ji).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)}function $i(t,e){var r=R(t,e);return[(r[0]+t/_)/2,(r[1]+e)/2]}function Qi(){return(0,n.Z)($i).scale(158.837)}Wi.invert=function(t,e){return[t/P(1-3*e*e/(b*b)),e]},Ji.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]},$i.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,k=.5*o*(h*y+b*l*d*f)+.5/_,A=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=A*M-S*k,L=(T*A-w*S)/E,O=(w*M-T*k)/E;r-=L,n-=O}while((i(L)>m||i(O)>m)&&--a>0);return[r,n]}},33940:function(t,e,r){"use strict";function n(){return new i}function i(){this.reset()}r.d(e,{Z: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)}},97860:function(t,e,r){"use strict";r.d(e,{L9:function(){return h},ZP:function(){return x},gL:function(){return d}});var n,i,a,o,s,l=r(33940),u=r(39695),c=r(73182),f=r(72736),h=(0,l.Z)(),p=(0,l.Z)(),d={point:c.Z,lineStart:c.Z,lineEnd:c.Z,polygonStart:function(){h.reset(),d.lineStart=v,d.lineEnd=g},polygonEnd:function(){var t=+h;p.add(t<0?u.BZ+t:t),this.lineStart=this.lineEnd=this.point=c.Z},sphere:function(){p.add(u.BZ)}};function v(){d.point=y}function g(){m(n,i)}function y(t,e){d.point=m,n=t,i=e,t*=u.uR,e*=u.uR,a=t,o=(0,u.mC)(e=e/2+u.pu),s=(0,u.O$)(e)}function m(t,e){t*=u.uR,e=(e*=u.uR)/2+u.pu;var r=t-a,n=r>=0?1:-1,i=n*r,l=(0,u.mC)(e),c=(0,u.O$)(e),f=s*c,p=o*l+f*(0,u.mC)(i),d=f*n*(0,u.O$)(i);h.add((0,u.fv)(d,p)),a=t,o=l,s=c}function x(t){return p.reset(),(0,f.Z)(t,d),2*p}},77338:function(t,e,r){"use strict";r.d(e,{Z:function(){return C}});var n,i,a,o,s,l,u,c,f,h,p=r(33940),d=r(97860),v=r(7620),g=r(39695),y=r(72736),m=(0,p.Z)(),x={point:b,lineStart:w,lineEnd:T,polygonStart:function(){x.point=k,x.lineStart=A,x.lineEnd=M,m.reset(),d.gL.polygonStart()},polygonEnd:function(){d.gL.polygonEnd(),x.point=b,x.lineStart=w,x.lineEnd=T,d.L9<0?(n=-(a=180),i=-(o=90)):m>g.Ho?o=90:m<-g.Ho&&(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.Og)([t*g.uR,e*g.uR]);if(c){var l=(0,v.T5)(c,r),u=[l[1],-l[0],0],p=(0,v.T5)(u,l);(0,v.iJ)(p),p=(0,v.Y1)(p);var d,y=t-s,m=y>0?1:-1,x=p[0]*g.RW*m,b=(0,g.Wn)(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 k(t,e){if(c){var r=t-s;m.add((0,g.Wn)(r)>180?r+(r>0?360:-360):r)}else l=t,u=e;d.gL.point(t,e),_(t,e)}function A(){d.gL.lineStart()}function M(){k(l,u),d.gL.lineEnd(),(0,g.Wn)(m)>g.Ho&&(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]]}},7620:function(t,e,r){"use strict";r.d(e,{Og:function(){return a},T:function(){return u},T5:function(){return s},Y1:function(){return i},iJ:function(){return c},j9:function(){return o},s0:function(){return l}});var n=r(39695);function i(t){return[(0,n.fv)(t[1],t[0]),(0,n.ZR)(t[2])]}function a(t){var e=t[0],r=t[1],i=(0,n.mC)(r);return[i*(0,n.mC)(e),i*(0,n.O$)(e),(0,n.O$)(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._b)(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}},66624:function(t,e,r){"use strict";r.d(e,{Z:function(){return I}});var n,i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x=r(39695),b=r(73182),_=r(72736),w={sphere:b.Z,point:T,lineStart:A,lineEnd:E,polygonStart:function(){w.lineStart=L,w.lineEnd=C},polygonEnd:function(){w.lineStart=A,w.lineEnd=E}};function T(t,e){t*=x.uR,e*=x.uR;var r=(0,x.mC)(e);k(r*(0,x.mC)(t),r*(0,x.O$)(t),(0,x.O$)(e))}function k(t,e,r){++n,a+=(t-a)/n,o+=(e-o)/n,s+=(r-s)/n}function A(){w.point=M}function M(t,e){t*=x.uR,e*=x.uR;var r=(0,x.mC)(e);g=r*(0,x.mC)(t),y=r*(0,x.O$)(t),m=(0,x.O$)(e),w.point=S,k(g,y,m)}function S(t,e){t*=x.uR,e*=x.uR;var r=(0,x.mC)(e),n=r*(0,x.mC)(t),a=r*(0,x.O$)(t),o=(0,x.O$)(e),s=(0,x.fv)((0,x._b)((s=y*o-m*a)*s+(s=m*n-g*o)*s+(s=g*a-y*n)*s),g*n+y*a+m*o);i+=s,l+=s*(g+(g=n)),u+=s*(y+(y=a)),c+=s*(m+(m=o)),k(g,y,m)}function E(){w.point=T}function L(){w.point=P}function C(){O(d,v),w.point=T}function P(t,e){d=t,v=e,t*=x.uR,e*=x.uR,w.point=O;var r=(0,x.mC)(e);g=r*(0,x.mC)(t),y=r*(0,x.O$)(t),m=(0,x.O$)(e),k(g,y,m)}function O(t,e){t*=x.uR,e*=x.uR;var r=(0,x.mC)(e),n=r*(0,x.mC)(t),a=r*(0,x.O$)(t),o=(0,x.O$)(e),s=y*o-m*a,d=m*n-g*o,v=g*a-y*n,b=(0,x._b)(s*s+d*d+v*v),_=(0,x.ZR)(b),w=b&&-_/b;f+=w*s,h+=w*d,p+=w*v,i+=_,l+=_*(g+(g=n)),u+=_*(y+(y=a)),c+=_*(m+(m=o)),k(g,y,m)}function I(t){n=i=a=o=s=l=u=c=f=h=p=0,(0,_.Z)(t,w);var e=f,r=h,d=p,v=e*e+r*r+d*d;return v0?os)&&(o+=i*a.BZ));for(var h,p=o;i>0?p>s:p0?i.pi:-i.pi,u=(0,i.Wn)(o-r);(0,i.Wn)(u-i.pi)0?i.ou:-i.ou),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.Wn)(r-a)i.Ho?(0,i.z4)(((0,i.O$)(e)*(o=(0,i.mC)(n))*(0,i.O$)(r)-(0,i.O$)(n)*(a=(0,i.mC)(e))*(0,i.O$)(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.ou,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.Wn)(t[0]-e[0])>i.Ho){var o=t[0]1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}},1457:function(t,e,r){"use strict";r.d(e,{Z:function(){return l}});var n=r(7620),i=r(7613),a=r(39695),o=r(67108),s=r(97023);function l(t){var e=(0,a.mC)(t),r=6*a.uR,l=e>0,u=(0,a.Wn)(e)>a.Ho;function c(t,r){return(0,a.mC)(t)*(0,a.mC)(r)>e}function f(t,r,i){var o=(0,n.Og)(t),s=(0,n.Og)(r),l=[1,0,0],u=(0,n.T5)(o,s),c=(0,n.j9)(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.T5)(l,u),g=(0,n.T)(l,p),y=(0,n.T)(u,d);(0,n.s0)(g,y);var m=v,x=(0,n.j9)(g,m),b=(0,n.j9)(m,m),_=x*x-b*((0,n.j9)(g,g)-1);if(!(_<0)){var w=(0,a._b)(_),T=(0,n.T)(m,(-x-w)/b);if((0,n.s0)(T,g),T=(0,n.Y1)(T),!i)return T;var k,A=t[0],M=r[0],S=t[1],E=r[1];M0^T[1]<((0,a.Wn)(T[0]-A)a.pi^(A<=T[0]&&T[0]<=M)){var P=(0,n.T)(m,(-x+w)/b);return(0,n.s0)(P,g),[T,(0,n.Y1)(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.Z)(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.Z)(e,v)||(0,o.Z)(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.Z)(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.m)(o,t,r,a,e,n)}),l?[0,-t]:[-a.pi,t-a.pi])}},97023:function(t,e,r){"use strict";r.d(e,{Z:function(){return l}});var n=r(85272),i=r(46225),a=r(39695),o=r(23071),s=r(33064);function l(t,e,r,a){return function(l){var f,h,p,d=e(l),v=(0,n.Z)(),g=e(v),y=!1,m={point:x,lineStart:_,lineEnd:w,polygonStart:function(){m.point=T,m.lineStart=k,m.lineEnd=A,h=[],f=[]},polygonEnd:function(){m.point=x,m.lineStart=_,m.lineEnd=w,h=(0,s.TS)(h);var t=(0,o.Z)(f,a);h.length?(y||(l.polygonStart(),y=!0),(0,i.Z)(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 k(){g.lineStart(),p=[]}function A(){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.ou-a.Ho:a.ou-t[1])-((e=e.x)[0]<0?e[1]-a.ou-a.Ho:a.ou-e[1])}},87605:function(t,e,r){"use strict";r.d(e,{Z:function(){return u}});var n=r(39695),i=r(85272),a=r(46225),o=r(33064),s=1e9,l=-s;function u(t,e,r,u){function c(n,i){return t<=n&&n<=r&&e<=i&&i<=u}function f(n,i,a,o){var s=0,l=0;if(null==n||(s=h(n,a))!==(l=h(i,a))||d(n,i)<0^a>0)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.Wn)(i[0]-t)0?0:3:(0,n.Wn)(i[0]-r)0?2:1:(0,n.Wn)(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,k=n,A=(0,i.Z)(),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&&_&&A.rejoin(),h.push(A.result())),M.point=S,_&&k.lineEnd()},polygonStart:function(){k=A,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.TS)(h)).length;(r||i)&&(n.polygonStart(),r&&(n.lineStart(),f(null,null,1,n),n.lineEnd()),i&&(0,a.Z)(h,p,e,f,n),n.polygonEnd()),k=n,h=d=v=null}};function S(t,e){c(t,e)&&k.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&&(k.lineStart(),k.point(n,i));else if(a&&_)k.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&&(k.lineStart(),k.point(n,i),T=!1):(_||(k.lineStart(),k.point(o[0],o[1])),k.point(f[0],f[1]),a||k.lineEnd(),T=!1)}x=n,b=i,_=a}return M}}},46225:function(t,e,r){"use strict";r.d(e,{Z:function(){return o}});var n=r(67108),i=r(39695);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.Z)(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];++n0&&(i=S(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))g.Ho})).map(l)).concat((0,F.w6)((0,g.mD)(a/p)*p,i,p).filter((function(t){return(0,g.Wn)(t%v)>g.Ho})).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.Ho],[180,90-g.Ho]]).extentMinor([[-180,-80-g.Ho],[180,80+g.Ho]])}function U(){return j()()}var V,H,q,G,Z=r(83074),Y=r(8593),W=(0,v.Z)(),X=(0,v.Z)(),J={point:y.Z,lineStart:y.Z,lineEnd:y.Z,polygonStart:function(){J.lineStart=K,J.lineEnd=tt},polygonEnd:function(){J.lineStart=J.lineEnd=J.point=y.Z,W.add((0,g.Wn)(X)),X.reset()},result:function(){var t=W/2;return W.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(3559),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._b)(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=kt}function Tt(){At(et,rt)}function kt(t,e){gt.point=At,yt(et=nt=t,rt=it=e)}function At(t,e){var r=t-nt,n=e-it,i=(0,g._b)(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.BZ)}},result:y.Z};var Et,Lt,Ct,Pt,Ot,It=(0,v.Z)(),Dt={point:y.Z,lineStart:function(){Dt.point=zt},lineEnd:function(){Et&&Rt(Lt,Ct),Dt.point=y.Z},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._b)(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.Z)(t,r(n))),n.result()}return a.area=function(t){return(0,m.Z)(t,r(at)),at.result()},a.measure=function(t){return(0,m.Z)(t,r(Ft)),Ft.result()},a.bounds=function(t){return(0,m.Z)(t,r(ot.Z)),ot.Z.result()},a.centroid=function(t){return(0,m.Z)(t,r(Mt)),Mt.result()},a.projection=function(e){return arguments.length?(r=null==e?(t=null,Y.Z):(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(15002);function Vt(t){var e=0,r=g.pi/3,n=(0,Ut.r)(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*g.uR,r=t[1]*g.uR):[e*g.RW,r*g.RW]},i}function Ht(t,e){var r=(0,g.O$)(t),n=(r+(0,g.O$)(e))/2;if((0,g.Wn)(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.ou+g.Ho&&(e=-g.ou+g.Ho):e>g.ou-g.Ho&&(e=g.ou-g.Ho);var r=i/(0,g.sQ)(te(e),n);return[r*(0,g.O$)(n*t),i-r*(0,g.mC)(n*t)]}return a.invert=function(t,e){var r=i-e,a=(0,g.Xx)(n)*(0,g._b)(t*t+r*r),o=(0,g.fv)(t,(0,g.Wn)(r))*(0,g.Xx)(r);return r*n<0&&(o-=g.pi*(0,g.Xx)(t)*(0,g.Xx)(r)),[o/n,2*(0,g.z4)((0,g.sQ)(i/a,1/n))-g.ou]},a}function re(){return Vt(ee).scale(109.5).parallels([30,30])}Kt.invert=function(t,e){return[t,2*(0,g.z4)((0,g.Qq)(e))-g.ou]};var ne=r(97492);function ie(t,e){var r=(0,g.mC)(t),n=t===e?(0,g.O$)(t):(r-(0,g.mC)(e))/(e-t),i=r/n+t;if((0,g.Wn)(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.O)((function(t){return 2*(0,g.z4)(t)})),_e.invert=function(t,e){return[-e,2*(0,g.z4)((0,g.Qq)(t))-g.ou]}},83074:function(t,e,r){"use strict";r.d(e,{Z:function(){return i}});var n=r(39695);function i(t,e){var r=t[0]*n.uR,i=t[1]*n.uR,a=e[0]*n.uR,o=e[1]*n.uR,s=(0,n.mC)(i),l=(0,n.O$)(i),u=(0,n.mC)(o),c=(0,n.O$)(o),f=s*(0,n.mC)(r),h=s*(0,n.O$)(r),p=u*(0,n.mC)(a),d=u*(0,n.O$)(a),v=2*(0,n.ZR)((0,n._b)((0,n.Jy)(o-i)+s*u*(0,n.Jy)(a-r))),g=(0,n.O$)(v),y=v?function(t){var e=(0,n.O$)(t*=v)/g,r=(0,n.O$)(v-t)/g,i=r*f+e*p,a=r*h+e*d,o=r*l+e*c;return[(0,n.fv)(a,i)*n.RW,(0,n.fv)(o,(0,n._b)(i*i+a*a))*n.RW]}:function(){return[r*n.RW,i*n.RW]};return y.distance=v,y}},39695:function(t,e,r){"use strict";r.d(e,{BZ:function(){return l},Ho:function(){return n},Jy:function(){return A},Kh:function(){return T},O$:function(){return x},OR:function(){return w},Qq:function(){return g},RW:function(){return u},Wn:function(){return f},Xx:function(){return b},ZR:function(){return k},_b:function(){return _},aW:function(){return i},cM:function(){return y},fv:function(){return p},mC:function(){return d},mD:function(){return v},ou:function(){return o},pi:function(){return a},pu:function(){return s},sQ:function(){return m},uR:function(){return c},z4:function(){return h}});var n=1e-6,i=1e-12,a=Math.PI,o=a/2,s=a/4,l=2*a,u=180/a,c=a/180,f=Math.abs,h=Math.atan,p=Math.atan2,d=Math.cos,v=Math.ceil,g=Math.exp,y=(Math.floor,Math.log),m=Math.pow,x=Math.sin,b=Math.sign||function(t){return t>0?1:t<0?-1:0},_=Math.sqrt,w=Math.tan;function T(t){return t>1?0:t<-1?a:Math.acos(t)}function k(t){return t>1?o:t<-1?-o:Math.asin(t)}function A(t){return(t=x(t/2))*t}},73182:function(t,e,r){"use strict";function n(){}r.d(e,{Z:function(){return n}})},3559:function(t,e,r){"use strict";var n=r(73182),i=1/0,a=i,o=-i,s=o,l={point:function(t,e){to&&(o=t),es&&(s=e)},lineStart:n.Z,lineEnd:n.Z,polygonStart:n.Z,polygonEnd:n.Z,result:function(){var t=[[i,a],[o,s]];return o=s=-(a=i=1/0),t}};e.Z=l},67108:function(t,e,r){"use strict";r.d(e,{Z:function(){return i}});var n=r(39695);function i(t,e){return(0,n.Wn)(t[0]-e[0])=0?1:-1,L=E*S,C=L>a.pi,P=x*A;if(o.add((0,a.fv)(P*E*(0,a.O$)(L),b*M+P*(0,a.mC)(L))),c+=C?S+E*a.BZ:S,C^y>=r^T>=r){var O=(0,i.T5)((0,i.Og)(g),(0,i.Og)(w));(0,i.iJ)(O);var I=(0,i.T5)(u,O);(0,i.iJ)(I);var D=(C^S>=0?-1:1)*(0,a.ZR)(I[2]);(n>D||n===D&&(O[0]||O[1]))&&(f+=C^S>=0?1:-1)}}return(c<-a.Ho||c4*e&&y--){var w=o+d,T=s+v,k=u+g,A=(0,l._b)(w*w+T*T+k*k),M=(0,l.ZR)(k/=A),S=(0,l.Wn)((0,l.Wn)(k)-1)e||(0,l.Wn)((x*P+b*O)/_-.5)>.3||o*d+s*v+u*g2?t[2]%360*l.uR:0,V()):[L*l.RW,C*l.RW,P*l.RW]},j.angle=function(t){return arguments.length?(O=t%360*l.uR,V()):O*l.RW},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=d(b,N=t*t),H()):(0,l._b)(N)},j.fitExtent=function(t,e){return(0,f.qg)(j,t,e)},j.fitSize=function(t,e){return(0,f.mF)(j,t,e)},j.fitWidth=function(t,e){return(0,f.V6)(j,t,e)},j.fitHeight=function(t,e){return(0,f.rf)(j,t,e)},function(){return e=t.apply(this,arguments),j.invert=e.invert&&U,V()}}},26867:function(t,e,r){"use strict";r.d(e,{K:function(){return a},Z:function(){return o}});var n=r(15002),i=r(39695);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.Z)(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.Wn)(r)>i.Ho&&--a>0);return[t/(.8707+(o=n*n)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),n]}},57962:function(t,e,r){"use strict";r.d(e,{I:function(){return o},Z:function(){return s}});var n=r(39695),i=r(25382),a=r(15002);function o(t,e){return[(0,n.mC)(e)*(0,n.O$)(t),(0,n.O$)(e)]}function s(){return(0,a.Z)(o).scale(249.5).clipAngle(90+n.Ho)}o.invert=(0,i.O)(n.ZR)},49386:function(t,e,r){"use strict";r.d(e,{I:function(){return o},Z:function(){return c}});var n=r(96059),i=r(39695);function a(t,e){return[(0,i.Wn)(t)>i.pi?t+Math.round(-t/i.BZ)*i.BZ:t,e]}function o(t,e,r){return(t%=i.BZ)?e||r?(0,n.Z)(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.BZ:e<-i.pi?e+i.BZ:e,r]}}function l(t){var e=s(t);return e.invert=s(-t),e}function u(t,e){var r=(0,i.mC)(t),n=(0,i.O$)(t),a=(0,i.mC)(e),o=(0,i.O$)(e);function s(t,e){var s=(0,i.mC)(e),l=(0,i.mC)(t)*s,u=(0,i.O$)(t)*s,c=(0,i.O$)(e),f=c*r+l*n;return[(0,i.fv)(u*a-f*o,l*r-c*n),(0,i.ZR)(f*a+u*o)]}return s.invert=function(t,e){var s=(0,i.mC)(e),l=(0,i.mC)(t)*s,u=(0,i.O$)(t)*s,c=(0,i.O$)(e),f=c*a-u*o;return[(0,i.fv)(u*a+c*o,l*r+f*n),(0,i.ZR)(f*r-l*n)]},s}function c(t){function e(e){return(e=t(e[0]*i.uR,e[1]*i.uR))[0]*=i.RW,e[1]*=i.RW,e}return t=o(t[0]*i.uR,t[1]*i.uR,t.length>2?t[2]*i.uR:0),e.invert=function(e){return(e=t.invert(e[0]*i.uR,e[1]*i.uR))[0]*=i.RW,e[1]*=i.RW,e},e}a.invert=a},72736:function(t,e,r){"use strict";function n(t,e){t&&a.hasOwnProperty(t.type)&&a[t.type](t,e)}r.d(e,{Z:function(){return l}});var i={Feature:function(t,e){n(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,i=-1,a=r.length;++i=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 I},packEnclose:function(){return d},packSiblings:function(){return S},partition:function(){return N},stratify:function(){return q},tree:function(){return K},treemap:function(){return rt},treemapBinary:function(){return nt},treemapDice:function(){return B},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 k(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 A(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 A(e),r=new A(r),n=new A(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=L(e),r):t},r.parentId=function(t){return arguments.length?(e=L(t),r):e},r}function G(t,e){return t.parent===e.parent?1:2}function Z(t){var e=t.children;return e?e[0]:t.t}function Y(t){var e=t.children;return e?e[e.length-1]:t.t}function W(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=Y(s),a=Z(a),s&&a;)l=Z(l),(o=Y(o)).a=e,(i=s.z+f-a.z-u+t(s._,a._))>0&&(W(X(s,e,n),e,i),u+=i,c+=i),f+=s.m,u+=a.m,h+=l.m,c+=o.m;s&&!Y(o)&&(o.t=s,o.m+=f-c),a&&!Z(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=C,o=C,s=C,l=C,u=C;function c(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(f),i=[0],e&&t.eachBefore(F),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?$:B)(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)},29502: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,{sX:function(){return Y},k4:function(){return U}});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\\("+[l,l,l]+"\\)$"),p=new RegExp("^rgb\\("+[c,c,c]+"\\)$"),d=new RegExp("^rgba\\("+[l,l,l,u]+"\\)$"),v=new RegExp("^rgba\\("+[c,c,c,u]+"\\)$"),g=new RegExp("^hsl\\("+[u,c,c]+"\\)$"),y=new RegExp("^hsla\\("+[u,c,c,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 M(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 M(e[1],e[2],e[3],1):(e=p.exec(t))?new M(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))?C(e[1],e[2]/100,e[3]/100,1):(e=y.exec(t))?C(e[1],e[2]/100,e[3]/100,e[4]):m.hasOwnProperty(t)?w(m[t]):"transparent"===t?new M(NaN,NaN,NaN,0):null}function w(t){return new M(t>>16&255,t>>8&255,255&t,1)}function T(t,e,r,n){return n<=0&&(t=e=r=NaN),new M(t,e,r,n)}function k(t){return t instanceof a||(t=_(t)),t?new M((t=t.rgb()).r,t.g,t.b,t.opacity):new M}function A(t,e,r,n){return 1===arguments.length?k(t):new M(t,e,r,null==n?1:n)}function M(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function S(){return"#"+L(this.r)+L(this.g)+L(this.b)}function E(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function L(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function C(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new O(t,e,r,n)}function P(t){if(t instanceof O)return new O(t.h,t.s,t.l,t.opacity);if(t instanceof a||(t=_(t)),!t)return new O;if(t instanceof O)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 O(s,l,u,t.opacity)}function O(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function I(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 D(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}function z(t){return function(){return t}}function R(t,e){var r=e-t;return r?function(t,e){return function(r){return t+r*e}}(t,r):z(isNaN(t)?e:t)}n(a,_,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:x,formatHex:x,formatHsl:function(){return P(this).formatHsl()},formatRgb:b,toString:b}),n(M,A,i(a,{brighter:function(t){return t=null==t?s:Math.pow(s,t),new M(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new M(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},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:S,formatHex:S,formatRgb:E,toString:E})),n(O,(function(t,e,r,n){return 1===arguments.length?P(t):new O(t,e,r,null==n?1:n)}),i(a,{brighter:function(t){return t=null==t?s:Math.pow(s,t),new O(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?o:Math.pow(o,t),new O(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 M(I(t>=240?t-240:t+120,i,n),I(t,i,n),I(t<120?t+240:t-120,i,n),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=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var F=function t(e){var r=function(t){return 1==(t=+t)?R: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):z(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=R(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 B(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:U(r,n)})),a=q.lastIndex;return aa)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)}},84096:function(t,e,r){"use strict";r.d(e,{i$:function(){return d},Dq:function(){return h},g0:function(){return v}});var n=r(58176),i=r(48480),a=r(59879),o=r(82301),s=r(34823),l=r(79791);function u(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function c(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function f(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function h(t){var e=t.dateTime,r=t.date,s=t.time,l=t.periods,h=t.days,p=t.shortDays,d=t.months,v=t.shortMonths,y=w(l),m=T(l),x=w(h),b=T(h),_=w(p),St=T(p),Et=w(d),Lt=T(d),Ct=w(v),Pt=T(v),Ot={a:function(t){return p[t.getDay()]},A:function(t){return h[t.getDay()]},b:function(t){return v[t.getMonth()]},B:function(t){return d[t.getMonth()]},c:null,d:q,e:q,f:X,H:G,I:Z,j:Y,L:W,m:J,M:K,p:function(t){return l[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:At,s:Mt,S:$,u:Q,U:tt,V:et,w:rt,W:nt,x:null,X:null,y:it,Y:at,Z:ot,"%":kt},It={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:st,e:st,f:ht,H:lt,I:ut,j:ct,L:ft,m:pt,M:dt,p:function(t){return l[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:At,s:Mt,S:vt,u:gt,U:yt,V:mt,w:xt,W:bt,x:null,X:null,y:_t,Y:wt,Z:Tt,"%":kt},Dt={a:function(t,e,r){var n=_.exec(e.slice(r));return n?(t.w=St[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=Ct.exec(e.slice(r));return n?(t.m=Pt[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=Et.exec(e.slice(r));return n?(t.m=Lt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,r,n){return Ft(t,e,r,n)},d:D,e:D,f:j,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:A,U:M,V:S,w:k,W:E,x:function(t,e,n){return Ft(t,r,e,n)},X:function(t,e,r){return Ft(t,s,e,r)},y:C,Y:L,Z:P,"%":U};function zt(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.l6.ceil(s):(0,n.l6)(s),s=i.Z.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.wA.ceil(s):(0,a.wA)(s),s=o.Z.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 Ft(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=Dt[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 Ot.x=zt(r,Ot),Ot.X=zt(s,Ot),Ot.c=zt(e,Ot),It.x=zt(r,It),It.X=zt(s,It),It.c=zt(e,It),{format:function(t){var e=zt(t+="",Ot);return e.toString=function(){return t},e},parse:function(t){var e=Rt(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=zt(t+="",It);return e.toString=function(){return t},e},utcParse:function(t){var e=Rt(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 Z(t,e){return b(t.getHours()%12||12,e,2)}function Y(t,e){return b(1+o.Z.count((0,s.Z)(t),t),e,3)}function W(t,e){return b(t.getMilliseconds(),e,3)}function X(t,e){return W(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.OM.count((0,s.Z)(t)-1,t),e,2)}function et(t,e){var r=t.getDay();return t=r>=4||0===r?(0,a.bL)(t):a.bL.ceil(t),b(a.bL.count((0,s.Z)(t),t)+(4===(0,s.Z)(t).getDay()),e,2)}function rt(t){return t.getDay()}function nt(t,e){return b(a.wA.count((0,s.Z)(t)-1,t),e,2)}function it(t,e){return b(t.getFullYear()%100,e,2)}function at(t,e){return b(t.getFullYear()%1e4,e,4)}function ot(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+b(e/60|0,"0",2)+b(e%60,"0",2)}function st(t,e){return b(t.getUTCDate(),e,2)}function lt(t,e){return b(t.getUTCHours(),e,2)}function ut(t,e){return b(t.getUTCHours()%12||12,e,2)}function ct(t,e){return b(1+i.Z.count((0,l.Z)(t),t),e,3)}function ft(t,e){return b(t.getUTCMilliseconds(),e,3)}function ht(t,e){return ft(t,e)+"000"}function pt(t,e){return b(t.getUTCMonth()+1,e,2)}function dt(t,e){return b(t.getUTCMinutes(),e,2)}function vt(t,e){return b(t.getUTCSeconds(),e,2)}function gt(t){var e=t.getUTCDay();return 0===e?7:e}function yt(t,e){return b(n.Ox.count((0,l.Z)(t)-1,t),e,2)}function mt(t,e){var r=t.getUTCDay();return t=r>=4||0===r?(0,n.hB)(t):n.hB.ceil(t),b(n.hB.count((0,l.Z)(t),t)+(4===(0,l.Z)(t).getUTCDay()),e,2)}function xt(t){return t.getUTCDay()}function bt(t,e){return b(n.l6.count((0,l.Z)(t)-1,t),e,2)}function _t(t,e){return b(t.getUTCFullYear()%100,e,2)}function wt(t,e){return b(t.getUTCFullYear()%1e4,e,4)}function Tt(){return"+0000"}function kt(){return"%"}function At(t){return+t}function Mt(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},82301:function(t,e,r){"use strict";r.d(e,{a:function(){return o}});var n=r(30052),i=r(54263),a=(0,n.Z)((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*i.yB)/i.UD}),(function(t){return t.getDate()-1}));e.Z=a;var o=a.range},54263:function(t,e,r){"use strict";r.d(e,{UD:function(){return o},Y2:function(){return a},Ym:function(){return n},iM:function(){return s},yB:function(){return i}});var n=1e3,i=6e4,a=36e5,o=864e5,s=6048e5},81041:function(t,e,r){"use strict";r.r(e),r.d(e,{timeDay:function(){return y.Z},timeDays:function(){return y.a},timeFriday:function(){return m.mC},timeFridays:function(){return m.b$},timeHour:function(){return v},timeHours:function(){return g},timeInterval:function(){return n.Z},timeMillisecond:function(){return a},timeMilliseconds:function(){return o},timeMinute:function(){return h},timeMinutes:function(){return p},timeMonday:function(){return m.wA},timeMondays:function(){return m.bJ},timeMonth:function(){return b},timeMonths:function(){return _},timeSaturday:function(){return m.EY},timeSaturdays:function(){return m.Ff},timeSecond:function(){return u},timeSeconds:function(){return c},timeSunday:function(){return m.OM},timeSundays:function(){return m.vm},timeThursday:function(){return m.bL},timeThursdays:function(){return m.$t},timeTuesday:function(){return m.sy},timeTuesdays:function(){return m.aU},timeWednesday:function(){return m.zg},timeWednesdays:function(){return m.Ld},timeWeek:function(){return m.OM},timeWeeks:function(){return m.vm},timeYear:function(){return w.Z},timeYears:function(){return w.g},utcDay:function(){return L.Z},utcDays:function(){return L.y},utcFriday:function(){return C.QQ},utcFridays:function(){return C.fz},utcHour:function(){return S},utcHours:function(){return E},utcMillisecond:function(){return a},utcMilliseconds:function(){return o},utcMinute:function(){return k},utcMinutes:function(){return A},utcMonday:function(){return C.l6},utcMondays:function(){return C.$3},utcMonth:function(){return O},utcMonths:function(){return I},utcSaturday:function(){return C.g4},utcSaturdays:function(){return C.Q_},utcSecond:function(){return u},utcSeconds:function(){return c},utcSunday:function(){return C.Ox},utcSundays:function(){return C.SU},utcThursday:function(){return C.hB},utcThursdays:function(){return C.xj},utcTuesday:function(){return C.J1},utcTuesdays:function(){return C.DK},utcWednesday:function(){return C.b3},utcWednesdays:function(){return C.uy},utcWeek:function(){return C.Ox},utcWeeks:function(){return C.SU},utcYear:function(){return D.Z},utcYears:function(){return D.D}});var n=r(30052),i=(0,n.Z)((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.Z)((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(54263),l=(0,n.Z)((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*s.Ym)}),(function(t,e){return(e-t)/s.Ym}),(function(t){return t.getUTCSeconds()})),u=l,c=l.range,f=(0,n.Z)((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*s.Ym)}),(function(t,e){t.setTime(+t+e*s.yB)}),(function(t,e){return(e-t)/s.yB}),(function(t){return t.getMinutes()})),h=f,p=f.range,d=(0,n.Z)((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*s.Ym-t.getMinutes()*s.yB)}),(function(t,e){t.setTime(+t+e*s.Y2)}),(function(t,e){return(e-t)/s.Y2}),(function(t){return t.getHours()})),v=d,g=d.range,y=r(82301),m=r(59879),x=(0,n.Z)((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(34823),T=(0,n.Z)((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*s.yB)}),(function(t,e){return(e-t)/s.yB}),(function(t){return t.getUTCMinutes()})),k=T,A=T.range,M=(0,n.Z)((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*s.Y2)}),(function(t,e){return(e-t)/s.Y2}),(function(t){return t.getUTCHours()})),S=M,E=M.range,L=r(48480),C=r(58176),P=(0,n.Z)((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(79791)},30052:function(t,e,r){"use strict";r.d(e,{Z:function(){return a}});var n=new Date,i=new Date;function a(t,e,r,o){function s(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=function(e){return t(e=new Date(+e)),e},s.ceil=function(r){return t(r=new Date(r-1)),e(r,1),t(r),r},s.round=function(t){var e=s(t),r=s.ceil(t);return t-e0))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}},48480:function(t,e,r){"use strict";r.d(e,{y:function(){return o}});var n=r(30052),i=r(54263),a=(0,n.Z)((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/i.UD}),(function(t){return t.getUTCDate()-1}));e.Z=a;var o=a.range},58176:function(t,e,r){"use strict";r.d(e,{$3:function(){return d},DK:function(){return v},J1:function(){return l},Ox:function(){return o},QQ:function(){return f},Q_:function(){return x},SU:function(){return p},b3:function(){return u},fz:function(){return m},g4:function(){return h},hB:function(){return c},l6:function(){return s},uy:function(){return g},xj:function(){return y}});var n=r(30052),i=r(54263);function a(t){return(0,n.Z)((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/i.iM}))}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},79791:function(t,e,r){"use strict";r.d(e,{D:function(){return a}});var n=r(30052),i=(0,n.Z)((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?(0,n.Z)((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.Z=i;var a=i.range},59879:function(t,e,r){"use strict";r.d(e,{$t:function(){return y},EY:function(){return h},Ff:function(){return x},Ld:function(){return g},OM:function(){return o},aU:function(){return v},b$:function(){return m},bJ:function(){return d},bL:function(){return c},mC:function(){return f},sy:function(){return l},vm:function(){return p},wA:function(){return s},zg:function(){return u}});var n=r(30052),i=r(54263);function a(t){return(0,n.Z)((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.yB)/i.iM}))}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},34823:function(t,e,r){"use strict";r.d(e,{g:function(){return a}});var n=r(30052),i=(0,n.Z)((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?(0,n.Z)((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.Z=i;var a=i.range},17045:function(t,e,r){"use strict";var n=r(8709),i="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),a=Object.prototype.toString,o=Array.prototype.concat,s=Object.defineProperty,l=s&&function(){var t={};try{for(var e in s(t,"x",{enumerable:!1,value:t}),t)return!1;return t.x===t}catch(t){return!1}}(),u=function(t,e,r,n){var i;(!(e in t)||"function"==typeof(i=n)&&"[object Function]"===a.call(i)&&n())&&(l?s(t,e,{configurable:!0,enumerable:!1,value:r,writable:!0}):t[e]=r)},c=function(t,e){var r=arguments.length>2?arguments[2]:{},a=n(e);i&&(a=o.call(a,Object.getOwnPropertySymbols(e)));for(var s=0;ss*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];i0)return function(t,e){var r,n;for(r=new Array(t),n=0;n80*a){o=l=t[0],s=f=t[1];for(var b=a;bl&&(l=h),d>f&&(f=d);v=0!==(v=Math.max(l-o,f-s))?1/v:0}return i(m,x,a,o,s,v),x}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)&&(k(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(k(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{null===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),e.push(t.i/r),e.push(v.i/r),k(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=t.next.next;i!==t.prev;){if(d(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&g(i.prev,i,i.next)>=0)return!1;i=i.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.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=h(s,l,e,r,n),p=h(u,c,e,r,n),v=t.prevZ,y=t.nextZ;v&&v.z>=f&&y&&y.z<=p;){if(v!==t.prev&&v!==t.next&&d(i.x,i.y,a.x,a.y,o.x,o.y,v.x,v.y)&&g(v.prev,v,v.next)>=0)return!1;if(v=v.prevZ,y!==t.prev&&y!==t.next&&d(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&g(y.prev,y,y.next)>=0)return!1;y=y.nextZ}for(;v&&v.z>=f;){if(v!==t.prev&&v!==t.next&&d(i.x,i.y,a.x,a.y,o.x,o.y,v.x,v.y)&&g(v.prev,v,v.next)>=0)return!1;v=v.prevZ}for(;y&&y.z<=p;){if(y!==t.prev&&y!==t.next&&d(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&g(y.prev,y,y.next)>=0)return!1;y=y.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),e.push(i.i/r),e.push(o.i/r),k(i),k(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),void i(c,e,r,a,o,s)}u=u.next}l=l.next}while(l!==t)}function u(t,e){return t.x-e.x}function c(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&&d(ar.x||n.x===r.x&&f(r,n)))&&(r=n,p=l)),n=n.next}while(n!==u);return r}(t,e),e){var r=w(e,t);n(e,e.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=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 p(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 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 A(t.i,t.x,t.y),n=new A(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 A(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 k(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 A(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 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}},2502:function(t,e,r){var n=r(68664);t.exports=function(t,e){var r,i=[],a=[],o=[],s={},l=[];function u(t){o[t]=!1,s.hasOwnProperty(t)&&Object.keys(s[t]).forEach((function(e){delete s[t][e],o[e]&&u(e)}))}function c(t){var e,n,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var r,i=n(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;o1&&"boolean"!=typeof e)throw new TypeError('"allowMissing" argument must be a boolean');for(var r=g(t),n=y("%"+(r.length>0?r[0]:"")+"%",e),o=1;o=r.length){var s=a(n,r[o]);if(!e&&!(r[o]in n))throw new i("base intrinsic for "+t+" exists, but the property is not available.");n=s?s.get||s.value:n[r[o]]}else n=n[r[o]];return n}},84671:function(t,e,r){"use strict";var n=r(77575),i=r(72943)("%Function%"),a=i.apply,o=i.call;t.exports=function(){return n.apply(o,arguments)},t.exports.apply=function(){return n.apply(a,arguments)}},92978:function(t,e,r){"use strict";var n=r(72943),i=r(84671),a=i(n("String.prototype.indexOf"));t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&a(t,".prototype.")?i(r):r}},67295:function(t,e,r){"use strict";var n=r(72943)("%Object.getOwnPropertyDescriptor%");if(n)try{n([],"length")}catch(t){n=null}t.exports=n},16134:function(t,e,r){"use strict";var n=r(36672);t.exports=function(){return n(this).length=0,this}},4892:function(t,e,r){"use strict";t.exports=r(64404)()?Array.from:r(49441)},64404:function(t){"use strict";t.exports=function(){var t,e,r=Array.from;return"function"==typeof r&&(e=r(t=["raz","dwa"]),Boolean(e&&e!==t&&"dwa"===e[1]))}},49441:function(t,e,r){"use strict";var n=r(8260).iterator,i=r(73051),a=r(33717),o=r(35976),s=r(78513),l=r(36672),u=r(95296),c=r(87963),f=Array.isArray,h=Function.prototype.call,p={configurable:!0,enumerable:!0,writable:!0,value:null},d=Object.defineProperty;t.exports=function(t){var e,r,v,g,y,m,x,b,_,w,T=arguments[1],k=arguments[2];if(t=Object(l(t)),u(T)&&s(T),this&&this!==Array&&a(this))e=this;else{if(!T){if(i(t))return 1!==(y=t.length)?Array.apply(null,t):((g=new Array(1))[0]=t[0],g);if(f(t)){for(g=new Array(y=t.length),r=0;r=55296&&m<=56319&&(w+=t[++r]),w=T?h.call(T,k,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;r0?1:-1}},56247:function(t,e,r){"use strict";var n=r(9953),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}},35976:function(t,e,r){"use strict";var n=r(56247),i=Math.max;t.exports=function(t){return i(0,n(t))}},67260:function(t,e,r){"use strict";var n=r(78513),i=r(36672),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}))}}},95879:function(t,e,r){"use strict";t.exports=r(73583)()?Object.assign:r(34205)},73583:function(t){"use strict";t.exports=function(){var t,e=Object.assign;return"function"==typeof e&&(e(t={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}},34205:function(t,e,r){"use strict";var n=r(68700),i=r(36672),a=Math.max;t.exports=function(t,e){var r,o,s,l=a(arguments.length,2);for(t=Object(i(t)),s=function(n){try{t[n]=e[n]}catch(t){r||(r=t)}},o=1;o-1}},87963: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}},43043: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}},32411:function(t,e,r){"use strict";var n,i=r(1496),a=r(66741),o=r(62072),s=r(8260),l=r(95426),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"))},27515:function(t,e,r){"use strict";var n=r(73051),i=r(78513),a=r(87963),o=r(66661),s=Array.isArray,l=Function.prototype.call,u=Array.prototype.some;t.exports=function(t,e){var r,c,f,h,p,d,v,g,y=arguments[2];if(s(t)||n(t)?r="array":a(t)?r="string":t=o(t),i(e),f=function(){h=!0},"array"!==r)if("string"!==r)for(c=t.next();!c.done;){if(l.call(e,y,c.value,f),h)return;c=t.next()}else for(d=t.length,p=0;p=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}))}},66661:function(t,e,r){"use strict";var n=r(73051),i=r(87963),a=r(32411),o=r(259),s=r(58095),l=r(8260).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)}},95426:function(t,e,r){"use strict";var n,i=r(16134),a=r(95879),o=r(78513),s=r(36672),l=r(62072),u=r(55174),c=r(8260),f=Object.defineProperty,h=Object.defineProperties;t.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");h(this,{__list__:l("w",s(t)),__context__:l("w",e),__nextIndex__:l("w",0)}),e&&(o(e.on),e.on("_add",this._onAdd),e.on("_delete",this._onDelete),e.on("_clear",this._onClear))},delete n.prototype.constructor,h(n.prototype,a({_next:l((function(){var t;if(this.__list__)return this.__redo__&&void 0!==(t=this.__redo__.shift())?t:this.__nextIndex__=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})))},35940:function(t,e,r){"use strict";var n=r(73051),i=r(95296),a=r(87963),o=r(8260).iterator,s=Array.isArray;t.exports=function(t){return!(!i(t)||!s(t)&&!a(t)&&!n(t)&&"function"!=typeof t[o])}},259:function(t,e,r){"use strict";var n,i=r(1496),a=r(62072),o=r(8260),s=r(95426),l=Object.defineProperty;n=t.exports=function(t){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");t=String(t),s.call(this,t),l(this,"__length__",a("",t.length))},i&&i(n,s),delete n.prototype.constructor,n.prototype=Object.create(s.prototype,{_next:a((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),l(n.prototype,o.toStringTag,a("c","String Iterator"))},58095:function(t,e,r){"use strict";var n=r(35940);t.exports=function(t){if(!n(t))throw new TypeError(t+" is not iterable");return t}},73523:function(t){"use strict";function e(t,e){if(null==t)throw new TypeError("Cannot convert first argument to object");for(var r=Object(t),n=1;n0&&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):[]}},60774:function(t){var e=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};t.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(t){return e()}try{return __global__||e()}finally{delete Object.prototype.__global__}}()},94908:function(t,e,r){"use strict";t.exports=r(51152)()?globalThis:r(60774)},51152:function(t){"use strict";t.exports=function(){return"object"==typeof globalThis&&!!globalThis&&globalThis.Array===Array}},92770:function(t,e,r){"use strict";var n=r(18546);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}},30120:function(t,e,r){var n=r(90660);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;ie[0]-o[0]/2&&(h=o[0]/2,p+=o[1]);return r}},32879:function(t){"use strict";function e(t,a){a||(a={}),("string"==typeof t||Array.isArray(t))&&(a.family=t);var o=Array.isArray(a.family)?a.family.join(", "):a.family;if(!o)throw Error("`family` must be defined");var s=a.size||a.fontSize||a.em||48,l=a.weight||a.fontWeight||"",u=(t=[a.style||a.fontStyle||"",l,s].join(" ")+"px "+o,a.origin||"top");if(e.cache[o]&&s<=e.cache[o].em)return r(e.cache[o],u);var c=a.canvas||e.canvas,f=c.getContext("2d"),h={upper:void 0!==a.upper?a.upper:"H",lower:void 0!==a.lower?a.lower:"x",descent:void 0!==a.descent?a.descent:"p",ascent:void 0!==a.ascent?a.ascent:"h",tittle:void 0!==a.tittle?a.tittle:"i",overshoot:void 0!==a.overshoot?a.overshoot:"O"},p=Math.ceil(1.5*s);c.height=p,c.width=.5*p,f.font=t;var d="H",v={top:0};f.clearRect(0,0,p,p),f.textBaseline="top",f.fillStyle="black",f.fillText(d,0,0);var g=n(f.getImageData(0,0,p,p));f.clearRect(0,0,p,p),f.textBaseline="bottom",f.fillText(d,0,p);var y=n(f.getImageData(0,0,p,p));v.lineHeight=v.bottom=p-y+g,f.clearRect(0,0,p,p),f.textBaseline="alphabetic",f.fillText(d,0,p);var m=p-n(f.getImageData(0,0,p,p))-1+g;v.baseline=v.alphabetic=m,f.clearRect(0,0,p,p),f.textBaseline="middle",f.fillText(d,0,.5*p);var x=n(f.getImageData(0,0,p,p));v.median=v.middle=p-x-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline="hanging",f.fillText(d,0,.5*p);var b=n(f.getImageData(0,0,p,p));v.hanging=p-b-1+g-.5*p,f.clearRect(0,0,p,p),f.textBaseline="ideographic",f.fillText(d,0,p);var _=n(f.getImageData(0,0,p,p));if(v.ideographic=p-_-1+g,h.upper&&(f.clearRect(0,0,p,p),f.textBaseline="top",f.fillText(h.upper,0,0),v.upper=n(f.getImageData(0,0,p,p)),v.capHeight=v.baseline-v.upper),h.lower&&(f.clearRect(0,0,p,p),f.textBaseline="top",f.fillText(h.lower,0,0),v.lower=n(f.getImageData(0,0,p,p)),v.xHeight=v.baseline-v.lower),h.tittle&&(f.clearRect(0,0,p,p),f.textBaseline="top",f.fillText(h.tittle,0,0),v.tittle=n(f.getImageData(0,0,p,p))),h.ascent&&(f.clearRect(0,0,p,p),f.textBaseline="top",f.fillText(h.ascent,0,0),v.ascent=n(f.getImageData(0,0,p,p))),h.descent&&(f.clearRect(0,0,p,p),f.textBaseline="top",f.fillText(h.descent,0,0),v.descent=i(f.getImageData(0,0,p,p))),h.overshoot){f.clearRect(0,0,p,p),f.textBaseline="top",f.fillText(h.overshoot,0,0);var w=i(f.getImageData(0,0,p,p));v.overshoot=w-m}for(var T in v)v[T]/=s;return v.em=s,e.cache[o]=v,r(v,u)}function r(t,e){var r={};for(var n in"string"==typeof e&&(e=t[e]),t)"em"!==n&&(r[n]=t[n]-e);return r}function n(t){for(var e=t.height,r=t.data,n=3;n0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}t.exports=e,e.canvas=document.createElement("canvas"),e.cache={}},86165:function(t){var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,n,i){if("[object Function]"!==r.call(n))throw new TypeError("iterator must be a function");var a=t.length;if(a===+a)for(var o=0;o1&&"boolean"!=typeof e)throw new o('"allowMissing" argument must be a boolean');var r=S(t),n=r.length>0?r[0]:"",a=E("%"+n+"%",e),s=a.name,u=a.value,c=!1,f=a.alias;f&&(n=f[0],w(r,_([0,1],f)));for(var h=1,p=!0;h=r.length){var m=l(u,d);u=(p=!!m)&&"get"in m&&!("originalValue"in m.get)?m.get:u[d]}else p=b(u,d),u=u[d];p&&!c&&(y[s]=u)}}return u}},85400: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];return t[0]=s*(h*y-p*g)-f*(l*y-u*g)+v*(l*p-u*h),t[1]=-(n*(h*y-p*g)-f*(i*y-a*g)+v*(i*p-a*h)),t[2]=n*(l*y-u*g)-s*(i*y-a*g)+v*(i*u-a*l),t[3]=-(n*(l*p-u*h)-s*(i*p-a*h)+f*(i*u-a*l)),t[4]=-(o*(h*y-p*g)-c*(l*y-u*g)+d*(l*p-u*h)),t[5]=r*(h*y-p*g)-c*(i*y-a*g)+d*(i*p-a*h),t[6]=-(r*(l*y-u*g)-o*(i*y-a*g)+d*(i*u-a*l)),t[7]=r*(l*p-u*h)-o*(i*p-a*h)+c*(i*u-a*l),t[8]=o*(f*y-p*v)-c*(s*y-u*v)+d*(s*p-u*f),t[9]=-(r*(f*y-p*v)-c*(n*y-a*v)+d*(n*p-a*f)),t[10]=r*(s*y-u*v)-o*(n*y-a*v)+d*(n*u-a*s),t[11]=-(r*(s*p-u*f)-o*(n*p-a*f)+c*(n*u-a*s)),t[12]=-(o*(f*g-h*v)-c*(s*g-l*v)+d*(s*h-l*f)),t[13]=r*(f*g-h*v)-c*(n*g-i*v)+d*(n*h-i*f),t[14]=-(r*(s*g-l*v)-o*(n*g-i*v)+d*(n*l-i*s)),t[15]=r*(s*h-l*f)-o*(n*h-i*f)+c*(n*l-i*s),t}},42331:function(t){t.exports=function(t){var e=new Float32Array(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}},31042: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[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],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}},11902:function(t){t.exports=function(){var t=new Float32Array(16);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}},89887: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)}},27812:function(t){t.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r+r,s=n+n,l=i+i,u=r*o,c=n*o,f=n*s,h=i*o,p=i*s,d=i*l,v=a*o,g=a*s,y=a*l;return t[0]=1-f-d,t[1]=c+y,t[2]=h-g,t[3]=0,t[4]=c-y,t[5]=1-u-d,t[6]=p+v,t[7]=0,t[8]=h+g,t[9]=p-v,t[10]=1-u-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},34045: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)}},45973: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}},81472:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},14669: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}},75262:function(t){t.exports=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},331:function(t){t.exports=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},11049:function(t){t.exports=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=n,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}},75195:function(t){t.exports=function(t,e,r,n,i,a,o){var s=1/(r-e),l=1/(i-n),u=1/(a-o);return t[0]=2*a*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a*l,t[6]=0,t[7]=0,t[8]=(r+e)*s,t[9]=(i+n)*l,t[10]=(o+a)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*a*2*u,t[15]=0,t}},71551:function(t){t.exports=function(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}},79576:function(t,e,r){t.exports={create:r(11902),clone:r(42331),copy:r(31042),identity:r(71551),transpose:r(88654),invert:r(95874),adjoint:r(85400),determinant:r(89887),multiply:r(91362),translate:r(31283),scale:r(10789),rotate:r(65074),rotateX:r(35545),rotateY:r(94918),rotateZ:r(15692),fromRotation:r(34045),fromRotationTranslation:r(45973),fromScaling:r(81472),fromTranslation:r(14669),fromXRotation:r(75262),fromYRotation:r(331),fromZRotation:r(11049),fromQuat:r(27812),frustum:r(75195),perspective:r(7864),perspectiveFromFieldOfView:r(35279),ortho:r(60378),lookAt:r(65551),str:r(6726)}},95874: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,k=c*v-f*d,A=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*A+T*k;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*A)*C,t[5]=(r*L-i*M+a*A)*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*k)*C,t[9]=(n*M-r*E-a*k)*C,t[10]=(d*w-v*b+y*m)*C,t[11]=(f*b-c*w-p*m)*C,t[12]=(s*A-o*S-l*k)*C,t[13]=(r*S-n*A+i*k)*C,t[14]=(v*x-d*_-g*m)*C,t[15]=(c*_-f*x+h*m)*C,t):null}},65551:function(t,e,r){var n=r(71551);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)}},91362: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}},60378:function(t){t.exports=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}},7864: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}},35279: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}},65074: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,k,A,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,k=C*L*o+E*i,A=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*k,t[5]=l*w+h*T+g*k,t[6]=u*w+p*T+y*k,t[7]=c*w+d*T+m*k,t[8]=s*A+f*M+v*S,t[9]=l*A+h*M+g*S,t[10]=u*A+p*M+y*S,t[11]=c*A+d*M+m*S,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}},35545: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}},94918: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}},15692: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}},10789:function(t){t.exports=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},6726:function(t){t.exports=function(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}},31283:function(t){t.exports=function(t,e,r){var n,i,a,o,s,l,u,c,f,h,p,d,v=r[0],g=r[1],y=r[2];return e===t?(t[12]=e[0]*v+e[4]*g+e[8]*y+e[12],t[13]=e[1]*v+e[5]*g+e[9]*y+e[13],t[14]=e[2]*v+e[6]*g+e[10]*y+e[14],t[15]=e[3]*v+e[7]*g+e[11]*y+e[15]):(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],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=u,t[7]=c,t[8]=f,t[9]=h,t[10]=p,t[11]=d,t[12]=n*v+s*g+f*y+e[12],t[13]=i*v+l*g+h*y+e[13],t[14]=a*v+u*g+p*y+e[14],t[15]=o*v+c*g+d*y+e[15]),t}},88654: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}},42505:function(t,e,r){"use strict";var n=r(72791),i=r(71299),a=r(98580),o=r(12018),s=r(83522),l=r(25075),u=r(68016),c=r(58404),f=r(18863),h=r(10973),p=r(25677),d=r(75686),v=r(53545),g=r(56131),y=r(32879),m=r(30120),x=r(13547).nextPow2,b=new s,_=!1;if(document.body){var w=document.body.appendChild(document.createElement("div"));w.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(w).fontStretch&&(_=!0),document.body.removeChild(w)}var T=function(t){!function(t){return"function"==typeof t&&t._gl&&t.prop&&t.texture&&t.buffer}(t)?this.gl=o(t):(t={regl:t},this.gl=t.regl._gl),this.shader=b.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||a({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),b.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(h(t)?t:{})};T.prototype.createShader=function(){var t=this.regl,e=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop("count"),offset:t.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this("sizeBuffer")},width:{offset:0,stride:8,buffer:t.this("sizeBuffer")},char:t.this("charBuffer"),position:t.this("position")},uniforms:{atlasSize:function(t,e){return[e.atlas.width,e.atlas.height]},atlasDim:function(t,e){return[e.atlas.cols,e.atlas.rows]},atlas:function(t,e){return e.atlas.texture},charStep:function(t,e){return e.atlas.step},em:function(t,e){return e.atlas.em},color:t.prop("color"),opacity:t.prop("opacity"),viewport:t.this("viewportArray"),scale:t.this("scale"),align:t.prop("align"),baseline:t.prop("baseline"),translate:t.this("translate"),positionOffset:t.prop("positionOffset")},primitive:"points",viewport:t.this("viewport"),vert:"\n\t\t\tprecision highp float;\n\t\t\tattribute float width, charOffset, char;\n\t\t\tattribute vec2 position;\n\t\t\tuniform float fontSize, charStep, em, align, baseline;\n\t\t\tuniform vec4 viewport;\n\t\t\tuniform vec4 color;\n\t\t\tuniform vec2 atlasSize, atlasDim, scale, translate, positionOffset;\n\t\t\tvarying vec2 charCoord, charId;\n\t\t\tvarying float charWidth;\n\t\t\tvarying vec4 fontColor;\n\t\t\tvoid main () {\n\t\t\t\tvec2 offset = floor(em * (vec2(align + charOffset, baseline)\n\t\t\t\t\t+ vec2(positionOffset.x, -positionOffset.y)))\n\t\t\t\t\t/ (viewport.zw * scale.xy);\n\n\t\t\t\tvec2 position = (position + translate) * scale;\n\t\t\t\tposition += offset * scale;\n\n\t\t\t\tcharCoord = position * viewport.zw + viewport.xy;\n\n\t\t\t\tgl_Position = vec4(position * 2. - 1., 0, 1);\n\n\t\t\t\tgl_PointSize = charStep;\n\n\t\t\t\tcharId.x = mod(char, atlasDim.x);\n\t\t\t\tcharId.y = floor(char / atlasDim.x);\n\n\t\t\t\tcharWidth = width * em;\n\n\t\t\t\tfontColor = color / 255.;\n\t\t\t}",frag:"\n\t\t\tprecision highp float;\n\t\t\tuniform float fontSize, charStep, opacity;\n\t\t\tuniform vec2 atlasSize;\n\t\t\tuniform vec4 viewport;\n\t\t\tuniform sampler2D atlas;\n\t\t\tvarying vec4 fontColor;\n\t\t\tvarying vec2 charCoord, charId;\n\t\t\tvarying float charWidth;\n\n\t\t\tfloat lightness(vec4 color) {\n\t\t\t\treturn color.r * 0.299 + color.g * 0.587 + color.b * 0.114;\n\t\t\t}\n\n\t\t\tvoid main () {\n\t\t\t\tvec2 uv = gl_FragCoord.xy - charCoord + charStep * .5;\n\t\t\t\tfloat halfCharStep = floor(charStep * .5 + .5);\n\n\t\t\t\t// invert y and shift by 1px (FF expecially needs that)\n\t\t\t\tuv.y = charStep - uv.y;\n\n\t\t\t\t// ignore points outside of character bounding box\n\t\t\t\tfloat halfCharWidth = ceil(charWidth * .5);\n\t\t\t\tif (floor(uv.x) > 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 t=n.parse(n.stringify(t));var i=n.stringify({size:T.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),s=p(t.size),l=Math.round(s[0]*d(s[1]));if(l!==e.fontSize[r]&&(o=!0,e.fontSize[r]=l),!(e.font[r]&&i==e.font[r].baseString||(a=!0,e.font[r]=T.fonts[i],e.font[r]))){var u=t.family.join(", "),c=[t.style];t.style!=t.variant&&c.push(t.variant),t.variant!=t.weight&&c.push(t.weight),_&&t.weight!=t.stretch&&c.push(t.stretch),e.font[r]={baseString:i,family:u,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:y(u,{origin:"top",fontSize:T.baseFontSize,fontStyle:c.join(" ")})},T.fonts[i]=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,k=c.mallocFloat(2*this.count),A=0,M=0;A1?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 Z=(t.color.subarray||t.color.slice).bind(t.color),Y=0;Y4||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},12018:function(t,e,r){"use strict";var n=r(71299);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}},56068:function(t){t.exports=function(t){"string"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>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}},42018: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}}},47216:function(t){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,r=Object.prototype.toString,n=function(t){return!(e&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===r.call(t)},i=function(t){return!!n(t)||null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==r.call(t)&&"[object Function]"===r.call(t.callee)},a=function(){return n(arguments)}();n.isLegacyArguments=i,t.exports=a?n:i},54404:function(t){t.exports=!0},65481:function(t,e,r){"use strict";var n,i=Object.prototype.toString,a=Function.prototype.toString,o=/^\s*(?:function)?\*/,s=r(84543)(),l=Object.getPrototypeOf;t.exports=function(t){if("function"!=typeof t)return!1;if(o.test(a.call(t)))return!0;if(!s)return"[object GeneratorFunction]"===i.call(t);if(!l)return!1;if(void 0===n){var e=function(){if(!s)return!1;try{return Function("return function*() {}")()}catch(t){}}();n=!!e&&l(e)}return l(t)===n}},62683:function(t){"use strict";t.exports="undefined"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))},64274:function(t){"use strict";t.exports=function(t){return t!=t}},15567:function(t,e,r){"use strict";var n=r(68222),i=r(17045),a=r(64274),o=r(14922),s=r(22442),l=n(o(),Number);i(l,{getPolyfill:o,implementation:a,shim:s}),t.exports=l},14922:function(t,e,r){"use strict";var n=r(64274);t.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:n}},22442:function(t,e,r){"use strict";var n=r(17045),i=r(14922);t.exports=function(){var t=i();return n(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}},64941:function(t){"use strict";t.exports=function(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}},10973:function(t){"use strict";var e=Object.prototype.toString;t.exports=function(t){var r;return"[object Object]"===e.call(t)&&(null===(r=Object.getPrototypeOf(t))||r===Object.getPrototypeOf({}))}},18546:function(t){"use strict";t.exports=function(t){for(var e,r=t.length,n=0;n13)&&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}},89546:function(t){"use strict";t.exports=function(t){return"string"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4))}},9187:function(t,e,r){"use strict";var n=r(86165),i=r(72077),a=r(92978),o=a("Object.prototype.toString"),s=r(57877)()&&"symbol"==typeof Symbol.toStringTag,l=i(),u=a("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1}return!!h&&function(t){var e=!1;return n(f,(function(r,n){if(!e)try{e=r.call(t)===n}catch(t){}})),e}(t)}},44517: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 k(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=kt(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)||Y(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)||Y(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&&Y(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=A()?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&&Y(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(A()&&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)},kt=function(t,e){return wt(f(t,{method:"POST"}),e)};var At,Mt;At=[],Mt=0;var St=function(t,e){if(N.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),Mt>=B.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return At.push(r),r}Mt++;var n=!1,i=function(){if(!n)for(n=!0,Mt--;At.length&&Mt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Ot.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var It={$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"}}},Dt=function(t,e,r,n){this.message=(t?t+": ":"")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function zt(t){var e=t.key,r=t.value;return r?[new Dt(e,r,"constants have been deprecated as of v8")]:[]}function Rt(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 Qt=[Ut,Vt,Ht,qt,Gt,Xt,Zt,Kt(Yt),Jt];function te(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!te(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=Qt;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){}})),ie=ne.parseCSSColor,ae=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};ae.parse=function(t){if(t){if(t instanceof ae)return t;if("string"==typeof t){var e=ie(t);if(e)return new ae(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},ae.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+")"},ae.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]},ae.black=new ae(0,0,0,1),ae.white=new ae(1,1,1,1),ae.transparent=new ae(0,0,0,0),ae.red=new ae(1,0,0,1);var oe=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"})};oe.prototype.compare=function(t,e){return this.collator.compare(t,e)},oe.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var se=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},le=function(t){this.sections=t};le.fromString=function(t){return new le([new se(t,null,null,null,null)])},le.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}))},le.factory=function(t){return t instanceof le?t:le.fromString(t)},le.prototype.toString=function(){return 0===this.sections.length?"":this.sections.map((function(t){return t.text})).join("")},le.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 fe(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 ae)return!0;if(t instanceof oe)return!0;if(t instanceof le)return!0;if(t instanceof ue)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if("string"!=typeof s||!(s in ge)||"object"===s)return e.error('The item type argument of "array" must be one of string, number, boolean',1);a=ge[s],n++}else a=Yt;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=Kt(a,o)}else r=ge[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var me=function(t){this.type=Xt,this.sections=t};me.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,Vt)))return null;var l=null;if(o["text-font"]&&!(l=e.parse(o["text-font"],1,Kt(Ht))))return null;var u=null;if(o["text-color"]&&!(u=e.parse(o["text-color"],1,Gt)))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,Yt);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 me(n)},me.prototype.evaluate=function(t){return new le(this.sections.map((function(e){var r=e.content.evaluate(t);return he(r)===Jt?new se("",r,null,null,null):new se(pe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)})))},me.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},xe.prototype.eachChild=function(t){t(this.input)},xe.prototype.outputDefined=function(){return!1},xe.prototype.serialize=function(){return["image",this.input.serialize()]};var be={"to-boolean":qt,"to-color":Gt,"to-number":Vt,"to-string":Ht},_e=function(t,e){this.type=t,this.args=e};_e.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=be[r],i=[],a=1;a4?"Invalid rbga value "+JSON.stringify(e)+": expected an array containing either three or four numeric values.":ce(e[0],e[1],e[2],e[3])))return new ae(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ve(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 Le(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*Me),Math.round(i*a*Me)]}function Ce(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 Pe(t,e){for(var r=!1,n=0,i=e.length;n0&&f<0||c<0&&f>0}function De(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}Se(e,t)}function je(t,e,r,n){for(var i=Math.pow(2,n.z)*Me,a=[n.x*Me,n.y*Me],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ge(t,e)&&(r=!1)})),r}Ve.parse=function(t,e){if(2!==t.length)return e.error("'within' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(fe(t[1])){var r=t[1];if("FeatureCollection"===r.type)for(var n=0;ne))throw new ve("Input is not a number.");o=s-1}return 0}Ye.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)},Ye.prototype._parse=function(t,e){function r(t,e,r){return"assert"===r?new ye(e,[t]):"coerce"===r?new _e(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 de)&&"resolvedImage"!==a.type.kind&&We(a)){var l=new Te;try{a=new de(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.")},Ye.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 Ye(this.registry,n,e||null,i,this.errors)},Ye.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 Nt(n,t))},Ye.prototype.checkSubtype=function(t,e){var r=te(t,e);return r&&this.error(r),r};var Je=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 Je(i,r,n)},Je.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[Xe(e,n)].evaluate(t)},Je.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 $e=Object.freeze({__proto__:null,number:Ke,color:function(t,e,r){return new ae(Ke(t.r,e.r,r),Ke(t.g,e.g,r),Ke(t.b,e.b,r),Ke(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return Ke(t,e[n],r)}))}}),Qe=.95047,tr=1.08883,er=4/29,rr=6/29,nr=3*rr*rr,ir=Math.PI/180,ar=180/Math.PI;function or(t){return t>.008856451679035631?Math.pow(t,1/3):t/nr+er}function sr(t){return t>rr?t*t*t:nr*(t-er)}function lr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ur(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function cr(t){var e=ur(t.r),r=ur(t.g),n=ur(t.b),i=or((.4124564*e+.3575761*r+.1804375*n)/Qe),a=or((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-or((.0193339*e+.119192*r+.9503041*n)/tr)),alpha:t.a}}function fr(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*sr(e),r=Qe*sr(r),n=tr*sr(n),new ae(lr(3.2404542*r-1.5371385*e-.4985314*n),lr(-.969266*r+1.8760108*e+.041556*n),lr(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function hr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var pr={forward:cr,reverse:fr,interpolate:function(t,e,r){return{l:Ke(t.l,e.l,r),a:Ke(t.a,e.a,r),b:Ke(t.b,e.b,r),alpha:Ke(t.alpha,e.alpha,r)}}},dr={forward:function(t){var e=cr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*ar;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*ir,r=t.c;return fr({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:hr(t.h,e.h,r),c:Ke(t.c,e.c,r),l:Ke(t.l,e.l,r),alpha:Ke(t.alpha,e.alpha,r)}}},vr=Object.freeze({__proto__:null,lab:pr,hcl:dr}),gr=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,Vt)))return null;var l=[],u=null;"interpolate-hcl"===r||"interpolate-lab"===r?u=Gt: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 gr(u,r,n,i,l):e.error("Type "+$t(u)+" is not interpolatable.")},gr.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=Xe(e,n),o=e[a],s=e[a+1],l=gr.interpolationFactor(this.interpolation,n,o,s),u=r[a].evaluate(t),c=r[a+1].evaluate(t);return"interpolate"===this.operator?$e[this.type.kind.toLowerCase()](u,c,l):"interpolate-hcl"===this.operator?dr.reverse(dr.interpolate(dr.forward(u),dr.forward(c),l)):pr.reverse(pr.interpolate(pr.forward(u),pr.forward(c),l))},gr.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ve("Array index out of bounds: "+e+" > "+(r.length-1)+".");if(e!==Math.floor(e))throw new ve("Array index must be an integer, but found "+e+" instead.");return r[e]},br.prototype.eachChild=function(t){t(this.index),t(this.input)},br.prototype.outputDefined=function(){return!1},br.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var _r=function(t,e){this.type=qt,this.needle=t,this.haystack=e};_r.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,Yt),n=e.parse(t[2],2,Yt);return r&&n?ee(r.type,[qt,Ht,Vt,Ut,Yt])?new _r(r,n):e.error("Expected first argument to be of type boolean, string, number or null, but found "+$t(r.type)+" instead"):null},_r.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!re(e,["boolean","string","number","null"]))throw new ve("Expected first argument to be of type boolean, string, number or null, but found "+$t(he(e))+" instead.");if(!re(r,["string","array"]))throw new ve("Expected second argument to be of type array or string, but found "+$t(he(r))+" instead.");return r.indexOf(e)>=0},_r.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},_r.prototype.outputDefined=function(){return!0},_r.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var wr=function(t,e,r){this.type=Vt,this.needle=t,this.haystack=e,this.fromIndex=r};wr.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,Yt),n=e.parse(t[2],2,Yt);if(!r||!n)return null;if(!ee(r.type,[qt,Ht,Vt,Ut,Yt]))return e.error("Expected first argument to be of type boolean, string, number or null, but found "+$t(r.type)+" instead");if(4===t.length){var i=e.parse(t[3],3,Vt);return i?new wr(r,n,i):null}return new wr(r,n)},wr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!re(e,["boolean","string","number","null"]))throw new ve("Expected first argument to be of type boolean, string, number or null, but found "+$t(he(e))+" instead.");if(!re(r,["string","array"]))throw new ve("Expected second argument to be of type array or string, but found "+$t(he(r))+" instead.");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},wr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},wr.prototype.outputDefined=function(){return!1},wr.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 Tr=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};Tr.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,he(h)))return null}else r=he(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,Yt);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 Tr(r,n,d,i,a,v):null},Tr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(he(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},Tr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},Tr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},Tr.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,Yt),n=e.parse(t[2],2,Vt);if(!r||!n)return null;if(!ee(r.type,[Kt(Yt),Ht,Yt]))return e.error("Expected first argument to be of type array or string, but found "+$t(r.type)+" instead");if(4===t.length){var i=e.parse(t[3],3,Vt);return i?new Ar(r.type,r,n,i):null}return new Ar(r.type,r,n)},Ar.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!re(e,["string","array"]))throw new ve("Expected first argument to be of type array or string, but found "+$t(he(e))+" instead.");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},Ar.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},Ar.prototype.outputDefined=function(){return!1},Ar.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 Lr=Er("==",(function(t,e,r){return e===r}),Sr),Cr=Er("!=",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!Sr(0,e,r,n)})),Pr=Er("<",(function(t,e,r){return e",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Ir=Er("<=",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),Dr=Er(">=",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),zr=function(t,e,r,n,i){this.type=Ht,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};zr.parse=function(t,e){if(3!==t.length)return e.error("Expected two arguments.");var r=e.parse(t[1],1,Vt);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,Ht)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Ht)))return null;var o=null;if(n["min-fraction-digits"]&&!(o=e.parse(n["min-fraction-digits"],1,Vt)))return null;var s=null;return n["max-fraction-digits"]&&!(s=e.parse(n["max-fraction-digits"],1,Vt))?null:new zr(r,i,a,o,s)},zr.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))},zr.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)},zr.prototype.outputDefined=function(){return!1},zr.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 Rr=function(t){this.type=Vt,this.input=t};Rr.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 "+$t(r.type)+" instead."):new Rr(r):null},Rr.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 ve("Expected value to be of type string or array, but found "+$t(he(e))+" instead.")},Rr.prototype.eachChild=function(t){t(this.input)},Rr.prototype.outputDefined=function(){return!1},Rr.prototype.serialize=function(){var t=["length"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Fr={"==":Lr,"!=":Cr,">":Or,"<":Pr,">=":Dr,"<=":Ir,array:ye,at:br,boolean:ye,case:kr,coalesce:mr,collator:Ae,format:me,image:xe,in:_r,"index-of":wr,interpolate:gr,"interpolate-hcl":gr,"interpolate-lab":gr,length:Rr,let:xr,literal:de,match:Tr,number:ye,"number-format":zr,object:ye,slice:Ar,step:Je,string:ye,"to-boolean":_e,"to-color":_e,"to-number":_e,"to-string":_e,var:Ze,within:Ve};function Br(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=ce(r,n,i,o);if(s)throw new ve(s);return new ae(r/255*o,n/255*o,i/255*o,o)}function Nr(t,e){return t in e}function jr(t,e){var r=e[t];return void 0===r?null:r}function Ur(t){return{type:t}}function Vr(t){return{result:"success",value:t}}function Hr(t){return{result:"error",value:t}}function qr(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Gr(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Zr(t){return!!t.expression&&t.expression.interpolated}function Yr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Wr(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function Xr(t){return t}function Jr(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||(Zr(e)?"exponential":"interval");if(a&&((t=Rt({},t)).stops&&(t.stops=t.stops.map((function(t){return[t[0],ae.parse(t[1])]}))),t.default?t.default=ae.parse(t.default):t.default=ae.parse(e.default)),t.colorSpace&&"rgb"!==t.colorSpace&&!vr[t.colorSpace])throw new Error("Unknown color space: "+t.colorSpace);if("exponential"===u)r=tn;else if("interval"===u)r=Qr;else if("categorical"===u){r=$r,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=Xe(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function tn(t,e,r){var n=void 0!==t.base?t.base:1;if("number"!==Yr(r))return Kr(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=Xe(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=$e[e.type]||Xr;if(t.colorSpace&&"rgb"!==t.colorSpace){var c=vr[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 en(t,e,r){return"color"===e.type?r=ae.parse(r):"formatted"===e.type?r=le.fromString(r.toString()):"resolvedImage"===e.type?r=ue.fromString(r.toString()):Yr(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0),Kr(r,t.default,e.default)}ke.register(Fr,{error:[{kind:"error"},[Ht],function(t,e){var r=e[0];throw new ve(r.evaluate(t))}],typeof:[Ht,[Yt],function(t,e){return $t(he(e[0].evaluate(t)))}],"to-rgba":[Kt(Vt,4),[Gt],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Gt,[Vt,Vt,Vt],Br],rgba:[Gt,[Vt,Vt,Vt,Vt],Br],has:{type:qt,overloads:[[[Ht],function(t,e){return Nr(e[0].evaluate(t),t.properties())}],[[Ht,Zt],function(t,e){var r=e[0],n=e[1];return Nr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Yt,overloads:[[[Ht],function(t,e){return jr(e[0].evaluate(t),t.properties())}],[[Ht,Zt],function(t,e){var r=e[0],n=e[1];return jr(r.evaluate(t),n.evaluate(t))}]]},"feature-state":[Yt,[Ht],function(t,e){return jr(e[0].evaluate(t),t.featureState||{})}],properties:[Zt,[],function(t){return t.properties()}],"geometry-type":[Ht,[],function(t){return t.geometryType()}],id:[Yt,[],function(t){return t.id()}],zoom:[Vt,[],function(t){return t.globals.zoom}],"heatmap-density":[Vt,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[Vt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Yt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[Vt,Ur(Vt),function(t,e){for(var r=0,n=0,i=e;n":[qt,[Ht,Yt],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->":[qt,[Yt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],"filter-<=":[qt,[Ht,Yt],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-<=":[qt,[Yt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],"filter->=":[qt,[Ht,Yt],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->=":[qt,[Yt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],"filter-has":[qt,[Yt],function(t,e){return e[0].value in t.properties()}],"filter-has-id":[qt,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[qt,[Kt(Ht)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[qt,[Kt(Yt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],"filter-in-small":[qt,[Ht,Kt(Yt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],"filter-in-large":[qt,[Ht,Kt(Yt)],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:qt,overloads:[[[qt,qt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Ur(qt),function(t,e){for(var r=0,n=e;r0&&"string"==typeof t[0]&&t[0]in Fr}function an(t,e){var r=new Ye(Fr,[],e?function(t){var e={color:Gt,string:Ht,number:Vt,enum:Ht,boolean:qt,formatted:Xt,resolvedImage:Jt};return"array"===t.type?Kt(e[t.value]||Yt,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?Vr(new rn(n,e)):Hr(r.errors)}rn.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)},rn.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 ve("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 on=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!qe(e.expression)};on.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},on.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var sn=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!qe(e.expression),this.interpolationType=n};function ln(t,e){if("error"===(t=an(t,e)).result)return t;var r=t.value.expression,n=He(r);if(!n&&!qr(e))return Hr([new Nt("","data expressions not supported")]);var i=Ge(r,["zoom"]);if(!i&&!Gr(e))return Hr([new Nt("","zoom expressions not supported")]);var a=cn(r);if(!a&&!i)return Hr([new Nt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(a instanceof Nt)return Hr([a]);if(a instanceof gr&&!Zr(e))return Hr([new Nt("",'"interpolate" expressions cannot be used with this property')]);if(!a)return Vr(new on(n?"constant":"source",t.value));var o=a instanceof gr?a.interpolation:void 0;return Vr(new sn(n?"camera":"composite",t.value,a.labels,o))}sn.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},sn.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)},sn.prototype.interpolationFactor=function(t,e,r){return this.interpolationType?gr.interpolationFactor(this.interpolationType,t,e,r):0};var un=function(t,e){this._parameters=t,this._specification=e,Rt(this,Jr(this._parameters,this._specification))};function cn(t){var e=null;if(t instanceof xr)e=cn(t.result);else if(t instanceof mr)for(var r=0,n=t.args;rn.maximum?[new Dt(e,r,r+" is greater than the maximum value "+n.maximum)]:[]}function dn(t){var e,r,n,i=t.valueSpec,a=Ft(t.value.type),o={},s="categorical"!==a&&void 0===t.value.property,l=!s,u="array"===Yr(t.value.stops)&&"array"===Yr(t.value.stops[0])&&"object"===Yr(t.value.stops[0][0]),c=fn({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 Dt(t.key,t.value,'identity function may not have a "stops" property')];var e=[],r=t.value;return e=e.concat(hn({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:f})),"array"===Yr(r)&&0===r.length&&e.push(new Dt(t.key,r,"array must have at least one stop")),e},default:function(t){return Bn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===a&&s&&c.push(new Dt(t.key,t.value,'missing required property "property"')),"identity"===a||t.value.stops||c.push(new Dt(t.key,t.value,'missing required property "stops"')),"exponential"===a&&t.valueSpec.expression&&!Zr(t.valueSpec)&&c.push(new Dt(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!qr(t.valueSpec)?c.push(new Dt(t.key,t.value,"property functions not supported")):s&&!Gr(t.valueSpec)&&c.push(new Dt(t.key,t.value,"zoom functions not supported"))),"categorical"!==a&&!u||void 0!==t.value.property||c.push(new Dt(t.key,t.value,'"property" property is required')),c;function f(t){var e=[],a=t.value,s=t.key;if("array"!==Yr(a))return[new Dt(s,a,"array expected, "+Yr(a)+" found")];if(2!==a.length)return[new Dt(s,a,"array length 2 expected, length "+a.length+" found")];if(u){if("object"!==Yr(a[0]))return[new Dt(s,a,"object expected, "+Yr(a[0])+" found")];if(void 0===a[0].zoom)return[new Dt(s,a,"object stop key must have zoom")];if(void 0===a[0].value)return[new Dt(s,a,"object stop key must have value")];if(n&&n>Ft(a[0].zoom))return[new Dt(s,a[0].zoom,"stop zoom values must appear in ascending order")];Ft(a[0].zoom)!==n&&(n=Ft(a[0].zoom),r=void 0,o={}),e=e.concat(fn({key:s+"[0]",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:pn,value:h}}))}else e=e.concat(h({key:s+"[0]",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return nn(Bt(a[1]))?e.concat([new Dt(s+"[1]",a[1],"expressions are not allowed in function stops.")]):e.concat(Bn({key:s+"[1]",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=Yr(t.value),l=Ft(t.value),u=null!==t.value?t.value:n;if(e){if(s!==e)return[new Dt(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 Dt(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 qr(i)&&void 0===a&&(c+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Dt(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 _n(t){if(!Array.isArray(t))return!1;if("within"===t[0])return!0;for(var e=1;e"===r||"<="===r||">="===r?Tn(t[1],t[2],r):"any"===r?(e=t.slice(1),["any"].concat(e.map(wn))):"all"===r?["all"].concat(t.slice(1).map(wn)):"none"===r?["all"].concat(t.slice(1).map(wn).map(Mn)):"in"===r?kn(t[1],t.slice(2)):"!in"===r?Mn(kn(t[1],t.slice(2))):"has"===r?An(t[1]):"!has"===r?Mn(An(t[1])):"within"!==r||t}function Tn(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 kn(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(bn)]]:["filter-in-small",t,["literal",e]]}}function An(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function Mn(t){return["!",t]}function Sn(t){return yn(Bt(t.value))?vn(Rt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):En(t)}function En(t){var e=t.value,r=t.key;if("array"!==Yr(e))return[new Dt(r,e,"array expected, "+Yr(e)+" found")];var n,i=t.styleSpec,a=[];if(e.length<1)return[new Dt(r,e,"filter array must have at least 1 element")];switch(a=a.concat(gn({key:r+"[0]",value:e[0],valueSpec:i.filter_operator,style:t.style,styleSpec:t.styleSpec})),Ft(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&"$type"===Ft(e[1])&&a.push(new Dt(r,e,'"$type" cannot be use with operator "'+e[0]+'"'));case"==":case"!=":3!==e.length&&a.push(new Dt(r,e,'filter array for operator "'+e[0]+'" must have 3 elements'));case"in":case"!in":e.length>=2&&"string"!==(n=Yr(e[1]))&&a.push(new Dt(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}}},Xn.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}},Xn.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Xn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Xn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n=0)){var f=t[c];u[c]=$n[l].shallow.indexOf(c)>=0?f:ni(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 ii(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||ei(t)||ri(t)||ArrayBuffer.isView(t)||t instanceof Jn)return t;if(Array.isArray(t))return t.map(ii);if("object"==typeof t){var e=t.$name||"Object",r=$n[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:ii(s)}}return n}throw new Error("can't deserialize object of type "+typeof t)}var ai=function(){this.first=!0};ai.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 si(t){for(var e=0,r=t;e=65097&&t<=65103)||oi["CJK Compatibility Ideographs"](t)||oi["CJK Compatibility"](t)||oi["CJK Radicals Supplement"](t)||oi["CJK Strokes"](t)||!(!oi["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||oi["CJK Unified Ideographs Extension A"](t)||oi["CJK Unified Ideographs"](t)||oi["Enclosed CJK Letters and Months"](t)||oi["Hangul Compatibility Jamo"](t)||oi["Hangul Jamo Extended-A"](t)||oi["Hangul Jamo Extended-B"](t)||oi["Hangul Jamo"](t)||oi["Hangul Syllables"](t)||oi.Hiragana(t)||oi["Ideographic Description Characters"](t)||oi.Kanbun(t)||oi["Kangxi Radicals"](t)||oi["Katakana Phonetic Extensions"](t)||oi.Katakana(t)&&12540!==t||!(!oi["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)||!(!oi["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||oi["Unified Canadian Aboriginal Syllabics"](t)||oi["Unified Canadian Aboriginal Syllabics Extended"](t)||oi["Vertical Forms"](t)||oi["Yijing Hexagram Symbols"](t)||oi["Yi Syllables"](t)||oi["Yi Radicals"](t))))}function ui(t){return!(li(t)||function(t){return!!(oi["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||oi["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)||oi["Letterlike Symbols"](t)||oi["Number Forms"](t)||oi["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)||oi["Control Pictures"](t)&&9251!==t||oi["Optical Character Recognition"](t)||oi["Enclosed Alphanumerics"](t)||oi["Geometric Shapes"](t)||oi["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||oi["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||oi["CJK Symbols and Punctuation"](t)||oi.Katakana(t)||oi["Private Use Area"](t)||oi["CJK Compatibility Forms"](t)||oi["Small Form Variants"](t)||oi["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 ci(t){return oi.Arabic(t)||oi["Arabic Supplement"](t)||oi["Arabic Extended-A"](t)||oi["Arabic Presentation Forms-A"](t)||oi["Arabic Presentation Forms-B"](t)}function fi(t){return t>=1424&&t<=2303||oi["Arabic Presentation Forms-A"](t)||oi["Arabic Presentation Forms-B"](t)}function hi(t,e){return!(!e&&fi(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||oi.Khmer(t))}function pi(t){for(var e=0,r=t;e-1&&(xi=yi),mi&&mi(t)};function wi(){Ti.fire(new Ct("pluginStateChange",{pluginStatus:xi,pluginURL:bi}))}var Ti=new Ot,ki=function(){return xi},Ai=function(){if(xi!==di||!bi)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");xi=vi,wi(),bi&&Tt({url:bi},(function(t){t?_i(t):(xi=gi,wi())}))},Mi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isloaded --function(){return xi===gi||null!=Mi.applyArabicShaping},isLoading:function(){return xi===vi},setState:function(t){xi=t.pluginStatus,bi=t.pluginURL},isParsed:function(){return null!=Mi.applyArabicShaping&&null!=Mi.processBidirectionalText&&null!=Mi.processStyledBidirectionalText},getPluginURL:function(){return bi}},Si=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 ai,this.transition={})};Si.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 Ei=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Wr(t))return new un(t,e);if(nn(t)){var r=ln(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=ae.parse(t)),{kind:"constant",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};Ei.prototype.isDataDriven=function(){return"source"===this.expression.kind||"composite"===this.expression.kind},Ei.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var Li=function(t){this.property=t,this.value=new Ei(t,void 0)};Li.prototype.transitioned=function(t,e){return new Pi(this.property,this.value,e,f({},t.transition,this.transition),t.now)},Li.prototype.untransitioned=function(){return new Pi(this.property,this.value,null,{},0)};var Ci=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};Ci.prototype.getValue=function(t){return b(this._values[t].value.value)},Ci.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Li(this._values[t].property)),this._values[t].value=new Ei(this._values[t].property,null===e?void 0:b(e))},Ci.prototype.getTransition=function(t){return b(this._values[t].transition)},Ci.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Li(this._values[t].property)),this._values[t].transition=b(e)||void 0},Ci.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 Oi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};Oi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new zi(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}(Fi),Ni=function(t){this.specification=t};Ni.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 Si(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Si(Math.floor(e.zoom),e)),t.expression.evaluate(new Si(Math.floor(e.zoom+1),e)),e)}},Ni.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ni.prototype.interpolate=function(t){return t};var ji=function(t){this.specification=t};ji.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},ji.prototype.interpolate=function(){return!1};var Ui=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 Ei(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new Li(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};Qn("DataDrivenProperty",Fi),Qn("DataConstantProperty",Ri),Qn("CrossFadedDataDrivenProperty",Bi),Qn("CrossFadedProperty",Ni),Qn("ColorRampProperty",ji);var Vi="-transition",Hi=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 Ii(r.layout)),r.paint)){for(var n in this._transitionablePaint=new Ci(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 zi(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(Zn,n,t,e,r))return}"visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return y(t,Vi)?this._transitionablePaint.getTransition(t.slice(0,-Vi.length)):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(Gn,n,t,e,r))return!1}if(y(t,Vi))return this._transitionablePaint.setTransition(t.slice(0,-Vi.length),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)&&Yn(this,t.call(Hn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:It,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 Di&&qr(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return!0}return!1},e}(Ot),qi={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Gi=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},Zi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Yi(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i,a=(i=t.type,qi[i].BYTES_PER_ELEMENT),o=r=Wi(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:Wi(r,Math.max(n,e)),alignment:e}}function Wi(t,e){return Math.ceil(t/e)*e}Zi.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Zi.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},Zi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Zi.prototype.clear=function(){this.length=0},Zi.prototype.resize=function(t){this.reserve(t),this.length=t},Zi.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)}},Zi.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};var Xi=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}(Zi);Xi.prototype.bytesPerElement=4,Qn("StructArrayLayout2i4",Xi);var Ji=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}(Zi);Ji.prototype.bytesPerElement=8,Qn("StructArrayLayout4i8",Ji);var Ki=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}(Zi);Ki.prototype.bytesPerElement=12,Qn("StructArrayLayout2i4i12",Ki);var $i=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}(Zi);$i.prototype.bytesPerElement=8,Qn("StructArrayLayout2i4ub8",$i);var Qi=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}(Zi);Qi.prototype.bytesPerElement=18,Qn("StructArrayLayout8ui2ub18",Qi);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.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}(Zi);ta.prototype.bytesPerElement=24,Qn("StructArrayLayout4i4ui4i24",ta);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._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}(Zi);ea.prototype.bytesPerElement=12,Qn("StructArrayLayout3f12",ea);var ra=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}(Zi);ra.prototype.bytesPerElement=4,Qn("StructArrayLayout1ul4",ra);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),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}(Zi);na.prototype.bytesPerElement=20,Qn("StructArrayLayout6i1ul2ui20",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,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}(Zi);ia.prototype.bytesPerElement=12,Qn("StructArrayLayout2i2i2i12",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.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}(Zi);aa.prototype.bytesPerElement=16,Qn("StructArrayLayout2f1f2i16",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.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}(Zi);oa.prototype.bytesPerElement=12,Qn("StructArrayLayout2ub2f12",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){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}(Zi);sa.prototype.bytesPerElement=6,Qn("StructArrayLayout3ui6",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),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}(Zi);la.prototype.bytesPerElement=48,Qn("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",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.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,k,A,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,k,A,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,k,A,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]=k,this.float32[C+13]=A,this.float32[C+14]=M,this.float32[C+15]=S,this.float32[C+16]=E,t},e}(Zi);ua.prototype.bytesPerElement=68,Qn("StructArrayLayout8i15ui1ul4f68",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.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}(Zi);ca.prototype.bytesPerElement=4,Qn("StructArrayLayout1f4",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)},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}(Zi);fa.prototype.bytesPerElement=6,Qn("StructArrayLayout3i6",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.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}(Zi);ha.prototype.bytesPerElement=8,Qn("StructArrayLayout1ul2ui8",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.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}(Zi);pa.prototype.bytesPerElement=4,Qn("StructArrayLayout2ui4",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.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}(Zi);da.prototype.bytesPerElement=2,Qn("StructArrayLayout1ui2",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.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}(Zi);va.prototype.bytesPerElement=8,Qn("StructArrayLayout2f8",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.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}(Zi);ga.prototype.bytesPerElement=16,Qn("StructArrayLayout4f16",ga);var ya=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}(Gi);ya.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 ya(this,t)},e}(na);Qn("CollisionBoxArray",ma);var xa=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}(Gi);xa.prototype.size=48;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.get=function(t){return new xa(this,t)},e}(la);Qn("PlacedSymbolArray",ba);var _a=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}(Gi);_a.prototype.size=68;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.get=function(t){return new _a(this,t)},e}(ua);Qn("SymbolInstanceArray",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.getoffsetX=function(t){return this.float32[1*t+0]},e}(ca);Qn("GlyphOffsetArray",Ta);var ka=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}(fa);Qn("SymbolLineVertexArray",ka);var Aa=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}(Gi);Aa.prototype.size=8;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 Aa(this,t)},e}(ha);Qn("FeatureIndexArray",Ma);var Sa=Yi([{name:"a_pos",components:2,type:"Int16"}],4).members,Ea=function(t){void 0===t&&(t=[]),this.segments=t};function La(t,e){return 256*(t=u(Math.floor(t),0,255))+u(Math.floor(e),0,255)}Ea.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>Ea.MAX_VERTEX_ARRAY_LENGTH&&w("Max vertices per segment is "+Ea.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+t),(!i||i.vertexLength+t>Ea.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},Ea.prototype.get=function(){return this.segments},Ea.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))+((58964+(a>>>16)&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}})),Oa=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}})),Ia=Pa,Da=Pa,za=Oa;Ia.murmur3=Da,Ia.murmur2=za;var Ra=function(){this.ids=[],this.positions=[],this.indexed=!1};Ra.prototype.add=function(t,e,r,n){this.ids.push(Ba(t)),this.positions.push(e,r,n)},Ra.prototype.getPositions=function(t){for(var e=Ba(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},Ra.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Na(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}},Ra.deserialize=function(t){var e=new Ra;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e};var Fa=Math.pow(2,53)-1;function Ba(t){var e=+t;return!isNaN(e)&&e<=Fa?e:Ia(String(t))}function Na(t,e,r,n){for(;r>1],a=r-1,o=n+1;;){do{a++}while(t[a]i);if(a>=o)break;ja(t,a,o),ja(e,3*a,3*o),ja(e,3*a+1,3*o+1),ja(e,3*a+2,3*o+2)}o-rlo.max||o.ylo.max)&&(w("Geometry exceeds allowed extent, reduce your vector tile buffer size"),o.x=u(o.x,lo.min,lo.max),o.y=u(o.y,lo.min,lo.max))}return r}function co(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var fo=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 Xi,this.indexArray=new sa,this.segments=new Ea,this.programConfigurations=new no(Sa,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function ho(t,e){for(var r=0;r1){if(yo(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function _o(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 wo(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 To(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 ko(t,e,r){var n=e.paint.get(t).value;return"constant"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function Ao(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Mo(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=oo||c<0||c>=oo)){var f=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=f.vertexLength;co(this.layoutVertexArray,u,c,-1,-1),co(this.layoutVertexArray,u,c,1,-1),co(this.layoutVertexArray,u,c,1,1),co(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)},Qn("CircleBucket",fo,{omit:["layers"]});var So=new Ui({"circle-sort-key":new Fi(It.layout_circle["circle-sort-key"])}),Eo={paint:new Ui({"circle-radius":new Fi(It.paint_circle["circle-radius"]),"circle-color":new Fi(It.paint_circle["circle-color"]),"circle-blur":new Fi(It.paint_circle["circle-blur"]),"circle-opacity":new Fi(It.paint_circle["circle-opacity"]),"circle-translate":new Ri(It.paint_circle["circle-translate"]),"circle-translate-anchor":new Ri(It.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new Ri(It.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new Ri(It.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new Fi(It.paint_circle["circle-stroke-width"]),"circle-stroke-color":new Fi(It.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new Fi(It.paint_circle["circle-stroke-opacity"])}),layout:So},Lo="undefined"!=typeof Float32Array?Float32Array:Array;function Co(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 Po(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 Oo=Po;var Io,Do=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 zo(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}Io=new Lo(3),Lo!=Float32Array&&(Io[0]=0,Io[1]=0,Io[2]=0),function(){var t=new Lo(4);Lo!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0)}();var Ro=function(t){var e=t[0],r=t[1];return e*e+r*r},Fo=(function(){var t=new Lo(2);Lo!=Float32Array&&(t[0]=0,t[1]=0)}(),function(t){function e(e){t.call(this,e,Eo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new fo(t)},e.prototype.queryRadius=function(t){var e=t;return ko("circle-radius",this,e)+ko("circle-stroke-width",this,e)+Ao(this.paint.get("circle-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=Mo(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 Bo(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 rs(h,p,r,n,i,u),p}function ts(t,e,r,n,i){var a,o;if(i===ks(t,e,r,n)>0)for(a=e;a=e;a-=n)o=_s(a,t[a],t[a+1],o);return o&&vs(o,o.next)&&(ws(o),o=o.next),o}function es(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!vs(n,n.next)&&0!==ds(n.prev,n,n.next))n=n.next;else{if(ws(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function rs(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=cs(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?is(t,n,i,a):ns(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),ws(t),t=l.next,u=l.next;else if((t=l)===u){o?1===o?rs(t=as(es(t),e,r),e,r,n,i,a,2):2===o&&os(t,e,r,n,i,a):rs(es(t),e,r,n,i,a,1);break}}}function ns(t){var e=t.prev,r=t,n=t.next;if(ds(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(hs(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&ds(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function is(t,e,r,n){var i=t.prev,a=t,o=t.next;if(ds(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=cs(s,l,e,r,n),h=cs(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&&hs(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&ds(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,d!==t.prev&&d!==t.next&&hs(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&ds(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;p&&p.z>=f;){if(p!==t.prev&&p!==t.next&&hs(i.x,i.y,a.x,a.y,o.x,o.y,p.x,p.y)&&ds(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;d&&d.z<=h;){if(d!==t.prev&&d!==t.next&&hs(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&ds(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function as(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!vs(i,a)&&gs(i,n,n.next,a)&&xs(i,a)&&xs(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),ws(n),ws(n.next),n=t=a),n=n.next}while(n!==t);return es(n)}function os(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&ps(o,s)){var l=bs(o,s);return o=es(o,o.next),l=es(l,l.next),rs(o,e,r,n,i,a),void rs(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function ss(t,e){return t.x-e.x}function ls(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&&hs(ar.x||n.x===r.x&&us(r,n)))&&(r=n,h=l)),n=n.next}while(n!==u);return r}(t,e)){var r=bs(e,t);es(e,e.next),es(r,r.next)}}function us(t,e){return ds(t.prev,t,e.prev)<0&&ds(e.next,t,t.next)<0}function cs(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 fs(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 ps(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&&gs(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(xs(t,e)&&xs(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)&&(ds(t.prev,t,e.prev)||ds(t,e.prev,e))||vs(t,e)&&ds(t.prev,t,t.next)>0&&ds(e.prev,e,e.next)>0)}function ds(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function vs(t,e){return t.x===e.x&&t.y===e.y}function gs(t,e,r,n){var i=ms(ds(t,e,r)),a=ms(ds(t,e,n)),o=ms(ds(r,n,t)),s=ms(ds(r,n,e));return i!==a&&o!==s||!(0!==i||!ys(t,r,e))||!(0!==a||!ys(t,n,e))||!(0!==o||!ys(r,t,n))||!(0!==s||!ys(r,e,n))}function ys(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 xs(t,e){return ds(t.prev,t,t.next)<0?ds(t,e,t.next)>=0&&ds(t,t.prev,e)>=0:ds(t,e,t.prev)<0||ds(t,t.next,e)<0}function bs(t,e){var r=new Ts(t.i,t.x,t.y),n=new Ts(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 _s(t,e,r,n){var i=new Ts(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 ws(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 Ts(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 ks(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);Ms(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(Ss(t,r,e),i(t[n],c)>0&&Ss(t,r,n);f0;)h--}0===i(t[r],c)?Ss(t,r,h):Ss(t,++h,n),h<=e&&(r=h+1),e<=h&&(n=h-1)}}function Ss(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function Es(t,e){return te?1:0}function Ls(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},Ko.default=$o;var Is=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 Xi,this.indexArray=new sa,this.indexArray2=new pa,this.programConfigurations=new no(Jo,t.layers,t.zoom),this.segments=new Ea,this.segments2=new Ea,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};Is.prototype.populate=function(t,e,r){this.hasPattern=Ps("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},Ns.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]},Ns.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=Ns.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 Gs(t,e,r){if(3===t){var n=new Vs(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}Hs.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 Bs(this._pbf,e,this.extent,this._keys,this._values)};var Zs={VectorTile:function(t,e){this.layers=t.readFields(Gs,{},e)},VectorTileFeature:Bs,VectorTileLayer:Vs},Ys=Zs.VectorTileFeature.types,Ws=Math.pow(2,13);function Xs(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Ws)+o,i*Ws*2,a*Ws*2,Math.round(s))}var Js=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 Ki,this.indexArray=new sa,this.programConfigurations=new no(Fs,t.layers,t.zoom),this.segments=new Ea,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function Ks(t,e){return t.x===e.x&&(t.x<0||t.x>oo)||t.y===e.y&&(t.y<0||t.y>oo)}Js.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=Ps("fill-extrusion",this.layers,e);for(var n=0,i=t;noo}))||O.every((function(t){return t.y<0}))||O.every((function(t){return t.y>oo}))))for(var v=0,g=0;g=1){var m=d[g-1];if(!Ks(y,m)){f.vertexLength+4>Ea.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),Xs(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,v),Xs(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,v),v+=b,Xs(this.layoutVertexArray,m.x,m.y,x.x,x.y,0,0,v),Xs(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>Ea.MAX_VERTEX_ARRAY_LENGTH&&(f=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),"Polygon"===Ys[t.type]){for(var w=[],T=[],k=f.vertexLength,A=0,M=s;A=2&&t[l-1].equals(t[l-2]);)l--;for(var u=0;u0;if(T&&y>u){var A=c.dist(p);if(A>2*f){var M=c.sub(c.sub(p)._mult(f/A)._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*(k?-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=k?C:0,O=k?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}}}}},ol.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>al/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},ol.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},ol.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(al-1):this.distance},ol.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Qn("LineBucket",ol,{omit:["layers","patternFeatures"]});var sl=new Ui({"line-cap":new Ri(It.layout_line["line-cap"]),"line-join":new Fi(It.layout_line["line-join"]),"line-miter-limit":new Ri(It.layout_line["line-miter-limit"]),"line-round-limit":new Ri(It.layout_line["line-round-limit"]),"line-sort-key":new Fi(It.layout_line["line-sort-key"])}),ll={paint:new Ui({"line-opacity":new Fi(It.paint_line["line-opacity"]),"line-color":new Fi(It.paint_line["line-color"]),"line-translate":new Ri(It.paint_line["line-translate"]),"line-translate-anchor":new Ri(It.paint_line["line-translate-anchor"]),"line-width":new Fi(It.paint_line["line-width"]),"line-gap-width":new Fi(It.paint_line["line-gap-width"]),"line-offset":new Fi(It.paint_line["line-offset"]),"line-blur":new Fi(It.paint_line["line-blur"]),"line-dasharray":new Ni(It.paint_line["line-dasharray"]),"line-pattern":new Bi(It.paint_line["line-pattern"]),"line-gradient":new ji(It.paint_line["line-gradient"])}),layout:sl},ul=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 Si(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}(Fi),cl=new ul(ll.paint.properties["line-width"].specification);cl.useIntegerZoom=!0;var fl=function(t){function e(e){t.call(this,e,ll)}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=Zo(t,"lineProgress"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values["line-floorwidth"]=cl.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)},e.prototype.createBucket=function(t){return new ol(t)},e.prototype.queryRadius=function(t){var e=t,r=hl(ko("line-width",this,e),ko("line-gap-width",this,e)),n=ko("line-offset",this,e);return r/2+Math.abs(n)+Ao(this.paint.get("line-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,o,s){var l=Mo(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),o.angle,s),u=s/2*hl(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 pl=Yi([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),dl=Yi([{name:"a_projected_pos",components:3,type:"Float32"}],4),vl=(Yi([{name:"a_fade_opacity",components:1,type:"Uint32"}],4),Yi([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}])),gl=(Yi([{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"}]),Yi([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4)),yl=Yi([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function ml(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()),Mi.applyArabicShaping&&(t=Mi.applyArabicShaping(t)),t}(t.text,e,r)})),t}Yi([{name:"triangle",components:3,type:"Uint16"}]),Yi([{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"}]),Yi([{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"}]),Yi([{type:"Float32",name:"offsetX"}]),Yi([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);var xl={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"};var bl=24,_l=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)},wl=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},Tl=kl;function kl(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}kl.Varint=0,kl.Fixed64=1,kl.Bytes=2,kl.Fixed32=5;var Al=4294967296,Ml=1/Al,Sl="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function El(t){return t.type===kl.Bytes?t.readVarint()+t.pos:t.pos+1}function Ll(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Cl(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 Pl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function Vl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}kl.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=jl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Vl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=jl(this.buf,this.pos)+jl(this.buf,this.pos+4)*Al;return this.pos+=8,t},readSFixed64:function(){var t=jl(this.buf,this.pos)+Vl(this.buf,this.pos+4)*Al;return this.pos+=8,t},readFloat:function(){var t=_l(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=_l(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 Ll(t,n,e);if(n|=(127&(i=a[r.pos++]))<<3,i<128)return Ll(t,n,e);if(n|=(127&(i=a[r.pos++]))<<10,i<128)return Ll(t,n,e);if(n|=(127&(i=a[r.pos++]))<<17,i<128)return Ll(t,n,e);if(n|=(127&(i=a[r.pos++]))<<24,i<128)return Ll(t,n,e);if(n|=(1&(i=a[r.pos++]))<<31,i<128)return Ll(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&&Sl?function(t,e,r){return Sl.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!==kl.Bytes)return t.push(this.readVarint(e));var r=El(this);for(t=t||[];this.pos127;);else if(e===kl.Bytes)this.pos=this.readVarint()+this.pos;else if(e===kl.Fixed32)this.pos+=4;else{if(e!==kl.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&&Cl(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),wl(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),wl(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&&Cl(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,kl.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Pl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Ol,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,zl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Il,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Dl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Rl,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Fl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Bl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Nl,e)},writeBytesField:function(t,e){this.writeTag(t,kl.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,kl.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,kl.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,kl.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,kl.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,kl.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,kl.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,kl.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,kl.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,kl.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};function Hl(t,e,r){1===t&&r.readMessage(ql,e)}function ql(t,e,r){if(3===t){var n=r.readMessage(Gl,{}),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 Ho({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:u,advance:c}})}}function Gl(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 Zl(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>A&&(A=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)*bl}z?(t.verticalizable=!0,k.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):(k.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!==k.length){var H=h-u;d=Math.max(H,d),cu(k,0,k.length-1,g,A)}h=0;var q=a*_+A;T.lineOffset=Math.max(A,w),p+=q,v=Math.max(q,v),++y}else p+=a,++y}var G=p-Kl,Z=uu(o),Y=Z.horizontalAlign,W=Z.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var u=(e-r)*i,c=0;c=a!==o?-s*n-Kl:(-n*l+.5)*o;for(var f=0,h=t;f=0&&n>=t&&eu[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},Ql.prototype.substring=function(t,e){var r=new Ql;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Ql.prototype.toString=function(){return this.text},Ql.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},Ql.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push($l.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 eu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},ru={};function nu(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*bl/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function iu(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 xu(t){for(var e=0,r=0;ru){var d=(u-l)/p,v=Ke(f.x,h.x,d),g=Ke(f.y,h.y,d),y=new hu(v,g,h.angleTo(f),c);return y._round(),!o||mu(t,y,s,o,e)?y:void 0}l+=p}}function Tu(t,e,r,n,i,a,o,s,l){var u=bu(n,a,o),c=_u(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 hu(b,_,m,d);w._round(),n&&!mu(t,w,a,n,i)||p.push(w)}}f+=y}return s||p.length||o||(p=ku(t,f/2,r,n,i,a,o,!0,l)),p}function Au(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 Mu(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,k=y,A=0,M=m;if(o.content&&n){var S=o.content;x=Su(h,0,S[0]),_=Su(p,0,S[1]),b=Su(h,S[0],S[2]),w=Su(p,S[1],S[3]),T=S[0]-x,A=S[1]-_,k=S[2]-S[0]-b,M=S[3]-S[1]-w}var E=function(n,i,l,u){var h=Lu(n.stretch-x,b,c,t.left),p=Cu(n.fixed-T,k,n.stretch,v),d=Lu(i.stretch-_,w,f,t.top),y=Cu(i.fixed-A,M,i.stretch,g),m=Lu(l.stretch-x,b,c,t.left),S=Cu(l.fixed-T,k,l.stretch,v),E=Lu(u.stretch-_,w,f,t.top),L=Cu(u.fixed-A,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:k/s/c,minFontScaleY:M/s/f,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var L=Eu(h,y,v),C=Eu(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),k=c*Math.PI/180;b._rotate(k),_._rotate(k),w._rotate(k),T._rotate(k),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},Ou=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=Iu),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 Iu(t,e){return te?1:0}function Du(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 Ou([],zu);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 Ru(b.p.x-d,b.p.y-d,d,t)),v.push(new Ru(b.p.x+d,b.p.y-d,d,t)),v.push(new Ru(b.p.x-d,b.p.y+d,d,t)),v.push(new Ru(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 zu(t,e){return e.max-t.max}function Ru(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,bo(t,u,c))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}Ou.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},Ou.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}},Ou.prototype.peek=function(){return this.data[0]},Ou.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},Ou.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 Fu=Number.POSITIVE_INFINITY;function Bu(t,e){return e[1]!==Fu?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 Nu(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 ju=32640;function Uu(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 >= '+'255. Reduce your "text-size".'):"composite"===y.kind&&((m=[pu*d.compositeTextSizes[0].evaluate(s,{},v),pu*d.compositeTextSizes[1].evaluate(s,{},v)])[0]>ju||m[1]>ju)&&w(t.layerIds[0]+': Value for "text-size" is >= '+'255. 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 Si(this.zoom),v=0,g=t;v=0;for(var I=0,D=k.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},Ku.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Ku.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Ku.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Ku.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Ku.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)}},Qn("SymbolBucket",Ku,{omit:["layers","collisionBoxArray","features","compareText"]}),Ku.MAX_GLYPHS=65535,Ku.addDynamicAttributes=Yu;var $u=new Ui({"symbol-placement":new Ri(It.layout_symbol["symbol-placement"]),"symbol-spacing":new Ri(It.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Ri(It.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Fi(It.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Ri(It.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Ri(It.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new Ri(It.layout_symbol["icon-ignore-placement"]),"icon-optional":new Ri(It.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Ri(It.layout_symbol["icon-rotation-alignment"]),"icon-size":new Fi(It.layout_symbol["icon-size"]),"icon-text-fit":new Ri(It.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Ri(It.layout_symbol["icon-text-fit-padding"]),"icon-image":new Fi(It.layout_symbol["icon-image"]),"icon-rotate":new Fi(It.layout_symbol["icon-rotate"]),"icon-padding":new Ri(It.layout_symbol["icon-padding"]),"icon-keep-upright":new Ri(It.layout_symbol["icon-keep-upright"]),"icon-offset":new Fi(It.layout_symbol["icon-offset"]),"icon-anchor":new Fi(It.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Ri(It.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Ri(It.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Ri(It.layout_symbol["text-rotation-alignment"]),"text-field":new Fi(It.layout_symbol["text-field"]),"text-font":new Fi(It.layout_symbol["text-font"]),"text-size":new Fi(It.layout_symbol["text-size"]),"text-max-width":new Fi(It.layout_symbol["text-max-width"]),"text-line-height":new Ri(It.layout_symbol["text-line-height"]),"text-letter-spacing":new Fi(It.layout_symbol["text-letter-spacing"]),"text-justify":new Fi(It.layout_symbol["text-justify"]),"text-radial-offset":new Fi(It.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Ri(It.layout_symbol["text-variable-anchor"]),"text-anchor":new Fi(It.layout_symbol["text-anchor"]),"text-max-angle":new Ri(It.layout_symbol["text-max-angle"]),"text-writing-mode":new Ri(It.layout_symbol["text-writing-mode"]),"text-rotate":new Fi(It.layout_symbol["text-rotate"]),"text-padding":new Ri(It.layout_symbol["text-padding"]),"text-keep-upright":new Ri(It.layout_symbol["text-keep-upright"]),"text-transform":new Fi(It.layout_symbol["text-transform"]),"text-offset":new Fi(It.layout_symbol["text-offset"]),"text-allow-overlap":new Ri(It.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new Ri(It.layout_symbol["text-ignore-placement"]),"text-optional":new Ri(It.layout_symbol["text-optional"])}),Qu={paint:new Ui({"icon-opacity":new Fi(It.paint_symbol["icon-opacity"]),"icon-color":new Fi(It.paint_symbol["icon-color"]),"icon-halo-color":new Fi(It.paint_symbol["icon-halo-color"]),"icon-halo-width":new Fi(It.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Fi(It.paint_symbol["icon-halo-blur"]),"icon-translate":new Ri(It.paint_symbol["icon-translate"]),"icon-translate-anchor":new Ri(It.paint_symbol["icon-translate-anchor"]),"text-opacity":new Fi(It.paint_symbol["text-opacity"]),"text-color":new Fi(It.paint_symbol["text-color"],{runtimeType:Gt,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),"text-halo-color":new Fi(It.paint_symbol["text-halo-color"]),"text-halo-width":new Fi(It.paint_symbol["text-halo-width"]),"text-halo-blur":new Fi(It.paint_symbol["text-halo-blur"]),"text-translate":new Ri(It.paint_symbol["text-translate"]),"text-translate-anchor":new Ri(It.paint_symbol["text-translate-anchor"])}),layout:$u},tc=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Ut,this.defaultValue=t};tc.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},tc.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},tc.prototype.outputDefined=function(){return!1},tc.prototype.serialize=function(){return null},Qn("FormatSectionOverride",tc,{omit:["defaultValue"]});var ec=function(t){function e(e){t.call(this,e,Qu)}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})}}},vc.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 A()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},vc.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)}},vc.prototype.processTask=function(t,e){var r=this;if(""===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(ii(e.error)):n(null,ii(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?ni(e):null,data:ni(n,a)},a)}:function(t){i=!0},s=null,l=ii(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)}},vc.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};var yc=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]))};yc.prototype.setNorthEast=function(t){return this._ne=t instanceof xc?new xc(t.lng,t.lat):xc.convert(t),this},yc.prototype.setSouthWest=function(t){return this._sw=t instanceof xc?new xc(t.lng,t.lat):xc.convert(t),this},yc.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof xc)e=t,r=t;else{if(!(t instanceof yc)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(yc.convert(a))}var o=t;return this.extend(xc.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 xc(e.lng,e.lat),this._ne=new xc(r.lng,r.lat)),this},yc.prototype.getCenter=function(){return new xc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},yc.prototype.getSouthWest=function(){return this._sw},yc.prototype.getNorthEast=function(){return this._ne},yc.prototype.getNorthWest=function(){return new xc(this.getWest(),this.getNorth())},yc.prototype.getSouthEast=function(){return new xc(this.getEast(),this.getSouth())},yc.prototype.getWest=function(){return this._sw.lng},yc.prototype.getSouth=function(){return this._sw.lat},yc.prototype.getEast=function(){return this._ne.lng},yc.prototype.getNorth=function(){return this._ne.lat},yc.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},yc.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},yc.prototype.isEmpty=function(){return!(this._sw&&this._ne)},yc.prototype.contains=function(t){var e=xc.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},yc.convert=function(t){return!t||t instanceof yc?t:new yc(t)};var mc=6371008.8,xc=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")};xc.prototype.wrap=function(){return new xc(c(this.lng,-180,180),this.lat)},xc.prototype.toArray=function(){return[this.lng,this.lat]},xc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},xc.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 mc*Math.acos(Math.min(i,1))},xc.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 yc(new xc(this.lng-r,this.lat-e),new xc(this.lng+r,this.lat+e))},xc.convert=function(t){if(t instanceof xc)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new xc(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new xc(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 bc=2*Math.PI*mc;function _c(t){return bc*Math.cos(t*Math.PI/180)}function wc(t){return(180+t)/360}function Tc(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function kc(t,e){return t/_c(e)}function Ac(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var Mc=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};Mc.fromLngLat=function(t,e){void 0===e&&(e=0);var r=xc.convert(t);return new Mc(wc(r.lng),Tc(r.lat),kc(e,r.lat))},Mc.prototype.toLngLat=function(){return new xc(360*this.x-180,Ac(this.y))},Mc.prototype.toAltitude=function(){return t=this.z,e=this.y,t*_c(Ac(e));var t,e},Mc.prototype.meterInMercatorCoordinateUnits=function(){return 1/bc*(t=Ac(this.y),1/Math.cos(t*Math.PI/180));var t};var Sc=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Cc(0,t,t,e,r)};Sc.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Sc.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=gc(256*r,256*(n=Math.pow(2,i)-n-1),i),o=gc(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 Lc(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Lc(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},Lc.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?Cc(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):Cc(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},Lc.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},Lc.prototype.children=function(t){if(this.overscaledZ>=t)return[new Lc(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 Lc(e,this.wrap,e,r,n),new Lc(e,this.wrap,e,r+1,n),new Lc(e,this.wrap,e,r,n+1),new Lc(e,this.wrap,e,r+1,n+1)]},Lc.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)},Pc.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},Pc.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Pc.prototype.getPixels=function(){return new qo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Pc.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])}},Rc.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Zs.VectorTile(new Tl(this.rawTileData)).layers,this.sourceLayerCoder=new Oc(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},Rc.prototype.query=function(t,e,r,n){var i=this;this.loadVTLayers();for(var o=t.params||{},s=oo/t.tileSize/t.scale,l=xn(o.filter),u=t.queryGeometry,c=t.queryPadding*s,f=Bc(u),h=this.grid.query(f.minX-c,f.minY-c,f.maxX+c,f.maxY+c),p=Bc(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 Si(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=Au,t.clone=function(t){var e=new Lo(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 Lo(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=yl,t.config=B,t.create=function(){var t=new Lo(16);return Lo!=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 Lo(9);return Lo!=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 Lo(4);return Lo!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=an,t.createLayout=Yi,t.createStyleLayer=function(t){return"custom"===t.type?new oc(t):new sc[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=Ke,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 Tl(t).readFields(Hl,[])},t.pbf=Tl,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=oo/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 Si(h),o),u["text-size"].possiblyEvaluate(new Si(p),o)]}if("composite"===t.iconSizeData.kind){var d=t.iconSizeData,v=d.minZoom,g=d.maxZoom;c.compositeIconSizes=[u["icon-size"].possiblyEvaluate(new Si(v),o),u["icon-size"].possiblyEvaluate(new Si(g),o)]}c.layoutTextSize=u["text-size"].possiblyEvaluate(new Si(t.zoom+1),o),c.layoutIconSize=u["icon-size"].possiblyEvaluate(new Si(t.zoom+1),o),c.textMaxSize=u["text-size"].possiblyEvaluate(new Si(18));for(var y=l.get("text-line-height")*bl,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=k[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)*bl,A=function(t){for(var e=0,r=t;e=oo||f.y<0||f.y>=oo||function(t,e,r,n,i,a,o,s,l,u,c,f,h,p,d,v,g,y,m,x,b,_,T,k,A){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=Ia(""),j=0,U=0;if(void 0===s._unevaluatedLayout.getValue("text-radial-offset")?(j=(M=s.layout.get("text-offset").evaluate(b,{},k).map((function(t){return t*bl})))[0],U=M[1]):(j=s.layout.get("text-radial-offset").evaluate(b,{},k)*bl,U=Fu),t.allowVerticalPlacement&&n.vertical){var V=s.layout.get("text-rotate").evaluate(b,{},k)+90,H=n.vertical;L=new Pu(l,e,u,c,f,H,h,p,d,V),o&&(C=new Pu(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"),Z=Mu(i,q,T,G),Y=o?Mu(o,q,T,G):void 0;E=new Pu(l,e,u,c,f,i,g,y,!1,q),O=4*Z.length;var W=t.iconSizeData,X=null;"source"===W.kind?(X=[pu*s.layout.get("icon-size").evaluate(b,{})])[0]>ju&&w(t.layerIds[0]+': Value for "icon-size" is >= '+'255. Reduce your "icon-size".'):"composite"===W.kind&&((X=[pu*_.compositeIconSizes[0].evaluate(b,{},k),pu*_.compositeIconSizes[1].evaluate(b,{},k)])[0]>ju||X[1]>ju)&&w(t.layerIds[0]+': Value for "icon-size" is >= '+'255. Reduce your "icon-size".'),t.addSymbols(t.icon,Z,X,x,m,b,!1,e,P.lineStartIndex,P.lineLength,-1,k),R=t.icon.placedSymbolArray.length-1,Y&&(I=4*Y.length,t.addSymbols(t.icon,Y,X,x,m,b,Jl.vertical,e,P.lineStartIndex,P.lineLength,-1,k),F=t.icon.placedSymbolArray.length-1)}for(var J in n.horizontal){var K=n.horizontal[J];if(!S){N=Ia(K.text);var $=s.layout.get("text-rotate").evaluate(b,{},k);S=new Pu(l,e,u,c,f,K,h,p,d,$)}var Q=1===K.positionedLines.length;if(D+=Uu(t,e,K,a,s,d,b,v,P,n.vertical?Jl.horizontal:Jl.horizontalOnly,Q?Object.keys(n.horizontal):[J],B,R,_,k),Q)break}n.vertical&&(z+=Uu(t,e,n.vertical,a,s,d,b,v,P,Jl.vertical,["vertical"],B,F,_,k));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*=A/bl),t.glyphOffsetArray.length>=Ku.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,k,S,d,e,a,u,c,o)};if("line"===E)for(var O=0,I=Au(e.geometry,0,0,oo,oo);O1){var U=wu(j,A,r.vertical||v,n,g,x);U&&P(j,U)}}else if("Polygon"===e.type)for(var V=0,H=Ls(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=k;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:Y(n),y:W(i),zoom:1/0,index:e,parentId:-1}}function G(t){return{type:"Feature",id:t.id,properties:Z(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 Z(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 Y(t){return t/360+.5}function W(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(Y(r),W(a),Y(i),W(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+_,k=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+k,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+k,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+k,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[kt(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,At),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))}},k.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))}},k.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(ta.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,k=re(w.last.point,s).point;if(i&&!n){var A=se(e.writingMode,T,k,d);if(A)return A}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)),k=re(T,f);if(k.signedDistanceFromCamera>0)y=h[g]=k.point;else{var A=g-d;y=ue(0===x?o:new t.Point(c.getx(A),c.gety(A)),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=A.x&&F.x<=M.x&&R.y>=A.y&&F.y<=M.y?[C]:F.xM.x||F.yM.y?[]:t.clipLine([C],A.x,A.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},Ae.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"),k=m&&(x||!o.hasIconData()||y),A=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,k=i.attemptAnchorPlacement(g,t,a,s,u,b,_,f,l,v,y,e,o,n,c);if(k&&(h=k.placedGlyphBoxes)&&h.box&&h.box.length){T=!0,E=k.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),Z=t.evaluateSizeForFeature(o.textSizeData,d,G),Y=s.get("text-padding"),W=e.collisionCircleDiameter;P=i.collisionIndex.placeCollisionCircles(m,G,o.lineVertexArray,o.glyphOffsetArray,Z,l,u,c,n,_,v.predicate,W,Y),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?ke(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)}},Ae.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),k=_?ze:T;d(e.text,s,k);var A=w?ze:T;d(e.text,l,A);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},Ae.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]}}kr.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),Ar(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),Ar(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 Zr,Yr=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}},Wr=function(e,r,n,i,a,o,s,l,u,c,f){var h=a.transform;return t.extend(Yr(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(Wr(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"),k=new t.StructArrayLayout2f1f2i16;k.resize(4*h),k._trim();for(var A=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],k=c[w.source];this._renderTileClippingMasks(w,k),this.renderLayer(this,T,w,k)}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 kr(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 kn=function(t,e){this.points=t,this.planes=e};kn.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 kn(a,o)};var An=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};An.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=kn.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 An([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 k=0;k<4;k++){var A=(g<<1)+k%2,M=(y<<1)+(k>>1);c.push({aabb:v.aabb.quadrant(k),zoom:v.zoom+1,x:A,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 Zn=function(t){this.singleTap=new Gn(t),this.numTaps=t.numTaps,this.reset()};Zn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},Zn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},Zn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},Zn.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 Yn=function(){this._zoomIn=new Zn({numTouches:1,numTaps:2}),this._zoomOut=new Zn({numTouches:2,numTaps:1}),this.reset()};Yn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Yn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Yn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Yn.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},Yn.prototype.touchcancel=function(){this.reset()},Yn.prototype.enable=function(){this._enabled=!0},Yn.prototype.disable=function(){this._enabled=!1,this.reset()},Yn.prototype.isEnabled=function(){return this._enabled},Yn.prototype.isActive=function(){return this._active};var Wn=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};Wn.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},Wn.prototype._correctButton=function(t,e){return!1},Wn.prototype._move=function(t,e){return{}},Wn.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},Wn.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=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,t.bindAll(["_onWheel","_onTimeout","_onScrollFrame","_onScrollFinished"],this)};fi.prototype.setZoomRate=function(t){this._defaultZoomRate=t},fi.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},fi.prototype.isEnabled=function(){return!!this._enabled},fi.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},fi.prototype.isZooming=function(){return!!this._zooming},fi.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&"center"===t.around)},fi.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},fi.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()}},fi.prototype._onTimeout=function(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)},fi.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())}},fi.prototype.renderFrame=function(){return this._onScrollFrame()},fi.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}}},fi.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},fi.prototype.reset=function(){this._active=!1};var hi=function(t,e){this._clickZoom=t,this._tapZoom=e};hi.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},hi.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},hi.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},hi.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var pi=function(){this.reset()};pi.prototype.reset=function(){this._active=!1},pi.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})}}},pi.prototype.enable=function(){this._enabled=!0},pi.prototype.disable=function(){this._enabled=!1,this.reset()},pi.prototype.isEnabled=function(){return this._enabled},pi.prototype.isActive=function(){return this._active};var di=function(){this._tap=new Zn({numTouches:1,numTaps:1}),this.reset()};di.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},di.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))},di.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)},di.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)},di.prototype.touchcancel=function(){this.reset()},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(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};vi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},vi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},vi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},vi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var gi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};gi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},gi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},gi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},gi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var yi=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};yi.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")},yi.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},yi.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},yi.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},yi.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},yi.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var mi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},xi=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 bi(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var _i=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,k=b.mag();if("minZoom"in e){var A=t.clamp(Math.min(e.minZoom,o,c),a.minZoom,a.maxZoom),M=w/a.zoomScale(A-o);_=Math.sqrt(M/k*2)}var S=_*_;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*k*k)/(2*(t?T:w)*S*k);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)/k;var e},D=(E(1)-P)/_;if(Math.abs(k)<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),Ti=function(e){void 0===e&&(e={}),this.options=e,t.bindAll(["_updateEditLink","_updateData","_updateCompact"],this)};Ti.prototype.getDefaultPosition=function(){return"bottom-right"},Ti.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},Ti.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},Ti.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)}},Ti.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 Ai=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};Ai.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},Ai.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>Ci)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 Ai,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Mi,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 Ei))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 _i(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 Ti({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()Ci)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}Ri.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Ri.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)}},Ri.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()},Ri.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,"mousemove",this.mousemove),r.removeEventListener(t.window,"mouseup",this.mouseup)},Ri.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)},Ri.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Ri.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Ri.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))},Ri.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))},Ri.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&&qi)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 Ui(this._dotElement),this._circleElement=r.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Ui({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":Hi--,qi=!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"),++Hi>1?(e={maximumAge:6e5,timeout:0},qi=!0):(e=this.options.positionOptions,qi=!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),Zi={maxWidth:100,unit:"metric"},Yi=function(e){this.options=t.extend({},Zi,e),t.bindAll(["_onMove","setUnit"],this)};function Wi(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?Xi(e,n,l/5280,t._getUIString("ScaleControl.Miles")):Xi(e,n,l,t._getUIString("ScaleControl.Feet"))}else r&&"nautical"===r.unit?Xi(e,n,s/1852,t._getUIString("ScaleControl.NauticalMiles")):s>=1e3?Xi(e,n,s/1e3,t._getUIString("ScaleControl.Kilometers")):Xi(e,n,s,t._getUIString("ScaleControl.Meters"))}function Xi(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}Yi.prototype.getDefaultPosition=function(){return"bottom-left"},Yi.prototype._onMove=function(){Wi(this._map,this._container,this.options)},Yi.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},Yi.prototype.onRemove=function(){r.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Yi.prototype.setUnit=function(t){this.options.unit=t,Wi(this._map,this._container,this.options)};var Ji=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")};Ji.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},Ji.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Ji.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Ji.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)},Ji.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t},Ji.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Ji.prototype._isFullscreen=function(){return this._fullscreen},Ji.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())},Ji.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 Ki={closeButton:!0,closeOnClick:!0,className:"",maxWidth:"240px"},$i=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Ki),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=Fi(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=Qi(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,Bi[a]+" translate("+c.x+"px,"+c.y+"px)"),Ni(this._container,a,"popup")}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);function Qi(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 Qi(new t.Point(0,0))}var ta={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Oi,NavigationControl:zi,GeolocateControl:Gi,AttributionControl:Ti,ScaleControl:Yi,FullscreenControl:Ji,Popup:$i,Marker:Ui,Style:Ye,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 ta})),r}()},27084:function(t){"use strict";t.exports=Math.log2||function(t){return Math.log(t)*Math.LOG2E}},16825: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(74311)},48956: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}},74311: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&&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;i1&&(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)),k=Math.asin(((h-w)/s).toFixed(9));(T=t<_?e-T:T)<0&&(T=2*e+T),(k=f<_?e-k:k)<0&&(k=2*e+k),c&&T>k&&(T-=2*e),!c&&k>T&&(k-=2*e)}if(Math.abs(k-T)>r){var A=k,M=f,S=h;k=T+r*(c&&k>T?1:-1);var E=a(f=_+i*Math.cos(k),h=w+s*Math.sin(k),i,s,l,0,c,M,S,[k,A,_,w])}var L=Math.tan((k-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(k),h-P*Math.cos(k),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}},56131:function(t){"use strict";var e=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;function i(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(t){n[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,a){for(var o,s,l=i(t),u=1;u0&&!i.call(t,0))for(var v=0;v0)for(var g=0;g=0&&"[object Function]"===e.call(t.callee)),n}},88641: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},18863:function(t,e,r){"use strict";var n=r(71299);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}},95616: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.lengtha!=p>a&&i<(h-c)*(a-f)/(p-f)+c&&(o=!o)}return o}},52142:function(t,e,r){var n,i=r(69444),a=r(29023),o=r(87263),s=r(11328),l=r(55968),u=r(10670),c=!1,f=a();function h(t,e,r){var i=n.segments(t),a=n.segments(e),o=r(n.combine(i,a));return n.polygon(o)}n={buildLog:function(t){return!0===t?c=i():!1===t&&(c=!1),!1!==c&&c.list},epsilon:function(t){return f.epsilon(t)},segments:function(t){var e=o(!0,f,c);return t.regions.forEach(e.addRegion),{segments:e.calculate(t.inverted),inverted:t.inverted}},combine:function(t,e){return{combined:o(!1,f,c).calculate(t.segments,t.inverted,e.segments,e.inverted),inverted1:t.inverted,inverted2:e.inverted}},selectUnion:function(t){return{segments:l.union(t.combined,c),inverted:t.inverted1||t.inverted2}},selectIntersect:function(t){return{segments:l.intersect(t.combined,c),inverted:t.inverted1&&t.inverted2}},selectDifference:function(t){return{segments:l.difference(t.combined,c),inverted:t.inverted1&&!t.inverted2}},selectDifferenceRev:function(t){return{segments:l.differenceRev(t.combined,c),inverted:!t.inverted1&&t.inverted2}},selectXor:function(t){return{segments:l.xor(t.combined,c),inverted:t.inverted1!==t.inverted2}},polygon:function(t){return{regions:s(t.segments,f,c),inverted:t.inverted}},polygonFromGeoJSON:function(t){return u.toPolygon(n,t)},polygonToGeoJSON:function(t){return u.fromPolygon(n,f,t)},union:function(t,e){return h(t,e,n.selectUnion)},intersect:function(t,e){return h(t,e,n.selectIntersect)},difference:function(t,e){return h(t,e,n.selectDifference)},differenceRev:function(t,e){return h(t,e,n.selectDifferenceRev)},xor:function(t,e){return h(t,e,n.selectXor)}},"object"==typeof window&&(window.PolyBool=n),t.exports=n},69444:function(t){t.exports=function(){var t,e=0,r=!1;function n(e,r){return t.list.push({type:e,data:r?JSON.parse(JSON.stringify(r)):void 0}),t}return t={list:[],segmentId:function(){return e++},checkIntersection:function(t,e){return n("check",{seg1:t,seg2:e})},segmentChop:function(t,e){return n("div_seg",{seg:t,pt:e}),n("chop",{seg:t,pt:e})},statusRemove:function(t){return n("pop_seg",{seg:t})},segmentUpdate:function(t){return n("seg_update",{seg:t})},segmentNew:function(t,e){return n("new_seg",{seg:t,primary:e})},segmentRemove:function(t){return n("rem_seg",{seg:t})},tempStatus:function(t,e,r){return n("temp_status",{seg:t,above:e,below:r})},rewind:function(t){return n("rewind",{seg:t})},status:function(t,e,r){return n("status",{seg:t,above:e,below:r})},vert:function(e){return e===r?t:(r=e,n("vert",{x:e}))},log:function(t){return"string"!=typeof t&&(t=JSON.stringify(t,!1," ")),n("log",{txt:t})},reset:function(){return n("reset")},selected:function(t){return n("selected",{segs:t})},chainStart:function(t){return n("chain_start",{seg:t})},chainRemoveHead:function(t,e){return n("chain_rem_head",{index:t,pt:e})},chainRemoveTail:function(t,e){return n("chain_rem_tail",{index:t,pt:e})},chainNew:function(t,e){return n("chain_new",{pt1:t,pt2:e})},chainMatch:function(t){return n("chain_match",{index:t})},chainClose:function(t){return n("chain_close",{index:t})},chainAddHead:function(t,e){return n("chain_add_head",{index:t,pt:e})},chainAddTail:function(t,e){return n("chain_add_tail",{index:t,pt:e})},chainConnect:function(t,e){return n("chain_con",{index1:t,index2:e})},chainReverse:function(t){return n("chain_rev",{index:t})},chainJoin:function(t,e){return n("chain_join",{index1:t,index2:e})},done:function(){return n("done")}}}},29023:function(t){t.exports=function(t){"number"!=typeof t&&(t=1e-10);var e={epsilon:function(e){return"number"==typeof e&&(t=e),t},pointAboveOrOnLine:function(e,r,n){var i=r[0],a=r[1],o=n[0],s=n[1],l=e[0];return(o-i)*(e[1]-a)-(s-a)*(l-i)>=-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}},10670:function(t){var e={toPolygon:function(t,e){function r(e){if(e.length<=0)return t.segments({inverted:!1,regions:[]});function r(e){var r=e.slice(0,e.length-1);return t.segments({inverted:!1,regions:[r]})}for(var n=r(e[0]),i=1;i0}))}function c(t,n){var i=t.seg,a=n.seg,o=i.start,s=i.end,u=a.start,c=a.end;r&&r.checkIntersection(i,a);var f=e.linesIntersect(o,s,u,c);if(!1===f){if(!e.pointsCollinear(o,s,u))return!1;if(e.pointsSame(o,c)||e.pointsSame(s,u))return!1;var h=e.pointsSame(o,u),p=e.pointsSame(s,c);if(h&&p)return n;var d=!h&&e.pointBetween(o,u,c),v=!p&&e.pointBetween(s,u,c);if(h)return v?l(n,s):l(t,c),n;d&&(p||(v?l(n,s):l(t,c)),l(n,o))}else 0===f.alongA&&(-1===f.alongB?l(t,u):0===f.alongB?l(t,f.pt):1===f.alongB&&l(t,c)),0===f.alongB&&(-1===f.alongA?l(n,o):0===f.alongA?l(n,f.pt):1===f.alongA&&l(n,s));return!1}for(var f=[];!a.isEmpty();){var h=a.getHead();if(r&&r.vert(h.pt[0]),h.isStart){r&&r.segmentNew(h.seg,h.primary);var p=u(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(a.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?o: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)}a.getHead().remove()}return r&&r.done(),f}return t?{addRegion:function(t){for(var n,i,a,o=t[t.length-1],l=0;l0&&!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}}},76767:function(t,e,r){"use strict";var n=r(14847).n8,i=r(14847).Ag;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;n1&&(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}}}}}}},2504:function(t,e,r){"use strict";var n=r(14847).eG,i=r(14847).OF,a=r(14847).mP,o=n("BM");t.exports=function(t){if(!(t.length<26)&&i(t,0,o))return{width:a(t,18),height:a(t,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}},47342:function(t,e,r){"use strict";var n=r(14847).eG,i=r(14847).OF,a=r(14847).mP,o=n("GIF87a"),s=n("GIF89a");t.exports=function(t){if(!(t.length<10)&&(i(t,0,o)||i(t,0,s)))return{width:a(t,6),height:a(t,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}},31355:function(t,e,r){"use strict";var n=r(14847).mP;t.exports=function(t){var e=n(t,0),r=n(t,2),i=n(t,4);if(0===e&&1===r&&i){for(var a=[],o={width:0,height:0},s=0;so.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"}}}},54261:function(t,e,r){"use strict";var n=r(14847).n8,i=r(14847).eG,a=r(14847).OF,o=r(71371),s=i("Exif\0\0");t.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var r,i,l=t[e++];255===l;)l=t[e++];if(208<=l&&l<=217||1===l)r=0;else{if(!(192<=l&&l<=254))return;if(t.length-e<2)return;r=n(t,e)-2,e+=2}if(217===l||218===l)return;if(225===l&&r>=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}}},6303:function(t,e,r){"use strict";var n=r(14847).eG,i=r(14847).OF,a=r(14847).Ag,o=n("‰PNG\r\n\n"),s=n("IHDR");t.exports=function(t){if(!(t.length<24)&&i(t,0,o)&&i(t,12,s))return{width:a(t,16),height:a(t,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}},38689:function(t,e,r){"use strict";var n=r(14847).eG,i=r(14847).OF,a=r(14847).Ag,o=n("8BPS\0");t.exports=function(t){if(!(t.length<22)&&i(t,0,o))return{width:a(t,18),height:a(t,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}},6881:function(t){"use strict";function e(t){return"number"==typeof t&&isFinite(t)&&t>0}var r=/<[-_.:a-zA-Z0-9][^>]*>/,n=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,i=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,a=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,o=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,s=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function l(t){return s.test(t)?t.match(s)[0]:"px"}t.exports=function(t){if(function(t){var e,r=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(r=3);r>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}}}},91497:function(t,e,r){"use strict";t.exports={avif:r(24461),bmp:r(2504),gif:r(47342),ico:r(31355),jpeg:r(54261),png:r(6303),psd:r(38689),svg:r(6881),tiff:r(66278),webp:r(90784)}},33575:function(t,e,r){"use strict";var n=r(91497);t.exports=function(t){return function(t){for(var e=Object.keys(n),r=0;r1)for(var r=1;r1&&(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 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:o(["precision highp float;\n#define GLSLIFY 1\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:o(["precision highp float;\n#define GLSLIFY 1\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:o(["precision highp float;\n#define GLSLIFY 1\n\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}},y.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},y.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()},y.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>y.precisionThreshold||e.scale[1]*e.viewport.height>y.precisionThreshold||"rect"===e.join||!e.join&&(e.thickness<=2||e.count>=y.maxPoints)?t.shaders.rect(e):t.shaders.miter(e)))})),this},y.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,o=this.gl;if(t.forEach((function(t,f){var d=e.passes[f];if(void 0!==t)if(null!==t){if("number"==typeof t[0]&&(t={positions:t}),t=s(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"}),d||(e.passes[f]=d={id:f,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({},y.defaults,t)),null!=t.thickness&&(d.thickness=parseFloat(t.thickness)),null!=t.opacity&&(d.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(d.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(d.overlay=!!t.overlay,f=z}));(O=O.slice(0,R)).push(z)}for(var F=function(t){var e=k.slice(2*D,2*O[t]).concat(z?k.slice(2*z):[]),r=(d.hole||[]).map((function(e){return e-z+(O[t]-D)})),n=u(e,r);n=n.map((function(e){return e+D+(e+Dt.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=f(["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\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"]),v&&(l.frag=l.frag.replace("smoothstep","smoothStep"),s.frag=s.frag.replace("smoothstep","smoothStep")),this.drawCircle=t(l)}x.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},x.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},x.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=u(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=g.float32(t);return i({data:p,usage:"dynamic"}),a({data:g.fract32(t,p),usage:"dynamic"}),l({data:new Uint8Array(c),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},x.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;i2?(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;nk))&&(s.lower||!(T>>=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=A(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=A(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=A(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=A(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(0!=(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(k).forEach(g)},restore:function(){x.cur=null,x.next=null,x.dirty=!0,Q(k).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 Z(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 W(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(Z,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)}}},kt=[];kt[6408]=4,kt[6407]=3;var At=[];At[5121]=1,At[5126]=4,At[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=W.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()-k)/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:Y.define.bind(null,1),context:Y.define.bind(null,2),this:Y.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;t2?"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,a.length)===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-e.length,r)===e}(t," argument"))o="The ".concat(t," ").concat(i," ").concat(n(e,"type"));else{var u=("number"!=typeof l&&(l=0),l+".".length>(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.q=e},37865:function(t,e,r){"use strict";var n=r(90386),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var a=r(40410),o=r(37493);r(42018)(c,a);for(var s=i(o.prototype),l=0;l0)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},A.prototype._read=function(t){w(this,new b("_read()"))},A.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.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]: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},A.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},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var r=s.prototype.removeListener.call(this,t,e);return"readable"===t&&i.nextTick(D,this),r},A.prototype.removeAllListeners=function(t){var e=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||i.nextTick(D,this),e},A.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},A.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},A.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-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new v("_write()"))},A.prototype._writev=null,A.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(A.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=f.destroy,A.prototype._undestroy=f.undestroy,A.prototype._destroy=function(t,e){e(t)}},68221:function(t,e,r){"use strict";var n,i=r(90386);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var o=r(12726),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}},31125:function(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r0?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 o.alloc(0);for(var e,r,n,i=o.allocUnsafe(t>>>0),a=this.head,s=0;a;)e=a.data,r=i,n=s,o.prototype.copy.call(e,r,n),s+=a.data.length,a=a.next;return i}},{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=o.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:l,value:function(t,e){return s(this,function(t){for(var e=1;e0,(function(t){n||(n=t),t&&o.forEach(u),a||(o.forEach(u),i(n))}))}));return e.reduce(c)}},56306:function(t,e,r){"use strict";var n=r(74322).q.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}}},71405:function(t,e,r){t.exports=r(15398).EventEmitter},68019:function(t,e,r){"use strict";var n=r(71665).Buffer,i=n.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=l,this.end=u,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=c,this.end=f,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function o(t){return t<=127?0:t>>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,r){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.s=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}},90715:function(t,e,r){var n=r(32791),i=r(41633)("stream-parser");function a(t){i("initializing parser stream"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,"function"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function o(t,e){n(!this._parserCallback,'there is already a "callback" set!'),n(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got "'+t+'"'),this._parserInit||a(this),i("buffering %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function s(t,e){n(!this._parserCallback,'there is already a "callback" set!'),n(t>0,'can only skip > 0 bytes, got "'+t+'"'),this._parserInit||a(this),i("skipping %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function l(t,e){n(!this._parserCallback,'There is already a "callback" set!'),n(t>0,'can only pass through > 0 bytes, got "'+t+'"'),this._parserInit||a(this),i("passing through %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function u(t,e,r){this._parserInit||a(this),i("write(%o bytes)",t.length),"function"==typeof e&&(r=e),h(this,t,null,r)}function c(t,e,r){this._parserInit||a(this),i("transform(%o bytes)",t.length),"function"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function f(t,e,r,n){if(t._parserBytesLeft-=e.length,i("%o bytes left for stream piece",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return n;var a=t._parserCallback;if(a&&0===t._parserState&&t._parserBuffers.length>1&&(e=Buffer.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),a){var o=[];e&&o.push(e),r&&o.push(r);var s=a.length>o.length;s&&o.push(p(n));var l=a.apply(t,o);if(!s||n===l)return n}}t.exports=function(t){var e=t&&"function"==typeof t._transform,r=t&&"function"==typeof t._write;if(!e&&!r)throw new Error("must pass a Writable or Transform stream in");i("extending Parser into stream"),t._bytes=o,t._skipBytes=s,e&&(t._passthrough=l),e?t._transform=c:t._write=u};var h=p((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 f(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return f(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 p(t){return function(){for(var e=t.apply(this,arguments);"function"==typeof e;)e=e();return e}}},41633:function(t,e,r){var n=r(90386);function i(){var t;try{t=e.storage.debug}catch(t){}return!t&&void 0!==n&&"env"in n&&(t=n.env.DEBUG),t}(e=t.exports=r(74469)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},e.formatArgs=function(t){var r=this.useColors;if(t[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+t[0]+(r?"%c ":" ")+"+"+e.humanize(this.diff),r){var n="color: "+this.color;t.splice(1,0,n,"color: inherit");var i=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){"%%"!==t&&(i++,"%c"===t&&(a=i))})),t.splice(a,0,n)}},e.save=function(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(t){}},e.load=i,e.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},e.storage="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())},74469:function(t,e,r){var n;function i(t){function r(){if(r.enabled){var t=r,i=+new Date,a=i-(n||i);t.diff=a,t.prev=n,t.curr=i,n=i;for(var o=new Array(arguments.length),s=0;s0)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))}},99011:function(t,e,r){"use strict";var n=r(88641);t.exports=function(t,e,r){if(null==t)throw Error("First argument should be a string");if(null==e)throw Error("Separator should be a string or a RegExp");r?("string"==typeof r||Array.isArray(r))&&(r={ignore:r}):r={},null==r.escape&&(r.escape=!0),null==r.ignore?r.ignore=["[]","()","{}","<>",'""',"''","``","“”","«»"]:("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;){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;d1&&(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,k=(p-b)/s,A=(-h-x)/a,M=(-p-b)/s,S=o(1,0,T,k),E=o(T,k,A,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,_),k=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),A=k[0],M=k[1],S=k[2],E=k[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;Pe[2]&&(e[2]=u[c+0]),u[c+1]>e[3]&&(e[3]=u[c+1]);return e}},29988: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(7095);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]}},82019:function(t,e,r){"use strict";var n,i=r(1750),a=r(95616),o=r(31457),s=r(89546),l=r(44781),u=document.createElement("canvas"),c=u.getContext("2d");t.exports=function(t,e){if(!s(t))throw Error("Argument should be valid svg path string");var r,f;e||(e={}),e.shape?(r=e.shape[0],f=e.shape[1]):(r=u.width=e.w||e.width||200,f=u.height=e.h||e.height||200);var h=Math.min(r,f),p=e.stroke||0,d=e.viewbox||e.viewBox||i(t),v=[r/(d[2]-d[0]),f/(d[3]-d[1])],g=Math.min(v[0]||0,v[1]||0)/2;if(c.fillStyle="black",c.fillRect(0,0,r,f),c.fillStyle="white",p&&("number"!=typeof p&&(p=1),c.strokeStyle=p>0?"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})}},84267:function(t,e,r){var n;!function(i){var a=/^\s+/,o=/\s+$/,s=0,l=i.round,u=i.min,c=i.max,f=i.random;function h(t,e){if(e=e||{},(t=t||"")instanceof h)return t;if(!(this instanceof h))return new h(t,e);var r=function(t){var e,r,n,s={r:0,g:0,b:0},l=1,f=null,h=null,p=null,d=!1,v=!1;return"string"==typeof t&&(t=function(t){t=t.replace(a,"").replace(o,"").toLowerCase();var e,r=!1;if(C[t])t=C[t],r=!0;else if("transparent"==t)return{r:0,g:0,b:0,a:0,format:"name"};return(e=H.rgb.exec(t))?{r:e[1],g:e[2],b:e[3]}:(e=H.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=H.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=H.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=H.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=H.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=H.hex8.exec(t))?{r:z(e[1]),g:z(e[2]),b:z(e[3]),a:N(e[4]),format:r?"name":"hex8"}:(e=H.hex6.exec(t))?{r:z(e[1]),g:z(e[2]),b:z(e[3]),format:r?"name":"hex"}:(e=H.hex4.exec(t))?{r:z(e[1]+""+e[1]),g:z(e[2]+""+e[2]),b:z(e[3]+""+e[3]),a:N(e[4]+""+e[4]),format:r?"name":"hex8"}:!!(e=H.hex3.exec(t))&&{r:z(e[1]+""+e[1]),g:z(e[2]+""+e[2]),b:z(e[3]+""+e[3]),format:r?"name":"hex"}}(t)),"object"==typeof t&&(q(t.r)&&q(t.g)&&q(t.b)?(e=t.r,r=t.g,n=t.b,s={r:255*I(e,255),g:255*I(r,255),b:255*I(n,255)},d=!0,v="%"===String(t.r).substr(-1)?"prgb":"rgb"):q(t.h)&&q(t.s)&&q(t.v)?(f=F(t.s),h=F(t.v),s=function(t,e,r){t=6*I(t,360),e=I(e,100),r=I(r,100);var n=i.floor(t),a=t-n,o=r*(1-e),s=r*(1-a*e),l=r*(1-(1-a)*e),u=n%6;return{r:255*[r,s,o,o,l,r][u],g:255*[l,r,r,s,o,o][u],b:255*[o,o,l,r,r,s][u]}}(t.h,f,h),d=!0,v="hsv"):q(t.h)&&q(t.s)&&q(t.l)&&(f=F(t.s),p=F(t.l),s=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(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=I(t,360),e=I(e,100),r=I(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}}(t.h,f,p),d=!0,v="hsl"),t.hasOwnProperty("a")&&(l=t.a)),l=O(l),{ok:d,format:t.format||v,r:u(255,c(s.r,0)),g:u(255,c(s.g,0)),b:u(255,c(s.b,0)),a:l}}(t);this._originalInput=t,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=l(100*this._a)/100,this._format=e.format||r.format,this._gradientType=e.gradientType,this._r<1&&(this._r=l(this._r)),this._g<1&&(this._g=l(this._g)),this._b<1&&(this._b=l(this._b)),this._ok=r.ok,this._tc_id=s++}function p(t,e,r){t=I(t,255),e=I(e,255),r=I(r,255);var n,i,a=c(t,e,r),o=u(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;)n.h=(n.h+i)%360,a.push(h(n));return a}function L(t,e){e=e||6;for(var r=h(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(h({h:n,s:i,v:a})),a=(a+s)%1;return o}h.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:i.pow((t+.055)/1.055,2.4))+.7152*(e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:i.pow((r+.055)/1.055,2.4))},setAlpha:function(t){return this._a=O(t),this._roundA=l(100*this._a)/100,this},toHsv:function(){var t=d(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=d(this._r,this._g,this._b),e=l(360*t.h),r=l(100*t.s),n=l(100*t.v);return 1==this._a?"hsv("+e+", "+r+"%, "+n+"%)":"hsva("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHsl:function(){var t=p(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=p(this._r,this._g,this._b),e=l(360*t.h),r=l(100*t.s),n=l(100*t.l);return 1==this._a?"hsl("+e+", "+r+"%, "+n+"%)":"hsla("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHex:function(t){return v(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=[R(l(t).toString(16)),R(l(e).toString(16)),R(l(r).toString(16)),R(B(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:l(this._r),g:l(this._g),b:l(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+l(this._r)+", "+l(this._g)+", "+l(this._b)+")":"rgba("+l(this._r)+", "+l(this._g)+", "+l(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:l(100*I(this._r,255))+"%",g:l(100*I(this._g,255))+"%",b:l(100*I(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+l(100*I(this._r,255))+"%, "+l(100*I(this._g,255))+"%, "+l(100*I(this._b,255))+"%)":"rgba("+l(100*I(this._r,255))+"%, "+l(100*I(this._g,255))+"%, "+l(100*I(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(P[v(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e="#"+g(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?"GradientType = 1, ":"";if(t){var i=h(t);r="#"+g(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+n+"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 h(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(b,arguments)},brighten:function(){return this._applyModification(_,arguments)},darken:function(){return this._applyModification(w,arguments)},desaturate:function(){return this._applyModification(y,arguments)},saturate:function(){return this._applyModification(m,arguments)},greyscale:function(){return this._applyModification(x,arguments)},spin:function(){return this._applyModification(T,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(E,arguments)},complement:function(){return this._applyCombination(k,arguments)},monochromatic:function(){return this._applyCombination(L,arguments)},splitcomplement:function(){return this._applyCombination(S,arguments)},triad:function(){return this._applyCombination(A,arguments)},tetrad:function(){return this._applyCombination(M,arguments)}},h.fromRatio=function(t,e){if("object"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]="a"===n?t[n]:F(t[n]));t=r}return h(t,e)},h.equals=function(t,e){return!(!t||!e)&&h(t).toRgbString()==h(e).toRgbString()},h.random=function(){return h.fromRatio({r:f(),g:f(),b:f()})},h.mix=function(t,e,r){r=0===r?0:r||50;var n=h(t).toRgb(),i=h(e).toRgb(),a=r/100;return h({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},h.readability=function(t,e){var r=h(t),n=h(e);return(i.max(r.getLuminance(),n.getLuminance())+.05)/(i.min(r.getLuminance(),n.getLuminance())+.05)},h.isReadable=function(t,e,r){var n,i,a,o,s,l=h.readability(t,e);switch(i=!1,(a=r,"AA"!==(o=((a=a||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==o&&(o="AA"),"small"!==(s=(a.size||"small").toLowerCase())&&"large"!==s&&(s="small"),n={level:o,size:s}).level+n.size){case"AAsmall":case"AAAlarge":i=l>=4.5;break;case"AAlarge":i=l>=3;break;case"AAAsmall":i=l>=7}return i},h.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=h(e[u]));return h.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,h.mostReadable(t,["#fff","#000"],r))};var C=h.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"},P=h.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(C);function O(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function I(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=u(e,c(0,parseFloat(t))),r&&(t=parseInt(t*e,10)/100),i.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function D(t){return u(1,c(0,t))}function z(t){return parseInt(t,16)}function R(t){return 1==t.length?"0"+t:""+t}function F(t){return t<=1&&(t=100*t+"%"),t}function B(t){return i.round(255*parseFloat(t)).toString(16)}function N(t){return z(t)/255}var j,U,V,H=(U="[\\s|\\(]+("+(j="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+j+")[,|\\s]+("+j+")\\s*\\)?",V="[\\s|\\(]+("+j+")[,|\\s]+("+j+")[,|\\s]+("+j+")[,|\\s]+("+j+")\\s*\\)?",{CSS_UNIT:new RegExp(j),rgb:new RegExp("rgb"+U),rgba:new RegExp("rgba"+V),hsl:new RegExp("hsl"+U),hsla:new RegExp("hsla"+V),hsv:new RegExp("hsv"+U),hsva:new RegExp("hsva"+V),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 q(t){return!!H.CSS_UNIT.exec(t)}t.exports?t.exports=h:void 0===(n=function(){return h}.call(e,r,e,t))||(t.exports=n)}(Math)},57060: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":(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")}})))}},47403:function(t,e,r){"use strict";var n=r(24582),i={object:!0,function:!0,undefined:!0};t.exports=function(t){return!!n(t)&&hasOwnProperty.call(i,typeof t)}},82527:function(t,e,r){"use strict";var n=r(69190),i=r(84985);t.exports=function(t){return i(t)?t:n(t,"%v is not a plain function",arguments[1])}},84985:function(t,e,r){"use strict";var n=r(73116),i=/^\s*class[\s{/}]/,a=Function.prototype.toString;t.exports=function(t){return!!n(t)&&!i.test(a.call(t))}},24511:function(t,e,r){"use strict";var n=r(47403);t.exports=function(t){if(!n(t))return!1;try{return!!t.constructor&&t.constructor.prototype===t}catch(t){return!1}}},9234:function(t,e,r){"use strict";var n=r(24582),i=r(47403),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}}},10424:function(t,e,r){"use strict";var n=r(69190),i=r(24582);t.exports=function(t){return i(t)?t:n(t,"Cannot use %v",arguments[1])}},24582:function(t){"use strict";t.exports=function(t){return null!=t}},58404:function(t,e,r){"use strict";var n=r(13547),i=r(12129),a=r(12856).Buffer;r.g.__TYPEDARRAY_POOL||(r.g.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),BIGUINT64:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),BIGINT64:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o="undefined"!=typeof Uint8ClampedArray,s="undefined"!=typeof BigUint64Array,l="undefined"!=typeof BigInt64Array,u=r.g.__TYPEDARRAY_POOL;u.UINT8C||(u.UINT8C=i([32,0])),u.BIGUINT64||(u.BIGUINT64=i([32,0])),u.BIGINT64||(u.BIGINT64=i([32,0])),u.BUFFER||(u.BUFFER=i([32,0]));var c=u.DATA,f=u.BUFFER;function h(t){if(t){var e=t.length||t.byteLength,r=n.log2(e);c[r].push(t)}}function p(t){t=n.nextPow2(t);var e=n.log2(t),r=c[e];return r.length>0?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 k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(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 k(t);case"biguint64":return T(t);case"buffer":return M(t);case"data":case"dataview":return A(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=k,e.mallocDataView=A,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}},90448: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):""}},93447:function(t){"use strict";t.exports=function(t,e,r){Array.isArray(r)||(r=[].slice.call(arguments,2));for(var n=0,i=r.length;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&&A(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)),k(r)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return p(r);if(0===o.length){if(A(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(k(r))return p(r)}var u,c="",f=!1,w=["{","}"];return v(r)&&(f=!0,w=["[","]"]),A(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),_(r)&&(c=" "+RegExp.prototype.toString.call(r)),T(r)&&(c=" "+Date.prototype.toUTCString.call(r)),k(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")),C(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 k(t){return w(t)&&("[object Error]"===M(t)||t instanceof Error)}function A(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(4936),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=k,e.types.isNativeError=k,e.isFunction=A,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(45920);var E=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function L(){var t=new Date,e=[S(t.getHours()),S(t.getMinutes()),S(t.getSeconds())].join(":");return[t.getDate(),E[t.getMonth()],e].join(" ")}function C(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",L(),e.format.apply(e,arguments))},e.inherits=r(42018),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 P="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function O(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(P&&t[P]){var e;if("function"!=typeof(e=t[P]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,P,{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;a2111)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,i){var a,o,s;if("object"==typeof t)o=t,a=e||{};else{var l;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?(l=!1,a=n):(l=!!n,a={}),o={year:t,month:e,day:r,isIntercalary:l}}s=o.day-1;var u,c=f[o.year-f[0]],p=c>>13;u=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var d=0;d>9&4095,(v>>5&15)-1,(31&v)+s);return a.year=g.getFullYear(),a.month=1+g.getMonth(),a.day=g.getDate(),a}(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,n){var i,a;if("object"==typeof t)i=t,a=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");i={year:t,month:e,day:r},a={}}var o=h[i.year-h[0]],s=i.year<<9|i.month<<5|i.day;a.year=s>=o?i.year:i.year-1,o=h[a.year-h[0]];var l,u=new Date(o>>9&4095,(o>>5&15)-1,31&o),c=new Date(i.year,i.month-1,i.day);l=Math.round((c-u)/864e5);var p,d=f[a.year-f[0]];for(p=0;p<13;p++){var v=d&1<<12-p?30:29;if(l>13;return!g||p=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},37715:function(t,e,r){var n=r(63489),i=r(56131);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Ethiopian",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],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);return(t=e.year()+(e.year()<0?1:0))%4==3||t%4==-1},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear||n.regionalOptions[""].invalidYear),13},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},daysInMonth:function(t,e){var r=this._validate(t,e,this.minDay,n.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(13===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())<0&&t++,i.day()+30*(i.month()-1)+365*(t-1)+Math.floor(t/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),n.calendars.ethiopian=a},99384:function(t,e,r){var n=r(63489),i=r(56131);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}function o(t,e){return t-e*Math.floor(t/e)}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],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);return this._leapYear(e.year())},_leapYear:function(t){return o(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,n.local.invalidYear),this._leapYear(t.year?t.year():t)?13:12},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){return t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),this.toJD(-1===t?1:t+1,7,1)-this.toJD(t,7,1)},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),12===e&&this.leapYear(t)||8===e&&5===o(this.daysInYear(t),10)?30:9===e&&3===o(this.daysInYear(t),10)?29:this.daysPerMonth[e-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(t,e,r){var i=this._validate(t,e,r,n.local.invalidDate);return{yearType:(this.leapYear(i)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(i)%10-3]}},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=t<=0?t+1:t,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+r+1;if(e<7){for(var s=7;s<=this.monthsInYear(t);s++)o+=this.daysInMonth(t,s);for(s=1;s=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},43805:function(t,e,r){var n=r(63489),i=r(56131);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Islamic",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["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-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-khamīs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(t){return(11*this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year()+14)%30<11},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){return this.leapYear(t)?355:354},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);return t=i.year(),e=i.month(),t=t<=0?t+1:t,(r=i.day())+Math.ceil(29.5*(e-1))+354*(t-1)+Math.floor((3+11*t)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),n.calendars.islamic=a},88874:function(t,e,r){var n=r(63489),i=r(56131);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},83290:function(t,e,r){var n=r(63489),i=r(56131);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},29108:function(t,e,r){var n=r(63489),i=r(56131);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},55422:function(t,e,r){var n=r(63489),i=r(56131);function a(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}a.prototype=new n.baseCalendar,i(a.prototype,{name:"Nepali",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(t){return this.daysInYear(t)!==this.daysPerYear},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){if(t=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[t])return this.daysPerYear;for(var e=0,r=this.minMonth;r<=12;r++)e+=this.NEPALI_CALENDAR_DATA[t][r];return e},daysInMonth:function(t,e){return t.year&&(e=t.month(),t=t.year()),this._validate(t,e,this.minDay,n.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[t]?this.daysPerMonth[e-1]:this.NEPALI_CALENDAR_DATA[t][e]},weekDay:function(t,e,r){return 6!==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=n.instance(),o=0,s=e,l=t;this._createMissingCalendarData(t);var u=t-(s>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;r0?474:473))%2820+474+38)%2816<682},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=t-(t>=0?474:473),s=474+o(a,2820);return r+(e<=7?31*(e-1):30*(e-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(a/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),n=o(e,1029983),i=2820;if(1029982!==n){var a=Math.floor(n/366),s=o(n,366);i=Math.floor((2134*a+2816*s+2815)/1028522)+a+1}var l=i+2820*r+474;l=l<=0?l-1:l;var u=t-this.toJD(l,1,1)+1,c=u<=186?Math.ceil(u/31):Math.ceil((u-6)/30),f=t-this.toJD(l,c,1)+1;return this.newDate(l,c,f)}}),n.calendars.persian=a,n.calendars.jalali=a},31320:function(t,e,r){var n=r(63489),i=r(56131),a=n.instance();function o(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}o.prototype=new n.baseCalendar,i(o.prototype,{name:"Taiwan",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],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:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return t=this._t2gYear(e.year()),a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return t=this._t2gYear(i.year()),a.weekOfYear(t,i.month(),i.day())},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=this._t2gYear(i.year()),a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),n.calendars.taiwan=o},51367:function(t,e,r){var n=r(63489),i=r(56131),a=n.instance();function o(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}o.prototype=new n.baseCalendar,i(o.prototype,{name:"Thai",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],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:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return t=this._t2gYear(e.year()),a.leapYear(t)},weekOfYear:function(t,e,r){var i=this._validate(t,this.minMonth,this.minDay,n.local.invalidYear);return t=this._t2gYear(i.year()),a.weekOfYear(t,i.month(),i.day())},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=this._t2gYear(i.year()),a.toJD(t,i.month(),i.day())},fromJD:function(t){var e=a.fromJD(t),r=this._g2tYear(e.year());return this.newDate(r,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),n.calendars.thai=o},21457:function(t,e,r){var n=r(63489),i=r(56131);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]},63489:function(t,e,r){var n=r(56131);function i(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}function a(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(u.local.invalidDate||u.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function o(t,e){return"000000".substring(0,e-(t=""+t).length)+t}function s(){this.shortYearCutoff="+10"}function l(t){this.local=this.regionalOptions[t]||this.regionalOptions[""]}n(i.prototype,{instance:function(t,e){t=(t||"gregorian").toLowerCase(),e=e||"";var r=this._localCals[t+"-"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+"-"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():"string"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+"").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n="",i=0;r>0;){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},94338:function(t,e,r){var n=r(56131),i=r(63489);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,a,o,s=(r=r||{}).dayNamesShort||this.local.dayNamesShort,l=r.dayNames||this.local.dayNames,u=r.monthNumbers||this.local.monthNumbers,c=r.monthNamesShort||this.local.monthNamesShort,f=r.monthNames||this.local.monthNames,h=(r.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;_+n1}),p=function(t,e,r,n){var i=""+e;if(h(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(A).match(o);if(!s)throw(i.local.missingNumberAt||i.regionalOptions[""].missingNumberAt).replace(/\{0\}/,A);return A+=s[0].length,parseInt(s[0],10)},b=this,_=function(){if("function"==typeof l){m("m");var t=l.call(b,e.substring(A));return A+=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)}})},69862:function(){},40964:function(){},72077:function(t,e,r){"use strict";var n=r(24696);t.exports=function(){return n(["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],(function(t){return"function"==typeof r.g[t]}))}},40402:function(t){"use strict";t.exports=JSON.parse('["xx-small","x-small","small","medium","large","x-large","xx-large","larger","smaller"]')},83794:function(t){"use strict";t.exports=JSON.parse('["normal","condensed","semi-condensed","extra-condensed","ultra-condensed","expanded","semi-expanded","extra-expanded","ultra-expanded"]')},96209:function(t){"use strict";t.exports=JSON.parse('["normal","italic","oblique"]')},15659:function(t){"use strict";t.exports=JSON.parse('["normal","bold","bolder","lighter","100","200","300","400","500","600","700","800","900"]')},38732:function(t){"use strict";t.exports=JSON.parse('["inherit","initial","unset"]')},41901:function(t){"use strict";t.exports=JSON.parse('["caption","icon","menu","message-box","small-caption","status-bar"]')}},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(27909)}()})); \ No newline at end of file diff --git a/easyApp/Gui/Logic/Plotting.js b/src/EasyApp/Gui/Logic/Plotting.js similarity index 97% rename from easyApp/Gui/Logic/Plotting.js rename to src/EasyApp/Gui/Logic/Plotting.js index 55e9cafc..e12f77f7 100644 --- a/easyApp/Gui/Logic/Plotting.js +++ b/src/EasyApp/Gui/Logic/Plotting.js @@ -422,6 +422,8 @@ function bokehAddBackgroundDataToMainChart(data, specs) { } function bokehAddMeasuredDataToMainChart(data, specs) { + + return [`main_source.data.x_meas = [${data.measured.x}]`, `main_source.data.y_meas = [${data.measured.y}]`, `main_source.data.sy_meas = [${data.measured.sy}]`, @@ -453,9 +455,12 @@ function bokehAddMeasuredDataToMainChart(data, specs) { `main_chart.add_glyph(measArea, main_source)`, `main_chart.add_glyph(measLineTop, main_source)`, `main_chart.add_glyph(measLineBottom, main_source)`] + + } function bokehAddCalculatedDataToMainChart(data, specs) { + return [`main_source.data.x_calc = [${data.calculated.x}]`, `main_source.data.y_calc = [${data.calculated.y}]`, @@ -493,13 +498,17 @@ function bokehAddPhaseDataToMainChart(data, specs) { out.push('})') out.push(`main_chart.add_glyph(phaseArea_${phase_index}, main_source)`) out.push(`main_chart.add_glyph(phaseLine_${phase_index}, main_source)`) + } return out } function bokehAddDataToBraggChart(data, specs) { + + let out = [] for (const phase_index in data.bragg) { + console.log("---", phase_index, data.bragg[phase_index].x.slice(0,200) ) out.push(`const bragg_source_${phase_index} = new Bokeh.ColumnDataSource()`) out.push(`bragg_source_${phase_index}.data.x_bragg = [${data.bragg[phase_index].x}]`) @@ -522,6 +531,10 @@ function bokehAddDataToBraggChart(data, specs) { } function bokehAddDataToDiffChart(data, specs) { + + + + return [`main_source.data.x_diff = [${data.difference.x}]`, `main_source.data.y_diff = [${data.difference.y}]`, `main_source.data.y_diff_upper = [${data.difference.y_upper}]`, diff --git a/easyApp/Gui/Logic/ProjectConfig.js b/src/EasyApp/Gui/Logic/ProjectConfig.js similarity index 100% rename from easyApp/Gui/Logic/ProjectConfig.js rename to src/EasyApp/Gui/Logic/ProjectConfig.js diff --git a/easyApp/Gui/Logic/Translate.js b/src/EasyApp/Gui/Logic/Translate.js similarity index 100% rename from easyApp/Gui/Logic/Translate.js rename to src/EasyApp/Gui/Logic/Translate.js diff --git a/src/EasyApp/Gui/Logic/Utils.js b/src/EasyApp/Gui/Logic/Utils.js new file mode 100644 index 00000000..ecfb6e96 --- /dev/null +++ b/src/EasyApp/Gui/Logic/Utils.js @@ -0,0 +1,244 @@ +function prettyXml(xml, tab = ' ') +{ + let formatted = '' + let indent = '' + + xml.split(/>\s*\r\n' + + if (node.match( /^]*[^\/]$/ )) + indent += tab + }) + + return formatted.substring(1, formatted.length-3); +} + +function prettyJson(json, tab = ' ') +{ + return JSON.stringify(json, null, tab.length) +} + + +function osPathSep() { + if (Qt.platform.os === "windows") { + return '\\' + } + return '/' +} + +// converts a URL to a local file path +function urlToLocalFile(url) +{ + if (Qt.platform.os === "windows") + { + return url.replace('file:///', '').split('/').join('\\') + } + else if (Qt.platform.os === "osx" || Qt.platform.os === "linux" || Qt.platform.os === "unix") + { + return url.replace('file://', '') + } + else + { + return url + } +} + +function isQmlScene() +{ + const runnerPath = Qt.application.arguments[0] + if (runnerPath.includes('qmlscene')) + { + return true + } + return false +} + +// XMLHttpRequest: Using PUT on a local file is disabled by default. +// Set QML_XHR_ALLOW_FILE_WRITE to 1 to enable this feature. +// E.g., 'QML_XHR_ALLOW_FILE_WRITE=1 qml main.qml' +function writeFile(url, content) { + const method = "PUT" + const async = false + const request = new XMLHttpRequest() + request.onreadystatechange = () => { + if (request.readyState === XMLHttpRequest.DONE) { + if (request.status === 200) { + print(`Succeeded to write file: '${url}'`) + } else { + print(`Failed to write file: '${url}'. Status: ${request.status}`) + } + } + } + request.open(method, url, async) + request.send(content) +} + +// XMLHttpRequest: Using GET on a local file is disabled by default. +// Set QML_XHR_ALLOW_FILE_READ to 1 to enable this feature. +// E.g., 'QML_XHR_ALLOW_FILE_READ=1 qml main.qml' +function readFile(url) { + const method = "GET" + const async = false + const request = new XMLHttpRequest() + request.onreadystatechange = () => { + if (request.readyState === XMLHttpRequest.DONE) { + if (request.status === 200) { + print(`Succeeded to read file: '${url}'`) + } else { + print(`Failed to read file: '${url}'. Status: ${request.status}`) + } + } + } + request.open(method, url, async) + request.send() + return request.responseText +} + + + + +function toFixed(value, digitsCount = 4) +{ + if (typeof value === 'undefined') + { + return "" + } + else if (typeof value == 'number') + { + return value.toFixed(digitsCount) + } + else + { + return value + } +} + +function toMaxPrecision(value, digitsCount = 5) { + if (typeof value === 'number') { + return Number(value.toPrecision(digitsCount)).toString() + } else if (typeof value === 'string') { + return value + } else if (typeof value === 'undefined') { + return "" + } else { + console.error(`Value ${value} with type '${typeof value}' is not supported`) + return "" + } +} + +function toDefaultPrecision(x) { + const defaultPrecision = 3 + return Number(x.toPrecision(defaultPrecision)).toString() +} + +function toSinglePrecision(x) { + if (x === 0) { + return '' + } + return Number(x.toPrecision(1)).toString() +} + +function toErrSinglePrecision(x, dx) { + dx = Number(dx.toPrecision(1)) + return toFixedUncertainty(x, dx) +} + +function toSamePrecision(x, y) { + return toFixedUncertainty(x, y) +} + +// https://gist.github.com/davidselassie/3838522 + +function roundAway(x) { + // Rounds a number to the next integer away from 0 + // + // Args: + // x - Number to round + // Returns: + // rounded - Next integer from x away from 0 + + if (x >= 0) { + return Math.ceil(x) + } else { + return Math.floor(x) + } +} + +function roundToIndex(x, index) { + // Rounds a number to a given index around the decimal point + // + // Args: + // x - Number to round + // index - Index of the least significan digit; 0 is the decimal point + // Returns: + // rounded - Number rounded using the least signficant digit + + var power = Math.pow(10, -index) + return Math.round(x * power) / power +} + +function toFixedUncertainty(x, dx) { + // Returns the string representation of a number correctly rounded given + // an uncertainty value. + // + // Args: + // x - Number to print + // dx - Uncertainty in x + // Returns: + // x_string - String with x properly rounded given dx + + // If there is no uncertainty, return the entire number + if (dx === undefined || dx === 0) { + ////return x.toString(); + return toDefaultPrecision(x) + } + + // Find out the least significant digit using the uncertainty + var roundingIndex = roundAway(Math.log(dx) / Math.log(10)) + // Round using that number of digits. + var roundedString = roundToIndex(x, roundingIndex).toString() + + // Now we have to only show the digits that are significant + + // If we're rounding a whole number + if (roundingIndex >= 0) { + // Find out if we want more significant digits that we have + var overshot = roundingIndex - roundedString.length + 1 + if (overshot <= 0) { + return roundedString; + // If so, add more 0s on the beginning. + } else { + return Array(overshot + 1).join('0') + roundedString; + } + // If we're rounding to a decimal place + } else { + var decimalIndex = roundedString.indexOf('.'); + // If there isn't a '.', we're rounding to 0 if we got here. + if (decimalIndex < 0) { + roundedString = '0.' + decimalIndex = 1 + } + + // Find out if the least significant digit is off the end of the number + var lastIndex = decimalIndex + 1 - roundingIndex + var overshot = lastIndex - roundedString.length + if (overshot <= 0) { + return roundedString.slice(0, lastIndex) + // If so, add more 0s to show the precision we have. + } else { + return roundedString + Array(overshot + 1).join('0') + } + } +} + + +// Consider using python backend +// Either +// from uncertainties import ufloat +// or +// from decimal import Decimal +// paramStr = str(Decimal(valueStr).quantize(Decimal(errorStr))) # Sets value precision to be the same as for the standard uncertainty diff --git a/easyApp/Gui/Logic/qmldir b/src/EasyApp/Gui/Logic/qmldir similarity index 100% rename from easyApp/Gui/Logic/qmldir rename to src/EasyApp/Gui/Logic/qmldir diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Black.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Black.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Black.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Black.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Bold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Bold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Bold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Bold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraLight.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraLight.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraLight.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraLight.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Light.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Light.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Light.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Light.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Medium.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Medium.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Medium.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Medium.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Regular.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Regular.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Regular.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Regular.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-SemiBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-SemiBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-SemiBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-SemiBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Thin.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Thin.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Thin.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Thin.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/OFL.txt b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/OFL.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/OFL.txt rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/OFL.txt diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans/download.txt b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans/download.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans/download.txt rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans/download.txt diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Black.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Black.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Black.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Black.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Bold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Bold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Bold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Bold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraLight.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraLight.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraLight.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraLight.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Light.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Light.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Light.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Light.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Medium.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Medium.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Medium.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Medium.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Regular.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Regular.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Regular.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Regular.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-SemiBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-SemiBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-SemiBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-SemiBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Thin.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Thin.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Thin.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Thin.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/OFL.txt b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/OFL.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/OFL.txt rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/OFL.txt diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/download.txt b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/download.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/download.txt rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/download.txt diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Black.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Black.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Black.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Black.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Bold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Bold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Bold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Bold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraLight.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraLight.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraLight.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraLight.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Light.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Light.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Light.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Light.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Medium.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Medium.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Medium.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Medium.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Regular.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Regular.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Regular.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Regular.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-SemiBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-SemiBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-SemiBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-SemiBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Thin.ttf b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Thin.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Thin.ttf rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Thin.ttf diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/OFL.txt b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/OFL.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/OFL.txt rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/OFL.txt diff --git a/easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/download.txt b/src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/download.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/download.txt rename to src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/download.txt diff --git a/easyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 5 Free-Solid-900.otf b/src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 5 Free-Solid-900.otf similarity index 100% rename from easyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 5 Free-Solid-900.otf rename to src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 5 Free-Solid-900.otf diff --git a/src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Regular-400.otf b/src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Regular-400.otf new file mode 100644 index 0000000000000000000000000000000000000000..597c320bb01266db13b7e749e23e7dcfbb63d557 GIT binary patch literal 191952 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�pjuH#R7orld~(XdbUud(eEHQArLQ4IhSwH=X8s+9){AI;E=WyqJt zQs5#%yUVRDaK zUu2Qw0-d=0C$0gC3xOW{`6HtAv7fI2Vqd50gRGTvyAWA%rw~cF~ zhc(j!uQMYvmdfgkSH}R@-;N2+_v_z>9#2CaWv6Ld*-SK;|C7Y}PhrnI=gWA+7M&il ze8_jhtJP5x0W^SRYM!_7Z>83U-fU+mMZ7dZ{Ow0(wg# zDUMuDLW(|)9MeX_6$0p!#h2?p_9%ET#)F5q`Tf9={UA)gnb^$POwfl?sd2q(^?d)v z)8u?PbDjfTWs*{;m%a0uIsf*7=FX%Y4eE_zK*tvFl`*-zC=+VQOHwGyvMxDjxMY{( z9voBVM7ApdFUr*^GTBC`k2NdA(vw1~9}`SgB0@DTDWw#o?Tl?1%gr{(;;Mi}Bm^%p z?#PKh0c=WXg7vTg6_YDkLt!%3X?i-jraeI+Z3&ExA#DlFj_WR+0>&{b!Ylz&OcZU2 zIbpVdX3UC67G_NtIM@?1q(A9(GB)m9xm(yGQ7a|s5EI1??g$Ge`idj~gjuuerBlMx z!M8BPOleP02@|6*Hn1ha7NKTXvzR61W1=KuRI`QtFkzC#lFS;-6zvJ2^hXn8xyHtW z7Tqyylc*KRZOO+(u>%fqVYWnHDJdwgOEm+u@_yA{K~L~?vzQ3J_qP2&sV?&ns62R(3L#jl6>dlPu;nZ&uMIb76z=S69 z8%2|NQ!?>RYEe=FJJkdD1Og%u+>GSEOi3>$B~{z2*F*62bz@^Et2VhddBfAym^nl- zWELx0L0gdOa_*!m{%T2SC!tHtXs`P>!W|L*jU+;JY9x0=_&1U?Y4|rrTpyDQX`+9l z$sGYAb(n;IBOE5-)EIGMP*xe#`$o+BUkiCIB=XCVBRs zYIz^@=wsFqV%^2A(KZ_{oEVNc8S$sW;d+4N~@i?oYcxieFgMG-S_f*y+0@cwZDlPYZkJ*;7mR8@&SDf5_e@oSE2pCj5DuXN!wdF=0Ftio z6}tx>f$r;0;@y+oXdJq;v2j=vF_b7-Pm;qrooyxxBd&284mboML&STl36{HDBGka{ z>uu?+YArpF6I*L5;C~I8GhhlfAuv3*^M|{VleXi12mxY70=5tlb1( z6ES<8**2QJCF}xz)GuGBQ~MQ8*KS=rUX9+s(^lgC02|F-wKO6+yWFO>vqgX8*l*gQ=|E{h<>u(Bt-Yd)jNCH&F&U`v-3Y&CGK4en{L^W1fn-P z^LI%D7R_(d^3C?7LVlZY>d9O`iz8qdqLyD?OH%N-M?pPi0|05;yMS#-?T#3_xl*?PHfG`4Gz=|?DHU51Yh%$ z2q5zETN7q6MgfwIBA=vbE8=OM71*qwD(ozg$8HG>rs;+xaHOk%OT*2Pl4%iOpb7<| zGJ!PK$Thj?K+Tu5ujpC;tq)A;j)_X#7?0cnV0Q_UlisZXefU6CPf|Y=D0T^oEH?}y z>2?598XE&hL?J`XqQcLvWiZ zhgSo5+cm4X1}Y~iky#S2h6?AyP*rT?k|Axlr<=-zlOw{3r#k7}%TXSDVCZNh*;FM~ z+|#kSMn)Sn87-Q@sBJuz;V>k66c1Wt6NLBdG>C085xO;I7fiCcN^-p!E-)# z8lmtevcjgK;UKGA3QxCUOW}Mmo8S{EJV@*CAlYUzE~tB1h?*ZkxcRTBmJ@Bv>Y#@_ zKN~z`?;|3px_fNEL6oy8mvu?HI>xds?P#C06Vi|)NxUdWlFUMmz-&Py+cUZ(oRA~P zEF4ID1dMXPncqXZ`8^@!BFdg)_39Ktp|dN6Gj1I$#l3w{Ah&=3><u{TcH_#Vqe#I=Hfh( zLq}v$Lk%wfXP5N2&pBT&9<@|iuE-%+L566o5Fxc=g-B96R*2N2D?}2{tPn_T9Fa(x zt$e$g6S-}mR+MZjadCSVgL*|clDISr6!Lcj^)RC>Kyh;Fp^&Cw%GU)gEh*iSphX;0 zR6(nBdtZ`n2-zj&YeI-8d7lJ(A@BEczOvT{%(T_OHXBVN+nO3iX)O7w3voWI%VT#@ z{Y8A5AdovmA=?3=)@kD!7_jmzrYOgOt{L)s4UW717J!cC$ z4(q5H<>X&@Af#z>AS~vM$f#ubuF@e~4SRh@WfsYKB$szoXH+`Zklx+&?8?adyOwoY z(i)Z8+|D@n>P}YdN~K5aO3jNxHCj1@Hm>hjQ>xL*AszETOJh^aT`mTM`?1_ln|z35 zZf7ceNXK;c-4qA=hT7{_0+Q7e-YeJ@c3}x)mh>uzM;)35m#l8kBiHhlUGymQO{fOYJT3`7>tk)tjb&DXP?M+21RO>WRy{{)6Y6K)XPb9~;^Z+H zbY}W&qa9KRV-9%4J4QA&W0YI?cO0-u8Ef>Thk30xuH^*D# zc&mMg0&yD~yzq)oTWGg(1`uu&QcN&3bkRukCnNq@Y-)Wm%F+&HLq4nuvc4P9(-1p# zrI4n`D55|c;>wB%825aaFGVOfm{u+ahp_pEcCu#xaO<6HWuI9|X2eFfjX67i8NsAj zpR^xexDfAYOCQUU0zai%_F7|o(jJKO)D#2uOt5{vkW+QjuNa(hZ09nd*wp4cEyfJD zLkdRyg0he1!_`AkJlbuNSCpA%Z=9j{JU#gX5R0a;sr8hq&(Q1=snD+1pOizz&ngR8 z;3>RJGX1Px_%_Zl)W^rrAQ(iP!;N|T*dlI-g_u+`q^rCh(;G7ESGeT=?H`%7lc3(G zti~ek^rvbKY&Olnu^r1wmrt}P023Xa2r?gc++k#|%kv9>n7*_jFB~7x``H%~&>Mb; zQr(Na)h%K(Fm59}Os6bax*MG_#eiscv@ za(U+92*VlGnnVKBifw*I#sW#jScqa6fAhYKNpq^6Zj0ADf!9(e?jDTlM4U0|)X8{+ zX+gbTD*mh%RJMtTMgX0T{UztERU-1`HVEorliRpZJ_R#)M6hz1t-eV@dz1A%J(V57 zghA0q#ALlmA;5Vmp#47Voqk9|`fd-IJ89n&sGYXYvF*R$Z7W z6jyfD$*L(2pYu^0SV2%+tR5JAWsce-zF>$hIF|U%6GM;yQG`1p@k#kmu%uu>Qe?+Q zSuC)m&OGBxULnTSRxfjGZV3Y7?V@T+0s6V<2;J^}ECKl0{^0h{@^pB4aKFxgbg1Xi zz9n#d=nW#(BZp+MW}ad-h$K$CxB{`h(qLM>BK9p55yTbKqxkz4NDr$m$UH1LL(UkI zfKHkrWA|2fMTE>2{sW1ZcN*+f)b8knT~EkWBP zEU>cnb;xy$fLK__swWe+xn={DKZEV=_YweettB@X<$TVFuER#hU?MAbg>LJg`&plK zn`2t~H;vBJe1D~A+fvY9-E$-3*$sii&tLXJYyV;0ci7-LF_zE(Le9sjCe8;h1UsmN zk~%&XB+mN+GPQtx#r*YQJl+7IRz4~xVMhPT_8z9a{GonHdu{*RPoB;nbO=9E=h47X zTi1o3kxVc8%oz;YRjDZ~T0Jr?m?;GWCxT&F_;F!o2X-MVmGHtUj7>_1bq3%sS;?c# zWXWL63w^E!>^KPp>Mr~YS>asf7!fHkF>IkHSI?Iw{yX%Kn`|~MbIhiOtGtK?4+!0J z{}rXsDzpIL9B#o4+_&VXD8mB-_u$AOmitvb19{tZp&L&XI#f15c3@9C5r*iqb$b$D zGvf~#Bkp3&tCsbgtiu7CVD8Aa!zwr3#!^QdkBjL7fvU)yOSPV`HM>c1_b=HS-KE8;Ccmvmu2rTv( zUcpewS24u}mHiON@gb1^UBnWk%{;E~Paf2)C(S|ReHXA(Y3e~B9ZE!7vt3)4k{=m$;HHv~>|mZ`AZK6RVK+ zz@qFdM9O4575r>Tl?3y2`f?l|7wP1F@G)*Dq^rJK2g}_$@Sx}<9G2y8Fi=wy^e1Em zc_)92e6`SpbUuR-5UtyCB?`O8Z&F&wyiX68`94qwH2JL#?N)t*o@ULL#{~gH($zYV{v-=(%yRshO?KfJNty$w zn=udMkea4M&$gzaxOLNTM$)ZA%!aqfpJ(#zu3n0vGF(B5q-0v=<(NgC_Uf~cYg43Lg#p-LzWaL zE0HP;DZHP0Oro?7>~i(>T1KsGZzAv()=uf%y*|-F2{F;hb{(A1o*y~Fno2_f;TtG? z3JuyYo7vE9a9E|Yx@5eVMEaB7rT%-Vi1D@r|mrz=}=_sPprc1jVaim7AYsq3(6X}6HH%g=ExIkc)K)-U~ zX3FbwfA{&6hN?Ky5qC-OIu$Ed`VDFgtEV3J?VsUzX)t-SP&mpF&{mRr5GdUgo*I8f z#G#frFX(|jj=ih?VU92G8W-%T^wQh=DZV)*`dd;i-LxXwH&{U~4)rLwSdEy{C^Qn` zY7x8E0(>W@umZ4pAzO^pQ`ErI5>HXLzbhX{8HPAg(BN7rgl`B?dP-c_6S_auDa~$^ z?Y9DIUM1%IVl*SJhY}_8LZ}~(P_HZ##iV=*+Q{)wP<(NveYuCSHj4ZXt1OhfTFMAI zM^uc=3_ZroEU&aLt;WrDq4O!;k`dwloMWOLev?VI>no~0e(4L4T$fr_2| zrbT{)p9AT^&k~V>+n&&aY)eLQgxxAtP@LD)8^eh zR)~|SVeSw=5yVO9CVr0VdxD?2DT)HY&wlh>Pme5%@+_!{pF>&(Kl6PNoon*5((=>GhMzPA zX?kL2=2hAkHuxD4h``e+fLIiH@bhOXu)-KPMkX-vbDa&4NFgLHm!B`5*V!+zHw3}+ zLo-ewJ^z?NE(cte56(ynw7OY$_Zh{S6)}zLg*1$Kh2voE9FDmBQ*GaTl zjM6K!wvvqNvQk&8p-9$i*ZEeRo==gJq@?_qiVJdHDo z>d_M^oUYj}_TjB!{xO9O=%E6tu>HLInc#xAhiCA~bw^IHR zJ*e~~af#AHy*|HEuc!nnwhtF1j8N%a$Bz17k5-2 zSg!sHDjO0oW@)rwgz)T#)wq0E$3pv&VH1_cA|@v#VNGiiZxeSc=K@T&34_>qGHhaJ zm>mrjMPm8Pj?0~Z0*IJ52-c;4EcMrcIJRSHY556_5CeLnMgd7^buEdb2$I-{j!y81 z+Hzbfu_hxj;9%UpYMrqz7aUwc5Y^)5^+J#p=o~+YCcG@Ij%Hz9Q1pZQsm{Wci`A+A zL>iKZo4$^-O!3uV;#iht;=>Cjj%7L6IbCfyiiwjV$a0bBj1xD~naf3@GnR}oOzg5O z_rj3!vgDO`TWSj?4*jUX!OcsroDD&!c*nAw6z@U+JK|#U>XVxY&FKs*@(5Bms$w5_ zUfL?1`(Hl7%KyYBEGzTp=>?vt)Q(nhZ?yt9^Rnh69ixz!EB837i4=jd$ud?pH#0M< zv%}CZ>7?ShNIYmcT?gXoJerw9Qfk2@Nx3*lN;RIkEi;yxn}K3wuB+2ym*2x&@*3=H zHY0}7%as$_s}Ia`v#Hf`8gI#~E1is=i9~O&EVU~qRpKlj;~3g{spWEIUVH7Jg`+sS zkbj_2qorJ7Wp*Amf*UHAqc1PNxHFk*vS`pnddSToURse0EAz(obuq^f4qcA(3dz{e z;+iI)ao1GHesdE20L2**MKLWXDBXyNLi=el4wQ?&OQgkOSSmEPUq^Wg&nSfMC{b6{A?9o~X0Mpp%h~@wR$1Mu%NH_qucdyf zbK)xsB0#MrD0#L%oe7Ab4fZ+_Ib9c?eilgE8KlLPWf!pH7GVgFgV_^7*i?^5w}w9V zUit~=?lxBwczc}xD8MLPL@uI|UB8}z3r+%rx9hjP+Q%=H13cictL5#tyPpvk5oLzs zL^Kit6~UQH5WEAYXg< z2VbyddCdli1)|nSGQzJZX;$iMB$;XoN&=0$?FVN}>_~14DxNQ^?ls~ix z2^m|IQX^sje1{l-%4)Z8Oe4IDn+K=|Yc!6buCW|wIKJ}mOlwoa2E1e?r# zo_$r?IX*URXY_ZUXmF16JfnZESD1ZON;%J+l^R&>;MA*k8!3debj{5~Q3aVXXicCaJPBZ_1T`1<%^?2&YL zOI@vaWdpv}#S^h*To^c!Je{6r^ZS;>HxCJ8WZoMEo9EA?sv)sL@TLg~=kFTM^^ca1 z&Eyg%Tp^rs2DC%sNbtA^B3AHZxS6sh+k@yW09?Q;NlHx96N z?6wm6zJ0e?=J-jk^TFHa0Dg71m0=`PhBv$UnB&_!?8cw;+D2rW+vk+4Hw^8OmbZon ztr=ZTVSULDA7`DrVtG@~8d=OnR<2?(M{ue_B&w|)$`|Mk1&fdnEy_7QNb-V#4kUti zpDH;rr}5$W#X!w68GW>W8qJ7hvc6!lUr+7{-hDp-fs9b!SOP&)&)ar$K7JGjwlGkc z5ND-qsw+HGJ7B^9-JiiYu7v-d5eyLu|j2P8l^!M*HkBz2nXp_k|pI?QIe zq&+2WcJU^v>{ThE>`3A8BViG~Lr_m_hx3*q2RrjunXG?O>`pOYBl$g!&q2h8l}{_k zBwUzmG7ALV!BBPZ);SykJOrF2$Y>LWeK2VUf^R0r%Hf19=-D9}9L+qp_CWF+L{cJYGKc>gY%8XU^ay`5PlT&*UT8BVD z7@yCOvroh+pM{e6!XIo`kvjj`nvOR+1UyFwa z4U?;3Xn3CB{MgJlN{x;*#i#3lu>cNn2Elm3KOT7UQmFF)jW7)g?CH>NG3nQ38YsD0 zFx-gZ4mxJFYv9JCh&j5s??P&J4Xo%l6U%W=@VI$FOde}|*ywdX8Q=Ril z^GcNyRg1wSYBAdC1!&1zz`QE27gfr2T~^Kcf(yzQT#$5V_1nrt9CE9E(n~J$mEhOA zd8n6;My+HvPwwb0O^{Xlrn5{TV`u4`O2*HI5temR4JCMjr>?w-b0@0R{63rX`_Mx3 zh{mV0$-nIw$G6%1=6TwmyTRUno7@Sgq8YY7p!6UA7I=OclP_c7WemKGftNAxG6r78 zz{?o;-M~PlBX8S&#df9hN|lavXg9kK==a$vSqhpqyeL;SA50aNgV|aWm2!9Kyos`E z2bHR4)Mj+9qE)v1X&|C{8ZkUabsU1dVw6wXN7T||H`wEb;n{HRxb>*H-#@tY^)DHoU*cKFpW7hhzx6Et z_U-5F#Qb(#^S{$Vo&)ET?y<0^lr%*&OteHIF(40PGD71Vm6b}U2cl7io@gvb`4D!Z z$JMC^c0?Wg>_r`%=S7{7OPGuTNzFyCQT|7}%3Y%#G^z^+p zbTaNXm3nuuN4D4kI&Q!w1Z6bfb?6!)C}Y7RY-Qr_s*H&HE_@Q0W!w}`ux;U4OXkHk|y+K%%g(c>lq14Phd{-i^YMxrmKZT56s zi*NQA@-L98e9X_QXSkkt<37oB1v}vBlT3fX;9Go>iHnQ9^O%F&mlFldWyt(pTzfp~ z+fLEYyNlLFu08%b1N9PlSN-~5%-g>ee3KHAndD10*Vaf$H>izP&~5zS^yW$&OMIsNwaQ8$>6m=+`LG@ z6}P+c`e}n3;3%^0m-esxJ)!-$*8X?+JAk#LiCuruzl!k^e7EDu-du z3b_{oXuRAbZ;WtLfF zmDIlDDu70y`iKn^hDF#gnmv{BfwxKwB$LUJvLh#%O4^%aPChkvk2EW~NADPYR=`f8 zX)UOwYdXiZr(^_d?h}p#ip-d^RO8yK8*3AeX8G>Fx1(WsaUQ}59An0cw}iqvE}^%W zmIi4gTrwe%(Ryx}5Hq4ki@6B{mDg|FqS(uaKdLX-$zW}I)3?EKrha>fWE7r^0+WxJJi9as84&R4w~_NBv5G9 zsL0jX+-@JALC-L*3LuF~|9$n{?NOWgd>8(*EU2xeM+6#- zzwmdA$~M+d{QHZ)U)9<>Ycpyypt`4}x_IDAfkwkH+yru-w>)yOQ~3)D3pdOroJL9C zsN-!))*Uomu*S&OH2FSWl~1C7)I*=vFCMf(OCzNkN!&TqPZ$0ri13^iFR?$pQ*U;B z#RpS^gD0b|Hb5m0jW5=wV@s~|w|MP$z5>Jf2%I)D=voYJKi~-?4Z&RjQ$8%r96bl7 zO}%X@&;A&eY`RjCKP%;BrKP3Iap5*}+a`77@{R=1`aJ))z9l=yvwdE?LxVg_Rk1iG z2Q6}&2u28&0z;eZN4Mf|d%>|>%*&aZcz6Id`)od(Xa5`s?BH5juF2<&)07^*U4#D% zP^WU_D1M;yxI$Kk7E*!_P*C87so=lP1%bgCP8{}_o)|4 zicEe$<|e9@eyLjNh$Bz*bTHm@l&s`wsb`#fF4T=vWT}Zvu>GO|=PN)9pM)SK96*EM z_kPME6=3nm+89428BkmzDr}}W`og<2Qq~#u0;?GpA5`%5ur<63Gc`C#*y8GECWLG* zKH%Dg=(WRT!%y@$hS@g%3W0fry>mIUW1ik~Gi1p$__^5HMSdTu^@$WhswhRE*tlaS z)d#>D0cG?tCe|!Az_4bM{M5SDJeF|dry*NunfGjRq(md5C|{$CCd0bPPOb`;7ITX| zmSki%GEzZtQNRQ)8as#cN-wKCFRDwkZ6D|Rns8};RH?z)E*67F`e22)Y4#C_I^EeD zm+oxMa*=0$1Yu`q_wbeC^ij65f0tyZc*LKRgTc>s(kV_!s=}m}^a^0F6s~u{QBOOb zl;Q=-I-@^t-B|2vDcm9O}?V~rvb_P3+NRmykZPj zQaG)OD&ce*<150+r1L0F6tw4RU3p zZrdkW88WKoBu(M`=&Y)rG{@h3ZXu_pD$yn*rM)N;8mK4zn=ae!obTn}#f!TdO{T2e zk9knsIpu(CBWc4-?|Ry_qf^SW8lO?;7B*f=h0mdbdsvU%j14Kd&x70-HjxuM)}9Bs zFKi;K3+6#_999H#C6LD0!E9XMU*ihqb)rZ2zPD34p?nmob zZ|uM>1zm@`=C@>t4b0j?sCQ!Geqs0r?GrK5Jg$qAQABCnfc}gaWL9_}5^GatwR6W{ zY|jKedqs=nF135dNj>ST1PiIx!6Rk9_NXW!S@2MB6D$^d0{-hs)j(thECWZ<5uYBP z<+Ly(X}8B2k!2E?Wlr-~Z}XC&mJ*Bz^Zi+_8^@SEt_vKftYz*^L1Aqz!-i(K{I?Wg zi@8>W+bJeMVxC=!=2ky$D- zE@gU1=ZIJ-q%&h^qF*I+!dy9TdzC}ytBX>bCy`I`t3sFd&gVPDVCp2UGkDw)fUXl& z(|F1K+-@Sh)Y}>yD$ne^}5Z_+-xg+JmV$@of1n!GL?wKNkvBOOtXPp}A zS@AF8YsE=OywzM7j86p?%6}Bc+T)8APb=->4ookX*MfjX!qTWGHE)YDSy@3x1`OCO z!|ofG(@gI|#o1g|oyy9UZIzf79}#!_Qxd8AC0KGY%a+&A7b*9iKuPXx_rxvCXS`bH+y-?r5cmT@ch5a- zv4+E`eHW<%G$a6oTldE+CKzrQlw68I>(7YW=Um*AgDT`)d|&Swd(?#1n?-g#iLq8i zjlIwrW1yOaIT<%d_eQ&qaSR z;(C%sMVa$SpESmIXBZ}5P@y(p}nn1+R+(Ac^ zrBl#MgPD+c>v1v^G2Cd0rwz6e0$k>yS?c#$D3MyDHlH|i3FRv-P|$AJ_luZwo94=e z(;YvKil;zLBMB64$ggE=*`^SiI0BwOcCv3@?MH34vi>?j>jdanal94D**-E%<6T0K z%w$Hg9UNACbzzsFyy^bEsde$wc*FJ#W|Nq#CPX2ngO< za2`MC2N>ujYYbbX-CIYpO?6;w+P}8~cJ5M&xuWocN{R*w@JSGI*@dF(Vt{oK6DDqQ z;hu`AFp8h&@ap1%pXC1R)smRppY6&6?x)z)xaWlKE1mi9-N2Cl^}qlUsd{uEj2)V!RQ}885n)t_C8d-T zlKvEIhKZCyFes(a7m!j&aHN!zGGL%wDEJb8h4zt3b@00q+sD|OH5Wc`#M69)stt^pEIMR(q{z}N~&->rEf}3 z4hq0aCAD^d?2uF`nkG7FlZTR5txe8VQYA%N@sxGgXb3HnNfaebLrH~U>{Vt;DsJuu zhWNn5iv52;jRNfuFre7CmD7xu><@mOgk_wdR zLse20HNd_^Z!K7ZAGBreg4ZD!lFF5U8cM44DM%!h9}k1GEv>c|lB$R=9w({1=#?vY z)=NrAsztO_@Koq2AqzrJ35`WbrN#p8nj}^Bq0nv=CL_Y7u7B6X4)dwRQ6MD&HAYe? z!UF7pCgB#6%A6zylcf4Mf3|(KN7=|Kb{?c1Gh!i~Jbq5XsV$O_ipcb9Z3ru%uer+R zUpr|Sg-S~Lng#cDIZ~KGp3ataGCuK?+QI#6op2%H2~Itx#TW=sRnqtPz7XCfp8U;s z!%hzPQmep7|52A#s8CN9z2MX?dS;1d3ig#{g)IM(bVLg9bZ4Yqb=>L*kHH3D)M4Dk zu;YfHXB}5Lqlw|5!oLo?QP{-VN4JHY)7n;nHo(M zAW(Qy1WK!sv=hG6B#eO|8wI~V>W1Ke5tx|UfRW@BfC?BHP8~*PBDEQllEy8i(B*uP zqx{KpXB8MPWEz;;0FvbAsheLK-<^Jo_;{_odedBfRsTNp*M_`uNuz@xPg`|SgmYcy z4wfF*_FY6vey=vaHa0y%S+0g^yPgFgNo90OD%ifIY@ZbOf>ZTrU#heeyR$G@`jZSG zr%(Y7HJL-&pi=Co!02+md`Ew=08-&vcPRoMs{*7S(Ty#D0DVv4LUJXX; zN%CKF)i)8c!*49IMv{4cR|&GQW`4)eC)M=s7*fRERRV~IFMD;WmEZIJJIPuz{Kv@s z_uonW&kpXfgX`n(qA#-q1r%Eo&`w1Gt4`6=@VkDkD>o`;XEQNvA42&4Bcp!-07DH$d}>^kDs9+t)9{|@Hm&KLgd*( zR#0YOFW`(T_keGrx%I$=FZ-xG@ z7TpP->=~{CVycT8@fE^0btOcpck=O-7slJ&eHKqy8V?=_LfD^aUbjzQhrGy2HW433 zpWM}VZX$_d`&a59iDZnAueW#k{h}-k>rmO_>Se!N3HU7ELsCWt;2O=ePf}Wws`%T{ z52*`-dI$wX#NUy!2Gq>U`6DT^{kp6{EM!~U20OXy+F;%=m(f3|6q@MBZU<5)C=1;S zu@w@J7q~-T=+4U0dC+#l3D@LMd*OQ|z@M~1No$o4{!Dv3%lY^Kj1kLweBW4yeIi~+ z9_Q@3_H)S=>9KRtrexN)i?3bFx}H?Qgy)^-iE0N z9FL8YvFWjWS{eLdjh9Xvm$}aCxT`b)Yd3uFb)yt?)qUt2*l8Q>C~xUpPrTX0pc~pC zSap<)i?C7dfToZ@A(xf~=xRiDfyE>MA>V9C356IkQArl4xQ#|<7 zLkh=EL}wFH*x>HcNh5mU zyN?r)#?rXAxWPXy<>pJgDf!=dK0P9fBGMr4uz#`-?Ifh@x*m|1G@5$S8ArVOoo7r2 zQhaNK`V>u*0pru}y!s%8ItcROQVRpf21R`l%yB92QATAFm95_#JHe?V z+U0Ya+UHs^Qy1Y7FUKzERD#(|3ibb3hTZ(wDYZQS(yR0ay-L|0w($lXMrng0#*44Z zahQd#rWmWqPtuh@gzt%bvhH%j@Mc{+`JEzcFC0nG7XLa``~L7kA#SZ1jxj0}LM??C zjUJp-POh#PJlO86h%Y^)(L1rbfCC4N;N>CErAOA&svI88!1qdt#% zoFtQ3x&?hA7p49<=uRyFJJ@)U$&AP}9;*M7}n0%G&t2oPVUu{Ao&1 z80uXc9@m0ud$9qwG3zou+clctz-irBE~aY)%g)|7^gAyFffmy>LbsAF%$69Wsym^f z@HbU^@k1i#{SJgfRu5%4Ak%lXAJQo!oAjp3)SI2 zby6M;kX=tgon1>=TpV$nVc-)}^c)+p(*zXm}cFieL^cCNx$|kF@ z#^+A`R2409!hsz0Lz1Z*I%E?zh5>kgu;IFQMPRj2VxUDrX+%4$fm0iCSxwOn3p>!8 zos?G)gK%a+MzN9P$t<^&6l}x{F<~Lb(#rh|f-TQ4Okc(1k66)*2Y5k48)>po0I+QR?!5I@`GOJ%j2;HF!dzMmS7c7kP?co9CzGt z0VTp<6qH4N9YiTSkPv%hb=b+On*g zrm7Vd0nLSDq#VN4Jdj5 zr69Keg|1}iCZen-N7F$;jgA6L0t$`XC3*!V_4K2d6Z&_d;-?4^<+ZRS%FGR0LK)WxGN;$#8|Vyc>tA`D1plMR{!)z#@fRs z1uC1x*kxiG*u$CRdwT&4RC$FCr(p0@>T&X|Nqt%oIs7GXEZTV4{cI3bbr_je%=Mbw41Qs+0o24@v-?z=5D&1kmd8H(p!<- zH1->T%fIvLaqEjLl250a`4hX!e(YaH?-qO72e0Ya9aD;eih443M5*B4sjrb_swpUR z$YyJKI;emSvSkXQ{2}qW&cBVfHKdf_jIJe|3dzoJ_I?ntffsV_o#r2vEF<1@t)#dW z^h3E#`myWc>W}a#7=aSnAXx+}@nLI;V|7o?w6>Tg2$ELj&b5)%i?YtV?LDfO z*Za4@IehZlD6%$=&O<$?*m$?nr0t!`%LPH}ACNxZYPH*4BAomDX8s&r4#%^|^wUoE zUIX;+Y+r`HmyQ~^fcdVOec6Rnk7>F+h@1?;UZKo)3PUiEcd}esJp&U$h zJxSZLT6|}A7<9`xboC2aO%y!vZ6orw^W|0++QB;0pa9P+!+$@7RLc2cM$3Et>5iLbWkqA_Yi!n9=~v62qY76^p22n zb+8T&Fo)th5jc{x53-#>$ed}zuSIr`)N(VCo2L_w29){JmRjXoEPF^VM5xpVk@V1P z8xCyfl29j3b1*Qz-BSEf*lzj0K#(8n$GOS)$XRDNl}pb!3lusfoQC)?D4ZvAzCxEq z+WvViRzip%TBBjnX*`vLVafw1!E`J!fIApN0pqZb{WtS+=*i5~-pjWmRP&l&=Gi;vK1jc> zz2?41l7Hm+dl6ds)}8$OAsYDUTVEMjdG57DQ8T~fvu~8<{qgm3)~LA;T6D)ezjFC@ zQ7e+$lK;hHZn1;=i>#5Ppu8^C4A1~$Iup|N)?nAr<_r_dpYn6Wq1|~@g0^oK$@c_0 zV@dD;MQ%h`zMlCt*o-;o>Z84_oP!_rUZn)V%s1!>*hMBXzZ~ouIn&bVPp0g5@ht1Ztk#e@9Ut4>LrYZ z3;_2fpxMbv7&Re+RJ<%6{8=dvO)0IbKH|FVPXAb#wW}NGX@WZZy5PK6cnlD543)Ch zZDTHMFPdJ#QQ_+07l-GrWrGC{(mDoqisp`u=Co3LCpHtLsx<|`Y1$H;<;wo!yHJq< zBvpx45RdDk4silJO?^U)ke6!*?cZ5FdLqP3Fpe4(M&o7tK#)^Ggh4F~#ijod48Lbv-zD4f3RRH0@KMBL z_75tJ*|$W}-^cNVEnV<;lz?~E@a+V#*{kK2^GfGINN)(?xF^_e^|kAJt>;Aw`MtE5 zO>^=6WmuxyBLcJj=6`@Dt<*`x%a`Q+Re7poPtt*X&gURy*a|vGMKf z*`akk^_zWaT=g}7)&&5MI}_sopKkG~acqjlr^fTPS9Z@WfuMnbW1GIR4N{xGvQ2X= z8qfcg?doD2<>=J!bW`u3uYj?Y9~@#_yWXDX*IhaV5_{FID@{&jzOKBw#uTlbyo$Y!lOUs=r3Acaq2Zy6pO48vw-_E?gYF9ME zH-GTC=qr){ASl$Fl0Yk0hS*sC-B$_nA3;_b56I>|*RdVD6-)a_q&rGE{LL`yNplpA zytTZM5cmRin#VQI-8#+=kRKkuXSMh|R;JAXc;}MZ$am8`V z&5Xu3OU7;=ah3AWq07K&%b2Rv7t!HZ;{EW_D#pZ~2kZBkE0~+&(oCh`XS;3y5wVo8Kc)N0^b`xCzWQg@538utaxQeQ(z@ea} zZ!&DHbXqOBXt3t1w9DRGIpT=Qd&`yge(Q+utKZCwiR08qDwMw5K*fN7hC{QTxAk;u-ajqHuoX%z#RTX9NuX*%Opl^Qi7Jtx;-u~Uz4J?{wQLi!;{14cO{S+y z?3fvvXF8k1#a)UM06?)$PUQq%;@*7t*X-0lU*<=Ef~`5qsC1*6->-_+nuAfJMe=Md z+%~B)&6M-u%i{BWiSklwQl32k#)LRaXt6aACKUk`2s0QWZ`-bSK2W}+hZkFi_bJS7 z&e3UG(Ygi}--w`#u)T*l)=K%!`k1kBZH7G*XNjkvP*9R(yzQ-l&G5ck5~B&?n`+OS zDaOM$(Z*p*bQXIGKYjERg_1X)Z%#1cYaB6(SGO?Ux{%TpCLG@(z{V zy+L!^KL<&NFI;)2Sc7L*yXe5Vk~B`uN+o{d$d-gZR>oW7Bb75oYBL|SgOrFvzB;zz zgr=Ly0FCECB9t~+V35nj0uwPugW-p!pj9Xk9*a1Ko8Khy5Lm>7{73;0-# z#LR+-{5!v|kC`>jf*1O2DUb@=VXIXJ$p_?LjaD z$7g&Uo9!`p+On{|*VYT{;FO94T)uq{v$5OC;=!NP@GW`1&Ie8A)!kN#DSqNj@!(I} z_b0uvN@|qXxAo6GffW~1WMQ#Z;6h%Cco>hYe*dZ~NDt zfqroC+7Nvc&ccNqjak6Xj5Xt#zKhZ<_>JBAEFgC3vmgi0#@p}Vn!9=iMp(VUX+h|;2lXP+AO-$`?f0uCZg04Cmi^>#O56nACa+%1lJXFCX#0uZ zL{xPez0!W-w<8H9@2Nanb1h|#e*mxEo?j-ro}^6M-q6_eX_WcFCrBN{sb4t$5|VoZ z&QRBJtbE%LwEXO;J-B}##)UxgZINX9Zb2-!&G-|_oH-LvZuv{H>q*KC-wY^gpQ6lu zr;}Rt53F(b;!Mc5@9RUS8P^YH->81xZa+x3XKo=byKTlnBaI(ErXM`8ML+*)KgTo1 z>?a>0nJ{#&7~G|>h;Sm~qF_@n zL41(B5>pnsnt@j`4-Zx_g<{U4PL|9u(?JUTtM|>E-2ll7Zpt-DH^WhN%1J(RZ4fBgfc1| zF+gGSuq~OmW@`%|>xS*sq*FBPC|)9UVm%AnYXhH>T!0jK)_e9&gcd|Mj*F8{f(9;? zM|iZKbW*&G>=TuP6fb!=ZOrFygq3lr4KD9kmOkj{5*-|y9>K927{CG%;{rN%0LwX) zHIH#OWUrb=Oj~zx=}V}_bzxe^^;`}~O@yrpJBx8OR02V#CtxpnnqW}GRaOQMaB<$u z5sdu;>jTJ0GRW2ss>hc`_2Z|XcvC#W*L-s66RMqe^v^}m|J<1|TGa_?(MJH}f&j9N?u0N&^pnSlVe*sWg z0#YTA6l_BPE^5&-}F>}vG0m5 znb*`%vTv*DacG}8m}34AUR(Av!TFGWRkjpGpa1|Gu$T-4(k*g=72sKu2aikmw`P$H;V#M&k2#99N<@=tJ@>u%3PrQ6{P_D6>A@Y5E$|Sx{!0 z!5N{hOO5sO1BGx(Kk0Ro0toa^uLe@K!jX4U7w4UzZOL{diAtk{50x|4 zKr|Y%F>lX=!c}qFAb4*cab;|&Xg*Ir=vQ=UKeRKxAHGkJ4rz?;NAV^+&oiFXc#P*o z>t~kI@;>hLV_td&J_;7QG$EgsUxpNn*eHQoiV0@1e(WSB*3-7T1c>oYAH9p>!RKl60zPFJruRDG@JWsC=yM}9Qz1Z2}a=2#Gncl9-L2u zJn1`5+YypR*5j+^BR`1>GwR6ut-?sB0LirujRIU{_Aq`)o^gN=tI&D6QNw&YVZB90 zo8#21is10gXgJ%t->8=-&3_~=Z7S;$!av0hMI0Xuk5M=yyz5)NFpvxK&f`-lbWltx z4KyUIld8p4UztfV%gps6Hof>`S`dh%iNlBMgb^PKje5y!mc@nR1XZ6J%L%WawA)8R zf;)#>K}g(Q35M~|0sjLwwYBJb9AsoW4%|p5I|m=Ltk|PI<7~2x$Gz7mxr`-@R5Llri*+nLt^KWRhHGQd}zzU6=k>ps<(&+@W^Fi3k*#L@3%;WJGJa^#p zJpTCd@y9bWq%YBkcpt;g|ASDBWrqP!*OI>vDIDSo{nC|z>(hWZ?r~EAFH$jMhsm?y zRsD0(|K}2c5g!>Dv~7^q=!&VKa`hn5u7)|DSy5{N?^%bMTOba&=@d9~;yPj?Va9N< zQy4Z2kGKPrP8)exmBRxN;1?yHrTR-OHFf`6rGo1&W~KG=P@lXeaf*zST5;g1tk6Jh zCM~EnjR-Liuk->BqlB2#4+E5|RPY~YLV7iN2cymAlvY)GGphF=H+nys-r0xD+BOn^ zJo~eO6)^-MpplJ*;SgYm;qwR&q?f>oj`$mxLf&5^{sFgm#Gho4-J()dCkx+n2_}XD zsTLN-av8dFb??#NAp1Y0>i5NA>ewrQ1OcA!5=o8B0Dpt_deR)RE}<&D$l6`1zYVJA zZOAlOsvFU1*YP?A=k975}ViO%6+0y3p_-joun`8R!;Mm zZHKl29$|PK8fV(+!j|76TW@hL!T0fN0s`@8wo51~rWoYMid!w{pLu^w?|=6!_l*hx zZ-3=Sp4XrrAI~ks5f=={v_2hvl+6fuZX?{L+tBvbE)UOkfQZR85j0WPK2X~ai(UZo%Y?5dv7wTG6$8bfsL z4eDSt5;t8fAR67z95R>Rf}#7>Ohb-%n>1Os$Cr-}VkdsZe-c5*%XnGfq-L}IArHCyg2(XprjAIvL$_9uqCKFgq{^T$p+!Mkv?%nggaLQP&J=XtM=3wrppa)&|zoIz2*>MyK(MLU2X%qlXs>U~|O zNfiqM*5PQz5A6~m4*oeQ@={pZNYa&+U3sW%YK$wcn?p2$k_S3FFM#OX7-35|U2Q?N zq^yr#sD!Z11BG481b7P#obD_+%%yZg++9 z4ZZxtb^;`EB2D=r1~}(IG*3u0yjDii{&-yFPaKlB9GX2qu1F$!+sevoUqcs=SUmhL)5U3J+nJjTpyeS0v+bqIetxp;q{>H}#nWYPTw;k? zcWIlm_-2z=#&JVHpL@$KBy@#Aa-sg9RR-jG> z^WB?77c>NISq-463q&be(mE#pmb2%+&SlW<-2m8Fb+YY&b7TizPO5`eFD3`JCRvXH z(c?iL>SYv9wynaoALa-ICoxBYPbL@S$xiw~$!>D2yNV{(lvkp>InO>CzT!hQ)4g;8 ziUUo+;%X{Tg=GX=$;$6xt=H9TC+OdHtoDG2>jMUHHNNC#V91XH1aj3^M8Ehi>}qlA z0}o_UC$I$pAly11v4IBy1!T3}|LX1h1i7YLC##VzIVl+^m!MqM$vh$}1%|4y^(pqz z$|GA>>s|4RV_mNLEc!`q3}uNS*LtCT0>4YWgmY;1bPaH~(HzzY zlT%h{JwMOR7?vqDm2$Z#{XK;m%`MN}YBIY!hbGB8&o7a5AmQ&QwFhMONA6_kw! z-KI{h@$Pb%wIi`kRN?5RO`$Qqxaq9U^wTJdqwuarhymr?L^F!o;7FF#t=41 z6*P%__9p1|5c#U|k5CO^R4NI}{F4yEi^;(FXej77Y-y;UWI#<+Mw5$3a!s}X!!6Bq zo)=*3*by0fNU&%|Lmd1NhER1*&?-D(oyemZI$PGL+-|2Cl$THihWCRZ$QX(_tyUJ6 zkBjY7fSekEPC4fdra?$zUzVWX!!)}*&rb|4xrn}FaA;>9e$~0zH4TsnYT9&573zgPCs1wN8l=De^9s zN+0Iqii@UDEV&!ZrT|20IgAt!h_6L~5Ee2~BMOhq<0f-%ZHT65#RGse1%I&_XGBMP z`@mn(#Oj_keSbAH(%Acmq@gnDz9%PIzS04-=!TTN+!6dbvhTQ}@=YrEshxq2n3ewA zR5G4|&hmSV#Rx}XIMx>svVsspC)@_FB|5pIHS8J;=8iV`B-Fr7)@x3LBZ|;FP>Ia| z_o9gam|BqMgyM{qO|)WH30*2w_h^DYzW{CBBnWm4l-w(c-qE&-V^Y5ruCuK2-cZZy z`jF;G4<|UY!(BOj7Yg2sRd&qh+m!@20s6!Rhjl);x;zRVOZEA6LHfT6RU-~g$7>R6 z9qnu9iqgenMowuvQU|jK+aP>1D zT<7!=aGkEW!S zS(e1WqU#XVEe<@AZb?niekkuGkh2^gIq!7TXL#%}o7qmGWp=25lQaKLM{!1+QYuP$ zhYotHSi4L3-yd@cr~>t%)fV9p>+(sVM%6*RLEJ?qSz*@V4DpB*BmYI7w@{3v9!qS@|zx+zEWv#I-06EXNDsj1`sE zBl3J%ED`n+Dt+DEfO%%`vJi}nswfSkggnmdYCR^{jp!99v8Gdu7YD0s6+{EhqBf6j zXwUJe7824vzrZovVjKzduMgzej35+Baf%q;+=*X9vP#+%hpVL|D=1s0m8$G;FSNy4 zjp)E-Q!0s(Fswg`;iGSQZ0vBfh=0wqb0x-KM&+VU9Yvu{=ZkT~^hm^aM@Je7z1unv zJW0aa%EDoD+1k@BCETpSQ>w{gU2P|4vxCG+<*Xc{nma6xE>EQstUmzinDJlGQ5v@)pOq39(FkI*HyOIn!mWwxkaOEY`oxjuu3K@xBkr(L*k~(pE1o+!{ z2)%&gJSr~N+t_1Nl|M=g8j7nYd!WQb|5_2LDK|HKeei<KTBzmtQX6Wr?wo0;0aaK^IgM+K^gMWkBbf_3&1Ts}{g<SMNd5*X=l6mze)v
            oP(OI7K}$;1HNw!O<* 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 literal 0 HcmV?d00001 diff --git a/src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Solid-900.otf b/src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Solid-900.otf new file mode 100644 index 0000000000000000000000000000000000000000..a95c71e05dde6fde919b9513a96b73ad03377657 GIT binary patch literal 1031648 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%0ARHp5)~3Zz!I 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 E358lJiGkLD}?t6j%n}@>x6Ff?DII6pVz!@+vI0 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

            +?=x;qDa$Eiyfc~IL)7Gn}`2IGWl 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�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%0Aw3E*L}#Q*|~1w3Y8 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 literal 0 HcmV?d00001 diff --git a/easyApp/Gui/Resources/Fonts/FontAwesome/LICENSE.txt b/src/EasyApp/Gui/Resources/Fonts/FontAwesome/LICENSE.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/FontAwesome/LICENSE.txt rename to src/EasyApp/Gui/Resources/Fonts/FontAwesome/LICENSE.txt diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-Black.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Black.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-Black.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Black.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-BlackItalic.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-BlackItalic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-BlackItalic.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-BlackItalic.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-Bold.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Bold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-Bold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Bold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-BoldItalic.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-BoldItalic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-BoldItalic.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-BoldItalic.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBoldItalic.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBoldItalic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBoldItalic.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBoldItalic.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLight.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLight.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLight.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLight.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLightItalic.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLightItalic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLightItalic.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLightItalic.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-Italic.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Italic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-Italic.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Italic.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-Light.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Light.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-Light.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Light.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-LightItalic.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-LightItalic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-LightItalic.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-LightItalic.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-Regular.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Regular.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-Regular.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Regular.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBold.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBold.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBold.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBoldItalic.ttf b/src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBoldItalic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBoldItalic.ttf rename to src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBoldItalic.ttf diff --git a/easyApp/Gui/Resources/Fonts/Nunito/OFL.txt b/src/EasyApp/Gui/Resources/Fonts/Nunito/OFL.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/OFL.txt rename to src/EasyApp/Gui/Resources/Fonts/Nunito/OFL.txt diff --git a/easyApp/Gui/Resources/Fonts/Nunito/download.txt b/src/EasyApp/Gui/Resources/Fonts/Nunito/download.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/Nunito/download.txt rename to src/EasyApp/Gui/Resources/Fonts/Nunito/download.txt diff --git a/easyApp/Gui/Resources/Fonts/PT_Mono/OFL.txt b/src/EasyApp/Gui/Resources/Fonts/PT_Mono/OFL.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Mono/OFL.txt rename to src/EasyApp/Gui/Resources/Fonts/PT_Mono/OFL.txt diff --git a/easyApp/Gui/Resources/Fonts/PT_Mono/PTMono-Regular.ttf b/src/EasyApp/Gui/Resources/Fonts/PT_Mono/PTMono-Regular.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Mono/PTMono-Regular.ttf rename to src/EasyApp/Gui/Resources/Fonts/PT_Mono/PTMono-Regular.ttf diff --git a/easyApp/Gui/Resources/Fonts/PT_Mono/download.txt b/src/EasyApp/Gui/Resources/Fonts/PT_Mono/download.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Mono/download.txt rename to src/EasyApp/Gui/Resources/Fonts/PT_Mono/download.txt diff --git a/easyApp/Gui/Resources/Fonts/PT_Sans/OFL.txt b/src/EasyApp/Gui/Resources/Fonts/PT_Sans/OFL.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Sans/OFL.txt rename to src/EasyApp/Gui/Resources/Fonts/PT_Sans/OFL.txt diff --git a/easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Bold.ttf b/src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Bold.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Bold.ttf rename to src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Bold.ttf diff --git a/easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-BoldItalic.ttf b/src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-BoldItalic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-BoldItalic.ttf rename to src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-BoldItalic.ttf diff --git a/easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Italic.ttf b/src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Italic.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Italic.ttf rename to src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Italic.ttf diff --git a/easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Regular.ttf b/src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Regular.ttf similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Regular.ttf rename to src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Regular.ttf diff --git a/easyApp/Gui/Resources/Fonts/PT_Sans/download.txt b/src/EasyApp/Gui/Resources/Fonts/PT_Sans/download.txt similarity index 100% rename from easyApp/Gui/Resources/Fonts/PT_Sans/download.txt rename to src/EasyApp/Gui/Resources/Fonts/PT_Sans/download.txt diff --git a/docs/Developer/description.txt b/src/EasyApp/Gui/Resources/Icons/description.txt similarity index 100% rename from docs/Developer/description.txt rename to src/EasyApp/Gui/Resources/Icons/description.txt diff --git a/src/EasyApp/Gui/Style/Colors.qml b/src/EasyApp/Gui/Style/Colors.qml new file mode 100644 index 00000000..b826ecf1 --- /dev/null +++ b/src/EasyApp/Gui/Style/Colors.qml @@ -0,0 +1,142 @@ +pragma Singleton + +import QtQuick +import QtQuick.Controls.Material +import QtCore + +import EasyApp.Gui.Globals as EaGlobals + + +QtObject { + id: object + + // Theme + enum Themes { LightTheme = 0, DarkTheme, SystemTheme } + property int theme: Colors.Themes.SystemTheme + onThemeChanged: console.debug(`App color theme: ${theme} (0 - light, 1 - dark, 2 - system)`) + + property int systemColorScheme: -1 + onSystemColorSchemeChanged: console.debug(`System color scheme: ${systemColorScheme} (0 - unknown, 1 - light, 2 - dark)`) + + property bool isDarkPalette: { + if (theme === Colors.Themes.DarkTheme) { + return true + } else if (theme === Colors.Themes.LightTheme) { + return false + } else if (theme === Colors.Themes.SystemTheme) { + if (systemColorScheme === Qt.ColorScheme.Dark) { + return true + } else if (systemColorScheme === Qt.ColorScheme.Light) { + return false + } else if (systemColorScheme === Qt.ColorScheme.Unknown) { + return false + } else { + return false + } + } else { + return false + } + } + onIsDarkPaletteChanged: console.debug(`Is dark palette: ${isDarkPalette}`) + + property color themeAccent: isDarkPalette ? "#4ec1ef": "#00a3e3" + property color themePrimary: isDarkPalette ? "#111" : "#bbb" + + property color themeBackground: isDarkPalette ? "#303030" : "#e9e9e9" + property color themeBackgroundDisabled: isDarkPalette ? "#333" : "#e9e9e9" + property color themeBackgroundHovered1: isDarkPalette ? "#353535" : "#fefefe" + property color themeBackgroundHovered2: isDarkPalette ? "#3a3a3a" : "#f7f7f7" + + property color themeForeground: isDarkPalette ? "#eee" : "#333" + property color themeForegroundMinor: isDarkPalette ? "#888" : "#aaa" + property color themeForegroundDisabled: isDarkPalette ? "#555": "#bbb" // control.Material.hintTextColor + property color themeForegroundHovered: themeAccent + property color themeForegroundHighlight: isDarkPalette ? '#FFAB91' : '#FF5722' + + // Application window + property color appBorder: isDarkPalette ? "#292929" : "#ddd" + + // Application bar (on top of the application window) + property color appBarBackground: themeBackground + property color appBarForeground: isDarkPalette ? "#eee" : "#222" + property color appBarBorder: isDarkPalette ? "#2e2e2e" : "#d6d6d6" + + property color appBarButtonBackground: "transparent" + property color appBarButtonBackgroundDisabled: "transparent" + property color appBarButtonBackgroundHovered: isDarkPalette ? "#20666666" : "#15666666" // temporary disable because of problems with RemoteController if parent: Overlay.overlay !? + property color appBarButtonBackgroundPressed: isDarkPalette ? "#50666666" : "#25666666" + property color appBarButtonForeground: isDarkPalette ? "#ccc" : "#444" + + property color appBarComboBoxBackground: isDarkPalette ? "#10666666" : "#70ffffff" + property color appBarComboBoxBackgroundHovered: isDarkPalette ? "#50666666" : "#bbffffff" + property color appBarComboBoxBackgroundPressed: isDarkPalette ? "#90666666" : "#ffffffff" + property color appBarComboBoxBorder: isDarkPalette ? Qt.darker(appBarBackground, 1.1) : Qt.darker(appBarBackground, 1.05) + + // Content + property color contentBackground: isDarkPalette ? "#3a3a3a" : "#f4f4f4" + property color mainContentBackground: isDarkPalette ? "#444" : "#fff" + property color mainContentBackgroundHalfTransparent: isDarkPalette ? "#E6444444" : "#E6ffffff" + + // SideBar + property color sideBarButtonBackground: appBarBackground + property color sideBarButtonBackgroundHovered: isDarkPalette ? "#50666666" : "#e0e0e0" + property color sideBarButtonBackgroundPressed: isDarkPalette ? "#50666666" : "#ccc" + property color sideBarButtonForeground: isDarkPalette ? "#ccc" : "#444" + + // Status bar + property color statusBarBackground: appBarBackground + property color statusBarTextForeground: isDarkPalette ? "#888": "#777" + property color statusBarIconForeground: isDarkPalette ? "#666": "#999" + + // Dialogs + property color dialogBackground: contentBackground//themeBackground + property color dialogOutsideBackground: isDarkPalette ? "#80000000" : "#80ffffff" + property color dialogForeground: themeForeground + + // TextView + property color textViewForeground: themeForeground + property color textViewForegroundDisabled: themeForegroundDisabled + property color textViewBackground: themeBackgroundHovered1 + property color textViewBackgroundDisabled: themeBackgroundHovered2 + + // Text + property color link: themeAccent + property color linkHovered: isDarkPalette ? Qt.darker(themeAccent, 1.1) : Qt.lighter(themeAccent, 1.15) + + // Charts + //property var chartForegrounds: ['#00a3e3', '#ff7f50', '#6b8e23'] + property var chartForegrounds: isDarkPalette ? ['#EF9A9A', '#B0BEC5', '#C5E1A5'] : ['#F44336', '#607D8B', '#8BC34A'] // red (M), blue grey (M), light green (M) + property var chartForegroundsExtra: isDarkPalette ? ['#FFCC80', '#A5D6A7', '#81D4FA', '#BCAAA4'] : ['#FF9800', '#4CAF50', '#03A9F4', '#795548'] // orange (M), green (M), light blue (M), brown + property var models: isDarkPalette ? ['#FFCC80', '#80CBC4', '#F48FB1'] : ['#FF9800', '#009688', '#E91E63'] // orange (M), teal (M), pink (M) + property color chartForeground: themeForeground + property color chartBackground: mainContentBackground + property color chartPlotAreaBackground: mainContentBackground + property color chartAxis: isDarkPalette ? "#2a2a2a" : "#ddd" + property color chartGridLine: isDarkPalette ? "#3a3a3a" : "#eee" + property color chartMinorGridLine: themeBackground + property color chartLabels: chartForeground + property color chartLine: "coral" + + // Table + property color tableHighlight: isDarkPalette ? "#204ec1ef": "#2000a3e3" + + // ToolTip + property color toolTipBackground: mainContentBackground + property color toolTipBorder: appBarBorder + + // Colors + property color blue: isDarkPalette ? '#81D4FA' : '#39abdf' + property color red: isDarkPalette ? '#FFAB91' : '#FF5722' + property color green: isDarkPalette ? '#C5E1A5' : '#7aaa42' + property color grey: isDarkPalette ? "#222": "#666" + property color orange: isDarkPalette ? '#FFCC80' : '#FF9800' + + // Persistent settings + + property var settings: Settings { + location: EaGlobals.Vars.settingsFile // Gives WASM error on run + category: 'Preferences.Appearance' + property alias theme: object.theme + } + +} diff --git a/easyApp/Gui/Style/Fonts.qml b/src/EasyApp/Gui/Style/Fonts.qml similarity index 97% rename from easyApp/Gui/Style/Fonts.qml rename to src/EasyApp/Gui/Style/Fonts.qml index e72d0a65..03ca8482 100644 --- a/easyApp/Gui/Style/Fonts.qml +++ b/src/EasyApp/Gui/Style/Fonts.qml @@ -1,6 +1,6 @@ pragma Singleton -import QtQuick 2.15 +import QtQuick QtObject { diff --git a/easyApp/Gui/Style/Sizes.qml b/src/EasyApp/Gui/Style/Sizes.qml similarity index 92% rename from easyApp/Gui/Style/Sizes.qml rename to src/EasyApp/Gui/Style/Sizes.qml index 8a1932c3..8ae3299b 100644 --- a/easyApp/Gui/Style/Sizes.qml +++ b/src/EasyApp/Gui/Style/Sizes.qml @@ -1,7 +1,7 @@ pragma Singleton -import QtQuick 2.15 -import QtQuick.Window 2.15 +import QtQuick +import QtQuick.Window QtObject { @@ -30,14 +30,14 @@ QtObject { property int appBarSpacing: fontPixelSize // Sidebar - readonly property int sideBarWidth: Math.round(fontPixelSize * 39.6) + readonly property int sideBarWidth: Math.round(fontPixelSize * 41.7) property int groupBoxSpacing: fontPixelSize property int sideBarPadding: fontPixelSize property int sideBarContentWidth: sideBarWidth - groupBoxSpacing - sideBarPadding - property int sideBarButtonHeight: Math.round(fontPixelSize * 2.5) + property int sideBarButtonHeight: Math.round(fontPixelSize * 2.75) // Sidebar Table - property int tableColumnSpacing: Math.round(fontPixelSize * 0.5) + property int tableColumnSpacing: Math.round(fontPixelSize * 0.25) // Math.round(fontPixelSize * 0.5) property int tableRowHeight: Math.round(fontPixelSize * 2.75) property int tableMaxRowCountShow: 5 property int tableHighlightMoveDuration: 100 @@ -77,6 +77,11 @@ QtObject { // Scales property int defaultScale: 100 + // Charts + property int measuredLineWidth: 1 + property int calculatedLineWidth: 2 + property int measuredScatterSize: 5 + // Functions function scalePx(size) { return Math.round(size * (defaultScale / 100)) diff --git a/easyApp/Gui/Style/Times.qml b/src/EasyApp/Gui/Style/Times.qml similarity index 67% rename from easyApp/Gui/Style/Times.qml rename to src/EasyApp/Gui/Style/Times.qml index 7fa8c2b8..f8241bb0 100644 --- a/easyApp/Gui/Style/Times.qml +++ b/src/EasyApp/Gui/Style/Times.qml @@ -1,12 +1,12 @@ pragma Singleton -import QtQuick 2.15 +import QtQuick QtObject { property int themeChange: 1000 property int translationChange: 300 property int introAnimation: 2000 - property int chartAnimation: 1000 + property int chartAnimation: 250 //1000 } diff --git a/easyApp/Gui/Style/qmldir b/src/EasyApp/Gui/Style/qmldir similarity index 100% rename from easyApp/Gui/Style/qmldir rename to src/EasyApp/Gui/Style/qmldir diff --git a/src/EasyApp/Logic/Logging.py b/src/EasyApp/Logic/Logging.py new file mode 100644 index 00000000..7b0b28b2 --- /dev/null +++ b/src/EasyApp/Logic/Logging.py @@ -0,0 +1,200 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +# https://docs.python.org/3/library/logging.html +# https://docs.python.org/3/howto/logging-cookbook.html +# https://stackoverflow.com/questions/384076/how-can-i-color-python-logging-output +# https://stackoverflow.com/questions/42936810/python-logging-module-set-formatter-dynamically +# https://doc.qt.io/qt-6/qtquick-debugging.html +# https://raymii.org/s/articles/Disable_logging_in_QT_and_QML.html + +import os +import sys +import time +import pathlib +import inspect +import logging + +from PySide6.QtCore import QObject, Signal, Property, QtMsgType, QUrl, QSettings + + +LOGGER_LEVELS = { + 'disabled': 40, + 'error': 30, # logging.CRITICAL, logging.ERROR, QtMsgType.QtSystemMsg, QtMsgType.QtCriticalMsg, QtMsgType.QtFatalMsg + 'info': 20, # logging.INFO, logging.WARNING, QtMsgType.QtInfoMsg, QtMsgType.QtWarningMsg + 'debug': 10 # logging.NOTSET, logging.DEBUG, QtMsgType.QtDebugMsg +} + +COUNT_WIDTH = 5 +CATEGORY_WIDTH = 4 +LEVEL_WIDTH = 7 +FUNC_NAME_WIDTH = 34 +MAIN_MSG_WIDTH = 150 + +class Logger: + + def __init__(self): + self._count = 0 + self._level = self._getLevelFromSettings() + self._getLevelFromSettings() + self._startTime = time.time() + + #self._consoleFormat = logging.Formatter('{asctime}.{msecs:03.0f} {message}', datefmt='%H:%M:%S', style='{') + self._consoleFormat = logging.Formatter('{message}', datefmt='%H:%M:%S', style='{') + self._consoleHandler = logging.StreamHandler() + self._consoleHandler.setFormatter(self._consoleFormat) + + self._logger = logging.getLogger() + self._logger.setLevel(logging.NOTSET) + self._logger.addHandler(self._consoleHandler) + + def debug(self, msg): + level = 'debug' + self._pyMessageHandler(level, msg) + + def info(self, msg): + level = 'info' + self._pyMessageHandler(level, msg) + + def error(self, msg): + level = 'error' + self._pyMessageHandler(level, msg) + + def qmlMessageHandler(self, msgType, context, msg): + level = Logger.qtMsgTypeToCustomLevel(msgType) + if LOGGER_LEVELS[level] < LOGGER_LEVELS[self._level]: + return + category = 'qml' + funcName = context.function + filePath = QUrl(context.file).toLocalFile() + if filePath == '': + filePath = None + lineNo = context.line + self._print(msg, level, category, funcName, filePath, lineNo) + + def _pyMessageHandler(self, level, msg): + if LOGGER_LEVELS[level] < LOGGER_LEVELS[self._level]: + return + category = 'py' + caller = inspect.getframeinfo(sys._getframe(2)) + funcName = caller.function + filePath = os.path.relpath(caller.filename) + lineNo = caller.lineno + self._print(msg, level, category, funcName, filePath, lineNo) + + def _print(self, msg, level, category, funcName, filePath, lineNo): + msg = msg.replace('file://', '') + rest = Logger.rest(msg, MAIN_MSG_WIDTH) + msg = self._formattedConsoleMsg(msg, level, category, funcName, filePath, lineNo) + self._logger.debug(msg) + if rest: + self._logger.debug(rest) + + def _getLevelFromSettings(self): + # NEED FIX: Duplication from main.py + appName = 'EasyDiffraction' # NEED FIX + homeDirPath = pathlib.Path.home() + settingsIniFileName = 'settings.ini' + settingsIniFilePath = str(homeDirPath.joinpath(f'.{appName}', settingsIniFileName)) + settings = QSettings(settingsIniFilePath, QSettings.IniFormat) + level = settings.value("Preferences.Develop/loggingLevel", 'debug') + level = level.lower() + return level + + def _timing(self): + endTime = time.time() + timing = endTime - self._startTime + self._startTime = endTime + if timing < 0.001: + return ' ' * 8 + elif timing < 60: + return f'{timing:7.3f}s' + elif timing < 3600: + timing /= 60 + return f'{timing:7.3f}m' + else: + timing /= 3600 + return f'{timing:7.3f}h' + + def _colorize(self, txt, level, category): + # https://www.unixtutorial.org/how-to-show-colour-numbers-in-unix-terminal/ + grey = '\x1b[38;5;252m' + green = '\x1b[38;5;149m' + blue = '\x1b[38;5;81m' + yellow = '\x1b[38;5;222m' + red = '\x1b[38;5;204m' + reset = '\x1b[0m' + if level == 'error': + return f'{red}{txt}{reset}' + elif level == 'info': + return f'{blue}{txt}{reset}' + elif level == 'debug': + if category == 'py': + return f'{yellow}{txt}{reset}' + elif category == 'qml': + return f'{green}{txt}{reset}' + else: + return f'{grey}{txt}{reset}' + return txt + + def _formattedConsoleMsg(self, msg, level, category, funcName, filePath, lineNo): + self._count += 1 + if funcName is None: + funcName = '' + sourceUrl = '' + try: + cwd = os.getcwd() + parent = os.path.join(cwd, '..') + start = os.path.abspath(parent) + relativePath = os.path.relpath(filePath, start) + fileUrl = f'file:///{relativePath}' + sourceUrl = f'{fileUrl}:{lineNo}' + except: + pass + txt = f'{self._count:>{COUNT_WIDTH}d} {self._timing()} {category:>{CATEGORY_WIDTH}} {level:<{LEVEL_WIDTH}} {msg:<{MAIN_MSG_WIDTH}.{MAIN_MSG_WIDTH}} {funcName:<{FUNC_NAME_WIDTH}.{FUNC_NAME_WIDTH}} {sourceUrl}' + txt = self._colorize(txt, level, category) + return txt + + @staticmethod + def qtMsgTypeToCustomLevel(msgType): + return { + QtMsgType.QtDebugMsg: 'debug', + QtMsgType.QtInfoMsg: 'info', + QtMsgType.QtWarningMsg: 'info', + QtMsgType.QtCriticalMsg: 'error', + QtMsgType.QtSystemMsg: 'error', + QtMsgType.QtFatalMsg: 'error' + }[msgType] + + @staticmethod + def rest(s, n): + splitted = [' '*28*bool(i) + s[i: i + n] for i in range(0, len(s), n)] + joined = '\n'.join(splitted[1:]) + return joined + + +console = Logger() + + +class LoggerLevelHandler(QObject): + levelChanged = Signal() + + def __init__(self, parent=None): + super().__init__(parent) + self._level = 'debug' + + # QML accessible properties + + @Property(str, notify=levelChanged) + def level(self): + return self._level + + @level.setter + def level(self, newValue): + newValue = newValue.lower() + if self._level == newValue: + return + self._level = newValue + self.levelChanged.emit() + console._level = self._level diff --git a/easyApp/Logic/Maintenance.py b/src/EasyApp/Logic/Maintenance.py similarity index 86% rename from easyApp/Logic/Maintenance.py rename to src/EasyApp/Logic/Maintenance.py index a0e6b98f..398e8b35 100644 --- a/easyApp/Logic/Maintenance.py +++ b/src/EasyApp/Logic/Maintenance.py @@ -4,8 +4,10 @@ import urllib.request import sys -from PySide2.QtCore import QObject, QProcess, Property, Signal, Slot -from PySide2.QtWidgets import QApplication +from PySide6.QtCore import QObject, QProcess, Property, Signal, Slot +from PySide6.QtWidgets import QApplication + +from EasyApp.Logic.Logging import console class Updater(QObject): @@ -44,7 +46,7 @@ def __init__(self, parent=None): @Slot() def checkUpdate(self): - print(f"* Updater checkUpdate called") + console.debug(f"Updater checkUpdate called") if self._process.state() == QProcess.Running: return @@ -57,7 +59,7 @@ def installUpdate(self): """ Start the external maintenance tool as detached process """ - print(f"* Updater installUpdate called") + console.debug(f"Updater installUpdate called") if self._process.state() == QProcess.Running: return @@ -109,7 +111,7 @@ def _createUpdaterProcess(self): return process def _onStarted(self): - print("* Updater process started") + console.debug("Updater process started") self._web_version = "" self._web_date = "" self._error_message = "" @@ -118,7 +120,7 @@ def _onStarted(self): self.errorMessageChanged.emit() def _onFinished(self, exit_code: int, exit_status: QProcess.ExitStatus): - print(f"* Updater process finished with exit code: '{exit_code}' and exit status: '{exit_status}'") + console.debug(f"Updater process finished with exit code: '{exit_code}' and exit status: '{exit_status}'") # Get updater process output and error, if any std_out = self._process.readAllStandardOutput().data().decode('utf-8') @@ -126,13 +128,13 @@ def _onFinished(self, exit_code: int, exit_status: QProcess.ExitStatus): # Debug printing if std_out: - print(f"* Updater standard output:\n{std_out}") + console.debug(f"Updater standard output:\n{std_out}") if std_err: - print(f"* Updater standard error:\n{std_err}") + console.debug(f"Updater standard error:\n{std_err}") # Something went wrong if exit_code != 0 or exit_status != QProcess.ExitStatus.NormalExit: - print(f"* Updater process failed") + console.debug(f"Updater process failed") self._error_message = f"Updater process finished with\n* exit code: {exit_code} \n* exit status: {exit_status}" self.errorMessageChanged.emit() if not self.silentCheck: @@ -140,7 +142,7 @@ def _onFinished(self, exit_code: int, exit_status: QProcess.ExitStatus): return # Process finished succesfully - print(f"* Updater process succeeded; checking for updates...") + console.debug(f"Updater process succeeded; checking for updates...") # Check if a new version of any of the app component is found pattern = r'' @@ -148,13 +150,13 @@ def _onFinished(self, exit_code: int, exit_status: QProcess.ExitStatus): # No new versions are found if not matches: - print("* Updater did not find any updates") + console.debug("Updater did not find any updates") if not self.silentCheck: self.updateNotFound.emit() return # New version is found - print(f"* Updater found component(s) with new version(s): {matches}") + console.debug(f"Updater found component(s) with new version(s): {matches}") self._web_version = matches[0] # TODO: Update this if multiple components are available self._web_date = self._getWebDate() self._release_notes = self._getReleaseNotes() @@ -166,7 +168,7 @@ def _onFinished(self, exit_code: int, exit_status: QProcess.ExitStatus): self.updateFound.emit() def _onErrorOccurred(self, error): - print(f"* Updater process got error: '{error}'") + console.debug(f"Updater process got error: '{error}'") self._error_message = error self.errorMessageChanged.emit() if not self.silentCheck: @@ -177,7 +179,7 @@ def _getAppChangelog(self): try: return pathlib.Path(path).read_text() except Exception as exception: - print(f"* Failed to read local file {path} with exception {exception}") + console.debug(f"Failed to read local file {path} with exception {exception}") return "" def _getWebChangelog(self): @@ -186,7 +188,7 @@ def _getWebChangelog(self): with urllib.request.urlopen(url) as f: return f.read().decode('utf-8') except Exception as exception: - print(f"* Failed to read web file {url} with exception {exception}") + console.debug(f"Failed to read web file {url} with exception {exception}") return "" def _getReleaseNotes(self): diff --git a/easyApp/Logic/Maintenance/Updater.qml b/src/EasyApp/Logic/Maintenance/Updater.qml similarity index 87% rename from easyApp/Logic/Maintenance/Updater.qml rename to src/EasyApp/Logic/Maintenance/Updater.qml index d87db269..499a42d2 100644 --- a/easyApp/Logic/Maintenance/Updater.qml +++ b/src/EasyApp/Logic/Maintenance/Updater.qml @@ -1,4 +1,4 @@ -import QtQuick 2.15 +import QtQuick QtObject { diff --git a/easyApp/Logic/Maintenance/qmldir b/src/EasyApp/Logic/Maintenance/qmldir similarity index 100% rename from easyApp/Logic/Maintenance/qmldir rename to src/EasyApp/Logic/Maintenance/qmldir diff --git a/easyApp/Logic/Translate.py b/src/EasyApp/Logic/Translate.py similarity index 82% rename from easyApp/Logic/Translate.py rename to src/EasyApp/Logic/Translate.py index e70af974..21a0da69 100644 --- a/easyApp/Logic/Translate.py +++ b/src/EasyApp/Logic/Translate.py @@ -3,10 +3,9 @@ import os -from PySide2.QtCore import QObject, QTranslator, QLocale, Slot -from PySide2.QtWidgets import QApplication -from PySide2.QtQml import QQmlApplicationEngine -from easyCore.Utils.io.xml import XMLSerializer +from PySide6.QtCore import QObject, QTranslator, QLocale, Property, Slot +#from PySide6.QtWidgets import QApplication +#from PySide6.QtQml import QQmlApplicationEngine class Translator(QObject): def __init__(self, app, engine, translations_path, languages): @@ -19,6 +18,26 @@ def __init__(self, app, engine, translations_path, languages): self._default_language_code = 'en' self.selectDefaultLanguage() + @Property('QVariant', constant=True) + def languages(self): + return self._languages + + @Property('QVariant', constant=True) + def defaultLanguageIndex(self): + for index, language in enumerate(self._languages): + if language['code'] == self._default_language_code: + return index + return 0 + + @Slot(int) + def selectLanguage(self, index): + self._app.removeTranslator(self._translator) + translation_file_path = self.translationFilePath(index) + if translation_file_path is not None: + self._translator.load(translation_file_path) + self._app.installTranslator(self._translator) + self._engine.retranslate() + def sortByCode(self, languages): return sorted(languages, key=lambda k: k['code']) @@ -44,26 +63,5 @@ def systemLanguageIndex(self): def selectSystemLanguage(self): self.selectLanguage(self.systemLanguageIndex()) - @Slot(int) - def selectLanguage(self, index): - self._app.removeTranslator(self._translator) - translation_file_path = self.translationFilePath(index) - if translation_file_path is not None: - self._translator.load(translation_file_path) - self._app.installTranslator(self._translator) - self._engine.retranslate() - - @Slot(result=str) - def languagesAsXml(self): - xml = XMLSerializer().encode({"item": self._languages}) - return xml - - @Slot(result=int) - def defaultLanguageIndex(self): - for index, language in enumerate(self._languages): - if language['code'] == self._default_language_code: - return index - return 0 - def selectDefaultLanguage(self): - self.selectLanguage(self.defaultLanguageIndex()) + self.selectLanguage(self.defaultLanguageIndex) diff --git a/easyApp/Logic/Utils/Utils.py b/src/EasyApp/Logic/Utils/Utils.py similarity index 100% rename from easyApp/Logic/Utils/Utils.py rename to src/EasyApp/Logic/Utils/Utils.py diff --git a/easyApp/Logic/Utils/__init__.py b/src/EasyApp/Logic/Utils/__init__.py similarity index 100% rename from easyApp/Logic/Utils/__init__.py rename to src/EasyApp/Logic/Utils/__init__.py diff --git a/easyApp/Logic/__init__.py b/src/EasyApp/Logic/__init__.py similarity index 100% rename from easyApp/Logic/__init__.py rename to src/EasyApp/Logic/__init__.py diff --git a/src/EasyApp/__init__.py b/src/EasyApp/__init__.py new file mode 100644 index 00000000..a7edaabe --- /dev/null +++ b/src/EasyApp/__init__.py @@ -0,0 +1,7 @@ +import importlib.metadata + +# Set package version +try: + __version__ = importlib.metadata.version("EasyApp") +except ImportError: + __version__ = "development" \ No newline at end of file diff --git a/tests/description.txt b/tests/description.txt deleted file mode 100644 index e69de29b..00000000

            GRyfg%3LkEncR(R7LeupP} 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 literal 0 HcmV?d00001 diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.png b/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5d4319e4f08aae9fda060afc38c3c9efea1a52 GIT binary patch literal 69247 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 BG3o#S literal 0 HcmV?d00001 diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.svg b/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.svg new file mode 100644 index 00000000..5aab6b19 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/ESS.png b/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/ESS.png new file mode 100644 index 0000000000000000000000000000000000000000..22c09d2e32bc6ff6f97f738225ce8847b4c7daa8 GIT binary patch literal 5161 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 + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaElements.StatusBar { + + visible: EaGlobals.Vars.appBarCurrentIndex !== 0 + + EaElements.StatusBarItem { + keyIcon: 'archive' + keyText: qsTr('Project') + valueText: Globals.BackendWrapper.statusProject + ToolTip.text: qsTr('Current project') + } + + EaElements.StatusBarItem { + keyIcon: 'layer-group' + keyText: qsTr('Models') + valueText: Globals.BackendWrapper.statusPhasesCount + ToolTip.text: qsTr('Number of models added') + } + + EaElements.StatusBarItem { + keyIcon: 'microscope' + keyText: qsTr('Experiments') + valueText: Globals.BackendWrapper.statusExperimentsCount + ToolTip.text: qsTr('Number of experiments added') + } + + EaElements.StatusBarItem { + keyIcon: 'calculator' + keyText: qsTr('Calculator') + valueText: Globals.BackendWrapper.statusCalculator + ToolTip.text: qsTr('Current calculation engine') + } + + EaElements.StatusBarItem { + keyIcon: 'level-down-alt' + keyText: qsTr('Minimizer') + valueText: Globals.BackendWrapper.statusMinimizer + ToolTip.text: qsTr('Current minimization engine and method') + } + + EaElements.StatusBarItem { + keyIcon: 'th-list' + keyText: qsTr('Parameters') + valueText: Globals.BackendWrapper.statusVariables + ToolTip.text: qsTr('Number of parameters: total, free and fixed') + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/qmldir b/examples/IntermediatePy/src/IntermediatePy/Gui/qmldir new file mode 100644 index 00000000..d3151d58 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/qmldir @@ -0,0 +1,4 @@ +module Gui + +ApplicationWindow ApplicationWindow.qml +StatusBar StatusBar.qml diff --git a/examples/IntermediatePy/src/IntermediatePy/main.py b/examples/IntermediatePy/src/IntermediatePy/main.py new file mode 100644 index 00000000..e83b0ca1 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/main.py @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from pathlib import Path +import sys + +from PySide6.QtGui import QGuiApplication +from PySide6.QtQml import QQmlApplicationEngine, qmlRegisterSingletonType + +# It is usually assumed that the EasyApp package is already installed in the desired python environment. +# If this is not the case, and if the example is run from the EasyApp repository, one need to add the path to the +# EasyApp source code. +CURRENT_DIR = Path(__file__).parent # path to qml components of the current project +EASYAPP_DIR = CURRENT_DIR / '..' / '..' / '..' / '..' / 'src' # path to qml components of the easyapp module +sys.path.append(str(EASYAPP_DIR)) + +from Backends.real_backend import Backend + + +if __name__ == '__main__': + # Register the Backend class as a singleton type for QML + # This singleton object will be accessible in QML as follows: + # import Backends 1.0 as Backends OR import Backends as Backends + # property var activeBackend: Backends.PyBackend + qmlRegisterSingletonType(Backend, 'Backends', 1, 0, 'PyBackend') + + # Create Qt application + app = QGuiApplication(sys.argv) + + # Create the QML application engine + engine = QQmlApplicationEngine() + + # Add the paths where QML searches for components + engine.addImportPath(CURRENT_DIR) + engine.addImportPath(EASYAPP_DIR) + + # Load the main QML component + engine.load(CURRENT_DIR / 'main.qml') + + # Start the application event loop + if not engine.rootObjects(): + sys.exit(-1) + sys.exit(app.exec()) diff --git a/examples/IntermediatePy/src/IntermediatePy/main.qml b/examples/IntermediatePy/src/IntermediatePy/main.qml new file mode 100644 index 00000000..1c7c0070 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/main.qml @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import Gui as Gui + + +Gui.ApplicationWindow { + + id: applicationWindow // applicationWindow is globally accessible + +} diff --git a/examples/description.txt b/examples/description.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/pyproject.toml b/pyproject.toml index 1d3c8584..89b17b9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,28 +1,33 @@ -# POETRY CONFIG - [build-system] -requires = ["poetry>=1.0"] -build-backend = "poetry.masonry.api" - -[tool.poetry] -name = "easyApp" -version = "0.1.0" -description = "The application skeleton in the easy universe." -license = "BSD-3-Clause" -authors = ["Andrew Sazonov", "Simon Ward"] -readme = "README.md" -homepage = "https://github.com/easyScience/easyApp" -documentation = "https://github.com/easyScience/easyApp" -include = ["CHANGELOG.md"] -packages = [ { include = "easyApp" } ] +requires = ['hatchling'] +build-backend = 'hatchling.build' -[tool.poetry.dependencies] -python = '^3.7.0, <3.10' -dicttoxml = "^1.7.4" -requests = "^2.25.1" -PySide2 = '^5.15.2' +[project] +name = 'EasyApp' +version = '0.6.0' +description = 'Collection of graphical components to quickly create cross-platform applications in the EasyScience universe.' +authors = [ + {name = 'Andrew Sazonov', email = 'andrew.sazonov@ess.eu'} +] +license = {file = 'LICENSE'} +classifiers = [ + 'Development Status :: 4 - Beta', + 'License :: OSI Approved :: BSD License', + 'Programming Language :: Other', + 'Programming Language :: Python :: 3', + 'Operating System :: MacOS', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: POSIX :: Linux' +] +requires-python = '>=3.10' +dependencies = [ + 'PySide6>=6.6,<6.7' +] -[tool.poetry.dev-dependencies] -pytest = "^5.2" +[project.urls] +homepage = 'https://app.easyscience.software' +source = 'https://github.com/EasyScience/EasyApp' +tracker = 'https://github.com/EasyScience/EasyApp/issues' -# CUSTOM CONFIG +[tool.hatch.build.targets.wheel] +packages = ['src/EasyApp'] diff --git a/resources/images/ea_logo.svg b/resources/images/ea_logo.svg new file mode 100644 index 00000000..bae13662 --- /dev/null +++ b/resources/images/ea_logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/images/ea_logo_wfont.svg b/resources/images/ea_logo_wfont.svg new file mode 100644 index 00000000..ccab6452 --- /dev/null +++ b/resources/images/ea_logo_wfont.svg @@ -0,0 +1,34 @@ + + + + + + + + + + easyapp + + + + + + + + + + + \ No newline at end of file diff --git a/resources/images/vscode_debug.jpg b/resources/images/vscode_debug.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4adc396db7ace44ce52221aec30bec97ea1bd54f GIT binary patch literal 50517 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 { + loadSucceededStatus = false + if (loadRequest.status === WebEngineView.LoadSucceededStatus) { + loadSucceededStatus = true + } + } + + onXAxisTitleChanged: { + if (loadSucceededStatus) { + setXAxisTitle() + redrawPlot() + } + } + + onYAxisTitleChanged: { + if (loadSucceededStatus) { + setYAxisTitle() + redrawPlot() + } + } + + onXMinChanged: { + if (loadSucceededStatus) { + setXMin() + redrawPlot() + } + } + + onXMaxChanged: { + if (loadSucceededStatus) { + setXMax() + redrawPlot() + } + } + + onYMinChanged: { + if (loadSucceededStatus) { + setYMin() + redrawPlot() + } + } + + onYMaxChanged: { + if (loadSucceededStatus) { + setYMax() + redrawPlot() + } + } + + onXDataChanged: { + if (loadSucceededStatus) { + setXData() + } + } + + onMeasuredYDataChanged: { + if (loadSucceededStatus) { + setMeasuredYData() + redrawPlot() + } + } + + onCalculatedYDataChanged: { + if (loadSucceededStatus) { + //setCalculatedYData() + //redrawPlot() + redrawPlotWithNewCalculatedYData() + } + } + + onThemeChanged: { + if (loadSucceededStatus) { + setChartColors() + redrawPlot() + } + } + + onUseWebGLChanged: { + if (loadSucceededStatus) { + toggleUseWebGL() + } + } + + // Logic + + function setChartSizes() { + print('setChartSizes is started') + const sizes = { + 'fontPixelSize': EaStyle.Sizes.fontPixelSize, + 'measuredLineWidth': EaStyle.Sizes.measuredLineWidth, + 'calculatedLineWidth': EaStyle.Sizes.calculatedLineWidth, + 'measuredScatterSize': EaStyle.Sizes.measuredScatterSize + } + runJavaScript(`setChartSizes(${JSON.stringify(sizes)})`, + function(result) { print(result) }) + } + + function setChartColors() { + print('setChartColors is started') + const colors = { + 'chartBackground': String(EaStyle.Colors.chartBackground), + 'chartPlotAreaBackground': String(EaStyle.Colors.chartPlotAreaBackground), + 'chartForeground': String(EaStyle.Colors.chartForeground), + + 'chartAxis': String(EaStyle.Colors.chartAxis), + 'chartGrid': String(EaStyle.Colors.chartGridLine), + + 'measuredScatter': EaStyle.Colors.chartForegroundsExtra[2], + 'measuredLine': EaStyle.Colors.chartForegroundsExtra[2], + 'calculatedLine': EaStyle.Colors.chartForegrounds[0] + } + runJavaScript(`setChartColors(${JSON.stringify(colors)})`, + function(result) { print(result) }) + } + + function redrawPlot() { + runJavaScript(`redrawPlot()`) + } + + function redrawPlotWithNewCalculatedYData() { + runJavaScript(`redrawPlotWithNewCalculatedYData(${JSON.stringify(calculatedYData)})`) + } + + function toggleUseWebGL() { + print(`toggleUseWebGL is started: '${useWebGL}'`) + runJavaScript(`toggleUseWebGL(${JSON.stringify(useWebGL)})`, + function(result) { print(result) }) + } + + function setXAxisTitle() { + print(`setXAxisTitle is started: '${xAxisTitle}'`) + runJavaScript(`setXAxisTitle(${JSON.stringify(xAxisTitle)})`) + } + + function setYAxisTitle() { + print(`setYAxisTitle is started: '${yAxisTitle}'`) + runJavaScript(`setYAxisTitle(${JSON.stringify(yAxisTitle)})`) + } + + function setXMin() { + print(`setXMin is started: '${xMin}'`) + runJavaScript(`setXMin(${xMin})`) + } + + function setXMax() { + print(`setXMax is started: '${xMax}'`) + runJavaScript(`setXMax(${xMax})`) + } + + function setYMin() { + print(`setYMin is started: '${yMin}'`) + runJavaScript(`setYMin(${yMin})`) + } + + function setYMax() { + print(`setYMax is started: '${yMax}'`) + runJavaScript(`setYMax(${yMax})`) + } + + function emptyData() { + print(`emptyData is started`) + runJavaScript(`emptyData()`, + function(result) { print(result) }) + } + + function setXData() { + print(`setXData is started: ${xData.length} points`) + runJavaScript(`setXData(${JSON.stringify(xData)})`, + function(result) { print(result) }) + } + + function setMeasuredYData() { + print(`setMeasuredYData is started: ${measuredYData.length} points`) + runJavaScript(`setMeasuredYData(${JSON.stringify(measuredYData)})`, + function(result) { print(result) }) + } + + function setCalculatedYData() { + runJavaScript(`setCalculatedYData(${JSON.stringify(calculatedYData)})`) + } + +} diff --git a/src/EasyApp/Gui/Charts/Plotly2dHeatmap.qml b/src/EasyApp/Gui/Charts/Plotly2dHeatmap.qml new file mode 100644 index 00000000..80545db9 --- /dev/null +++ b/src/EasyApp/Gui/Charts/Plotly2dHeatmap.qml @@ -0,0 +1,61 @@ +import QtQuick +import QtQuick.Controls +import QtWebEngine + +WebEngineView { + id: chartView + + property bool loadSucceededStatus: false + property string xAxisTitle: '' + property string yAxisTitle: '' + + width: parent.width + height: parent.height + + url: Qt.resolvedUrl('../Html/Plotly2dHeatmap.html') + + onLoadSucceededStatusChanged: { + if (loadSucceededStatus) { + setXAxisTitle(xAxisTitle) + setYAxisTitle(yAxisTitle) + redrawPlot() + } + } + + onLoadingChanged: { + // Bug "loadRequest" is not declared - https://bugreports.qt.io/browse/QTBUG-84746 + //if (loadRequest.status === WebEngineView.LoadSucceededStatus) { + if (loadProgress === 100) { + loadSucceededStatus = true + } + } + + onXAxisTitleChanged: { + if (loadSucceededStatus) { + setXAxisTitle(newTitle) + redrawPlot() + } + } + + onYAxisTitleChanged: { + if (loadSucceededStatus) { + setYAxisTitle(newTitle) + redrawPlot() + } + } + + // Logic + + function redrawPlot() { + chartView.runJavaScript(`redrawPlot()`) + } + + function setXAxisTitle(newTitle) { + runJavaScript(`setXAxisTitle(${JSON.stringify(newTitle)})`) + } + + function setYAxisTitle(newTitle) { + runJavaScript(`setYAxisTitle(${JSON.stringify(newTitle)})`) + } + +} diff --git a/src/EasyApp/Gui/Charts/Plotly3dScatter.qml b/src/EasyApp/Gui/Charts/Plotly3dScatter.qml new file mode 100644 index 00000000..dd23e388 --- /dev/null +++ b/src/EasyApp/Gui/Charts/Plotly3dScatter.qml @@ -0,0 +1,74 @@ +import QtQuick +import QtQuick.Controls +import QtWebEngine + +WebEngineView { + id: chartView + + property bool loadSucceededStatus: false + property string xAxisTitle: '' + property string yAxisTitle: '' + property string zAxisTitle: '' + + width: parent.width + height: parent.height + + url: Qt.resolvedUrl('../Html/Plotly3dScatter.html') + + onLoadSucceededStatusChanged: { + if (loadSucceededStatus) { + setXAxisTitle(xAxisTitle) + setYAxisTitle(yAxisTitle) + setZAxisTitle(zAxisTitle) + redrawPlot() + } + } + + onLoadingChanged: { + // Bug "loadRequest" is not declared - https://bugreports.qt.io/browse/QTBUG-84746 + //if (loadRequest.status === WebEngineView.LoadSucceededStatus) { + if (loadProgress === 100) { + loadSucceededStatus = true + } + } + + onXAxisTitleChanged: { + if (loadSucceededStatus) { + setXAxisTitle(newTitle) + redrawPlot() + } + } + + onYAxisTitleChanged: { + if (loadSucceededStatus) { + setYAxisTitle(newTitle) + redrawPlot() + } + } + + onZAxisTitleChanged: { + if (loadSucceededStatus) { + setZAxisTitle(newTitle) + redrawPlot() + } + } + + // Logic + + function redrawPlot() { + chartView.runJavaScript(`redrawPlot()`) + } + + function setXAxisTitle(newTitle) { + runJavaScript(`setXAxisTitle(${JSON.stringify(newTitle)})`) + } + + function setYAxisTitle(newTitle) { + runJavaScript(`setYAxisTitle(${JSON.stringify(newTitle)})`) + } + + function setZAxisTitle(newTitle) { + runJavaScript(`setZAxisTitle(${JSON.stringify(newTitle)})`) + } + +} diff --git a/src/EasyApp/Gui/Charts/Plotly3dSurface.qml b/src/EasyApp/Gui/Charts/Plotly3dSurface.qml new file mode 100644 index 00000000..1d0cc34a --- /dev/null +++ b/src/EasyApp/Gui/Charts/Plotly3dSurface.qml @@ -0,0 +1,74 @@ +import QtQuick +import QtQuick.Controls +import QtWebEngine + +WebEngineView { + id: chartView + + property bool loadSucceededStatus: false + property string xAxisTitle: '' + property string yAxisTitle: '' + property string zAxisTitle: '' + + width: parent.width + height: parent.height + + url: Qt.resolvedUrl('../Html/Plotly3dSurface.html') + + onLoadSucceededStatusChanged: { + if (loadSucceededStatus) { + setXAxisTitle(xAxisTitle) + setYAxisTitle(yAxisTitle) + setZAxisTitle(zAxisTitle) + redrawPlot() + } + } + + onLoadingChanged: { + // Bug "loadRequest" is not declared - https://bugreports.qt.io/browse/QTBUG-84746 + //if (loadRequest.status === WebEngineView.LoadSucceededStatus) { + if (loadProgress === 100) { + loadSucceededStatus = true + } + } + + onXAxisTitleChanged: { + if (loadSucceededStatus) { + setXAxisTitle(newTitle) + redrawPlot() + } + } + + onYAxisTitleChanged: { + if (loadSucceededStatus) { + setYAxisTitle(newTitle) + redrawPlot() + } + } + + onZAxisTitleChanged: { + if (loadSucceededStatus) { + setZAxisTitle(newTitle) + redrawPlot() + } + } + + // Logic + + function redrawPlot() { + chartView.runJavaScript(`redrawPlot()`) + } + + function setXAxisTitle(newTitle) { + runJavaScript(`setXAxisTitle(${JSON.stringify(newTitle)})`) + } + + function setYAxisTitle(newTitle) { + runJavaScript(`setYAxisTitle(${JSON.stringify(newTitle)})`) + } + + function setZAxisTitle(newTitle) { + runJavaScript(`setZAxisTitle(${JSON.stringify(newTitle)})`) + } + +} diff --git a/src/EasyApp/Gui/Charts/QtCharts1dBase 2.qml b/src/EasyApp/Gui/Charts/QtCharts1dBase 2.qml new file mode 100644 index 00000000..a1807fe0 --- /dev/null +++ b/src/EasyApp/Gui/Charts/QtCharts1dBase 2.qml @@ -0,0 +1,218 @@ +import QtQuick +import QtQuick.Controls +import QtCharts + +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Charts as EaCharts + + +Rectangle { + id: container + + default property alias chartViewData: chartView.data + property bool allowZoom: true + property bool useOpenGL: false + property alias plotArea: chartView.plotArea + property alias axisX: axisX + property alias axisY: axisY + + //property alias bkgSerie: bkgSerie + + + color: 'red' + +ChartView { + id: chartView + + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: -12 // Reset default margins + anchors.topMargin: EaStyle.Sizes.toolButtonHeight + + antialiasing: true + + legend.visible: false + legend.alignment: Qt.AlignBottom + legend.font.family: EaStyle.Fonts.fontFamily + legend.font.pixelSize: EaStyle.Sizes.fontPixelSize + legend.markerShape: Legend.MarkerShapeRectangle + legend.labelColor: EaStyle.Colors.chartForeground + Behavior on legend.labelColor { EaAnimations.ThemeChange {} } + + backgroundRoundness: 0 + backgroundColor: "blue"//EaStyle.Colors.chartBackground + Behavior on backgroundColor { EaAnimations.ThemeChange {} } + + titleFont.family: EaStyle.Fonts.fontFamily + titleFont.pixelSize: EaStyle.Sizes.fontPixelSize + titleFont.bold: true + titleColor: EaStyle.Colors.chartForeground + /* BREAKS ANIMATION ! + Behavior on titleColor { Animations.ThemeChange {} } + */ + + plotAreaColor: "green"//EaStyle.Colors.chartPlotAreaBackground + Behavior on plotAreaColor { EaAnimations.ThemeChange {} } + + animationOptions: ChartView.SeriesAnimations + animationDuration: EaStyle.Times.chartAnimation + + EaCharts.QtCharts1dValueAxis { + id: axisX + //min:0 + //max:3 + + } + + EaCharts.QtCharts1dValueAxis { + id: axisY + //min:0 + //max:2 + } + +/* + LineSeries { + // XYPoint { x: 0; y: 0.5 } + // XYPoint { x: 0.5; y: 2.5 } + + axisX: container.axisX + axisY: container.axisY + + } + + LineSeries { + id: bkgSerie + + axisX: container.axisX + axisY: container.axisY + + useOpenGL: chartView.useOpenGL + + color: EaStyle.Colors.chartForegrounds[1] + width: 2 + + Component.onCompleted: console.error(`bbbbbbbb ${container.axisX}`) + + } + */ + + // Zoom rectangle + Rectangle{ + id: recZoom + property int xScaleZoom: 0 + property int yScaleZoom: 0 + visible: false + transform: Scale { origin.x: 0; origin.y: 0; xScale: recZoom.xScaleZoom; yScale: recZoom.yScaleZoom} + border.color: "#999" + border.width: 1 + opacity: 0.9 + color: "transparent" + Rectangle { + anchors.fill: parent + opacity: 0.5 + color: recZoom.border.color + } + } + + // Left mouse button events + MouseArea { + enabled: allowZoom + anchors.fill: chartView + acceptedButtons: Qt.LeftButton + onPressed: { + recZoom.x = mouseX + recZoom.y = mouseY + recZoom.visible = true + } + onMouseXChanged: { + if (mouseX > recZoom.x) { + recZoom.xScaleZoom = 1 + recZoom.width = Math.min(mouseX, chartView.width) - recZoom.x + } else { + recZoom.xScaleZoom = -1 + recZoom.width = recZoom.x - Math.max(mouseX, 0) + } + } + onMouseYChanged: { + if (mouseY > recZoom.y) { + recZoom.yScaleZoom = 1 + recZoom.height = Math.min(mouseY, chartView.height) - recZoom.y + } else { + recZoom.yScaleZoom = -1 + recZoom.height = recZoom.y - Math.max(mouseY, 0) + } + } + onReleased: { + const x = Math.min(recZoom.x, mouseX) - chartView.anchors.leftMargin + const y = Math.min(recZoom.y, mouseY) - chartView.anchors.topMargin + const width = recZoom.width + const height = recZoom.height + chartView.zoomIn(Qt.rect(x, y, width, height)) + recZoom.visible = false + } + } + + + + // Tool buttons + Row { + id: toolButtons + + x: chartView.plotArea.x + chartView.plotArea.width - width - EaStyle.Sizes.fontPixelSize + y: chartView.plotArea.y - height - EaStyle.Sizes.fontPixelSize + + spacing: 0.25 * EaStyle.Sizes.fontPixelSize + + EaElements.TabButton { + checked: allowZoom + autoExclusive: false + height: EaStyle.Sizes.toolButtonHeight + width: EaStyle.Sizes.toolButtonHeight + borderColor: EaStyle.Colors.chartAxis + fontIcon: "expand" + ToolTip.text: qsTr("Box zoom") + onClicked: allowZoom = !allowZoom + } + + EaElements.TabButton { + checkable: false + height: EaStyle.Sizes.toolButtonHeight + width: EaStyle.Sizes.toolButtonHeight + borderColor: EaStyle.Colors.chartAxis + fontIcon: "sync-alt" + ToolTip.text: qsTr("Reset") + onClicked: chartView.zoomReset() + } + + EaElements.TabButton { +///// checked: chartView.allowHover + autoExclusive: false + height: EaStyle.Sizes.toolButtonHeight + width: EaStyle.Sizes.toolButtonHeight + borderColor: EaStyle.Colors.chartAxis + fontIcon: "comment-alt" + ToolTip.text: qsTr("Hover") +//// onClicked: allowHover = !allowHover + } + } + // Tool buttons + + + + + // Right mouse button events + MouseArea { + anchors.fill: chartView + acceptedButtons: Qt.RightButton + onClicked: chartView.zoomReset() + } +} + +Component.onCompleted: console.error('BBBBBBBBBBBB') + + +} diff --git a/src/EasyApp/Gui/Charts/QtCharts1dBase.qml b/src/EasyApp/Gui/Charts/QtCharts1dBase.qml new file mode 100644 index 00000000..1379eee2 --- /dev/null +++ b/src/EasyApp/Gui/Charts/QtCharts1dBase.qml @@ -0,0 +1,180 @@ +import QtQuick +import QtQuick.Controls +import QtCharts + +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Charts as EaCharts + + +ChartView { + id: chartView + + property alias axisX: axisX + property alias axisY: axisY + + property bool useOpenGL: false + property bool allowZoom: true + property bool allowHover: true + + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: -12 // Reset default margins + + antialiasing: true + + legend.visible: false + legend.alignment: Qt.AlignBottom + legend.font.family: EaStyle.Fonts.fontFamily + legend.font.pixelSize: EaStyle.Sizes.fontPixelSize + legend.markerShape: Legend.MarkerShapeRectangle + legend.labelColor: EaStyle.Colors.chartForeground + Behavior on legend.labelColor { EaAnimations.ThemeChange {} } + + backgroundRoundness: 0 + backgroundColor: EaStyle.Colors.chartBackground + Behavior on backgroundColor { EaAnimations.ThemeChange {} } + + titleFont.family: EaStyle.Fonts.fontFamily + titleFont.pixelSize: EaStyle.Sizes.fontPixelSize + titleFont.bold: true + titleColor: EaStyle.Colors.chartForeground + /* BREAKS ANIMATION ! + Behavior on titleColor { Animations.ThemeChange {} } + */ + + plotAreaColor: EaStyle.Colors.chartPlotAreaBackground + Behavior on plotAreaColor { EaAnimations.ThemeChange {} } + + animationOptions: ChartView.SeriesAnimations + animationDuration: EaStyle.Times.chartAnimation + + // X-axis + EaCharts.QtCharts1dValueAxis { + id: axisX + } + + // Y-axis + EaCharts.QtCharts1dValueAxis { + id: axisY + } + + // Zoom rectangle + Rectangle{ + id: recZoom + + property int xScaleZoom: 0 + property int yScaleZoom: 0 + + visible: false + transform: Scale { + origin.x: 0 + origin.y: 0 + xScale: recZoom.xScaleZoom + yScale: recZoom.yScaleZoom + } + border.color: EaStyle.Colors.appBorder + border.width: 1 + opacity: 0.9 + color: "transparent" + + Rectangle { + anchors.fill: parent + opacity: 0.5 + color: recZoom.border.color + } + } + + // Zoom with left mouse button + MouseArea { + id: zoomMouseArea + + enabled: allowZoom + anchors.fill: chartView + acceptedButtons: Qt.LeftButton + onPressed: { + recZoom.x = mouseX + recZoom.y = mouseY + recZoom.visible = true + } + onMouseXChanged: { + if (mouseX > recZoom.x) { + recZoom.xScaleZoom = 1 + recZoom.width = Math.min(mouseX, chartView.width) - recZoom.x + } else { + recZoom.xScaleZoom = -1 + recZoom.width = recZoom.x - Math.max(mouseX, 0) + } + } + onMouseYChanged: { + if (mouseY > recZoom.y) { + recZoom.yScaleZoom = 1 + recZoom.height = Math.min(mouseY, chartView.height) - recZoom.y + } else { + recZoom.yScaleZoom = -1 + recZoom.height = recZoom.y - Math.max(mouseY, 0) + } + } + onReleased: { + const x = Math.min(recZoom.x, mouseX) - chartView.anchors.leftMargin + const y = Math.min(recZoom.y, mouseY) - chartView.anchors.topMargin + const width = recZoom.width + const height = recZoom.height + chartView.zoomIn(Qt.rect(x, y, width, height)) + recZoom.visible = false + } + } + + // Pan with left mouse button + MouseArea { + property real pressedX + property real pressedY + property int threshold: 1 + + enabled: !zoomMouseArea.enabled + anchors.fill: chartView + acceptedButtons: Qt.LeftButton + onPressed: { + pressedX = mouseX + pressedY = mouseY + } + onMouseXChanged: Qt.callLater(update) + onMouseYChanged: Qt.callLater(update) + + function update() { + const dx = mouseX - pressedX + const dy = mouseY - pressedY + pressedX = mouseX + pressedY = mouseY + + if (dx > threshold) + chartView.scrollLeft(dx) + else if (dx < -threshold) + chartView.scrollRight(-dx) + if (dy > threshold) + chartView.scrollUp(dy) + else if (dy < -threshold) + chartView.scrollDown(-dy) + } + } + + // Reset axes with right mouse button + MouseArea { + anchors.fill: chartView + acceptedButtons: Qt.RightButton + onClicked: resetAxes() + } + + // Logic + + function resetAxes() { + //chartView.zoomReset() + axisX.min = axisX.minAfterReset + axisX.max = axisX.maxAfterReset + axisY.min = axisY.minAfterReset + axisY.max = axisY.maxAfterReset + } + +} diff --git a/src/EasyApp/Gui/Charts/QtCharts1dMeasVsCalc.qml b/src/EasyApp/Gui/Charts/QtCharts1dMeasVsCalc.qml new file mode 100644 index 00000000..948b7085 --- /dev/null +++ b/src/EasyApp/Gui/Charts/QtCharts1dMeasVsCalc.qml @@ -0,0 +1,68 @@ +import QtQuick +import QtQuick.Controls +import QtCharts + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Charts as EaCharts + + +EaCharts.QtCharts1dBase { + id: chartView + + property alias measSerie: measSerie + property alias bkgSerie: bkgSerie + property alias calcSerie: calcSerie + + /* + ScatterSeries { + id: measSerie + + axisX: chartView.axisX + axisY: chartView.axisY + + useOpenGL: chartView.useOpenGL + + markerSize: 5 + borderWidth: 1 + color: EaStyle.Colors.chartForegroundsExtra[2] + borderColor: this.color + } + */ + + LineSeries { + id: measSerie + + axisX: chartView.axisX + axisY: chartView.axisY + + useOpenGL: chartView.useOpenGL + + color: EaStyle.Colors.chartForegroundsExtra[2] + width: 2 + } + + LineSeries { + id: bkgSerie + + axisX: chartView.axisX + axisY: chartView.axisY + + useOpenGL: chartView.useOpenGL + + color: EaStyle.Colors.chartForegrounds[1] + width: 2 + } + + LineSeries { + id: calcSerie + + axisX: chartView.axisX + axisY: chartView.axisY + + useOpenGL: chartView.useOpenGL + + color: EaStyle.Colors.chartForegrounds[0] + width: 2 + } + +} diff --git a/easyApp/Gui/Charts/ValueAxis.qml b/src/EasyApp/Gui/Charts/QtCharts1dValueAxis.qml similarity index 78% rename from easyApp/Gui/Charts/ValueAxis.qml rename to src/EasyApp/Gui/Charts/QtCharts1dValueAxis.qml index bd3416bf..7385f683 100644 --- a/easyApp/Gui/Charts/ValueAxis.qml +++ b/src/EasyApp/Gui/Charts/QtCharts1dValueAxis.qml @@ -1,12 +1,15 @@ -import QtQuick 2.15 -import QtCharts 2.15 +import QtQuick +import QtCharts + +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations ValueAxis { property string title: "" + property real minAfterReset: 0 + property real maxAfterReset: 1 lineVisible: false // Hide axes lines (only grid is visible) @@ -28,5 +31,4 @@ ValueAxis { labelsFont.pixelSize: EaStyle.Sizes.fontPixelSize titleFont.family: EaStyle.Fonts.fontFamily titleFont.pixelSize: EaStyle.Sizes.fontPixelSize - //titleFont.bold: true } diff --git a/src/EasyApp/Gui/Charts/qmldir b/src/EasyApp/Gui/Charts/qmldir new file mode 100644 index 00000000..dacfe70a --- /dev/null +++ b/src/EasyApp/Gui/Charts/qmldir @@ -0,0 +1,14 @@ +module Charts + +QtCharts1dValueAxis QtCharts1dValueAxis.qml + +QtCharts1dBase QtCharts1dBase.qml +QtCharts1dMeasVsCalc QtCharts1dMeasVsCalc.qml + +Plotly1dLine Plotly1dLine.qml +Plotly1dMeasVsCalc Plotly1dMeasVsCalc.qml + +Plotly2dHeatmap Plotly2dHeatmap.qml + +Plotly3dScatter Plotly3dScatter.qml +Plotly3dSurface Plotly3dSurface.qml diff --git a/easyApp/Gui/Components/AboutDialog.qml b/src/EasyApp/Gui/Components/AboutDialog.qml similarity index 79% rename from easyApp/Gui/Components/AboutDialog.qml rename to src/EasyApp/Gui/Components/AboutDialog.qml index 239cc2d3..05928536 100644 --- a/easyApp/Gui/Components/AboutDialog.qml +++ b/src/EasyApp/Gui/Components/AboutDialog.qml @@ -1,15 +1,13 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 -import QtQuick.Controls.Material 2.15 -import QtQuick.Controls.Material.impl 2.15 -import QtQuick.XmlListModel 2.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.impl +import QtQuick.Controls.Material +import QtQuick.Controls.Material.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements -import Gui.Globals 1.0 as ExGlobals EaElements.Dialog { property string appIconPath: "" @@ -20,9 +18,10 @@ EaElements.Dialog { property string appDate: "" property string eulaUrl: "" property string oslUrl: "" - property string essIconPath: "" - property string essUrl: "https://ess.eu" property string description: "" + property var developerIcons: [] + property string developerYearsFrom: "" + property string developerYearsTo: "" property string commit: '' property string commitUrl: '' @@ -111,26 +110,33 @@ EaElements.Dialog { anchors.horizontalCenter: parent.horizontalCenter spacing: EaStyle.Sizes.fontPixelSize * 0.5 - // Text + // About text EaElements.Label { anchors.horizontalCenter: parent.horizontalCenter horizontalAlignment: Text.AlignHCenter text: description } - // ESS icon - EaElements.LinkedImage { + // Developer icons + Row { anchors.horizontalCenter: parent.horizontalCenter - height: EaStyle.Sizes.fontPixelSize * 4 - source: essIconPath - link: essUrl + spacing: EaStyle.Sizes.fontPixelSize + Repeater { + model: developerIcons.length + EaElements.LinkedImage { + anchors.verticalCenter: parent.verticalCenter + height: EaStyle.Sizes.fontPixelSize * developerIcons[index].heightScale + source: developerIcons[index].icon + link: developerIcons[index].url + } + } } } // Footer EaElements.Label { anchors.horizontalCenter: parent.horizontalCenter - text: "© 2019-2022 • All rights reserved" + text: `© ${developerYearsFrom}-${developerYearsTo} • All rights reserved` } } diff --git a/src/EasyApp/Gui/Components/AppBarCentralTabs.qml b/src/EasyApp/Gui/Components/AppBarCentralTabs.qml new file mode 100644 index 00000000..87101edd --- /dev/null +++ b/src/EasyApp/Gui/Components/AppBarCentralTabs.qml @@ -0,0 +1,9 @@ +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + +EaElements.TabBar { + showBottomBorder: true +} diff --git a/src/EasyApp/Gui/Components/AppBarLeftButtons.qml b/src/EasyApp/Gui/Components/AppBarLeftButtons.qml new file mode 100644 index 00000000..3f0cd86c --- /dev/null +++ b/src/EasyApp/Gui/Components/AppBarLeftButtons.qml @@ -0,0 +1,6 @@ +import QtQuick +import QtQuick.Controls + +Row { + spacing: 0 +} diff --git a/src/EasyApp/Gui/Components/AppBarRightButtons.qml b/src/EasyApp/Gui/Components/AppBarRightButtons.qml new file mode 100644 index 00000000..3f0cd86c --- /dev/null +++ b/src/EasyApp/Gui/Components/AppBarRightButtons.qml @@ -0,0 +1,6 @@ +import QtQuick +import QtQuick.Controls + +Row { + spacing: 0 +} diff --git a/easyApp/Gui/Components/ApplicationWindow.qml b/src/EasyApp/Gui/Components/ApplicationWindow.qml similarity index 83% rename from easyApp/Gui/Components/ApplicationWindow.qml rename to src/EasyApp/Gui/Components/ApplicationWindow.qml index 1d2dc6e6..4bbd05cd 100644 --- a/easyApp/Gui/Components/ApplicationWindow.qml +++ b/src/EasyApp/Gui/Components/ApplicationWindow.qml @@ -1,13 +1,12 @@ -import QtQuick 2.15 -import Qt.labs.settings 1.0 +import QtQuick +import QtCore -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements -import easyApp.Gui.Components 1.0 as EaComponents +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents -import Gui.Pages.Home 1.0 as ExHomePage EaElements.ApplicationWindow { id: appWindow @@ -42,8 +41,6 @@ EaElements.ApplicationWindow { color: EaStyle.Colors.appBarBackground Behavior on color { EaAnimations.ThemeChange {} } - opacity: 0 - EaComponents.AppBarLeftButtons { id: appBarLeftButtons @@ -58,8 +55,8 @@ EaElements.ApplicationWindow { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - currentIndex: EaGlobals.Variables.appBarCurrentIndex - onCurrentIndexChanged: EaGlobals.Variables.appBarCurrentIndex = currentIndex + currentIndex: EaGlobals.Vars.appBarCurrentIndex + onCurrentIndexChanged: EaGlobals.Vars.appBarCurrentIndex = currentIndex } EaComponents.AppBarRightButtons { @@ -110,18 +107,18 @@ EaElements.ApplicationWindow { // Application dialogs (invisible at the beginning) EaComponents.PreferencesDialog {} - ExHomePage.AboutDialog {} /////////// // Settings /////////// Settings { - fileName: EaGlobals.Variables.settingsFile - category: 'AppGeometry' + location: EaGlobals.Vars.settingsFile // Gives WASM error on run + category: 'ApplicationWindow.Geometry' property alias x: appWindow.x property alias y: appWindow.y property alias width: appWindow.width property alias height: appWindow.height } + } diff --git a/src/EasyApp/Gui/Components/BasicReport.qml b/src/EasyApp/Gui/Components/BasicReport.qml new file mode 100644 index 00000000..6a6fd9a0 --- /dev/null +++ b/src/EasyApp/Gui/Components/BasicReport.qml @@ -0,0 +1,139 @@ +import QtQuick +import QtQuick.Controls +import QtWebEngine + +import EasyApp.Gui.Style as EaStyle + + +WebEngineView { + id: chartView + + visible: false + + property bool loadSucceededStatus: false + + property string xAxisTitle: '' + property string yAxisTitle: '' + + property var measuredXYData: ({}) + property var calculatedXYData: ({}) + + property int theme: EaStyle.Colors.theme + + width: parent.width + height: parent.height + + backgroundColor: EaStyle.Colors.chartBackground + + url: Qt.resolvedUrl("../Html/BasicReport.html") + + onLoadSucceededStatusChanged: { + if (loadSucceededStatus) { + setChartSizes() + setChartColors() + + setXAxisTitle() + setYAxisTitle() + + setMeasuredXYData() + setCalculatedXYData() + + redrawPlot() + + visible = true + } + } + + onLoadingChanged: { + // Bug "loadRequest" is not declared - https://bugreports.qt.io/browse/QTBUG-84746 + //if (loadRequest.status === WebEngineView.LoadSucceededStatus) { + loadSucceededStatus = false + if (loadProgress === 100) { + loadSucceededStatus = true + } + } + + onXAxisTitleChanged: { + if (loadSucceededStatus) { + setXAxisTitle() + redrawPlot() + } + } + + onYAxisTitleChanged: { + if (loadSucceededStatus) { + setYAxisTitle() + redrawPlot() + } + } + + onMeasuredXYDataChanged: { + if (loadSucceededStatus) { + setMeasuredXYData() + redrawPlot() + } + } + + onCalculatedXYDataChanged: { + if (loadSucceededStatus) { + setCalculatedXYData() + redrawPlot() + } + } + + onThemeChanged: { + if (loadSucceededStatus) { + setChartColors() + redrawPlot() + } + } + + // Logic + + function setChartSizes() { + const sizes = { + 'fontPixelSize': EaStyle.Sizes.fontPixelSize, + 'measuredLineWidth': EaStyle.Sizes.measuredLineWidth, + 'calculatedLineWidth': EaStyle.Sizes.calculatedLineWidth, + 'measuredScatterSize': EaStyle.Sizes.measuredScatterSize + } + runJavaScript(`setChartSizes(${JSON.stringify(sizes)})`, function(result) { print(result) }) + } + + function setChartColors() { + const colors = { + 'chartBackground': String(EaStyle.Colors.chartBackground), + 'chartPlotAreaBackground': String(EaStyle.Colors.chartPlotAreaBackground), + 'chartForeground': String(EaStyle.Colors.chartForeground), + + 'chartAxis': String(EaStyle.Colors.chartAxis), + 'chartGrid': String(EaStyle.Colors.chartGridLine), + + 'measuredScatter': EaStyle.Colors.chartForegroundsExtra[2], + 'measuredLine': EaStyle.Colors.chartForegroundsExtra[2], + 'calculatedLine': EaStyle.Colors.chartForegrounds[0] + } + runJavaScript(`setChartColors(${JSON.stringify(colors)})`, function(result) { print(result) }) + } + + function redrawPlot() { + chartView.runJavaScript(`redrawPlot()`) + } + + function setXAxisTitle() { + runJavaScript(`setXAxisTitle(${JSON.stringify(xAxisTitle)})`) + } + + function setYAxisTitle() { + runJavaScript(`setYAxisTitle(${JSON.stringify(yAxisTitle)})`) + } + + function setMeasuredXYData() { + runJavaScript(`setMeasuredXYData(${JSON.stringify(measuredXYData)})`) + } + + function setCalculatedXYData() { + runJavaScript(`setCalculatedXYData(${JSON.stringify(calculatedXYData)})`) + } + +} diff --git a/easyApp/Gui/Components/ContentArea.qml b/src/EasyApp/Gui/Components/ContentArea.qml similarity index 81% rename from easyApp/Gui/Components/ContentArea.qml rename to src/EasyApp/Gui/Components/ContentArea.qml index b154caf9..6b7b3619 100644 --- a/easyApp/Gui/Components/ContentArea.qml +++ b/src/EasyApp/Gui/Components/ContentArea.qml @@ -1,5 +1,5 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls SwipeView { //anchors.top: parent.top diff --git a/easyApp/Gui/Components/ContentPage.qml b/src/EasyApp/Gui/Components/ContentPage.qml similarity index 76% rename from easyApp/Gui/Components/ContentPage.qml rename to src/EasyApp/Gui/Components/ContentPage.qml index 2306eb63..a0e22ded 100644 --- a/easyApp/Gui/Components/ContentPage.qml +++ b/src/EasyApp/Gui/Components/ContentPage.qml @@ -1,20 +1,20 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements Item { id: page property string defaultInfo: "" - property alias mainContent: mainContentContainer.data + property alias mainView: mainViewContainer.data property alias sideBar: sideBarContainer.data // Main content Item { - id: mainContentContainer + id: mainViewContainer anchors.top: page.top anchors.bottom: page.bottom @@ -27,10 +27,10 @@ Item { // Defaul info box Rectangle { visible: defaultInfo !== "" - anchors.top: mainContentContainer.top - anchors.bottom: mainContentContainer.bottom - anchors.left: mainContentContainer.left - anchors.right: mainContentContainer.right + anchors.top: mainViewContainer.top + anchors.bottom: mainViewContainer.bottom + anchors.left: mainViewContainer.left + anchors.right: mainViewContainer.right color: EaStyle.Colors.contentBackground Behavior on color { EaAnimations.ThemeChange {} } diff --git a/easyApp/Gui/Components/GuideWindow.qml b/src/EasyApp/Gui/Components/GuideWindow.qml similarity index 59% rename from easyApp/Gui/Components/GuideWindow.qml rename to src/EasyApp/Gui/Components/GuideWindow.qml index bc135a22..06b9f4e0 100644 --- a/easyApp/Gui/Components/GuideWindow.qml +++ b/src/EasyApp/Gui/Components/GuideWindow.qml @@ -1,14 +1,15 @@ -import QtQuick 2.12 -import QtQuick.Controls 2.12 -import QtQuick.Controls.impl 2.12 +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.impl import QtQuick.Layouts 1.12 -import QtGraphicalEffects 1.12 +//import QtGraphicalEffects 1.13 +import Qt5Compat.GraphicalEffects -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements -import Gui.Globals 1.0 as ExGlobals +import Gui.Globals as ExGlobals Item { id: item @@ -16,15 +17,15 @@ Item { property var container property alias text: tooltip.text - property int appBarCurrentIndex: EaGlobals.Variables.appBarCurrentIndex + property int appBarCurrentIndex: EaGlobals.Vars.appBarCurrentIndex onAppBarCurrentIndexChanged: container.setCurrentIndex(0) EaElements.ToolTip { id: tooltip parent: item.parent - visible: !EaGlobals.Variables.showAppPreferencesDialog && - EaGlobals.Variables.showUserGuides && + visible: !EaGlobals.Vars.showAppPreferencesDialog && + EaGlobals.Vars.showUserGuides && appBarCurrentIndex === container.appBarCurrentIndex && container.currentIndex === indexOf(container.contentModel.children, item) @@ -42,11 +43,11 @@ Item { EaElements.Button { text: qsTr("Disable") - onClicked: EaGlobals.Variables.showUserGuides = false + onClicked: EaGlobals.Vars.showUserGuides = false Component.onCompleted: { - if (typeof ExGlobals.Variables.userGuidesLastDisableButton === 'undefined') { - ExGlobals.Variables.userGuidesLastDisableButton = this + if (typeof ExGlobals.Vars.userGuidesLastDisableButton === 'undefined') { + ExGlobals.Vars.userGuidesLastDisableButton = this } } }, @@ -57,11 +58,11 @@ Item { enabled: container.currentIndex < container.count - 1 onClicked: container.incrementCurrentIndex() - Component.onCompleted: ExGlobals.Variables.userGuidesNextButtons[container.appBarCurrentIndex].unshift(this) + Component.onCompleted: ExGlobals.Vars.userGuidesNextButtons[container.appBarCurrentIndex].unshift(this) } ] - onTextChanged: ExGlobals.Variables.userGuidesTextList[container.appBarCurrentIndex].unshift(text) + onTextChanged: ExGlobals.Vars.userGuidesTextList[container.appBarCurrentIndex].unshift(text) } // Logic diff --git a/easyApp/Gui/Components/GuideWindowContainer.qml b/src/EasyApp/Gui/Components/GuideWindowContainer.qml similarity index 59% rename from easyApp/Gui/Components/GuideWindowContainer.qml rename to src/EasyApp/Gui/Components/GuideWindowContainer.qml index 2707acbd..a04bf4c5 100644 --- a/easyApp/Gui/Components/GuideWindowContainer.qml +++ b/src/EasyApp/Gui/Components/GuideWindowContainer.qml @@ -1,5 +1,5 @@ -import QtQuick 2.12 -import QtQuick.Controls 2.12 +import QtQuick +import QtQuick.Controls Container { id: container diff --git a/src/EasyApp/Gui/Components/JsonListModel.qml b/src/EasyApp/Gui/Components/JsonListModel.qml new file mode 100644 index 00000000..7a652db8 --- /dev/null +++ b/src/EasyApp/Gui/Components/JsonListModel.qml @@ -0,0 +1,160 @@ +/* JSONPath 0.8.5 - XPath for JSON + * Copyright (c) 2007 Stefan Goessner (goessner.net) + * Licensed under the MIT licence (http://opensource.org/licenses/mit-license.php) + */ + +/* JSONListModel - a QML ListModel with JSON and JSONPath support + * Copyright (c) 2012 Romain Pokrzywka (KDAB) (romain@kdab.com) + * Licensed under the MIT licence (http://opensource.org/licenses/mit-license.php) + */ + +/* JSONListModel + * https://wiki.qt.io/JSONListModel + * https://github.com/kromain/qml-utils/tree/master/JSONListModel + * https://github.com/keithel/JSONListModel + */ + +import QtQuick + + +ListModel { + id: listModel + + property string source: "" + property string json: "" + property string query: "" + + property int status: JsonListModel.Null + enum StatusEnum { + Null, + Ready, + Updating, + Error + } + + onSourceChanged: updateJson() + onJsonChanged: updateListModel() + onQueryChanged: updateListModel() + + function updateJson() { + let xhr = new XMLHttpRequest + xhr.open("GET", source) + xhr.onreadystatechange = function() { + if (xhr.readyState === XMLHttpRequest.DONE) { + listModel.json = xhr.responseText + } + } + xhr.send() + } + + function updateListModel() { + listModel.status = JsonListModel.Updating + + listModel.clear() + + if (listModel.json === "") { + return + } + + let objectArray = parseJsonString(listModel.json, listModel.query) + for (let key in objectArray) { + const jo = objectArray[key] + listModel.append(jo) + } + + listModel.status = JsonListModel.Ready + } + + function parseJsonString(jsonString, jsonPathQuery) { + let objectArray = JSON.parse(jsonString) + if (jsonPathQuery !== "") { + objectArray = jsonPath(objectArray, jsonPathQuery) + } + + return objectArray + } + + function jsonPath(obj, expr, arg) { + var P = { + resultType: arg && arg.resultType || "VALUE", + result: [], + normalize: function(expr) { + var subx = []; + return expr.replace(/[\['](\??\(.*?\))[\]']|\['(.*?)'\]/g, function($0,$1,$2){return "[#"+(subx.push($1||$2)-1)+"]";}) /* http://code.google.com/p/jsonpath/issues/detail?id=4 */ + .replace(/'?\.'?|\['?/g, ";") + .replace(/;;;|;;/g, ";..;") + .replace(/;$|'?\]|'$/g, "") + .replace(/#([0-9]+)/g, function($0,$1){return subx[$1];}); + }, + asPath: function(path) { + var x = path.split(";"), p = "$"; + for (var i=1,n=x.length; i 0 + + width: EaStyle.Sizes.sideBarContentWidth + height: count === 0 ? + 2 * EaStyle.Sizes.tableRowHeight : + showHeader ? + tableRowHeight * (Math.min(count, maxRowCountShow) + 1 ) : + tableRowHeight * (Math.min(count, maxRowCountShow)) + + clip: true + headerPositioning: ListView.OverlayHeader + boundsBehavior: Flickable.StopAtBounds + + onHeaderLabelItemsChanged: setWidthOfFlexibleColumnForHeader() + onContentItemChildrenLengthChanged: widthAndAlignmentChangeTimer.start() + + // Highlight current row + highlightMoveDuration: EaStyle.Sizes.tableHighlightMoveDuration + highlight: Rectangle { + z: 2 // To display highlight rect above delegate + color: mouseHoverHandler.hovered ? + EaStyle.Colors.tableHighlight : + "transparent" + Behavior on color { EaAnimations.ThemeChange {} } + } + + // Empty header row + //header: EaComponents.TableViewHeader {} + + // Empty content rows + //delegate: EaComponents.TableViewDelegate {} + + // Table border + Rectangle { + anchors.fill: listView + color: "transparent" + border.color: EaStyle.Colors.appBarComboBoxBorder + Behavior on border.color { EaAnimations.ThemeChange {} } + } + + // Default info, if no rows added + Rectangle { + visible: listView.count === 0 + width: listView.width + height: EaStyle.Sizes.tableRowHeight * 2 + color: EaStyle.Colors.themeBackground + + Behavior on color { EaAnimations.ThemeChange {} } + + EaElements.Label { + id: defaultInfoLabel + + anchors.verticalCenter: parent.verticalCenter + leftPadding: EaStyle.Sizes.fontPixelSize + } + } + + // Width and alignment change timer + Timer { + id: widthAndAlignmentChangeTimer + interval: 10 + onTriggered: setAllColumnsWidthAndAlignment() + } + + // HoverHandler to react on hover events + // Hide current row highlight if table is not hovered + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + onHoveredChanged: { + if (hovered) { + //console.error(`${listView} [TableView.qml] hovered`) + } + } + } + + // Logic + + function flexibleColumnWidth() { + let fixedColumnsWidth = 0 + for (let item of headerLabelItems) { + if (!item.flexibleWidth) { + fixedColumnsWidth += item.width + } + } + const allColumnWidth = listView.width + const spacingWidth = EaStyle.Sizes.tableColumnSpacing * (headerLabelItems.length - 1) + const borderThickness = EaStyle.Sizes.borderThickness * 2 + const flexibleColumnWidth = allColumnWidth - + fixedColumnsWidth - + spacingWidth - + borderThickness + return flexibleColumnWidth + } + + function setWidthOfFlexibleColumnForHeader() { + for (let item of headerLabelItems) { + if (item.flexibleWidth) { + item.width = flexibleColumnWidth() + } + } + } + + function setAllColumnsWidthAndAlignment() { + for (let item of contentItem.children) { + if (item instanceof TableViewDelegate) { + for (let columnIndex in item.children[0].children) { + item.children[0].children[columnIndex].width = headerLabelItems[columnIndex].width + if (typeof item.children[0].children[columnIndex].horizontalAlignment !== 'undefined') { + item.children[0].children[columnIndex].horizontalAlignment = headerLabelItems[columnIndex].horizontalAlignment + } + } + } + } + } + +} diff --git a/src/EasyApp/Gui/Components/TableViewAdvancedLabel.qml b/src/EasyApp/Gui/Components/TableViewAdvancedLabel.qml new file mode 100644 index 00000000..ab602f16 --- /dev/null +++ b/src/EasyApp/Gui/Components/TableViewAdvancedLabel.qml @@ -0,0 +1,69 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +T.Button { + id: control + + property int horizontalAlignment: Text.AlignHCenter + property int elide: Text.ElideMiddle + property color color: enabled ? + EaStyle.Colors.themeForeground : + EaStyle.Colors.themeForegroundDisabled + property color backgroundColor: "transparent" + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + leftInset: 0 + rightInset: 0 + topInset: 0 + bottomInset: 0 + padding: 0 + spacing: EaStyle.Sizes.fontPixelSize * 0.5 + + anchors.verticalCenter: parent.verticalCenter + + font.family: EaStyle.Fonts.fontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize + + // ToolTip + EaElements.ToolTip { + text: control.ToolTip.text + visible: label.truncated && control.hovered && EaGlobals.Vars.showToolTips && text !== "" + } + + // Text label + contentItem: Label { + id: label + + anchors.verticalCenter: parent.verticalCenter + horizontalAlignment: control.horizontalAlignment + + font.family: control.font.family + font.pixelSize: control.font.pixelSize + + text: control.text + + elide: control.elide + + color: control.color + Behavior on color { EaAnimations.ThemeChange {} } + } + + background: Rectangle { + width: control.width + height: control.height + + color: backgroundColor + Behavior on color { EaAnimations.ThemeChange {} } + } +} diff --git a/src/EasyApp/Gui/Components/TableViewButton.qml b/src/EasyApp/Gui/Components/TableViewButton.qml new file mode 100644 index 00000000..358f3069 --- /dev/null +++ b/src/EasyApp/Gui/Components/TableViewButton.qml @@ -0,0 +1,19 @@ +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Style as EaStyle + +EaElements.TabButton { + property int horizontalAlignment: Text.AlignHCenter + + topInset: 3 + bottomInset: 3 + leftInset: 2 + rightInset: 2 + + height: EaStyle.Sizes.tableRowHeight + width: EaStyle.Sizes.tableRowHeight + + borderColor: EaStyle.Colors.chartAxis + +} diff --git a/easyApp/Gui/Components/TableViewCheckBox.qml b/src/EasyApp/Gui/Components/TableViewCheckBox.qml similarity index 56% rename from easyApp/Gui/Components/TableViewCheckBox.qml rename to src/EasyApp/Gui/Components/TableViewCheckBox.qml index 3e56eaf0..828f85bd 100644 --- a/easyApp/Gui/Components/TableViewCheckBox.qml +++ b/src/EasyApp/Gui/Components/TableViewCheckBox.qml @@ -1,9 +1,8 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Elements as EaElements EaElements.CheckBox { - property string headerText: "" property int horizontalAlignment: Text.AlignHCenter anchors.verticalCenter: parent.verticalCenter diff --git a/easyApp/Gui/Components/TableViewComboBox.qml b/src/EasyApp/Gui/Components/TableViewComboBox.qml similarity index 66% rename from easyApp/Gui/Components/TableViewComboBox.qml rename to src/EasyApp/Gui/Components/TableViewComboBox.qml index 5337f30b..fa196dd8 100644 --- a/easyApp/Gui/Components/TableViewComboBox.qml +++ b/src/EasyApp/Gui/Components/TableViewComboBox.qml @@ -1,9 +1,8 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Elements as EaElements EaElements.ComboBox { - property string headerText: "" property int horizontalAlignment: Text.AlignHCenter borderColor: "transparent" diff --git a/src/EasyApp/Gui/Components/TableViewDelegate.qml b/src/EasyApp/Gui/Components/TableViewDelegate.qml new file mode 100644 index 00000000..38159068 --- /dev/null +++ b/src/EasyApp/Gui/Components/TableViewDelegate.qml @@ -0,0 +1,52 @@ +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations + +Rectangle { + id: control + + default property alias contentRowData: contentRow.data + property alias mouseArea: mouseArea + property Item tableView: parent === null ? null : parent.parent + + implicitWidth: parent == null ? 0 : parent.width + implicitHeight: tableView === null ? EaStyle.Sizes.tableRowHeight : tableView.tableRowHeight + + color: index % 2 ? + EaStyle.Colors.themeBackgroundHovered2 : + EaStyle.Colors.themeBackgroundHovered1 + Behavior on color { EaAnimations.ThemeChange {} } + + Row { + id: contentRow + + height: parent.height + spacing: EaStyle.Sizes.tableColumnSpacing + } + + //Mouse area to react on click events + MouseArea { + id: mouseArea + anchors.fill: parent + propagateComposedEvents: true + cursorShape: undefined //Qt.PointingHandCursor + hoverEnabled: false + onPressed: (mouse) => mouse.accepted = false + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + cursorShape: Qt.PointingHandCursor + blocking: false + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TableViewDelegate.qml] hovered`) + parent.ListView.view.currentIndex = index + } + } + } + +} diff --git a/src/EasyApp/Gui/Components/TableViewHeader.qml b/src/EasyApp/Gui/Components/TableViewHeader.qml new file mode 100644 index 00000000..caba7f03 --- /dev/null +++ b/src/EasyApp/Gui/Components/TableViewHeader.qml @@ -0,0 +1,27 @@ +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations + +Rectangle { + default property alias contentRowData: contentRow.data + property Item tableView: parent.parent + + visible: tableView.showHeader + + z: 3 // To display header above delegate and highlighted area + + implicitWidth: parent === null ? 0 : parent.width + implicitHeight: tableView.showHeader ? tableView.tableRowHeight : 0 + + color: EaStyle.Colors.contentBackground + Behavior on color { EaAnimations.ThemeChange {} } + + Row { + id: contentRow + + height: parent.height + spacing: EaStyle.Sizes.tableColumnSpacing + } +} diff --git a/src/EasyApp/Gui/Components/TableViewLabel.qml b/src/EasyApp/Gui/Components/TableViewLabel.qml new file mode 100644 index 00000000..3aeab937 --- /dev/null +++ b/src/EasyApp/Gui/Components/TableViewLabel.qml @@ -0,0 +1,47 @@ +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements + +EaElements.Label { + id: control + + property bool flexibleWidth: false + readonly property alias hovered: mouseHoverHandler.hovered + + height: parent.height + width: parent.height // ??? + + bottomInset: 4 + topInset: 4 + leftInset: 4 + rightInset: 4 + + anchors.verticalCenter: parent.verticalCenter + + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + elide: Text.ElideMiddle + + EaElements.ToolTip { + text: control.ToolTip.text + visible: text !== "" && + control.truncated && + mouseHoverHandler.hovered && + EaGlobals.Vars.showToolTips + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TableViewLabel.qml] hovered`) + } + } + } +} diff --git a/easyApp/Gui/Components/TableViewLabelControl.qml b/src/EasyApp/Gui/Components/TableViewLabelControl.qml similarity index 85% rename from easyApp/Gui/Components/TableViewLabelControl.qml rename to src/EasyApp/Gui/Components/TableViewLabelControl.qml index 7122e25b..01030ad7 100644 --- a/easyApp/Gui/Components/TableViewLabelControl.qml +++ b/src/EasyApp/Gui/Components/TableViewLabelControl.qml @@ -1,12 +1,12 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.Button { id: control diff --git a/src/EasyApp/Gui/Components/TableViewParameter.qml b/src/EasyApp/Gui/Components/TableViewParameter.qml new file mode 100644 index 00000000..0b105da8 --- /dev/null +++ b/src/EasyApp/Gui/Components/TableViewParameter.qml @@ -0,0 +1,167 @@ +import QtQuick + +import EasyApp.Gui.Logic as EaLogic +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + +EaElements.TextInput { + id: control + + property bool flexibleWidth: false + + property var parameter: {'value': 0.0, + 'idx': 0, + 'error': 0.0, + 'enabled': true, + 'fittable': false, + 'fit': false, + 'category': '', + 'name': 'default', + 'prettyName': '', + 'title': '', + 'units': '', + 'url': '', + 'cifDict': ''} + + property var value: { + if (typeof parameter.value === 'undefined') { + return 0 + } else if (typeof parameter.value === 'number') { + return EaLogic.Utils.toErrSinglePrecision(parameter.value, parameter.error) + } else { + return parameter.value + } + } + property var error: { + if (typeof parameter.error === 'undefined') { + return '' + } else if (typeof parameter.value === 'number') { + return EaLogic.Utils.toSinglePrecision(parameter.error) + } else { + return parameter.error + } + } + + property int idx: parameter.idx ?? 0 + property bool fittable: parameter.fittable ?? false + property bool fit: parameter.fit ?? false + property string category: parameter.category ?? '' + property string name: parameter.name ?? 'default' + property string prettyName: parameter.prettyName ?? '' + property string title: parameter.title ?? '' + property string units: parameter.units ?? '' + property string url: parameter.url ?? '' + property string cifDict: parameter.cifDict ?? '' + + property alias fitCheckBox: fitCheckBox + + minored: !parameter.enabled ?? false + + height: parent.height + + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + text: control.value + font.bold: control.fit && enabled + + onAccepted: focus = false + + // Mouse area + MouseArea { + anchors.fill: parent + cursorShape: undefined //Qt.PointingHandCursor + acceptedButtons: Qt.RightButton + onClicked: (mouse) => { + if (mouse.button === Qt.RightButton) { + contextMenu.popup() + } + mouse.accepted = false + } + onPressAndHold: (mouse) => { + if (mouse.source === Qt.MouseEventNotSynthesized) { + contextMenu.popup() + } + mouse.accepted = false + } + // Menu + EaElements.Menu { + id: contextMenu + + width: layout.implicitWidth + + // Layout + Grid { + id: layout + + leftPadding: 1.25 * EaStyle.Sizes.fontPixelSize + rightPadding: 1.25 * EaStyle.Sizes.fontPixelSize + topPadding: 0.5 * EaStyle.Sizes.fontPixelSize + bottomPadding: 0.75 * EaStyle.Sizes.fontPixelSize + rowSpacing: 0.75 * EaStyle.Sizes.fontPixelSize + columnSpacing: 1.5 * EaStyle.Sizes.fontPixelSize + + rows: 2 + + // Header + EaElements.Label { + color: EaStyle.Colors.themeForegroundMinor + text: control.cifDict ? 'cif name' : 'cif-like name' + } + EaElements.Label { + color: EaStyle.Colors.themeForegroundMinor + text: 'value' + } + EaElements.Label { + visible: control.fittable && control.error !== '' + color: EaStyle.Colors.themeForegroundMinor + text: 'error' + } + EaElements.Label { + visible: control.fittable && !control.readOnly + color: EaStyle.Colors.themeForegroundMinor + text: 'vary' + } + // Headert + + // Content + EaElements.Button { + text: `${control.category}.${control.name}` + checked: true + onClicked: Qt.openUrlExternally(control.url) + } + EaElements.Label { + text: control.value + font.bold: control.fit + } + EaElements.Label { + visible: control.fittable && control.error !== '' + text: control.error + } + EaElements.CheckBox { + id: fitCheckBox + visible: control.fittable && !control.readOnly + padding: 0 + checked: control.fit + } + // Content + } + // Layout + } + // Menu + } + // Mouse area + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + //cursorShape: undefined //Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TableViewParameter.qml] hovered`) + } + } + } +} diff --git a/easyApp/Gui/Components/TableViewTextInput.qml b/src/EasyApp/Gui/Components/TableViewTextInput.qml similarity index 72% rename from easyApp/Gui/Components/TableViewTextInput.qml rename to src/EasyApp/Gui/Components/TableViewTextInput.qml index 47403725..fecc3d9e 100644 --- a/easyApp/Gui/Components/TableViewTextInput.qml +++ b/src/EasyApp/Gui/Components/TableViewTextInput.qml @@ -1,6 +1,6 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Elements as EaElements EaElements.TextInput { property string headerText: "" diff --git a/src/EasyApp/Gui/Components/TableViewTwoRowsAdvancedLabel.qml b/src/EasyApp/Gui/Components/TableViewTwoRowsAdvancedLabel.qml new file mode 100644 index 00000000..1ba75252 --- /dev/null +++ b/src/EasyApp/Gui/Components/TableViewTwoRowsAdvancedLabel.qml @@ -0,0 +1,148 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +T.Button { + id: control + + property string fontIcon: '' + property string minorText: '' + property int horizontalAlignment: Text.AlignHCenter + property int elide: Text.ElideMiddle + + //implicitWidth: implicitContentWidth + leftPadding + rightPadding + implicitHeight: implicitContentHeight + topPadding + bottomPadding + leftInset: 0 + rightInset: 0 + topInset: 0 + bottomInset: 0 + padding: 0 + spacing: EaStyle.Sizes.fontPixelSize * 0.5 + anchors.verticalCenter: parent.verticalCenter + + checkable: false + + font.family: EaStyle.Fonts.fontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize + + // contentItem + contentItem: Item { + width: control.width + //implicitWidth: row.width + implicitHeight: row.height + + // contentItem row layout + Column { + id: row + spacing: control.spacing + anchors.verticalCenter: parent.verticalCenter + //anchors.fill: parent + + Row { + spacing: control.spacing + + // icon + Label { + visible: control.fontIcon + text: control.fontIcon + + height: font.pixelSize + verticalAlignment: Text.AlignVCenter + + font.family: EaStyle.Fonts.iconsFamily + font.pixelSize: control.font.pixelSize + + color: control.checked ? // || mouseHoverHandler.hovered ? + EaStyle.Colors.themeForegroundHovered : + EaStyle.Colors.themeForeground + Behavior on color { EaAnimations.ThemeChange {} } + } + // icon + + // text + Label { + text: control.text + + height: font.pixelSize + verticalAlignment: Text.AlignVCenter + + font.family: control.font.family + font.pixelSize: control.font.pixelSize + + color: control.checked ? // || mouseHoverHandler.hovered ? + EaStyle.Colors.themeForegroundHovered : + EaStyle.Colors.themeForeground + Behavior on color { EaAnimations.ThemeChange {} } + } + // text + + } + + // minor text + Label { + id: valueLabel + + text: control.minorText + + height: font.pixelSize + width: control.width - control.spacing // ??? + verticalAlignment: Text.AlignVCenter + elide: control.elide + + textFormat: Text.RichText + font.family: control.font.family + font.pixelSize: control.font.pixelSize + + color: EaStyle.Colors.statusBarTextForeground + Behavior on color { EaAnimations.ThemeChange {} } + + EaAnimations.ColorReset { + id: colorResetAnimo + + target: valueLabel + to: EaStyle.Colors.themeForeground + } + } + // minor text + + } + // contentItem row layout + } + // contentItem + + // background + background: Rectangle { + color: 'transparent' + } + // background + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TableViewTwoRowsAdvancedLabel.qml] hovered`) + } + } + } + + // ToolTip + EaElements.ToolTip { + text: control.ToolTip.text + visible: text !== "" && + valueLabel.truncated && + mouseHoverHandler.hovered && + EaGlobals.Vars.showToolTips + } + // ToolTip + +} diff --git a/easyApp/Gui/Components/qmldir b/src/EasyApp/Gui/Components/qmldir similarity index 80% rename from easyApp/Gui/Components/qmldir rename to src/EasyApp/Gui/Components/qmldir index f0e87614..55a7dd24 100644 --- a/easyApp/Gui/Components/qmldir +++ b/src/EasyApp/Gui/Components/qmldir @@ -25,8 +25,15 @@ TableView 1.0 TableView.qml TableViewHeader 1.0 TableViewHeader.qml TableViewDelegate 1.0 TableViewDelegate.qml TableViewLabel 1.0 TableViewLabel.qml -TableViewLabelControl 1.0 TableViewLabelControl.qml -TableViewTextInput 1.0 TableViewTextInput.qml +TableViewAdvancedLabel 1.0 TableViewAdvancedLabel.qml +TableViewTwoRowsAdvancedLabel 1.0 TableViewTwoRowsAdvancedLabel.qml +TableViewParameter 1.0 TableViewParameter.qml TableViewCheckBox 1.0 TableViewCheckBox.qml TableViewComboBox 1.0 TableViewComboBox.qml TableViewButton 1.0 TableViewButton.qml +TableViewLabelControl 1.0 TableViewLabelControl.qml +TableViewTextInput 1.0 TableViewTextInput.qml + +JsonListModel 1.0 JsonListModel.qml + +BasicReport 1.0 BasicReport.qml diff --git a/easyApp/Gui/Elements/AppBarTabButton.qml b/src/EasyApp/Gui/Elements/AppBarTabButton.qml similarity index 71% rename from easyApp/Gui/Elements/AppBarTabButton.qml rename to src/EasyApp/Gui/Elements/AppBarTabButton.qml index 8b3fb397..47b81027 100644 --- a/easyApp/Gui/Elements/AppBarTabButton.qml +++ b/src/EasyApp/Gui/Elements/AppBarTabButton.qml @@ -1,8 +1,8 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements EaElements.TabButton { id: control @@ -60,11 +60,24 @@ EaElements.TabButton { //Mouse area to react on click events MouseArea { - id: rippleArea + id: mouseArea anchors.fill: parent - hoverEnabled: true - //onClicked: control.clicked() // Doesn't work as for Button or ToolButton - onPressed: mouse.accepted = false // Color doesn't changed onPressed + hoverEnabled: false + cursorShape: undefined //Qt.PointingHandCursor + onPressed: (mouse) => mouse.accepted = false + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [AppBarTabButton.qml] hovered`) + } + } } // Logic @@ -72,7 +85,7 @@ EaElements.TabButton { function backgroundColor() { if (!control.enabled) return EaStyle.Colors.themeBackground - if (rippleArea.containsMouse) + if (mouseHoverHandler.hovered) return EaStyle.Colors.themeBackgroundHovered2 return EaStyle.Colors.themeBackground } @@ -80,7 +93,7 @@ EaElements.TabButton { function foregroundColor() { if (!control.enabled) return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse || control.checked || control.down) + if (mouseHoverHandler.hovered || control.checked || control.down) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.themeForeground } diff --git a/easyApp/Gui/Elements/ApplicationWindow.qml b/src/EasyApp/Gui/Elements/ApplicationWindow.qml similarity index 86% rename from easyApp/Gui/Elements/ApplicationWindow.qml rename to src/EasyApp/Gui/Elements/ApplicationWindow.qml index f6d6076e..f6de7891 100644 --- a/easyApp/Gui/Elements/ApplicationWindow.qml +++ b/src/EasyApp/Gui/Elements/ApplicationWindow.qml @@ -1,13 +1,13 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Controls +import QtQuick.Templates as T -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements -import easyApp.Logic.Maintenance 1.0 as EaMaintenance +import EasyApp.Logic.Maintenance as EaMaintenance T.ApplicationWindow { @@ -17,11 +17,11 @@ T.ApplicationWindow { property string appVersion: '' property string appDate: '' - property string webVersion: updater.webVersion - property string webDate: updater.webDate + property string webVersion: ''//updater.webVersion + property string webDate: ''//updater.webDate visible: true - flags: EaGlobals.Variables.appWindowFlags + flags: EaGlobals.Vars.appWindowFlags x: EaStyle.Sizes.appWindowX y: EaStyle.Sizes.appWindowY @@ -47,7 +47,7 @@ T.ApplicationWindow { onUpdateNotFound: updateNotFoundDialog.open() onUpdateFailed: updateFailedDialog.open() - Component.onCompleted: EaGlobals.Variables.updater = this + Component.onCompleted: EaGlobals.Vars.updater = this } // Check update on app start (if needed) @@ -55,7 +55,7 @@ T.ApplicationWindow { Timer { interval: 2000 repeat: false - running: EaGlobals.Variables.checkUpdateOnAppStart + running: EaGlobals.Vars.checkUpdateOnAppStart onTriggered: { updater.silentCheck = true updater.checkUpdate() diff --git a/easyApp/Gui/Elements/BoxShadow.qml b/src/EasyApp/Gui/Elements/BoxShadow.qml similarity index 91% rename from easyApp/Gui/Elements/BoxShadow.qml rename to src/EasyApp/Gui/Elements/BoxShadow.qml index dff0e452..6bc43efe 100644 --- a/easyApp/Gui/Elements/BoxShadow.qml +++ b/src/EasyApp/Gui/Elements/BoxShadow.qml @@ -1,5 +1,6 @@ -import QtQuick 2.15 -import QtGraphicalEffects 1.13 +import QtQuick +//import QtGraphicalEffects 1.13 +import Qt5Compat.GraphicalEffects RectangularGlow { // The 4 properties from CSS box-shadow, plus the inherited color property diff --git a/easyApp/Gui/Elements/Button.qml b/src/EasyApp/Gui/Elements/Button.qml similarity index 53% rename from easyApp/Gui/Elements/Button.qml rename to src/EasyApp/Gui/Elements/Button.qml index 7ac06e04..813d1591 100644 --- a/easyApp/Gui/Elements/Button.qml +++ b/src/EasyApp/Gui/Elements/Button.qml @@ -1,10 +1,10 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations T.Button { @@ -24,6 +24,9 @@ T.Button { horizontalPadding: 0 */ + font.family: EaStyle.Fonts.fontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize + flat: true // Icon text @@ -42,21 +45,35 @@ T.Button { //Mouse area to react on click events MouseArea { - id: rippleArea - + id: mouseArea anchors.fill: control - hoverEnabled: true + cursorShape: undefined // prevents changing the cursor + hoverEnabled: false + onPressed: (mouse) => mouse.accepted = false + } - //onClicked: control.clicked() - onPressed: mouse.accepted = false + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: control.checked ? + Qt.PointingHandCursor : + Qt.PointingHandCursor //ArrowCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TextInput.qml] hovered`) + } + } } + // Logic function foregroundColor() { if (!control.enabled) return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse || control.checked || control.down) + if (mouseHoverHandler.hovered || control.checked || control.down) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.themeForeground } diff --git a/easyApp/Gui/Elements/CheckBox.qml b/src/EasyApp/Gui/Elements/CheckBox.qml similarity index 70% rename from easyApp/Gui/Elements/CheckBox.qml rename to src/EasyApp/Gui/Elements/CheckBox.qml index 7cbf8da4..7c9c18e1 100644 --- a/easyApp/Gui/Elements/CheckBox.qml +++ b/src/EasyApp/Gui/Elements/CheckBox.qml @@ -1,10 +1,10 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Templates as T -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.CheckBox { id: control @@ -19,7 +19,7 @@ T.CheckBox { spacing: EaStyle.Sizes.fontPixelSize * 0.5 padding: EaStyle.Sizes.fontPixelSize * 0.5 - verticalPadding: padding + EaStyle.Sizes.fontPixelSize * 0.5 + verticalPadding: 0//padding + EaStyle.Sizes.fontPixelSize * 0.5 tristate: false @@ -58,6 +58,22 @@ T.CheckBox { // ToolTip EaElements.ToolTip { text: control.ToolTip.text - visible: control.hovered && EaGlobals.Variables.showToolTips && text !== "" + visible: text !== "" && + control.hovered && + EaGlobals.Vars.showToolTips } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: !enabled ? Qt.ArrowCursor : Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TextInput.qml] hovered`) + } + } + } + } diff --git a/easyApp/Gui/Elements/CheckIndicator.qml b/src/EasyApp/Gui/Elements/CheckIndicator.qml similarity index 93% rename from easyApp/Gui/Elements/CheckIndicator.qml rename to src/EasyApp/Gui/Elements/CheckIndicator.qml index 755de224..6f238d6b 100644 --- a/easyApp/Gui/Elements/CheckIndicator.qml +++ b/src/EasyApp/Gui/Elements/CheckIndicator.qml @@ -1,9 +1,9 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements Rectangle { id: indicatorItem diff --git a/easyApp/Gui/Elements/ComboBox.qml b/src/EasyApp/Gui/Elements/ComboBox.qml similarity index 88% rename from easyApp/Gui/Elements/ComboBox.qml rename to src/EasyApp/Gui/Elements/ComboBox.qml index 505268b9..06da7182 100644 --- a/easyApp/Gui/Elements/ComboBox.qml +++ b/src/EasyApp/Gui/Elements/ComboBox.qml @@ -1,13 +1,13 @@ -import QtQuick 2.15 -import QtQuick.Window 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Window +import QtQuick.Controls +import QtQuick.Controls.impl +import QtQuick.Templates as T -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.ComboBox { id: control @@ -20,6 +20,8 @@ T.ComboBox { property int textFormat: Text.RichText property int elide: Text.ElideMiddle + property var contentItemLabel: contentItemLabel + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, @@ -41,10 +43,10 @@ T.ComboBox { //Mouse area to react on click events MouseArea { - id: rippleArea - anchors.fill: parent//control + id: mouseArea + anchors.fill: parent hoverEnabled: true - onPressed: mouse.accepted = false + onPressed: (mouse) => mouse.accepted = false } delegate: EaElements.MenuItem { @@ -64,7 +66,7 @@ T.ComboBox { model[control.textRole]) : modelData) .split('$TEXT_COLOR').join(EaStyle.Colors.themeForegroundMinor) - .split('$ICON_COLOR').join(EaStyle.Colors.isDarkTheme ? Qt.darker(EaStyle.Colors.themeForegroundMinor, 1.2) : Qt.lighter(EaStyle.Colors.themeForegroundMinor, 1.2)) + .split('$ICON_COLOR').join(EaStyle.Colors.isDarkPalette ? Qt.darker(EaStyle.Colors.themeForegroundMinor, 1.2) : Qt.lighter(EaStyle.Colors.themeForegroundMinor, 1.2)) .split('$ICONS_FAMILY').join(EaStyle.Fonts.iconsFamily) ///Material.foreground: control.currentIndex === index ? parent.Material.accent : parent.Material.foreground @@ -88,7 +90,10 @@ T.ComboBox { } contentItem: Label { - padding: EaStyle.Sizes.fontPixelSize * 0.5 + id: contentItemLabel + + topPadding: EaStyle.Sizes.fontPixelSize * 0.5 + bottomPadding: EaStyle.Sizes.fontPixelSize * 0.5 leftPadding: control.editable ? 2 : control.mirrored ? EaStyle.Sizes.fontPixelSize * 1.0 : EaStyle.Sizes.fontPixelSize * 0.75 rightPadding: control.editable ? 2 : control.mirrored ? EaStyle.Sizes.fontPixelSize * 0.75 : EaStyle.Sizes.fontPixelSize * 1.0 @@ -98,7 +103,7 @@ T.ComboBox { control.editText : control.displayText) .split('$TEXT_COLOR').join(EaStyle.Colors.themeForegroundMinor) - .split('$ICON_COLOR').join(EaStyle.Colors.isDarkTheme ? Qt.darker(EaStyle.Colors.themeForegroundMinor, 1.2) : Qt.lighter(EaStyle.Colors.themeForegroundMinor, 1.2)) + .split('$ICON_COLOR').join(EaStyle.Colors.isDarkPalette ? Qt.darker(EaStyle.Colors.themeForegroundMinor, 1.2) : Qt.lighter(EaStyle.Colors.themeForegroundMinor, 1.2)) .split('$ICONS_FAMILY').join(EaStyle.Fonts.iconsFamily) enabled: control.editable @@ -205,7 +210,7 @@ T.ComboBox { function _foregroundColor() { if (!control.enabled) return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse) + if (mouseArea.containsMouse) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.themeForeground } @@ -213,7 +218,7 @@ T.ComboBox { function _borderColor() { if (!control.enabled) return EaStyle.Colors.themeBackgroundDisabled - if (rippleArea.containsMouse) + if (mouseArea.containsMouse) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.appBarComboBoxBorder } diff --git a/easyApp/Gui/Elements/CursorDelegate.qml b/src/EasyApp/Gui/Elements/CursorDelegate.qml similarity index 92% rename from easyApp/Gui/Elements/CursorDelegate.qml rename to src/EasyApp/Gui/Elements/CursorDelegate.qml index 19bf4335..86dc5ef7 100644 --- a/easyApp/Gui/Elements/CursorDelegate.qml +++ b/src/EasyApp/Gui/Elements/CursorDelegate.qml @@ -1,6 +1,6 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Style 1.0 as EaStyle +import EasyApp.Gui.Style as EaStyle Rectangle { id: cursor diff --git a/easyApp/Gui/Elements/Dialog.qml b/src/EasyApp/Gui/Elements/Dialog.qml similarity index 92% rename from easyApp/Gui/Elements/Dialog.qml rename to src/EasyApp/Gui/Elements/Dialog.qml index cfa24f9c..d4822957 100644 --- a/easyApp/Gui/Elements/Dialog.qml +++ b/src/EasyApp/Gui/Elements/Dialog.qml @@ -1,12 +1,12 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.Dialog { id: control diff --git a/easyApp/Gui/Elements/DialogButtonBox.qml b/src/EasyApp/Gui/Elements/DialogButtonBox.qml similarity index 81% rename from easyApp/Gui/Elements/DialogButtonBox.qml rename to src/EasyApp/Gui/Elements/DialogButtonBox.qml index 34de5a4d..84b56918 100644 --- a/easyApp/Gui/Elements/DialogButtonBox.qml +++ b/src/EasyApp/Gui/Elements/DialogButtonBox.qml @@ -1,11 +1,11 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.DialogButtonBox { id: control diff --git a/easyApp/Gui/Elements/ElevationEffect.qml b/src/EasyApp/Gui/Elements/ElevationEffect.qml similarity index 99% rename from easyApp/Gui/Elements/ElevationEffect.qml rename to src/EasyApp/Gui/Elements/ElevationEffect.qml index 86ffa783..342b21d8 100644 --- a/easyApp/Gui/Elements/ElevationEffect.qml +++ b/src/EasyApp/Gui/Elements/ElevationEffect.qml @@ -1,4 +1,4 @@ -import QtQuick 2.15 +import QtQuick ///import Templates.Controls 1.0 diff --git a/src/EasyApp/Gui/Elements/GroupBox.qml b/src/EasyApp/Gui/Elements/GroupBox.qml new file mode 100644 index 00000000..04ab6481 --- /dev/null +++ b/src/EasyApp/Gui/Elements/GroupBox.qml @@ -0,0 +1,209 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.Basic // Fixes EasyApp/Gui/Elements/GroupBox.qml:51:22: QML Row: The current style does not support customization of this control (property: "contentItem" item: QQuickRow(0x60000381e200, parent=0x0, geometry=0,0 0x0)). Please customize a non-native style (such as Basic, Fusion, Material, etc). For more information, see: https://doc.qt.io/qt-6/qtquickcontrols2-customize.html#customization-reference +import QtQuick.Templates as T + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Animations as EaAnimations + + +T.GroupBox { + id: control + + property var titleArea: titleArea + property string icon: '' + property bool collapsible: true + property bool collapsed: collapsible ? true : false + property bool lastCollapsedState: collapsible ? true : false + property bool last: { + if (parent.children.length) { + const lastGroupBox = parent.children[parent.children.length - 1] // NEED FIX: Check if last item is GroupBox + if (lastGroupBox === control) { + return true + } + return false + } + return false + } + + implicitWidth: parent.width + implicitHeight: collapsed ? + titleArea.height : + titleArea.height + spacing + contentHeight + bottomPadding + Behavior on implicitHeight { EaAnimations.ThemeChange { duration: 500 } } + + spacing: title === '' ? EaStyle.Sizes.fontPixelSize : 0.5 * EaStyle.Sizes.fontPixelSize // between title and content + padding: 0 + topPadding: titleArea.height + spacing + bottomPadding: title === '' ? 0 : EaStyle.Sizes.fontPixelSize + leftPadding: EaStyle.Sizes.fontPixelSize + rightPadding: EaStyle.Sizes.fontPixelSize + + clip: true + + font.pixelSize: EaStyle.Sizes.fontPixelSize + + onCollapsedChanged: { + collapsed === !collapsed + if (collapsed || !EaGlobals.Vars.autoCollapseSideBarGroups) { + return + } + // Collapse all other sidebar groups on this page + for (const groupBox of parent.children) { + if (groupBox.toString().startsWith('GroupBox_QMLTYPE') && groupBox !== control) { // groupBox instanceof GroupBox doesn't work + if (groupBox.collapsible && !groupBox.collapsed) { + groupBox.collapsed = true + } + } + } + } + + // Group box title area + + label: Button { + id: titleArea + + visible: title !== '' + enabled: control.collapsible + + height: title === '' ? 0 : EaStyle.Sizes.tabBarHeight + width: titleLayout.childrenRect.width + anchors.leftMargin + EaStyle.Sizes.fontPixelSize * 0.5 + + anchors.left: control.left + anchors.leftMargin: EaStyle.Sizes.fontPixelSize * 0.5 + topInset: 0 + bottomInset: 0 + + checkable: false + flat: true + + // Group box title layout + contentItem: Row { + id: titleLayout + + anchors.verticalCenter: parent.verticalCenter + spacing: EaStyle.Sizes.fontPixelSize * 0.5 + + // Group box collapse icon + Label { + id: collapseIcon + + anchors.verticalCenter: parent.verticalCenter + + text: control.collapsible ? "play" : "circle" + + font.family: EaStyle.Fonts.iconsFamily + font.pixelSize: control.font.pixelSize * 0.7 + + color: control.foregroundColor() + Behavior on color { EaAnimations.ThemeChange {} } + + transform: Rotation { + id: collapseIconRotation + + origin.x: collapseIcon.width * 0.5 + origin.y: collapseIcon.height * 0.5 + + angle: control.collapsed ? 0 : 90 + Behavior on angle { EaAnimations.ThemeChange { duration: 500 } } + } + } + + // Group box title icon + Label { + visible: control.icon + + width: control.font.pixelSize + horizontalAlignment: Text.AlignHCenter + anchors.verticalCenter: parent.verticalCenter + + text: control.icon + + font.family: EaStyle.Fonts.iconsFamily + font.pixelSize: control.font.pixelSize + + color: control.foregroundColor() + Behavior on color { EaAnimations.ThemeChange {} } + } + + // Group box title text + Label { + id: titleTextlabel + + anchors.verticalCenter: parent.verticalCenter + + text: control.title + + font.family: EaStyle.Fonts.fontFamily + font.pixelSize: control.font.pixelSize + + color: control.foregroundColor() + Behavior on color { EaAnimations.ThemeChange {} } + } + } + + //Mouse area to react on click events + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: false + cursorShape: undefined // prevents changing the cursor + onClicked: titleArea.clicked() + //onPressed: (mouse) => mouse.accepted = false + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TextInput.qml] hovered`) + } + } + } + + // Folding-unfolding animation on title area clicked + onClicked: control.collapsed = !control.collapsed + } + + // Group box content area + background: Rectangle { + id: contentArea + + y: titleArea.height + width: control.width + height: control.height - control.topPadding + control.bottomPadding + + color: 'transparent' + + // Horisontal border at the bottom + Rectangle { + visible: !last + + anchors.bottom: parent.bottom + anchors.bottomMargin: 6 + height // 6? + + width: control.width + height: EaStyle.Sizes.borderThickness + + color: EaStyle.Colors.appBorder + Behavior on color { EaAnimations.ThemeChange {} } + } + } + + // Logic + + function foregroundColor() { + if (!control.enabled) + return EaStyle.Colors.themeForegroundDisabled + if (mouseHoverHandler.hovered || !control.collapsed) + return EaStyle.Colors.themeForegroundHovered + return EaStyle.Colors.themeForeground + } + +} diff --git a/easyApp/Gui/Elements/GroupButton.qml b/src/EasyApp/Gui/Elements/GroupButton.qml similarity index 79% rename from easyApp/Gui/Elements/GroupButton.qml rename to src/EasyApp/Gui/Elements/GroupButton.qml index 97ff10cf..ec7ba857 100644 --- a/easyApp/Gui/Elements/GroupButton.qml +++ b/src/EasyApp/Gui/Elements/GroupButton.qml @@ -1,8 +1,8 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Controls.Material 2.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.Material -import easyApp.Gui.Style 1.0 as EaStyle +import EasyApp.Gui.Style as EaStyle Button { implicitWidth: (parent.width - parent.spacing) * 0.5 - 1 diff --git a/src/EasyApp/Gui/Elements/GroupColumn.qml b/src/EasyApp/Gui/Elements/GroupColumn.qml new file mode 100644 index 00000000..fba6af32 --- /dev/null +++ b/src/EasyApp/Gui/Elements/GroupColumn.qml @@ -0,0 +1,10 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.Material + +import EasyApp.Gui.Style as EaStyle + +Column { + width: parent.width - EaStyle.Sizes.fontPixelSize + spacing: EaStyle.Sizes.groupBoxSpacing +} diff --git a/src/EasyApp/Gui/Elements/GroupRow.qml b/src/EasyApp/Gui/Elements/GroupRow.qml new file mode 100644 index 00000000..e8710d71 --- /dev/null +++ b/src/EasyApp/Gui/Elements/GroupRow.qml @@ -0,0 +1,9 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.Material + +import EasyApp.Gui.Style as EaStyle + +Row { + spacing: EaStyle.Sizes.groupBoxSpacing * 0.5 +} diff --git a/easyApp/Gui/Elements/Label.qml b/src/EasyApp/Gui/Elements/Label.qml similarity index 59% rename from easyApp/Gui/Elements/Label.qml rename to src/EasyApp/Gui/Elements/Label.qml index 06adf1f4..aeab7ae2 100644 --- a/easyApp/Gui/Elements/Label.qml +++ b/src/EasyApp/Gui/Elements/Label.qml @@ -1,20 +1,25 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Templates as T -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations T.Label { id: control + property bool selected: false property color backgroundColor: "transparent" font.family: EaStyle.Fonts.fontFamily font.pixelSize: EaStyle.Sizes.fontPixelSize - color: enabled ? - EaStyle.Colors.themeForeground : - EaStyle.Colors.themeForegroundDisabled //Material.foreground : Material.hintTextColor + //textFormat: Text.StyledText + + color: selected ? + EaStyle.Colors.themeForegroundHovered : + enabled ? + EaStyle.Colors.themeForeground : + EaStyle.Colors.themeForegroundDisabled Behavior on color { EaAnimations.ThemeChange {} } linkColor: hoveredLink ? @@ -33,9 +38,11 @@ T.Label { MouseArea { anchors.fill: parent acceptedButtons: Qt.NoButton + hoverEnabled: false + //cursorShape: undefined // prevents changing the cursor cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : - Qt.ArrowCursor + undefined //Qt.ArrowCursor } onLinkActivated: Qt.openUrlExternally(link) diff --git a/easyApp/Gui/Elements/LinkedImage.qml b/src/EasyApp/Gui/Elements/LinkedImage.qml similarity index 79% rename from easyApp/Gui/Elements/LinkedImage.qml rename to src/EasyApp/Gui/Elements/LinkedImage.qml index 4fbc62d8..e4e40f0b 100644 --- a/easyApp/Gui/Elements/LinkedImage.qml +++ b/src/EasyApp/Gui/Elements/LinkedImage.qml @@ -1,6 +1,6 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Style 1.0 as EaStyle +import EasyApp.Gui.Style as EaStyle Image { id: control @@ -15,5 +15,6 @@ Image { anchors.fill: parent cursorShape: Qt.PointingHandCursor onClicked: Qt.openUrlExternally(link) - } // MouseArea + } + } diff --git a/src/EasyApp/Gui/Elements/Menu.qml b/src/EasyApp/Gui/Elements/Menu.qml new file mode 100644 index 00000000..ff9533fe --- /dev/null +++ b/src/EasyApp/Gui/Elements/Menu.qml @@ -0,0 +1,73 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls.Material +import QtQuick.Controls.Material.impl +import QtQuick.Window + +import EasyApp.Gui.Style as EaStyle + +T.Menu { + id: control + + Material.elevation: 8 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 0 + verticalPadding: 8 + + transformOrigin: !cascade ? Item.Top : (mirrored ? Item.TopRight : Item.TopLeft) + + delegate: MenuItem { } + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + contentItem: ListView { + implicitHeight: contentHeight + + model: control.contentModel + interactive: Window.window + ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height + : false + clip: true + currentIndex: control.currentIndex + + ScrollIndicator.vertical: ScrollIndicator {} + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: control.Material.menuItemHeight + + radius: 3 + color: EaStyle.Colors.themeBackground + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + + T.Overlay.modal: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + T.Overlay.modeless: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/easyApp/Gui/Elements/MenuItem.qml b/src/EasyApp/Gui/Elements/MenuItem.qml similarity index 92% rename from easyApp/Gui/Elements/MenuItem.qml rename to src/EasyApp/Gui/Elements/MenuItem.qml index 09a938ab..b20fd2fd 100644 --- a/easyApp/Gui/Elements/MenuItem.qml +++ b/src/EasyApp/Gui/Elements/MenuItem.qml @@ -1,12 +1,12 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.MenuItem { id: control diff --git a/src/EasyApp/Gui/Elements/ParamComboBox.qml b/src/EasyApp/Gui/Elements/ParamComboBox.qml new file mode 100644 index 00000000..48bdd089 --- /dev/null +++ b/src/EasyApp/Gui/Elements/ParamComboBox.qml @@ -0,0 +1,167 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + + +EaElements.ComboBox { + id: control + + property var parameter: {'value': 0.0, + 'permittedValues': [], + 'error': 0.0, + 'enabled': true, + 'fittable': false, + 'fit': false, + 'category': '', + 'name': 'default', + 'prettyName': '', + 'shortPrettyName': '', + 'units': '', + 'url': '', + 'cifDict': ''} + + property var value: { + if (typeof parameter.value === 'undefined') { + return 0 + } else if (typeof parameter.value === 'number') { + return parseFloat(parameter.value.toFixed(4)) + } else { + return parameter.value + } + } + property var permittedValues: parameter.permittedValues ?? [] + property var error: { + if (typeof parameter.error === 'undefined') { + return 0 + } else { + return parseFloat(parameter.error.toFixed(4)) + } + } + + property bool fittable: parameter.fittable ?? false + property bool fit: parameter.fit ?? false + property string category: parameter.category ?? '' + property string name: parameter.name ?? 'default' + property string prettyName: parameter.prettyName ?? '' + property string shortPrettyName: parameter.shortPrettyName ?? '' + property string units: parameter.units ?? '' + property string url: parameter.url ?? '' + property string cifDict: parameter.cifDict ?? '' + + property alias fitCheckBox: fitCheckBox + + enabled: model.length + + topInset: control.shortPrettyName === '' ? 0 : EaStyle.Sizes.fontPixelSize * 1.5 + topPadding: topInset + padding + + width: (EaStyle.Sizes.sideBarContentWidth - + (parent.children.length - 1) * EaStyle.Sizes.fontPixelSize * 0.5) / + parent.children.length + + model: permittedValues + + currentIndex: indexOfValue(control.value) + + onAccepted: focus = false + + // Title + EaElements.Label { + anchors.left: control.left + anchors.leftMargin: control.contentItemLabel.leftPadding + + color: EaStyle.Colors.themeForegroundMinor + + font.bold: false + text: control.shortPrettyName + } + // Title + + // Mouse area + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + onClicked: (mouse) => { + if (mouse.button === Qt.RightButton) { + contextMenu.popup() + } + } + onPressAndHold: (mouse) => { + if (mouse.source === Qt.MouseEventNotSynthesized) { + contextMenu.popup() + } + } + // Menu + EaElements.Menu { + id: contextMenu + + width: layout.implicitWidth + + // Layout + Grid { + id: layout + + leftPadding: 1.25 * EaStyle.Sizes.fontPixelSize + rightPadding: 1.25 * EaStyle.Sizes.fontPixelSize + topPadding: 0.5 * EaStyle.Sizes.fontPixelSize + bottomPadding: 0.75 * EaStyle.Sizes.fontPixelSize + rowSpacing: 0.75 * EaStyle.Sizes.fontPixelSize + columnSpacing: 1.5 * EaStyle.Sizes.fontPixelSize + + rows: 2 + + // Header + EaElements.Label { + color: EaStyle.Colors.themeForegroundMinor + text: control.cifDict ? 'cif name' : 'cif-like name' + } + EaElements.Label { + color: EaStyle.Colors.themeForegroundMinor + text: 'value' + } + EaElements.Label { + visible: control.fittable && control.error !== 0 + color: EaStyle.Colors.themeForegroundMinor + text: 'error' + } + EaElements.Label { + visible: control.fittable && !control.readOnly + color: EaStyle.Colors.themeForegroundMinor + text: 'vary' + } + // Headert + + // Content + EaElements.Button { + text: `${control.category}.${control.name}` + checked: true + onClicked: Qt.openUrlExternally(control.url) + } + EaElements.Label { + text: control.value + font.bold: control.fit + } + EaElements.Label { + visible: control.fittable && control.error !== 0 + text: control.error + } + EaElements.CheckBox { + id: fitCheckBox + visible: control.fittable && !control.readOnly + padding: 0 + checked: control.fit + } + // Content + } + // Layout + } + // Menu + } + // Mouse area + +} diff --git a/src/EasyApp/Gui/Elements/ParamTextField.qml b/src/EasyApp/Gui/Elements/ParamTextField.qml new file mode 100644 index 00000000..e84e4936 --- /dev/null +++ b/src/EasyApp/Gui/Elements/ParamTextField.qml @@ -0,0 +1,187 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Logic as EaLogic +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +EaElements.TextField { + id: control + + property var parameter: {'value': 0.0, + 'error': 0.0, + 'enabled': true, + 'fittable': false, + 'fit': false, + 'category': '', + 'name': 'default', + 'prettyName': '', + 'shortPrettyName': '', + 'units': '', + 'url': '', + 'cifDict': ''} + + property var value: { + if (typeof parameter.value === 'undefined') { + return '' + } else if (typeof parameter.value === 'number') { + return EaLogic.Utils.toErrSinglePrecision(parameter.value, parameter.error) + } else { + return parameter.value + } + } + property var error: { + if (typeof parameter.error === 'undefined') { + return '' + } else if (typeof parameter.value === 'number') { + return EaLogic.Utils.toSinglePrecision(parameter.error) + } else { + return parameter.error + } + } + + property bool fittable: parameter.fittable ?? false + property bool fit: parameter.fit ?? false + property string category: parameter.category ?? '' + property string name: parameter.name ?? 'default' + property string prettyName: parameter.prettyName ?? '' + property string shortPrettyName: parameter.shortPrettyName ?? '' + property string units: parameter.units ?? '' + property string url: parameter.url ?? '' + property string cifDict: parameter.cifDict ?? '' + + property alias fitCheckBox: fitCheckBox + + readOnly: !parameter.enabled ?? false + + rightPadding: unitsPlaceholder.width + topInset: control.shortPrettyName === '' ? 0 : EaStyle.Sizes.fontPixelSize * 1.5 + topPadding: topInset + padding + + width: (EaStyle.Sizes.sideBarContentWidth - + (parent.children.length - 1) * EaStyle.Sizes.fontPixelSize * 0.5) / + parent.children.length + + text: control.value + font.bold: control.fit && enabled + + onAccepted: focus = false + + // Title + EaElements.Label { + anchors.right: parent.right + rightPadding: unitsPlaceholder.rightPadding + + color: EaStyle.Colors.themeForegroundMinor + + font.bold: false + text: control.shortPrettyName + } + // Title + + // Units + PlaceholderText { + id: unitsPlaceholder + + x: control.width - width + topPadding: control.topPadding + leftPadding: text !== '' ? EaStyle.Sizes.fontPixelSize * 0.5 : 0 + rightPadding: EaStyle.Sizes.fontPixelSize * 0.75 + + font.family: control.font.family + font.pixelSize: control.font.pixelSize + font.bold: false + color: control.placeholderTextColor + + text: control.units + textFormat: Text.RichText + } + // Units + + //Mouse area to react on click events + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + cursorShape: undefined // prevents changing the cursor + hoverEnabled: false + onClicked: (mouse) => { + if (mouse.button === Qt.RightButton) { + contextMenu.popup() + } + } + onPressAndHold: (mouse) => { + if (mouse.source === Qt.MouseEventNotSynthesized) { + contextMenu.popup() + } + } + // Menu + EaElements.Menu { + id: contextMenu + + width: layout.implicitWidth + + // Layout + Grid { + id: layout + + leftPadding: 1.25 * EaStyle.Sizes.fontPixelSize + rightPadding: 1.25 * EaStyle.Sizes.fontPixelSize + topPadding: 0.5 * EaStyle.Sizes.fontPixelSize + bottomPadding: 0.75 * EaStyle.Sizes.fontPixelSize + rowSpacing: 0.75 * EaStyle.Sizes.fontPixelSize + columnSpacing: 1.5 * EaStyle.Sizes.fontPixelSize + + rows: 2 + + // Header + EaElements.Label { + color: EaStyle.Colors.themeForegroundMinor + text: control.cifDict ? 'cif name' : 'cif-like name' + } + EaElements.Label { + color: EaStyle.Colors.themeForegroundMinor + text: 'value' + } + EaElements.Label { + visible: control.fittable && control.error !== '' + color: EaStyle.Colors.themeForegroundMinor + text: 'error' + } + EaElements.Label { + visible: control.fittable && !control.readOnly + color: EaStyle.Colors.themeForegroundMinor + text: 'vary' + } + // Headert + + // Content + EaElements.Button { + text: `${control.category}.${control.name}` + checked: true + onClicked: Qt.openUrlExternally(control.url) + } + EaElements.Label { + text: control.value + font.bold: control.fit + } + EaElements.Label { + visible: control.fittable && control.error !== '' + text: control.error + } + EaElements.CheckBox { + id: fitCheckBox + visible: control.fittable && !control.readOnly + padding: 0 + checked: control.fit + } + // Content + } + // Layout + } + // Menu + } + // Mouse area +} diff --git a/src/EasyApp/Gui/Elements/Parameter.qml b/src/EasyApp/Gui/Elements/Parameter.qml new file mode 100644 index 00000000..271b425c --- /dev/null +++ b/src/EasyApp/Gui/Elements/Parameter.qml @@ -0,0 +1,44 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + + +EaElements.TextField { + id: control + + property string units: '' + property string title: '' + + rightPadding: unitsPlaceholder.width + + topInset: title === '' ? 0 : EaStyle.Sizes.fontPixelSize * 1.5 + topPadding: topInset + padding + + width: parameterFieldWidth() + placeholderText: '' + + EaElements.Label { + enabled: false + text: control.title + } + + PlaceholderText { + id: unitsPlaceholder + + x: control.width - width + anchors.verticalCenter: control.verticalCenter + leftPadding: EaStyle.Sizes.fontPixelSize * 0.5 + rightPadding: EaStyle.Sizes.fontPixelSize * 0.75 + + font: control.font + color: control.placeholderTextColor + + text: units + textFormat: Text.RichText + } +} diff --git a/easyApp/Gui/Elements/Popup.qml b/src/EasyApp/Gui/Elements/Popup.qml similarity index 96% rename from easyApp/Gui/Elements/Popup.qml rename to src/EasyApp/Gui/Elements/Popup.qml index 1e9f237d..0833ed09 100644 --- a/easyApp/Gui/Elements/Popup.qml +++ b/src/EasyApp/Gui/Elements/Popup.qml @@ -1,5 +1,5 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Templates as T T.Popup { id: control diff --git a/src/EasyApp/Gui/Elements/RadioButton.qml b/src/EasyApp/Gui/Elements/RadioButton.qml new file mode 100644 index 00000000..6d265d7a --- /dev/null +++ b/src/EasyApp/Gui/Elements/RadioButton.qml @@ -0,0 +1,125 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Templates as T + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +T.RadioButton { + id: control + + property color color: EaStyle.Colors.themeForeground + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: EaStyle.Sizes.fontPixelSize * 0.5 + padding: EaStyle.Sizes.fontPixelSize * 0.5 + verticalPadding: padding + EaStyle.Sizes.fontPixelSize * 0.5 + + indicator: Rectangle { + x: control.text ? + (control.mirrored ? + control.width - width - control.rightPadding : + control.leftPadding) : + control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + implicitWidth: EaStyle.Sizes.fontPixelSize + implicitHeight: EaStyle.Sizes.fontPixelSize + + radius: width / 2 + border.width: 0.1 * EaStyle.Sizes.fontPixelSize + + color: "transparent" + border.color: checked || mouseHoverHandler.hovered ? + EaStyle.Colors.themeForegroundHovered : + control.color + Behavior on border.color { EaAnimations.ThemeChange {} } + + Rectangle { + anchors.centerIn: parent + + implicitWidth: EaStyle.Sizes.touchSize + implicitHeight: EaStyle.Sizes.touchSize + + radius: height * 0.5 + + color: mouseHoverHandler.hovered ? + (mouseArea.containsPress ? + EaStyle.Colors.appBarButtonBackgroundPressed : + EaStyle.Colors.appBarButtonBackgroundHovered) : + EaStyle.Colors.appBarButtonBackground + Behavior on color { + PropertyAnimation { + duration: mouseArea.containsMouse ? 500 : 0 + alwaysRunToEnd: true + easing.type: Easing.OutCubic + } + } + + //Mouse area to react on click events + MouseArea { + id: mouseArea + anchors.fill: parent + cursorShape: undefined // prevents changing the cursor + hoverEnabled: false + onPressed: (mouse) => mouse.accepted = false + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [RadioButton.qml] hovered`) + } + } + } + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + + width: EaStyle.Sizes.fontPixelSize * 0.6 + height: EaStyle.Sizes.fontPixelSize * 0.6 + + radius: width / 2 + + visible: control.checked || control.down + + color: parent.border.color + } + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? + control.indicator.width + control.spacing - + EaStyle.Sizes.fontPixelSize * 0.2 : + 0 + rightPadding: control.indicator && control.mirrored ? + control.indicator.width + control.spacing : + 0 + + text: control.text + font: control.font + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + + color: control.enabled ? + EaStyle.Colors.themeForeground : + EaStyle.Colors.themeForegroundDisabled + Behavior on color { + EaAnimations.ThemeChange {} + } + } +} diff --git a/src/EasyApp/Gui/Elements/RadioIndicator.qml b/src/EasyApp/Gui/Elements/RadioIndicator.qml new file mode 100644 index 00000000..68c4ad57 --- /dev/null +++ b/src/EasyApp/Gui/Elements/RadioIndicator.qml @@ -0,0 +1,19 @@ +import QtQuick + +import EasyApp.Gui.Style as EaStyle + +Rectangle { + id: indicator + +// property Item control + +// implicitWidth: EaStyle.Sizes.fontPixelSize +// implicitHeight: EaStyle.Sizes.fontPixelSize + +// radius: width / 2 + +// color: "transparent" +// border.width: EaStyle.Sizes.fontPixelSize / 8 + + +} diff --git a/easyApp/Gui/Elements/RectangularGlow.qml b/src/EasyApp/Gui/Elements/RectangularGlow.qml similarity index 99% rename from easyApp/Gui/Elements/RectangularGlow.qml rename to src/EasyApp/Gui/Elements/RectangularGlow.qml index 793e678c..527cd972 100644 --- a/easyApp/Gui/Elements/RectangularGlow.qml +++ b/src/EasyApp/Gui/Elements/RectangularGlow.qml @@ -1,4 +1,4 @@ -import QtQuick 2.15 +import QtQuick /* A cross-graphics API implementation of QtGraphicalEffects' RectangularGlow. diff --git a/src/EasyApp/Gui/Elements/RemoteController.qml b/src/EasyApp/Gui/Elements/RemoteController.qml new file mode 100644 index 00000000..144846c4 --- /dev/null +++ b/src/EasyApp/Gui/Elements/RemoteController.qml @@ -0,0 +1,523 @@ +import QtQuick +import QtQuick.Controls +//import QtGraphicalEffects 1.13 +import Qt5Compat.GraphicalEffects +import QtMultimedia +import QtTest + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements + +Item { + id: rc + + property string audioDir: "" + property bool audioEnabled: false + property bool isTestMode: false + + parent: Overlay.overlay + anchors.fill: parent + z: 9999 + + /* + focus: true + onFocusChanged: { + focus = true + print("*** rc focus", focus) + } + + Keys.onPressed: { + print("--event.key--", event.key) + if (event.key === Qt.Key_Escape) { + visible = false + } else { + event.accepted = false + } + } + */ + + TestUtil { id: util } + TestResult { id: result } + TestEvent { id: event } + + EaElements.RemotePointer { id: pointer } + + EaElements.Button { + visible: rc.visible + + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottomMargin: EaStyle.Sizes.statusBarHeight - 0.5 * height + + height: EaStyle.Sizes.sideBarButtonHeight + padding: EaStyle.Sizes.fontPixelSize + + background: Rectangle { + radius: 2 + color: EaStyle.Colors.mainContentBackground + opacity: 0.5 + + layer.enabled: true + layer.effect: DropShadow { + radius: 15 + samples: 50 + color: EaStyle.Colors.toolTipBorder + opacity: 0.5 + } + } + + text: qsTr("Stop tutorial") + onClicked: { + rc.hidePointer() + rc.visible = false + } + } + + /* + Audio { + id: audio + + onDurationChanged: { + play() + wait(audio.duration) + } + } + */ + + Timer { + id: saveScreenshots + + property int i: 1 + property int fps: EaGlobals.Vars.projectConfig.ci.app.tutorials.video.fps + property string screenshotsDir: EaGlobals.Vars.projectConfig.ci.project.subdirs.screenshots + + running: EaGlobals.Vars.saveScreenshotsRunning + + interval: 1000 / fps + repeat: true + + onTriggered: { + const fname = ("00000" + i++).slice(-6) + const fpath = screenshotsDir + "/" + fname + ".png" + saveScreenshot(rc, fpath) + } + } + + // Controller Logic + + function say(text) { + if (!visible) + return + if (!audioEnabled) + return + if (text === "") + return + const fileName = text.replace(/ /g, "_") + audio.source = `${audioDir}/${fileName}.mp3` + wait(1000) // Needed for smooth pointer movement + } + + function saveScreenshot(item, path) { + if (!visible) + return + const image = result.grabImage(item) + image.save(path) + } + + function wait(ms) { + if (!visible) + return + result.wait(ms) + } + + function posToCenter() { + if (!visible) + return + pointer.posX = rc.width / 2 - pointer.minSize / 2 + pointer.posY = rc.height / 2 - pointer.minSize / 2 + mouseMove(rc) + } + + function showPointer() { + if (!visible) + return + pointer.show() + wait(pointer.showHideDuration) + } + + function hidePointer() { + if (!visible) + return + pointer.hide() + wait(pointer.showHideDuration) + } + + function pointerMove(item, x, y, delay, buttons) { + if (!visible) + return + if (item === undefined) { + print("Undefined item") + return + } + + if (x === undefined) + x = item.width / 2 + if (y === undefined) + y = item.height / 2 + if (delay === undefined) + delay = -1 + if (buttons === undefined) + buttons = Qt.NoButton + + const pos = item.mapToItem(null, x, y) + pointer.move(pos.x, pos.y) + } + + function mousePress(item, x, y, button, modifiers, delay) { + if (!visible) + return + if (item === undefined) { + print("Undefined item") + return + } + + if (x === undefined) + x = item.width / 2 + if (y === undefined) + y = item.height / 2 + if (button === undefined) + button = Qt.LeftButton + if (modifiers === undefined) + modifiers = Qt.NoModifier + if (delay === undefined) + delay = -1 + + //event.mouseMove(item, x, y, button, modifiers, delay) + //event.mouseRelease(item, x, y, button, modifiers, delay) + event.mousePress(item, x, y, button, modifiers, delay) + pointer.click() + } + + function mouseRelease(item, x, y, button, modifiers, delay) { + if (!visible) + return + if (item === undefined) { + print("Undefined item") + return + } + + if (x === undefined) + x = item.width / 2 + if (y === undefined) + y = item.height / 2 + if (button === undefined) + button = Qt.LeftButton + if (modifiers === undefined) + modifiers = Qt.NoModifier + if (delay === undefined) + delay = -1 + + event.mouseRelease(item, x, y, button, modifiers, delay) + } + + function mouseClick(item, x, y) { + if (!visible) + return + pointerMove(item, x, y) + wait(pointer.moveDuration) + mouseMove(item) + + wait(pointer.clickRelaxation) + + mousePress(item, x, y) + wait(pointer.pressDuration) + mouseRelease(item, x, y) + wait(pointer.clickRelaxation - pointer.pressDuration) + + wait(pointer.clickRelaxation) + } + + function mouseLeftClickSilent(item) { + if (!visible) + return + if (item === undefined) { + print("Undefined item") + return + } + const x = item.width / 2 + const y = item.height / 2 + const button = Qt.LeftButton + const modifiers = Qt.NoModifier + const delay = -1 + + event.mouseClick(item, x, y, button, modifiers, delay) + } + + function mouseRightClickSilent(item) { + if (!visible) + return + if (item === undefined) { + print("Undefined item") + return + } + const x = item.width / 2 + const y = item.height / 2 + const button = Qt.RightButton + const modifiers = Qt.NoModifier + const delay = -1 + + event.mouseClick(item, x, y, button, modifiers, delay) + } + + function mouseMove(item) { + if (!visible) + return + if (item === undefined) { + print("Undefined item") + return + } + const x = item.width / 2 + const y = item.height / 2 + const button = Qt.NoButton + const delay = -1 + + event.mouseMove(item, x, y, delay, button) + } + + function mouseWheel(item) { + if (!visible) + return + if (item === undefined) { + print("Undefined item") + return + } + const x = item.width / 2 + const y = item.height / 2 + const xDelta = 0 + const yDelta = 120 // 120 units * 1/8 = 15 degrees + const button = Qt.NoButton + const modifiers = Qt.NoModifier + const delay = -1 + + event.mouseWheel(item, x, y, button, modifiers, xDelta, yDelta, delay) // ? + } + + function typeText(text) { + if (!visible) + return + const modifiers = Qt.NoModifier + const delay = -1 + for (const c of text) { + event.keyClickChar(c, modifiers, delay) + wait(100) + } + } + + function deleteCharacters(count) { + if (!visible) + return + const modifiers = Qt.NoModifier + const delay = -1 + const key = Qt.Key_Backspace//Key_Clear//Key_Delete + while (count > 0) { + event.keyClick(key, modifiers, delay) + wait(100) + count -= 1 + } + } + + function keyClick(key) { + if (!visible) + return + const modifiers = Qt.NoModifier + const delay = -1 + event.keyClick(key, modifiers, delay) + wait(500) + } + + function basename(fullpath) { + return fullpath.substring(fullpath.lastIndexOf('/') + 1) + } + + function compare(actual, expected) { + const file = basename(util.callerFile()) + const line = util.callerLine() + + if (typeof actual === 'undefined') { + return(`FAIL in ${file}:${line}: Actual object or property is undefined.`) + } + + const success = qtest_compareInternal(actual, expected) + if (success) { + return(`OK in ${basename(util.callerFile())}:${util.callerLine()}`) + } else { + const actualStr = result.stringify(actual) + const expectedStr = result.stringify(expected) + return(`FAIL in ${file}:${line}: '${actualStr}' != '${expectedStr}'`) + } + } + + /*! \internal */ + // Determine what is o. + // Discussions and reference: http://philrathe.com/articles/equiv + // Test suites: http://philrathe.com/tests/equiv + // Author: Philippe Rathé + function qtest_typeof(o) { + if (typeof o === "undefined") { + return "undefined"; + + // consider: typeof null === object + } else if (o === null) { + return "null"; + + } else if (o.constructor === String) { + return "string"; + + } else if (o.constructor === Boolean) { + return "boolean"; + + } else if (o.constructor === Number) { + + if (isNaN(o)) { + return "nan"; + } else { + return "number"; + } + // consider: typeof [] === object + } else if (o instanceof Array) { + return "array"; + + // consider: typeof new Date() === object + } else if (o instanceof Date) { + return "date"; + + // consider: /./ instanceof Object; + // /./ instanceof RegExp; + // typeof /./ === "function"; // => false in IE and Opera, + // true in FF and Safari + } else if (o instanceof RegExp) { + return "regexp"; + + } else if (typeof o === "object") { + if ("mapFromItem" in o && "mapToItem" in o) { + return "declarativeitem"; // @todo improve detection of declarative items + } else if ("x" in o && "y" in o && "z" in o) { + return "vector3d"; // Qt 3D vector + } + return "object"; + } else if (o instanceof Function) { + return "function"; + } else { + return undefined; + } + } + + /*! \internal */ + // Test for equality + // Large parts contain sources from QUnit or http://philrathe.com + // Discussions and reference: http://philrathe.com/articles/equiv + // Test suites: http://philrathe.com/tests/equiv + // Author: Philippe Rathé + function qtest_compareInternal(act, exp) { + var success = false; + if (act === exp) { + success = true; // catch the most you can + } else if (act === null || exp === null || typeof act === "undefined" || typeof exp === "undefined") { + success = false; // don't lose time with error prone cases + } else { + var typeExp = qtest_typeof(exp), typeAct = qtest_typeof(act) + if (typeExp !== typeAct) { + // allow object vs string comparison (e.g. for colors) + // else break on different types + if ((typeExp === "string" && (typeAct === "object") || typeAct == "declarativeitem") + || ((typeExp === "object" || typeExp == "declarativeitem") && typeAct === "string")) { + success = (act == exp) + } + } else if (typeExp === "string" || typeExp === "boolean" || + typeExp === "null" || typeExp === "undefined") { + if (exp instanceof act.constructor || act instanceof exp.constructor) { + // to catch short annotaion VS 'new' annotation of act declaration + // e.g. var i = 1; + // var j = new Number(1); + success = (act == exp) + } else { + success = (act === exp) + } + } else if (typeExp === "nan") { + success = isNaN(act); + } else if (typeExp === "number") { + // Use act fuzzy compare if the two values are floats + if (Math.abs(act - exp) <= 0.00001) { + success = true + } + } else if (typeExp === "array") { + success = qtest_compareInternalArrays(act, exp) + } else if (typeExp === "object") { + success = qtest_compareInternalObjects(act, exp) + } else if (typeExp === "declarativeitem") { + success = qtest_compareInternalObjects(act, exp) // @todo improve comparison of declarative items + } else if (typeExp === "vector3d") { + success = (Math.abs(act.x - exp.x) <= 0.00001 && + Math.abs(act.y - exp.y) <= 0.00001 && + Math.abs(act.z - exp.z) <= 0.00001) + } else if (typeExp === "date") { + success = (act.valueOf() === exp.valueOf()) + } else if (typeExp === "regexp") { + success = (act.source === exp.source && // the regex itself + act.global === exp.global && // and its modifers (gmi) ... + act.ignoreCase === exp.ignoreCase && + act.multiline === exp.multiline) + } + } + return success + } + + /*! \internal */ + function qtest_compareInternalObjects(act, exp) { + var i; + var eq = true; // unless we can proove it + var aProperties = [], bProperties = []; // collection of strings + + // comparing constructors is more strict than using instanceof + if (act.constructor !== exp.constructor) { + return false; + } + + for (i in act) { // be strict: don't ensures hasOwnProperty and go deep + aProperties.push(i); // collect act's properties + if (!qtest_compareInternal(act[i], exp[i])) { + eq = false; + break; + } + } + + for (i in exp) { + bProperties.push(i); // collect exp's properties + } + + if (aProperties.length == 0 && bProperties.length == 0) { // at least a special case for QUrl + return eq && (JSON.stringify(act) == JSON.stringify(exp)); + } + + // Ensures identical properties name + return eq && qtest_compareInternal(aProperties.sort(), bProperties.sort()); + + } + + /*! \internal */ + function qtest_compareInternalArrays(actual, expected) { + if (actual.length != expected.length) { + return false + } + + for (var i = 0, len = actual.length; i < len; i++) { + if (!qtest_compareInternal(actual[i], expected[i])) { + return false + } + } + + return true + } + +} diff --git a/easyApp/Gui/Elements/RemotePointer.qml b/src/EasyApp/Gui/Elements/RemotePointer.qml similarity index 97% rename from easyApp/Gui/Elements/RemotePointer.qml rename to src/EasyApp/Gui/Elements/RemotePointer.qml index fa734742..06779455 100644 --- a/easyApp/Gui/Elements/RemotePointer.qml +++ b/src/EasyApp/Gui/Elements/RemotePointer.qml @@ -1,5 +1,6 @@ -import QtQuick 2.15 -import QtGraphicalEffects 1.13 +import QtQuick +//import QtGraphicalEffects 1.13 +import Qt5Compat.GraphicalEffects Rectangle { id: pointer diff --git a/easyApp/Gui/Elements/RunningLabel.qml b/src/EasyApp/Gui/Elements/RunningLabel.qml similarity index 83% rename from easyApp/Gui/Elements/RunningLabel.qml rename to src/EasyApp/Gui/Elements/RunningLabel.qml index 7ff2a3a1..8ec9182f 100644 --- a/easyApp/Gui/Elements/RunningLabel.qml +++ b/src/EasyApp/Gui/Elements/RunningLabel.qml @@ -1,7 +1,7 @@ -import QtQuick 2.15 +import QtQuick -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements Item { id: control @@ -33,7 +33,6 @@ Item { property: 'opacity' to: 1 duration: 750 - easing: Easing.OutExpo } PropertyAnimation { @@ -41,7 +40,6 @@ Item { property: 'opacity' to: 0 duration: 750 - easing: Easing.OutExpo } } } diff --git a/src/EasyApp/Gui/Elements/ScrollBar.qml b/src/EasyApp/Gui/Elements/ScrollBar.qml new file mode 100644 index 00000000..1384ecda --- /dev/null +++ b/src/EasyApp/Gui/Elements/ScrollBar.qml @@ -0,0 +1,56 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls.Material + +T.ScrollBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: control.interactive ? 1 : 2 + visible: control.policy !== T.ScrollBar.AlwaysOff + minimumSize: orientation === Qt.Horizontal ? height / width : width / height + + contentItem: Rectangle { + implicitWidth: control.interactive ? 13 : 4 + implicitHeight: control.interactive ? 13 : 4 + + color: control.pressed ? + control.Material.scrollBarPressedColor : + control.interactive && control.hovered ? + control.Material.scrollBarHoveredColor : + control.Material.scrollBarColor + opacity: 0.0 + } + + background: Rectangle { + implicitWidth: control.interactive ? 16 : 4 + implicitHeight: control.interactive ? 16 : 4 + color: "#0e000000" + opacity: 0.0 + visible: control.interactive + } + + states: State { + name: "active" + when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) + } + + transitions: [ + Transition { + to: "active" + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PropertyAction{ targets: [control.contentItem, control.background]; property: "opacity"; value: 1.0 } + PauseAnimation { duration: 2450 } + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 0.0 } + } + } + ] +} diff --git a/easyApp/Gui/Elements/ScrollIndicator.qml b/src/EasyApp/Gui/Elements/ScrollIndicator.qml similarity index 95% rename from easyApp/Gui/Elements/ScrollIndicator.qml rename to src/EasyApp/Gui/Elements/ScrollIndicator.qml index 1bd9c22b..0e99a83f 100644 --- a/easyApp/Gui/Elements/ScrollIndicator.qml +++ b/src/EasyApp/Gui/Elements/ScrollIndicator.qml @@ -1,5 +1,5 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Templates as T T.ScrollIndicator { id: control diff --git a/easyApp/Gui/Elements/SideBarButton.qml b/src/EasyApp/Gui/Elements/SideBarButton.qml similarity index 67% rename from easyApp/Gui/Elements/SideBarButton.qml rename to src/EasyApp/Gui/Elements/SideBarButton.qml index 1226926e..204a5e2a 100644 --- a/easyApp/Gui/Elements/SideBarButton.qml +++ b/src/EasyApp/Gui/Elements/SideBarButton.qml @@ -1,17 +1,18 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.Button { id: control property bool wide: false + property bool showBackground: true property bool smallIcon: false property int radius: 2 property string fontIcon: "" @@ -28,14 +29,17 @@ T.Button { padding: 0 spacing: EaStyle.Sizes.fontPixelSize * 0.5 + flat: true + font.family: EaStyle.Fonts.fontFamily font.pixelSize: EaStyle.Sizes.fontPixelSize // ToolTip EaElements.ToolTip { text: control.ToolTip.text - visible: control.hovered && EaGlobals.Variables.showToolTips && text !== "" + visible: control.hovered && EaGlobals.Vars.showToolTips && text !== "" } + // ToolTip // Icon with text label contentItem: Item { @@ -45,8 +49,10 @@ T.Button { // Icon Label { + id: iconLabel anchors.verticalCenter: parent.verticalCenter + font.family: EaStyle.Fonts.iconsFamily font.pixelSize: smallIcon ? control.font.pixelSize * 1.0 : @@ -57,6 +63,7 @@ T.Button { color: foregroundColor() Behavior on color { EaAnimations.ThemeChange {} } } + // Icon // Text label Label { @@ -70,12 +77,18 @@ T.Button { color: foregroundColor() Behavior on color { EaAnimations.ThemeChange {} } } + // Text label } } + // Icon with text label // Background background: Rectangle { - implicitWidth: wide ? EaStyle.Sizes.sideBarContentWidth : (EaStyle.Sizes.sideBarContentWidth - EaStyle.Sizes.fontPixelSize) / 2 + visible: showBackground + + implicitWidth: wide ? + EaStyle.Sizes.sideBarContentWidth : + (EaStyle.Sizes.sideBarContentWidth - EaStyle.Sizes.fontPixelSize) / 2 implicitHeight: EaStyle.Sizes.sideBarButtonHeight radius: control.radius @@ -86,22 +99,35 @@ T.Button { border.color: borderColor()//control.hovered ? EaStyle.Colors.themeBackground : EaStyle.Colors.appBarBorder Behavior on border.color { EaAnimations.ThemeChange {} } } + // Background //Mouse area to react on click events MouseArea { - id: rippleArea + id: mouseArea anchors.fill: parent - hoverEnabled: true - //onClicked: control.clicked() // Doesn't work as for Button or ToolButton - onPressed: mouse.accepted = false // Color doesn't changed onPressed + hoverEnabled: false + cursorShape: undefined //Qt.PointingHandCursor + onPressed: (mouse) => mouse.accepted = false } + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TabButton.qml] hovered`) + } + } + } // Logic function backgroundColor() { if (!control.enabled) return EaStyle.Colors.themeBackgroundDisabled - if (rippleArea.containsMouse) + if (mouseHoverHandler.hovered) return EaStyle.Colors.themeBackgroundHovered1 return EaStyle.Colors.themeBackground } @@ -109,7 +135,7 @@ T.Button { function foregroundColor() { if (!control.enabled) return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse || control.checked || control.down) + if (mouseHoverHandler.hovered || control.checked || control.down) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.themeForeground } @@ -117,7 +143,7 @@ T.Button { function borderColor() { if (!control.enabled) return EaStyle.Colors.themeBackgroundDisabled - if (rippleArea.containsMouse || control.checked || control.down) + if (mouseHoverHandler.hovered || control.checked || control.down) return EaStyle.Colors.appBarBackground return EaStyle.Colors.appBarComboBoxBorder } diff --git a/easyApp/Gui/Elements/Slider.qml b/src/EasyApp/Gui/Elements/Slider.qml similarity index 65% rename from easyApp/Gui/Elements/Slider.qml rename to src/EasyApp/Gui/Elements/Slider.qml index 7f7c4631..9eac32ed 100644 --- a/easyApp/Gui/Elements/Slider.qml +++ b/src/EasyApp/Gui/Elements/Slider.qml @@ -1,15 +1,18 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls.Material 2.12 -import QtQuick.Controls.Material.impl 2.12 +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls.Material +import QtQuick.Controls.Material.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Logic as EaLogic +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.Slider { id: control + property alias toolTipText: toolTip.text + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitHandleWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, @@ -26,8 +29,10 @@ T.Slider { handleHovered: control.hovered EaElements.ToolTip { - visible: slider.pressed - text: control.value.toFixed(4) + id: toolTip + + visible: slider.pressed || slider.hovered + //text: EaLogic.Utils.toDefaultPrecision(control.value) } } @@ -56,26 +61,3 @@ T.Slider { } } } - - - - - -/* -T.Slider { - - - handle: Rectangle { - x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) - implicitWidth: 28 - implicitHeight: 28 - radius: width / 2 - color: control.pressed ? control.palette.light : control.palette.window - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight - } - - -} -*/ diff --git a/easyApp/Gui/Elements/SliderHandle.qml b/src/EasyApp/Gui/Elements/SliderHandle.qml similarity index 85% rename from easyApp/Gui/Elements/SliderHandle.qml rename to src/EasyApp/Gui/Elements/SliderHandle.qml index ad66b248..e84057fc 100644 --- a/easyApp/Gui/Elements/SliderHandle.qml +++ b/src/EasyApp/Gui/Elements/SliderHandle.qml @@ -1,9 +1,9 @@ -import QtQuick 2.15 -import QtQuick.Controls.Material 2.15 -import QtQuick.Controls.Material.impl 2.15 +import QtQuick +import QtQuick.Controls.Material +import QtQuick.Controls.Material.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations Item { id: root diff --git a/easyApp/Gui/Elements/SpinBox.qml b/src/EasyApp/Gui/Elements/SpinBox.qml similarity index 91% rename from easyApp/Gui/Elements/SpinBox.qml rename to src/EasyApp/Gui/Elements/SpinBox.qml index 6fc3ead5..44324aed 100644 --- a/easyApp/Gui/Elements/SpinBox.qml +++ b/src/EasyApp/Gui/Elements/SpinBox.qml @@ -1,9 +1,9 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Templates as T -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.SpinBox { @@ -20,10 +20,10 @@ T.SpinBox { //Mouse area to react on click events MouseArea { - id: rippleArea + id: mouseArea anchors.fill: parent hoverEnabled: true - onPressed: mouse.accepted = false + onPressed: (mouse) => mouse.accepted = false } validator: IntValidator { @@ -130,7 +130,7 @@ T.SpinBox { function foregroundColor() { if (!enabled) return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse || control.activeFocus) + if (mouseArea.containsMouse || control.activeFocus) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.themeForeground } @@ -144,7 +144,7 @@ T.SpinBox { function borderColorBottom() { if (!enabled) return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse || control.activeFocus) + if (mouseArea.containsMouse || control.activeFocus) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.appBarComboBoxBorder } diff --git a/src/EasyApp/Gui/Elements/SplashScreen.qml b/src/EasyApp/Gui/Elements/SplashScreen.qml new file mode 100644 index 00000000..cce6871b --- /dev/null +++ b/src/EasyApp/Gui/Elements/SplashScreen.qml @@ -0,0 +1,124 @@ +import QtQuick +import QtQuick.Controls + +import QtQuick.Window + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Window { + id: splashScreen + + property alias appNamePrefix: appNamePrefixLabel.text + property alias appNameSuffix: appNameSuffixLabel.text + property alias appVersion: appVersionLabel.text + property alias logoSource: splashScreenLogo.source + + property bool initialGuiCompleted: false + property bool animationFinished: false + + visible: !animationFinished + + //x: Screen.width / 2 - width / 2 + //y: Screen.height / 2 - height / 2 + + height: splashScreenLogoRect.height + width: splashScreenLogoRect.width + + flags: Qt.FramelessWindowHint //Qt.Popup + + color: "transparent" + + // Splash screen logo with animation + + Rectangle { + id: splashScreenLogoRect + + height: splashScreenLogo.anchors.topMargin + + splashScreenLogo.height + + splashScreenLogo.anchors.bottomMargin + width: splashScreenLogo.anchors.leftMargin + + splashScreenLogo.width + + appNamePrefixLabel.anchors.leftMargin + + appNamePrefixLabel.width + + appNameSuffixLabel.width + + appNameSuffixLabel.anchors.rightMargin + + color: EaStyle.Colors.appBarBackground + radius: EaStyle.Sizes.fontPixelSize + + // Application logo + Image { + id: splashScreenLogo + + height: EaStyle.Sizes.fontPixelSize * 7 + width: EaStyle.Sizes.fontPixelSize * 7 + + anchors.verticalCenter: parent.verticalCenter + anchors.topMargin: EaStyle.Sizes.fontPixelSize * 1.5 + anchors.bottomMargin: EaStyle.Sizes.fontPixelSize * 1.5 + anchors.left: parent.left + anchors.leftMargin: EaStyle.Sizes.fontPixelSize * 1.5 + + fillMode: Image.PreserveAspectFit + antialiasing: true + + RotationAnimation { + id: splashScreenLogoAnimo + + target: splashScreenLogo + + running: !initialGuiCompleted + alwaysRunToEnd: true + + loops: Animation.Infinite + from: 0 + to: 360 * 6 + duration: 2000 + easing.type: Easing.OutInElastic + + onFinished: animationFinished = true + } + } + + // Application name prefix, e.g. `easy` + EaElements.Label { + id: appNamePrefixLabel + + anchors.left: splashScreenLogo.right + anchors.leftMargin: EaStyle.Sizes.fontPixelSize + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -EaStyle.Sizes.fontPixelSize * 0.75 + + font.family: EaStyle.Fonts.thirdFontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize * 6 + font.weight: Font.Light + } + + // Application name suffix, e.g. `diffraction` + EaElements.Label { + id: appNameSuffixLabel + + anchors.left: appNamePrefixLabel.right + anchors.rightMargin: EaStyle.Sizes.fontPixelSize * 1.5 + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -EaStyle.Sizes.fontPixelSize * 0.75 + + font.family: EaStyle.Fonts.thirdFontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize * 6 + font.weight: Font.DemiBold + } + + // Application version + EaElements.Label { + id: appVersionLabel + + anchors.right: appNameSuffixLabel.right + anchors.top: appNameSuffixLabel.bottom + anchors.topMargin: -EaStyle.Sizes.fontPixelSize + anchors.rightMargin: EaStyle.Sizes.fontPixelSize * 0.5 + } + } + +} diff --git a/src/EasyApp/Gui/Elements/StatusBar.qml b/src/EasyApp/Gui/Elements/StatusBar.qml new file mode 100644 index 00000000..c50d6acd --- /dev/null +++ b/src/EasyApp/Gui/Elements/StatusBar.qml @@ -0,0 +1,46 @@ +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +Rectangle { + id: statusBar + + default property alias contentRowData: contentRow.data + + width: parent.width + height: parent.height + + color: EaStyle.Colors.statusBarBackground + Behavior on color { EaAnimations.ThemeChange {} } + + // main content container + Row { + id: contentRow + + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + + anchors.leftMargin: EaStyle.Sizes.fontPixelSize + anchors.rightMargin: EaStyle.Sizes.fontPixelSize + + spacing: EaStyle.Sizes.fontPixelSize * 1.2 + } + + // Status bar top border + Rectangle { + anchors.top: statusBar.top + anchors.left: statusBar.left + anchors.right: statusBar.right + + height: 1//EaStyle.Sizes.borderThickness + + color: EaStyle.Colors.appBarBorder + Behavior on color { EaAnimations.ThemeChange {} } + } + +} diff --git a/src/EasyApp/Gui/Elements/StatusBarItem.qml b/src/EasyApp/Gui/Elements/StatusBarItem.qml new file mode 100644 index 00000000..2fadc841 --- /dev/null +++ b/src/EasyApp/Gui/Elements/StatusBarItem.qml @@ -0,0 +1,124 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +T.Button { + id: control + + property string keyIcon: '' + property string keyText: '' + property string valueText: '' + + visible: valueText !== '' + + implicitWidth: implicitContentWidth + leftPadding + rightPadding + implicitHeight: implicitContentHeight + topPadding + bottomPadding + leftInset: 0 + rightInset: 0 + topInset: 0 + bottomInset: 0 + padding: 0 + spacing: EaStyle.Sizes.fontPixelSize * 0.5 + anchors.verticalCenter: parent.verticalCenter + + font.family: EaStyle.Fonts.fontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize + + // contentItem + contentItem: Item { + implicitWidth: row.width + implicitHeight: row.height + + // contentItem row layout + Row { + id: row + spacing: control.spacing + anchors.verticalCenter: parent.verticalCenter + + // key icon + Label { + text: control.keyIcon + + height: font.pixelSize + verticalAlignment: Text.AlignVCenter + + font.family: EaStyle.Fonts.iconsFamily + font.pixelSize: control.font.pixelSize + + color: EaStyle.Colors.statusBarIconForeground + Behavior on color { EaAnimations.ThemeChange {} } + } + // key icon + + // key text + Label { + text: control.keyText + + visible: control.parent.width > EaStyle.Sizes.appWindowWidthWXGA + + height: font.pixelSize + verticalAlignment: Text.AlignVCenter + + font.family: control.font.family + font.pixelSize: control.font.pixelSize + + color: EaStyle.Colors.statusBarTextForeground + Behavior on color { EaAnimations.ThemeChange {} } + } + // key text + + // value text + Label { + id: valueLabel + + text: control.valueText + onTextChanged: { + color = EaStyle.Colors.themeForegroundHovered + colorResetAnimo.restart() + } + + height: font.pixelSize + verticalAlignment: Text.AlignVCenter + + font.family: control.font.family + font.pixelSize: control.font.pixelSize + + color: EaStyle.Colors.themeForeground + Behavior on color { EaAnimations.ThemeChange {} } + + EaAnimations.ColorReset { + id: colorResetAnimo + + target: valueLabel + to: EaStyle.Colors.themeForeground + } + } + // value text + + } + // contentItem row layout + } + // contentItem + + // background + background: Rectangle { + color: 'transparent' + } + // background + + // ToolTip + EaElements.ToolTip { + text: control.ToolTip.text + visible: text !== "" && + control.hovered && + EaGlobals.Vars.showToolTips + } + // ToolTip + +} diff --git a/easyApp/Gui/Elements/TabBar.qml b/src/EasyApp/Gui/Elements/TabBar.qml similarity index 80% rename from easyApp/Gui/Elements/TabBar.qml rename to src/EasyApp/Gui/Elements/TabBar.qml index c6457f9c..c11428a7 100644 --- a/easyApp/Gui/Elements/TabBar.qml +++ b/src/EasyApp/Gui/Elements/TabBar.qml @@ -1,10 +1,10 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls.Material 2.15 -import QtQuick.Controls.Material.impl 2.15 +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls.Material +import QtQuick.Controls.Material.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations T.TabBar { id: control @@ -37,10 +37,14 @@ T.TabBar { highlight: Item { z: 2 + Rectangle { height: 2 width: parent.width - y: control.position === T.TabBar.Footer ? 0 : parent.height - height - EaStyle.Sizes.borderThickness + y: control.position === T.TabBar.Footer ? + 0 : + parent.height - height - EaStyle.Sizes.borderThickness + color: EaStyle.Colors.themeAccent } } @@ -48,16 +52,17 @@ T.TabBar { background: Rectangle { z: 2 - //color: control.Material.backgroundColor color: "transparent" // tabs bottom border Rectangle { visible: showBottomBorder + anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom height: EaStyle.Sizes.borderThickness + color: EaStyle.Colors.appBorder Behavior on color { EaAnimations.ThemeChange {} } } diff --git a/easyApp/Gui/Elements/TabButton.qml b/src/EasyApp/Gui/Elements/TabButton.qml similarity index 59% rename from easyApp/Gui/Elements/TabButton.qml rename to src/EasyApp/Gui/Elements/TabButton.qml index 1fdf4eea..69f1c285 100644 --- a/easyApp/Gui/Elements/TabButton.qml +++ b/src/EasyApp/Gui/Elements/TabButton.qml @@ -1,19 +1,22 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 -import QtQuick.Controls.Material 2.15 -import QtQuick.Controls.Material.impl 2.15 - -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl +import QtQuick.Controls.Material +import QtQuick.Controls.Material.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.TabButton { id: control + property bool highlighted: false property string fontIcon: "" + property string iconColor: "" + property string backgroundColor: getBackgroundColor() property color borderColor: "transparent" width: Math.max(implicitBackgroundWidth + leftInset + rightInset, @@ -35,7 +38,9 @@ T.TabButton { // ToolTip EaElements.ToolTip { text: control.ToolTip.text - visible: control.hovered && EaGlobals.Variables.showToolTips && text !== "" + visible: text !== "" && + control.hovered && + EaGlobals.Vars.showToolTips } // Icon with text label @@ -51,13 +56,13 @@ T.TabButton { // Icon Label { font.family: EaStyle.Fonts.iconsFamily - font.pixelSize: control.font.pixelSize * 1.25 + font.pixelSize: control.font.pixelSize text: control.fontIcon - color: foregroundColor() + color: iconColor ? iconColor : foregroundColor() Behavior on color { EaAnimations.ThemeChange {} } - } + } // Text label Label { @@ -77,7 +82,7 @@ T.TabButton { background: Rectangle { implicitHeight: EaStyle.Sizes.tabBarHeight - color: backgroundColor() + color: backgroundColor Behavior on color { EaAnimations.ThemeChange {} } border.color: borderColor @@ -86,29 +91,32 @@ T.TabButton { //Mouse area to react on click events MouseArea { - id: rippleArea + id: mouseArea anchors.fill: parent - hoverEnabled: true - //onClicked: control.clicked() // Doesn't work as for Button or ToolButton - onPressed: mouse.accepted = false // Color doesn't changed onPressed + cursorShape: undefined //Qt.PointingHandCursor + hoverEnabled: false + onPressed: (mouse) => mouse.accepted = false } - // Logic - - /* - function backgroundColor() { - if (!control.enabled) - return "#00000000" //EaStyle.Colors.themeBackgroundDisabled - if (rippleArea.containsMouse) - return EaStyle.Colors.isDarkTheme ? "#22ffffff" : "#11000000" //EaStyle.Colors.themeBackgroundHovered - return "#00000000" //EaStyle.Colors.themeBackground + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TabButton.qml] hovered`) + } + } } - */ - function backgroundColor() { + // Logic + + function getBackgroundColor() { if (!control.enabled) return EaStyle.Colors.contentBackground - if (rippleArea.containsMouse) + if (mouseHoverHandler.hovered) return EaStyle.Colors.themeBackgroundHovered1 return EaStyle.Colors.contentBackground } @@ -116,8 +124,11 @@ T.TabButton { function foregroundColor() { if (!control.enabled) return EaStyle.Colors.themeForegroundDisabled - if (rippleArea.containsMouse || control.checked || control.down) - return EaStyle.Colors.themeForegroundHovered - return EaStyle.Colors.themeForeground + if (!highlighted) { + if (mouseHoverHandler.hovered || control.checked || control.down) + return EaStyle.Colors.themeForegroundHovered + return EaStyle.Colors.themeForeground + } + return EaStyle.Colors.themeForegroundHighlight } } diff --git a/easyApp/Gui/Elements/TextArea.qml b/src/EasyApp/Gui/Elements/TextArea.qml similarity index 87% rename from easyApp/Gui/Elements/TextArea.qml rename to src/EasyApp/Gui/Elements/TextArea.qml index f6348a9f..4dd4c570 100644 --- a/easyApp/Gui/Elements/TextArea.qml +++ b/src/EasyApp/Gui/Elements/TextArea.qml @@ -1,16 +1,17 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.TextArea { id: control + property alias backgroundRect: backgroundRect property real backgroundOpacity: 1.0 implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, @@ -59,6 +60,7 @@ T.TextArea { } background: Rectangle { + id: backgroundRect opacity: backgroundOpacity color: enabled ? EaStyle.Colors.textViewBackground : EaStyle.Colors.textViewBackgroundDisabled Behavior on color { EaAnimations.ThemeChange {} } diff --git a/easyApp/Gui/Elements/TextField.qml b/src/EasyApp/Gui/Elements/TextField.qml similarity index 59% rename from easyApp/Gui/Elements/TextField.qml rename to src/EasyApp/Gui/Elements/TextField.qml index 590666d7..bebbb9ba 100644 --- a/easyApp/Gui/Elements/TextField.qml +++ b/src/EasyApp/Gui/Elements/TextField.qml @@ -1,15 +1,17 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.TextField { id: control + property bool warned: false + implicitWidth: implicitBackgroundWidth + leftInset + rightInset || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, @@ -29,10 +31,15 @@ T.TextField { font.pixelSize: EaStyle.Sizes.fontPixelSize //font.bold: control.activeFocus ? true : false - color: !enabled ? EaStyle.Colors.themeForegroundDisabled : - rippleArea.containsMouse || control.activeFocus ? - EaStyle.Colors.themeForegroundHovered : - EaStyle.Colors.themeForeground + color: warned ? + EaStyle.Colors.red : + !enabled ? + EaStyle.Colors.themeForegroundDisabled : + readOnly ? + EaStyle.Colors.themeForegroundMinor : + mouseHoverHandler.hovered || control.activeFocus ? + EaStyle.Colors.themeForegroundHovered : + EaStyle.Colors.themeForeground Behavior on color { EaAnimations.ThemeChange {} } selectionColor: EaStyle.Colors.themeAccent @@ -62,26 +69,36 @@ T.TextField { } background: Rectangle { - color: control.activeFocus ? + color: enabled && !readOnly && (control.activeFocus || control.hovered) ? EaStyle.Colors.appBarComboBoxBackgroundHovered : - control.hovered ? - EaStyle.Colors.appBarComboBoxBackgroundHovered : - EaStyle.Colors.appBarComboBoxBackground + EaStyle.Colors.appBarComboBoxBackground Behavior on color { EaAnimations.ThemeChange {} } - border.color: control.activeFocus ? + border.color: enabled && !readOnly && (control.activeFocus || control.hovered) ? EaStyle.Colors.themeForegroundHovered : - control.hovered ? - EaStyle.Colors.themeForegroundHovered : - EaStyle.Colors.appBarComboBoxBorder + EaStyle.Colors.appBarComboBoxBorder Behavior on border.color { EaAnimations.ThemeChange {} } } //Mouse area to react on click events MouseArea { - id: rippleArea + id: mouseArea anchors.fill: control - hoverEnabled: true - onPressed: mouse.accepted = false + cursorShape: undefined // prevents changing the cursor + hoverEnabled: false + onPressed: (mouse) => mouse.accepted = false + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: !enabled || readOnly ? Qt.ArrowCursor : Qt.IBeamCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TextInput.qml] hovered`) + } + } } } diff --git a/src/EasyApp/Gui/Elements/TextInput.qml b/src/EasyApp/Gui/Elements/TextInput.qml new file mode 100644 index 00000000..0d8314e0 --- /dev/null +++ b/src/EasyApp/Gui/Elements/TextInput.qml @@ -0,0 +1,91 @@ +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + + +T.TextField { + id: control + + property bool warned: false + property bool selected: false + property bool minored: false + + implicitWidth: implicitBackgroundWidth + leftInset + rightInset || + Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding, + placeholder.implicitHeight + topPadding + bottomPadding) + + selectByMouse: true + + font.family: EaStyle.Fonts.fontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize + font.bold: control.activeFocus ? true : false + + color: warned ? + EaStyle.Colors.red : + !enabled || readOnly || minored ? + EaStyle.Colors.themeForegroundMinor : + focus || selected || mouseHoverHandler.hovered ? + EaStyle.Colors.themeForegroundHovered : + EaStyle.Colors.themeForeground + Behavior on color { EaAnimations.ThemeChange {} } + + selectionColor: EaStyle.Colors.themeAccent + Behavior on selectionColor { EaAnimations.ThemeChange {} } + + selectedTextColor: EaStyle.Colors.themeBackground + Behavior on selectedTextColor { EaAnimations.ThemeChange {} } + + placeholderTextColor: EaStyle.Colors.themeForegroundDisabled + Behavior on placeholderTextColor { EaAnimations.ThemeChange {} } + + cursorDelegate: EaElements.CursorDelegate {} + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + renderType: control.renderType + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + } + + background: Rectangle { + color: 'transparent' + } + + //Mouse area to react on click events + MouseArea { + id: mouseArea + anchors.fill: control + cursorShape: undefined // prevents changing the cursor + hoverEnabled: false + onPressed: (mouse) => mouse.accepted = false + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.IBeamCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [TextInput.qml] hovered`) + } + } + } + +} diff --git a/easyApp/Gui/Elements/ToolBar.qml b/src/EasyApp/Gui/Elements/ToolBar.qml similarity index 89% rename from easyApp/Gui/Elements/ToolBar.qml rename to src/EasyApp/Gui/Elements/ToolBar.qml index 93181508..adfb9536 100644 --- a/easyApp/Gui/Elements/ToolBar.qml +++ b/src/EasyApp/Gui/Elements/ToolBar.qml @@ -1,8 +1,8 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T +import QtQuick +import QtQuick.Templates as T -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Animations 1.0 as EaAnimations +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations T.ToolBar { id: control diff --git a/easyApp/Gui/Elements/ToolButton.qml b/src/EasyApp/Gui/Elements/ToolButton.qml similarity index 67% rename from easyApp/Gui/Elements/ToolButton.qml rename to src/EasyApp/Gui/Elements/ToolButton.qml index 0d3a5fee..9c6ab8ca 100644 --- a/easyApp/Gui/Elements/ToolButton.qml +++ b/src/EasyApp/Gui/Elements/ToolButton.qml @@ -1,12 +1,12 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtQuick.Controls 2.15 -import QtQuick.Controls.impl 2.15 +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.impl -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.ToolButton { id: control @@ -35,7 +35,7 @@ T.ToolButton { // ToolTip EaElements.ToolTip { text: control.ToolTip.text - visible: control.hovered && EaGlobals.Variables.showToolTips && text !== "" + visible: control.hovered && EaGlobals.Vars.showToolTips && text !== "" } // Icon label @@ -64,11 +64,24 @@ T.ToolButton { //Mouse area to react on click events MouseArea { - id: rippleArea + id: mouseArea anchors.fill: parent - hoverEnabled: true - //onClicked: control.clicked() - onPressed: mouse.accepted = false + hoverEnabled: false + cursorShape: undefined //Qt.PointingHandCursor + onPressed: (mouse) => mouse.accepted = false + } + + // HoverHandler to react on hover events + HoverHandler { + id: mouseHoverHandler + acceptedDevices: PointerDevice.AllDevices + blocking: false + cursorShape: Qt.PointingHandCursor + onHoveredChanged: { + if (hovered) { + //console.error(`${control} [ToolButton.qml] hovered`) + } + } } // Logic @@ -76,7 +89,7 @@ T.ToolButton { function backgroundColor() { if (!control.enabled) return EaStyle.Colors.themeBackgroundDisabled - if (rippleArea.containsMouse) + if (mouseHoverHandler.hovered) return EaStyle.Colors.themeBackgroundHovered2 return EaStyle.Colors.themeBackground } @@ -85,7 +98,7 @@ T.ToolButton { if (!control.enabled) return EaStyle.Colors.themeForegroundDisabled if (!highlighted) { - if (control.checked || rippleArea.containsMouse) + if (control.checked || mouseHoverHandler.hovered) return EaStyle.Colors.themeForegroundHovered return EaStyle.Colors.themeForeground } diff --git a/easyApp/Gui/Elements/ToolTip.qml b/src/EasyApp/Gui/Elements/ToolTip.qml similarity index 93% rename from easyApp/Gui/Elements/ToolTip.qml rename to src/EasyApp/Gui/Elements/ToolTip.qml index b555e97b..bd6fc268 100644 --- a/easyApp/Gui/Elements/ToolTip.qml +++ b/src/EasyApp/Gui/Elements/ToolTip.qml @@ -1,11 +1,12 @@ -import QtQuick 2.15 -import QtQuick.Templates 2.15 as T -import QtGraphicalEffects 1.12 +import QtQuick +import QtQuick.Templates as T +//import QtGraphicalEffects 1.13 +import Qt5Compat.GraphicalEffects -import easyApp.Gui.Style 1.0 as EaStyle -import easyApp.Gui.Globals 1.0 as EaGlobals -import easyApp.Gui.Animations 1.0 as EaAnimations -import easyApp.Gui.Elements 1.0 as EaElements +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements T.ToolTip { @@ -19,7 +20,7 @@ T.ToolTip { property int borderRadius: 0.25 * EaStyle.Sizes.fontPixelSize property int textFormat: Text.PlainText //Text.RichText - property int enterAnimationDuration: 500 + property int enterAnimationDuration: 1000 property int exitAnimationDuration: 500 property int guidesCount: 0 diff --git a/easyApp/Gui/Elements/qmldir b/src/EasyApp/Gui/Elements/qmldir similarity index 82% rename from easyApp/Gui/Elements/qmldir rename to src/EasyApp/Gui/Elements/qmldir index 1849a316..3abc06ce 100644 --- a/easyApp/Gui/Elements/qmldir +++ b/src/EasyApp/Gui/Elements/qmldir @@ -18,10 +18,15 @@ GroupRow 1.0 GroupRow.qml LinkedImage 1.0 LinkedImage.qml Label 1.0 Label.qml RunningLabel 1.0 RunningLabel.qml +Menu 1.0 Menu.qml MenuItem 1.0 MenuItem.qml +ScrollBar 1.0 ScrollBar.qml +ScrollIndicator 1.0 ScrollIndicator.qml SpinBox 1.0 SpinBox.qml SideBarButton 1.0 SideBarButton.qml +SplashScreen 1.0 SplashScreen.qml StatusBar 1.0 StatusBar.qml +StatusBarItem 1.0 StatusBarItem.qml TabBar 1.0 TabBar.qml TabButton 1.0 TabButton.qml TextArea 1.0 TextArea.qml @@ -37,4 +42,6 @@ Slider 1.0 Slider.qml SliderHandle 1.0 SliderHandle.qml Parameter 1.0 Parameter.qml +ParamTextField 1.0 ParamTextField.qml +ParamComboBox 1.0 ParamComboBox.qml RadioButton 1.0 RadioButton.qml diff --git a/src/EasyApp/Gui/Globals/Vars.qml b/src/EasyApp/Gui/Globals/Vars.qml new file mode 100644 index 00000000..b541e8b3 --- /dev/null +++ b/src/EasyApp/Gui/Globals/Vars.qml @@ -0,0 +1,106 @@ +pragma Singleton + +import QtQuick +import QtCore + +import EasyApp.Gui.Logic as EaLogic + + +QtObject { + id: object + + // Python objects + readonly property bool isTestMode: typeof pyIsTestMode !== "undefined" && pyIsTestMode !== null ? + pyIsTestMode : + false + + readonly property var projectConfig: typeof _projectConfig !== "undefined" && _projectConfig !== null ? + _projectConfig : + EaLogic.ProjectConfig.projectConfig() + + readonly property var translator: typeof pyTranslator !== "undefined" && pyTranslator !== null ? + pyTranslator : + new EaLogic.Translate.Translator() + + // Settings + readonly property string settingsFile: typeof pySettingsPath !== "undefined" && pySettingsPath !== null ? + Qt.resolvedUrl(pySettingsPath) : + Qt.resolvedUrl('settings.ini') + //onSettingsFileChanged: print("Persistent application settings path:", settingsFile) + + // Application parameters + readonly property int appWindowFlags: Qt.Window | Qt.WindowFullscreenButtonHint // Qt.FramelessWindowHint | Qt.Dialog + + // Initial application elements visibility + property bool showAppBar: true + property bool showAppStatusBar: true + property bool showAppPreferencesDialog: false + property bool showAppAboutDialog: false + property bool showToolTips: true + property bool showUserGuides: false + property bool showProjectDescriptionDialog: false + property bool autoCollapseSideBarGroups: true + + // Updater + property bool checkUpdateOnAppStart: isTestMode ? false : true + property var updater + + // Logging + property string loggingLevel: "Error" + onLoggingLevelChanged: console.debug(`Logging level changed to ${loggingLevel}`) + + // Screenshots control + property bool saveScreenshotsRunning: false + + // Tab buttons + property var appearanceTab + property var promptsTab + + // App bar + property int appBarCurrentIndex: 0 + enum AppBarIndexEnum { + HomePageIndex = 0, + ProjectPageIndex = 1, + SamplePageIndex = 2, + ExperimentPageIndex = 3, + AnalysisPageIndex = 4, + SummaryPageIndex = 5 + } + + // Parameter name formats + property int paramNameFormat: 0 + enum ParamNameFormats { + ShortestWithIconsAndPrettyLabels = 0, + //ReducedWithIconsAndPrettyLabels, + //FullWithIconsAndPrettyLabels, + //FullWithPrettyLabels, + //FullWithLabels, + //FullWithIndices, + PlainShortWithLabels, + PlainFullWithLabels } + + // Chart + property string currentLib1d: "QtCharts" + property bool useOpenGL: false + + // Persistent settings + + //property var settings1: Settings { + // location: settingsFile // Gives WASM error on run + // category: 'Preferences.Appearance' + // property alias currentLib1d: object.currentLib1d + //} + + property var settings2: Settings { + location: settingsFile // Gives WASM error on run + category: 'Preferences.Develop' + property alias loggingLevel: object.loggingLevel + } + + property var settings3: Settings { + location: settingsFile // Gives WASM error on run + category: 'Pages.Analysis' + property alias paramNameFormat: object.paramNameFormat + } + +} diff --git a/src/EasyApp/Gui/Globals/qmldir b/src/EasyApp/Gui/Globals/qmldir new file mode 100644 index 00000000..ae8ea802 --- /dev/null +++ b/src/EasyApp/Gui/Globals/qmldir @@ -0,0 +1,3 @@ +module Globals + +singleton Vars 1.0 Vars.qml diff --git a/src/EasyApp/Gui/Html/BasicReport.html b/src/EasyApp/Gui/Html/BasicReport.html new file mode 100644 index 00000000..d40f58cf --- /dev/null +++ b/src/EasyApp/Gui/Html/BasicReport.html @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + +

          GRyfg%3LkEncR(R7LeupP} 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 literal 0 HcmV?d00001 diff --git a/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.png b/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5d4319e4f08aae9fda060afc38c3c9efea1a52 GIT binary patch literal 69247 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 BG3o#S literal 0 HcmV?d00001 diff --git a/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.svg b/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.svg new file mode 100644 index 00000000..5aab6b19 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/ESS.png b/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/ESS.png new file mode 100644 index 0000000000000000000000000000000000000000..22c09d2e32bc6ff6f97f738225ce8847b4c7daa8 GIT binary patch literal 5161 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 + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaElements.StatusBar { + + visible: EaGlobals.Vars.appBarCurrentIndex !== 0 + + EaElements.StatusBarItem { + keyIcon: 'archive' + keyText: qsTr('Project') + valueText: Globals.BackendWrapper.statusProject + ToolTip.text: qsTr('Current project') + } + + EaElements.StatusBarItem { + keyIcon: 'layer-group' + keyText: qsTr('Models') + valueText: Globals.BackendWrapper.statusPhasesCount + ToolTip.text: qsTr('Number of models added') + } + + EaElements.StatusBarItem { + keyIcon: 'microscope' + keyText: qsTr('Experiments') + valueText: Globals.BackendWrapper.statusExperimentsCount + ToolTip.text: qsTr('Number of experiments added') + } + + EaElements.StatusBarItem { + keyIcon: 'calculator' + keyText: qsTr('Calculator') + valueText: Globals.BackendWrapper.statusCalculator + ToolTip.text: qsTr('Current calculation engine') + } + + EaElements.StatusBarItem { + keyIcon: 'level-down-alt' + keyText: qsTr('Minimizer') + valueText: Globals.BackendWrapper.statusMinimizer + ToolTip.text: qsTr('Current minimization engine and method') + } + + EaElements.StatusBarItem { + keyIcon: 'th-list' + keyText: qsTr('Parameters') + valueText: Globals.BackendWrapper.statusVariables + ToolTip.text: qsTr('Number of parameters: total, free and fixed') + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/qmldir b/examples/BasicQml/src/BasicQml/Gui/qmldir new file mode 100644 index 00000000..d3151d58 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/qmldir @@ -0,0 +1,4 @@ +module Gui + +ApplicationWindow ApplicationWindow.qml +StatusBar StatusBar.qml diff --git a/examples/BasicQml/src/BasicQml/main.qml b/examples/BasicQml/src/BasicQml/main.qml new file mode 100644 index 00000000..1c7c0070 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/main.qml @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import Gui as Gui + + +Gui.ApplicationWindow { + + id: applicationWindow // applicationWindow is globally accessible + +} diff --git a/examples/IntermediatePy/src/IntermediatePy.pyproject b/examples/IntermediatePy/src/IntermediatePy.pyproject new file mode 100644 index 00000000..cf849a79 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy.pyproject @@ -0,0 +1,44 @@ +{ + "files": [ + "IntermediatePy.qmlproject", + "IntermediatePy/main.py", + "IntermediatePy/main.qml", + "IntermediatePy/Gui/qmldir", + "IntermediatePy/Gui/ApplicationWindow.qml", + "IntermediatePy/Gui/StatusBar.qml", + "IntermediatePy/Gui/Globals/qmldir", + "IntermediatePy/Gui/Globals/ApplicationInfo.qml", + "IntermediatePy/Gui/Globals/BackendWrapper.qml", + "IntermediatePy/Gui/Globals/References.qml", + "IntermediatePy/Gui/Pages/Home/Content.qml", + "IntermediatePy/Gui/Pages/Home/Popups/About.qml", + "IntermediatePy/Gui/Pages/Project/Layout.qml", + "IntermediatePy/Gui/Pages/Project/MainAreaTabs/Description.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Basic/Layout.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Basic/Groups/Examples.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Basic/Groups/GetStarted.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Basic/Groups/Recent.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Basic/Popups/OpenCifFile.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Basic/Popups/ProjectDescription.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Extra/Layout.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Extra/Groups/Scrolling.qml", + "IntermediatePy/Gui/Pages/Project/SidebarTabs/Text/Layout.qml", + "IntermediatePy/Gui/Pages/Report/Layout.qml", + "IntermediatePy/Gui/Pages/Report/MainAreaTabs/Summary.qml", + "IntermediatePy/Gui/Pages/Report/SidebarTabs/Basic/Layout.qml", + "IntermediatePy/Gui/Pages/Report/SidebarTabs/Basic/Groups/Export.qml", + "IntermediatePy/Gui/Pages/Report/SidebarTabs/Extra/Layout.qml", + "IntermediatePy/Gui/Pages/Report/SidebarTabs/Extra/Groups/Empty.qml", + "IntermediatePy/Backends/qmldir", + "IntermediatePy/Backends/MockBackend.qml", + "IntermediatePy/Backends/MockQml/Project.qml", + "IntermediatePy/Backends/MockQml/Report.qml", + "IntermediatePy/Backends/MockQml/Status.qml", + "IntermediatePy/Backends/MockQml/qmldir", + "IntermediatePy/Backends/real_backend.py", + "IntermediatePy/Backends/real_py/project.py", + "IntermediatePy/Backends/real_py/report.py", + "IntermediatePy/Backends/real_py/status.py", + "IntermediatePy/Backends/real_py/logic/helpers.py" + ] +} diff --git a/examples/IntermediatePy/src/IntermediatePy.qmlproject b/examples/IntermediatePy/src/IntermediatePy.qmlproject new file mode 100644 index 00000000..cb9a5f96 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy.qmlproject @@ -0,0 +1,41 @@ +import QmlProject 1.1 + +Project { + mainFile: "IntermediatePy/main.qml" + + // List of module and plugin directories passed to QML runtime + importPaths: [ + "IntermediatePy", + "../../../src", // EasyApp + ] + + // Include .qml files from specified directory and its subdirectories + QmlFiles { + directory: "IntermediatePy" + } + QmlFiles { + directory: "../../../src/EasyApp" + } + + // Include .js files from specified directory and its subdirectories + JavaScriptFiles { + directory: "IntermediatePy" + } + JavaScriptFiles { + directory: "../../../src/EasyApp" + } + + // Include Module Definition Files (qmldir), as well as .ts and .qrc + // from specified directory and its subdirectories + Files { + directory: "IntermediatePy" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + Files { + directory: "../../../src/EasyApp" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/MockBackend.qml b/examples/IntermediatePy/src/IntermediatePy/Backends/MockBackend.qml new file mode 100644 index 00000000..44da4805 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/MockBackend.qml @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +import Backends.MockQml as MockLogic + + +QtObject { + + property var project: MockLogic.Project + property var status: MockLogic.Status + property var report: MockLogic.Report + +} + + diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Project.qml b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Project.qml new file mode 100644 index 00000000..566751ba --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Project.qml @@ -0,0 +1,74 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + property bool created: false + + property string name: '' + + readonly property var info: { + 'description': '', + 'location': '', + 'creationDate': '' + } + + readonly property var examples: [ + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3 (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3-Raw (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Raw_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI, 2 phases', + 'name': 'La0.5Ba0.5CoO3-Mult-Phases (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Mult-Phases_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D20@ILL', + 'name': 'Co2SiO4 (D20)', + 'path': ':/Examples/Co2SiO4_D20@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, G41@LLB', + 'name': 'Dy3Al5O12 (G41)', + 'path': ':/Examples/Dy3Al5O12_G41@LLB/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D1A@ILL', + 'name': 'PbSO4 (D1A)', + 'path': ':/Examples/PbSO4_D1A@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, 3T2@LLB', + 'name': 'LaMnO3 (3T2)', + 'path': ':/Examples/LaMnO3_3T2@LLB/project.cif' + } + ] + + function create() { + console.debug(`Creating project '${name}'`) + info.creationDate = `${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}` + infoChanged() // this signal is not emitted automatically when only part of the object is changed + created = true + } + + function save() { + console.debug(`NOT IMPLEMENTED: Saving project '${name}'`) + } + + function editInfo(path, new_value) { + console.debug(`NOT IMPLEMENTED: Changing project info.${path} from '${info.path}' to '${new_value}'`) + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Report.qml b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Report.qml new file mode 100644 index 00000000..84132709 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Report.qml @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + property bool created: false + + readonly property string asHtml: ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Summary

          Project information

          NameLa0.5Ba0.5CoO3
          Descriptionneutrons, powder, constant wavelength
          No. of phases1
          No. of experiments1

          Crystal data

          Phase datablocklbco
          Crystal system, space groupcubic,  P m -3 m

          Data collection

          Experiment datablockhrpt
          Radiation probeneutron
          Measured range: min, max, inc (°)10.0,  164.85,  0.05
          + + +' + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Status.qml b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Status.qml new file mode 100644 index 00000000..452ca9e5 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/Status.qml @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property string project: 'Undefined' + readonly property string phasesCount: '1' + readonly property string experimentsCount: '1' + readonly property string calculator: 'CrysPy' + readonly property string minimizer: 'Lmfit (leastsq)' + readonly property string variables: '31 (3 free, 28 fixed)' + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/qmldir b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/qmldir new file mode 100644 index 00000000..7fb05624 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/MockQml/qmldir @@ -0,0 +1,5 @@ +module MockQml + +singleton Project Project.qml +singleton Report Report.qml +singleton Status Status.qml diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/qmldir b/examples/IntermediatePy/src/IntermediatePy/Backends/qmldir new file mode 100644 index 00000000..fdc15f20 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/qmldir @@ -0,0 +1,3 @@ +module Logic + +singleton MockBackend MockBackend.qml diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/real_backend.py b/examples/IntermediatePy/src/IntermediatePy/Backends/real_backend.py new file mode 100644 index 00000000..ad3c2cea --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/real_backend.py @@ -0,0 +1,69 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from PySide6.QtCore import QObject, Property + +from EasyApp.Logic.Logging import LoggerLevelHandler + +from .real_py.project import Project +from .real_py.status import Status +from .real_py.report import Report + + +class Backend(QObject): + def __init__(self): + super().__init__() + + #################### + # Private attributes + #################### + + # Individual Backend objects + self._project = Project() + self._status = Status() + self._report = Report() + + # Logger + self._logger = LoggerLevelHandler(self) + + ############# + # Connections + ############# + + # Connect the signals of various Backend objects to the methods of this class defined below. + # This allows, through the methods of this class, to update dependent objects, but keep them + # unaware of each other. + + # Project + self._project.nameChanged.connect(self.onProjectNameChanged) + self._project.createdChanged.connect(self.onProjectCreatedChanged) + + ########################## + # GUI accessible variables + ########################## + + @Property('QVariant', constant=True) + def project(self): + return self._project + + @Property('QVariant', constant=True) + def status(self): + return self._status + + @Property('QVariant', constant=True) + def report(self): + return self._report + + ################################## + # Functions related to connections + ################################## + + # Project + + def onProjectNameChanged(self): + self._status.project = self._project.name + self._report._asHtml = self._project.name + + def onProjectCreatedChanged(self): + self._report.created = self._project.created diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/logic/helpers.py b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/logic/helpers.py new file mode 100644 index 00000000..a439c4ef --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/logic/helpers.py @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +class IO: + + @staticmethod + def format_msg(type, *args): + types = {'main': '*', 'sub': ' -'} + mark = types[type] + widths = [22,21,20,10] + widths[0] -= len(mark) + msgs = [] + for idx, arg in enumerate(args): + msgs.append(f'{arg:<{widths[idx]}}') + msg = ' ▌ '.join(msgs) + msg = f'{mark} {msg}' + return msg + + +class DottyDict: + + @staticmethod + def get(obj, path): + *path, last = path.split(".") + for bit in path: + obj = obj.setdefault(bit, {}) + return obj[last] + + @staticmethod + def set(obj, path, value): + *path, last = path.split(".") + for bit in path: + obj = obj.setdefault(bit, {}) + obj[last] = value diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/project.py b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/project.py new file mode 100644 index 00000000..7461cf96 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/project.py @@ -0,0 +1,131 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +import time +from pathlib import Path +from PySide6.QtCore import QObject, Signal, Slot, Property + +from EasyApp.Logic.Logging import console +from .logic.helpers import IO +from .logic.helpers import DottyDict + + +_INFO = { + 'description': '', + 'location': str(Path.home()), + 'creationDate': '' +} + +_EXAMPLES = [ + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3 (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3-Raw (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Raw_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI, 2 phases', + 'name': 'La0.5Ba0.5CoO3-Mult-Phases (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Mult-Phases_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D20@ILL', + 'name': 'Co2SiO4 (D20)', + 'path': ':/Examples/Co2SiO4_D20@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, G41@LLB', + 'name': 'Dy3Al5O12 (G41)', + 'path': ':/Examples/Dy3Al5O12_G41@LLB/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D1A@ILL', + 'name': 'PbSO4 (D1A)', + 'path': ':/Examples/PbSO4_D1A@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, 3T2@LLB', + 'name': 'LaMnO3 (3T2)', + 'path': ':/Examples/LaMnO3_3T2@LLB/project.cif' + } +] + + +class Project(QObject): + createdChanged = Signal() + nameChanged = Signal() + infoChanged = Signal() + examplesChanged = Signal() + + def __init__(self): + super().__init__() + self._created = False + self._name = '' + self._info = _INFO + self._examples = _EXAMPLES + + ########################## + # GUI accessible variables + ########################## + + # Properties + + @Property(bool, notify=createdChanged) + def created(self): + return self._created + + @created.setter + def created(self, new_value): + if self._created == new_value: + return + self._created = new_value + self.createdChanged.emit() + + @Property(str, notify=nameChanged) + def name(self): + return self._name + + @name.setter + def name(self, new_value): + if self._name == new_value: + return + print(f" py: Changing project name from '{self.name}' to '{new_value}'") + self._name = new_value + self.nameChanged.emit() + + @Property('QVariant', notify=infoChanged) + def info(self): + return self._info + + @Property('QVariant', constant=True) + def examples(self): + return self._examples + + + ########################## + # GUI accessible functions + ########################## + + @Slot() + def create(self): + print(f" py: Creating project '{self.name}'") + self.info['creationDate'] = time.strftime("%d %b %Y %H:%M", time.localtime()) + self.infoChanged.emit() + self.created = True + + @Slot() + def save(self): + print(f" py: Saving project '{self.name}'") + + @Slot(str, str) + def editInfo(self, path, new_value): + if DottyDict.get(self._info, path) == new_value: + return + print(f" py: Changing project info.{path} from '{DottyDict.get(self._info, path)}' to '{new_value}'") + DottyDict.set(self._info, path, new_value) + self.infoChanged.emit() diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/report.py b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/report.py new file mode 100644 index 00000000..67c4abf5 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/report.py @@ -0,0 +1,111 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from PySide6.QtCore import QObject, Signal, Property + + +_HTML = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Summary

          Project information

          NameLa0.5Ba0.5CoO3
          Descriptionneutrons, powder, constant wavelength
          No. of phases1
          No. of experiments1

          Crystal data

          Phase datablocklbco
          Crystal system, space groupcubic,  P m -3 m

          Data collection

          Experiment datablockhrpt
          Radiation probeneutron
          Measured range: min, max, inc (°)10.0,  164.85,  0.05
          + + +""" + + +class Report(QObject): + createdChanged = Signal() + asHtmlChanged = Signal() + + def __init__(self): + super().__init__() + self._created = False + self._asHtml = _HTML + + ########################## + # GUI accessible variables + ########################## + + @Property(bool, notify=createdChanged) + def created(self): + return self._created + + @created.setter + def created(self, new_value): + if self._created == new_value: + return + self._created = new_value + self.createdChanged.emit() + + @Property(str, notify=asHtmlChanged) + def asHtml(self): + return self._asHtml + + @asHtml.setter + def asHtml(self, new_value): + if self._asHtml == new_value: + return + self._asHtml = new_value + self.asHtmlChanged.emit() diff --git a/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/status.py b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/status.py new file mode 100644 index 00000000..a01dbc39 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Backends/real_py/status.py @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from PySide6.QtCore import QObject, Signal, Property + + +class Status(QObject): + projectChanged = Signal() + phasesCountChanged = Signal() + experimentsCountChanged = Signal() + calculatorChanged = Signal() + minimizerChanged = Signal() + variablesChanged = Signal() + + def __init__(self): + super().__init__() + self._project = 'Undefined' + self._phasesCount = '1' + self._experimentsCount = '1' + self._calculator = 'CrysPy' + self._minimizer = 'Lmfit (leastsq)' + self._variables = '31 (3 free, 28 fixed)' + + ########################## + # GUI accessible variables + ########################## + + @Property(str, notify=projectChanged) + def project(self): + return self._project + + @project.setter + def project(self, new_value): + if self._project == new_value: + return + self._project = new_value + self.projectChanged.emit() + + @Property(str, notify=phasesCountChanged) + def phasesCount(self): + return self._phasesCount + + @phasesCount.setter + def phasesCount(self, new_value): + if self._phasesCount == new_value: + return + self._phasesCount = new_value + self.phasesCountChanged.emit() + + @Property(str, notify=experimentsCountChanged) + def experimentsCount(self): + return self._experimentsCount + + @experimentsCount.setter + def experimentsCount(self, new_value): + if self._experimentsCount == new_value: + return + self._experimentsCount = new_value + self.experimentsCountChanged.emit() + + @Property(str, notify=calculatorChanged) + def calculator(self): + return self._calculator + + @calculator.setter + def calculator(self, new_value): + if self._calculator == new_value: + return + self._calculator = new_value + self.calculatorChanged.emit() + + @Property(str, notify=minimizerChanged) + def minimizer(self): + return self._minimizer + + @minimizer.setter + def minimizer(self, new_value): + if self._minimizer == new_value: + return + self._minimizer = new_value + self.minimizerChanged.emit() + + @Property(str, notify=variablesChanged) + def variables(self): + return self._variables + + @variables.setter + def variables(self, new_value): + if self._variables == new_value: + return + self._variables = new_value + self.variablesChanged.emit() diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/ApplicationWindow.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/ApplicationWindow.qml new file mode 100644 index 00000000..835e886f --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/ApplicationWindow.qml @@ -0,0 +1,114 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui as Gui +import Gui.Globals as Globals + +EaComponents.ApplicationWindow { + + /////////////////// + // APPLICATION BAR + /////////////////// + + // Left group of application bar tool buttons + appBarLeftButtons: [ + + EaElements.ToolButton { + enabled: Globals.BackendWrapper.projectCreated + highlighted: true + fontIcon: 'save' + ToolTip.text: qsTr('Save current state of the project') + onClicked: Globals.BackendWrapper.projectSave() + } + + ] + + // Right group of application bar tool buttons + appBarRightButtons: [ + + EaElements.ToolButton { + fontIcon: 'cog' + ToolTip.text: qsTr('Application preferences') + onClicked: EaGlobals.Vars.showAppPreferencesDialog = true + } + + ] + + // Central group of application bar page buttons (workflow tabs) + // Page buttons for the pages described below + appBarCentralTabs.contentData: [ + + // Home page + EaElements.AppBarTabButton { + id: homeButton + fontIcon: 'home' + text: qsTr('Home') + ToolTip.text: qsTr('Home') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.homeButton = homeButton + } + }, + // Home page + + // Project page + EaElements.AppBarTabButton { + id: projectButton + enabled: false + fontIcon: 'archive' + text: qsTr('Project') + ToolTip.text: qsTr('Project description page') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.projectButton = projectButton + } + }, + // Project page + + // Summary page + EaElements.AppBarTabButton { + id: summaryButton + enabled: false + fontIcon: 'clipboard-list' + text: qsTr('Summary') + ToolTip.text: qsTr('Summary of the work done') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton = summaryButton + } + } + // Summary page + ] + + ////////////////////////////////// + // APP PAGES (MAIN AREA + SIDEBAR) + ////////////////////////////////// + + // Pages for the tab buttons described above + contentArea: [ + Loader { source: 'Pages/Home/Content.qml' }, + Loader { source: 'Pages/Project/Layout.qml' }, + Loader { source: 'Pages/Report/Layout.qml' } + ] + + ///////////// + // STATUS BAR + ///////////// + + statusBar: Gui.StatusBar {} + + /////// + // MISC + /////// + + onClosing: Qt.quit() + + Component.onCompleted: console.debug(`Application window loaded ::: ${this}`) + Component.onDestruction: console.debug(`Application window destroyed ::: ${this}`) + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/ApplicationInfo.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/ApplicationInfo.qml new file mode 100644 index 00000000..418acd83 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/ApplicationInfo.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property var about: { + 'name': 'IntermediatePy', + 'namePrefix': 'Intermediate', + 'nameSuffix': 'Py', + 'namePrefixForLogo': 'intermediate', + 'nameSuffixForLogo': 'py', + 'homePageUrl': 'https://github.com/EasyScience/EasyExample', + 'issuesUrl': 'https://github.com/EasyScience/EasyExample/issues', + 'licenseUrl': 'https://github.com/EasyScience/EasyExample/LICENCE.md', + 'dependenciesUrl': 'https://github.com/EasyScience/EasyExample/DEPENDENCIES.md', + 'version': '1.0.0', + 'icon': Qt.resolvedUrl('../Resources/Logos/App.svg'), + 'date': new Date().toISOString().slice(0,10), + 'developerYearsFrom': '2019', + 'developerYearsTo': '2024', + 'description': 'Example of a desktop application of intermediate complexity with Python backend and EasyApp-based GUI', + 'developerIcons': [ + { + 'url': 'https://ess.eu', + 'icon': Qt.resolvedUrl('../Resources/Logos/ESS.png'), + 'heightScale': 3.0 + } + ] + } + +} + diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/BackendWrapper.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/BackendWrapper.qml new file mode 100644 index 00000000..c0d36666 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/BackendWrapper.qml @@ -0,0 +1,67 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +// This module is registered in the main.py file and allows access to the properties +// and backend methods of the singleton object of the ‘PyBackend’ class. +// If ‘PyBackend’ is not defined, then 'MockBackend' from directory 'Backends' is used. +// It is needed to run the GUI frontend via the qml runtime tool without any Python backend. +import Backends as Backends + + +QtObject { + + //////////////// + // Backend proxy + //////////////// + + readonly property var activeBackend: { + if (typeof Backends.PyBackend !== 'undefined') { + console.debug('REAL python backend is in use') + return Backends.PyBackend + } else { + console.debug('MOCK QML backend is in use') + return Backends.MockBackend + } + } + + ///////////// + // Status bar + ///////////// + + readonly property string statusProject: activeBackend.status.project + readonly property string statusPhasesCount: activeBackend.status.phasesCount + readonly property string statusExperimentsCount: activeBackend.status.experimentsCount + readonly property string statusCalculator: activeBackend.status.calculator + readonly property string statusMinimizer: activeBackend.status.minimizer + readonly property string statusVariables: activeBackend.status.variables + + /////////////// + // Project page + /////////////// + + readonly property var projectInfo: activeBackend.project.info + readonly property var projectExamples: activeBackend.project.examples + + property bool projectCreated: activeBackend.project.created + onProjectCreatedChanged: activeBackend.project.created = projectCreated + property string projectName: activeBackend.project.name + onProjectNameChanged: activeBackend.project.name = projectName + + function projectCreate() { activeBackend.project.create() } + function projectSave() { activeBackend.project.save() } + function projectEditInfo(path, new_value) { activeBackend.project.editInfo(path, new_value) } + + /////////////// + // Summary page + /////////////// + + readonly property string reportAsHtml: activeBackend.report.asHtml + + property bool reportCreated: activeBackend.report.created + onReportCreatedChanged: activeBackend.report.created = reportCreated +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/References.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/References.qml new file mode 100644 index 00000000..0d9d7812 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/References.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + + +// Initialisation of the reference dictionary. It is filled in later, when the required object is +// created and its unique id is assigned and added here instead of 'null'. After that, any object +// whose id is stored here can be accessed from any other qml file. +QtObject { + + // Populated in ApplicationWindows.qml + readonly property var applicationWindow: { + 'appBarCentralTabs': { + 'homeButton': null, + 'projectButton': null, + 'summaryButton': null, + } + } + + // Populated in Pages/... + readonly property var pages: { + 'project': { + 'sidebar': { + 'basic': { + 'popups': { + 'openCifFile': null + } + } + } + } + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/qmldir b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/qmldir new file mode 100644 index 00000000..00d72e33 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Globals/qmldir @@ -0,0 +1,5 @@ +module Globals + +singleton ApplicationInfo ApplicationInfo.qml +singleton BackendWrapper BackendWrapper.qml +singleton References References.qml diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Content.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Content.qml new file mode 100644 index 00000000..e0b7a198 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Content.qml @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Item { + + Column { + anchors.centerIn: parent + + // Application logo + Image { + id: appLogo + + source: Globals.ApplicationInfo.about.icon + anchors.horizontalCenter: parent.horizontalCenter + width: EaStyle.Sizes.fontPixelSize * 5 + fillMode: Image.PreserveAspectFit + antialiasing: true + } + // Application logo + + // Application name + Row { + id: appName + + property string fontFamily: EaStyle.Fonts.thirdFontFamily + property string fontPixelSize: EaStyle.Sizes.fontPixelSize * 4 + + anchors.horizontalCenter: parent.horizontalCenter + + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.Light + text: Globals.ApplicationInfo.about.namePrefixForLogo + } + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.DemiBold + text: Globals.ApplicationInfo.about.nameSuffixForLogo + } + } + // Application name + + // Application version + EaElements.Label { + id: appVersion + + anchors.horizontalCenter: parent.horizontalCenter + + text: { + return qsTr('Version') + ` ${Globals.ApplicationInfo.about.version} (${Globals.ApplicationInfo.about.date})` + } + } + // Application version + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Start button + EaElements.SideBarButton { + id: startButton + + anchors.horizontalCenter: parent.horizontalCenter + + fontIcon: 'rocket' + text: qsTr('Start') + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.projectButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.projectButton.toggle() + } + } + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Links + Row { + id: links + + anchors.horizontalCenter: parent.horizontalCenter + spacing: EaStyle.Sizes.fontPixelSize * 3 + + // Left links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('About %1'.arg(Globals.ApplicationInfo.about.name)) + onClicked: EaGlobals.Vars.showAppAboutDialog = true + Loader { source: 'Popups/About.qml' } + } + EaElements.Button { + text: qsTr('Online documentation') + onClicked: Qt.openUrlExternally('https://github.com/EasyScience/EasyApp') + } + EaElements.Button { + text: qsTr('Get in touch online') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Left links + + // Right links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('Tutorial') + ' 1: ' + qsTr('App interface') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 2: ' + qsTr('Basic usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 3: ' + qsTr('Advanced usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Right links + } + // Links + } + + Component.onCompleted: console.debug(`Home page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Home page destroyed ::: ${this}`) + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Popups/About.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Popups/About.qml new file mode 100644 index 00000000..11815fdd --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Home/Popups/About.qml @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.AboutDialog { + + visible: EaGlobals.Vars.showAppAboutDialog + onClosed: EaGlobals.Vars.showAppAboutDialog = false + + appIconPath: Globals.ApplicationInfo.about.icon + appUrl: Globals.ApplicationInfo.about.homePageUrl + + appPrefixName: Globals.ApplicationInfo.about.namePrefixForLogo + appSuffixName: Globals.ApplicationInfo.about.nameSuffixForLogo + appVersion: Globals.ApplicationInfo.about.version + appDate: Globals.ApplicationInfo.about.date + + eulaUrl: Globals.ApplicationInfo.about.licenseUrl + oslUrl: Globals.ApplicationInfo.about.dependenciesUrl + + description: Globals.ApplicationInfo.about.description + developerIcons: Globals.ApplicationInfo.about.developerIcons + developerYearsFrom: Globals.ApplicationInfo.about.developerYearsFrom + developerYearsTo: Globals.ApplicationInfo.about.developerYearsTo + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Layout.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Layout.qml new file mode 100644 index 00000000..6c03c65c --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Layout.qml @@ -0,0 +1,59 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.projectCreated ? + '' : + qsTr('No project defined') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Description') } + ] + + items: [ + Loader { source: 'MainArea/Description.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') }, + EaElements.TabButton { text: qsTr('Text mode controls'); enabled: false } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' }, + Loader { source: 'Sidebar/Text/Layout.qml' } + ] + + continueButton.text: Globals.BackendWrapper.projectCreated ? + qsTr('Continue') : + qsTr('Continue without project') + + continueButton.onClicked: { + console.debug(`Clicking '${continueButton.text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.toggle() + } + } + + Component.onCompleted: console.debug(`Project page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Project page destroyed ::: ${this}`) + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/MainArea/Description.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/MainArea/Description.qml new file mode 100644 index 00000000..8ce72b2f --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/MainArea/Description.qml @@ -0,0 +1,89 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + readonly property int commonSpacing: EaStyle.Sizes.fontPixelSize * 1.5 + + color: EaStyle.Colors.mainContentBackground + + Column { + id: container + + anchors.top: parent.top + anchors.left: parent.left + + anchors.topMargin: commonSpacing + anchors.leftMargin: commonSpacing * 1.5 + + spacing: commonSpacing + + // Project title + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + font.family: EaStyle.Fonts.secondFontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize * 3 + font.weight: Font.ExtraLight + validator: RegularExpressionValidator { regularExpression: /^[a-zA-Z][a-zA-Z0-9_\-\.]{1,30}$/ } + placeholderText: qsTr("Enter project name here") + text: Globals.BackendWrapper.projectName + onEditingFinished: Globals.BackendWrapper.projectName = text + } + // Project title + + // Project info + Grid { + columns: 2 + rowSpacing: 0 + columnSpacing: commonSpacing + + EaElements.Label { + font.bold: true + text: qsTr('Description:') + } + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + placeholderText: qsTr("Enter project description here") + text: Globals.BackendWrapper.projectInfo.description + onEditingFinished: Globals.BackendWrapper.projectEditInfo('description', text) + } + + EaElements.Label { + font.bold: true + text: qsTr('Location:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.location + } + + EaElements.Label { + font.bold: true + text: qsTr('Created:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.creationDate + } + } + // Project info + + // Project image + Image { + width: EaStyle.Sizes.fontPixelSize * 25 + fillMode: Image.PreserveAspectFit + } + // Project image + + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml new file mode 100644 index 00000000..065031c7 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No examples available') + + model: Globals.BackendWrapper.projectExamples + + // header + header: EaComponents.TableViewHeader { + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + EaComponents.TableViewLabel { + flexibleWidth: true + horizontalAlignment: Text.AlignLeft + text: qsTr('name / description') + } + } + // header + + // delegate + delegate: EaComponents.TableViewDelegate { + mouseArea.onPressed: { + const filePath = tableView.model[index].path + console.debug(`Loading example: ${filePath}`) + } + + EaComponents.TableViewLabel { + text: index + 1 + color: EaStyle.Colors.themeForegroundMinor + } + + EaComponents.TableViewTwoRowsAdvancedLabel { + fontIcon: 'archive' + text: tableView.model[index].name + minorText: tableView.model[index].description + ToolTip.text: tableView.model[index].description + } + } + // delegate + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml new file mode 100644 index 00000000..cb1ab180 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +//import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Grid { + + columns: 2 + spacing: EaStyle.Sizes.fontPixelSize + + // button 1 + EaElements.SideBarButton { + fontIcon: 'plus-circle' + text: qsTr('Create a new project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + EaGlobals.Vars.showProjectDescriptionDialog = true + } + + Loader { + source: '../Popups/ProjectDescription.qml' + } + } + // button 1 + + // button 2 + EaElements.SideBarButton { + fontIcon: 'upload' + text: qsTr('Open an existing project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.pages.project.sidebar.basic.popups.openCifFile.open() + } + + Loader { + source: '../Popups/OpenCifFile.qml' + } + } + // button 2 + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml new file mode 100644 index 00000000..8357f95a --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtCore + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No recent projects found') + + // Header row + header: EaComponents.TableViewHeader { + + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + } + // Header row + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Layout.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..23952b4b --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Layout.qml @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Get started') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/GetStarted.qml' } + } + + EaElements.GroupBox { + title: qsTr('Examples') + icon: 'database' + + Loader { source: 'Groups/Examples.qml' } + } + + EaElements.GroupBox { + title: qsTr('Recent projects') + icon: 'archive' + + Loader { source: 'Groups/Recent.qml' } + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml new file mode 100644 index 00000000..649bb8a8 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +FileDialog{ + + id: openCifFileDialog + + fileMode: FileDialog.OpenFile + nameFilters: [ 'CIF files (*.cif)'] + + onAccepted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + Globals.References.pages.project.sidebar.basic.popups.openCifFile = openCifFileDialog + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml new file mode 100644 index 00000000..dcc2277b --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ProjectDescriptionDialog { + + visible: EaGlobals.Vars.showProjectDescriptionDialog + onClosed: EaGlobals.Vars.showProjectDescriptionDialog = false + + projectName: Globals.BackendWrapper.projectName + projectDescription: Globals.BackendWrapper.projectInfo.description + + onAccepted: { + Globals.BackendWrapper.projectName = projectName + Globals.BackendWrapper.projectEditInfo('description', projectDescription) + Globals.BackendWrapper.projectCreate() + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + projectLocation = Globals.BackendWrapper.projectInfo.location + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml new file mode 100644 index 00000000..4bc89207 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column { + + property int labelsCount: 50 + + spacing: EaStyle.Sizes.fontPixelSize + + Repeater { + model: labelsCount + EaElements.Label { + text: `Label ${index+1} of ${labelsCount}` + } + } + +} + diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Layout.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..273d95a0 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Extra/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Scrolling') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/Scrolling.qml' } + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Text/Layout.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Text/Layout.qml new file mode 100644 index 00000000..3c9c9d63 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Project/Sidebar/Text/Layout.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + + +EaComponents.SideBarColumn {} + diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Layout.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Layout.qml new file mode 100644 index 00000000..3beddbdd --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Layout.qml @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.reportCreated ? + '' : + qsTr('No Summary Generated') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Summary') } + ] + + items: [ + Loader { source: 'MainArea/Summary.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' } + ] + + continueButton.visible: false + } + + Component.onCompleted: console.debug(`Summary page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Summary page destroyed ::: ${this}`) + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/MainArea/Summary.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/MainArea/Summary.qml new file mode 100644 index 00000000..0168ba3a --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/MainArea/Summary.qml @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + color: EaStyle.Colors.textViewBackground + Behavior on color { EaAnimations.ThemeChange {} } + + // Flickable + Flickable { + id: flick + + anchors.fill: parent + + contentWidth: textArea.contentWidth + contentHeight: textArea.contentHeight + + clip: true + flickableDirection: Flickable.VerticalFlick + + ScrollBar.vertical: EaElements.ScrollBar { + policy: ScrollBar.AsNeeded + interactive: false + } + + // Main text area + EaElements.TextArea { + id: textArea + + readOnly: true + + width: flick.width + topPadding: 0 + bottomPadding: 0 + padding: 2.5 * EaStyle.Sizes.fontPixelSize + + textFormat: TextEdit.RichText + text: Globals.BackendWrapper.reportAsHtml + } + // Main text area + + } + // Flickable + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml new file mode 100644 index 00000000..e80a6b4c --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs +import QtCore + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Column { + + property string projectLocation: Globals.BackendWrapper.projectInfo.location + + EaLogic.Utils.osPathSep() + + 'summary' + + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + format selector + Row { + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + EaElements.TextField { + id: nameField + width: saveButton.width - formatField.width - parent.spacing + topInset: nameLabel.height + topPadding: topInset + padding + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter summary file name here') + Component.onCompleted: text = 'summary' + EaElements.Label { + id: nameLabel + text: qsTr('Name') + } + } + // Name field + + // Format selector + EaElements.ComboBox { + id: formatField + topInset: formatLabel.height + topPadding: topInset + padding + width: EaStyle.Sizes.fontPixelSize * 10 + textRole: 'text' + valueRole: 'value' + model: [ + { value: 'html', text: qsTr('HTML') } + ] + EaElements.Label { + id: formatLabel + text: qsTr('Format') + } + } + // Format selector + } + // Name field + format selector + + // Location field + EaElements.TextField { + id: reportLocationField + width: saveButton.width + topInset: locationLabel.height + topPadding: topInset + padding + rightPadding: chooseButton.width + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter report location here') + Component.onCompleted: text = projectLocation + + EaElements.Label { + id: locationLabel + text: qsTr('Location') + } + + EaElements.ToolButton { + id: chooseButton + anchors.right: parent.right + topPadding: parent.topPadding + showBackground: false + fontIcon: 'folder-open' + ToolTip.text: qsTr('Choose report parent directory') + onClicked: reportParentDirDialog.open() + } + } + // Location field + + // Save button + EaElements.SideBarButton { + id: saveButton + wide: true + fontIcon: 'download' + text: qsTr('Save') + } + // Save button + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Layout.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..472d957a --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Basic/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + enabled: false + title: qsTr('Export summary') + icon: 'download' + collapsed: false + + Loader { source: 'Groups/Export.qml' } + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml new file mode 100644 index 00000000..9f478042 --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column {} + diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Layout.qml b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..ef2a2edc --- /dev/null +++ b/examples/IntermediatePy/src/IntermediatePy/Gui/Pages/Report/Sidebar/Extra/Layout.qml @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Empty') + icon: 'rocket' + } + +} diff --git a/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.icns b/examples/IntermediatePy/src/IntermediatePy/Gui/Resources/Logos/App.icns new file mode 100644 index 0000000000000000000000000000000000000000..70975cb15da57f34bc198449a13b91090c21bd08 GIT binary patch literal 296301 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

        GRyfg%3LkEncR(R7LeupP} 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 literal 0 HcmV?d00001 diff --git a/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.png b/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5d4319e4f08aae9fda060afc38c3c9efea1a52 GIT binary patch literal 69247 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 BG3o#S literal 0 HcmV?d00001 diff --git a/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.svg b/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.svg new file mode 100644 index 00000000..5aab6b19 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/ESS.png b/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/ESS.png new file mode 100644 index 0000000000000000000000000000000000000000..22c09d2e32bc6ff6f97f738225ce8847b4c7daa8 GIT binary patch literal 5161 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 + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaElements.StatusBar { + + visible: EaGlobals.Vars.appBarCurrentIndex !== 0 + + EaElements.StatusBarItem { + keyIcon: 'archive' + keyText: qsTr('Project') + valueText: Globals.BackendWrapper.statusProject + ToolTip.text: qsTr('Current project') + } + + EaElements.StatusBarItem { + keyIcon: 'layer-group' + keyText: qsTr('Models') + valueText: Globals.BackendWrapper.statusPhasesCount + ToolTip.text: qsTr('Number of models added') + } + + EaElements.StatusBarItem { + keyIcon: 'microscope' + keyText: qsTr('Experiments') + valueText: Globals.BackendWrapper.statusExperimentsCount + ToolTip.text: qsTr('Number of experiments added') + } + + EaElements.StatusBarItem { + keyIcon: 'calculator' + keyText: qsTr('Calculator') + valueText: Globals.BackendWrapper.statusCalculator + ToolTip.text: qsTr('Current calculation engine') + } + + EaElements.StatusBarItem { + keyIcon: 'level-down-alt' + keyText: qsTr('Minimizer') + valueText: Globals.BackendWrapper.statusMinimizer + ToolTip.text: qsTr('Current minimization engine and method') + } + + EaElements.StatusBarItem { + keyIcon: 'th-list' + keyText: qsTr('Parameters') + valueText: Globals.BackendWrapper.statusVariables + ToolTip.text: qsTr('Number of parameters: total, free and fixed') + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/qmldir b/examples/BasicPy/src/BasicPy/Gui/qmldir new file mode 100644 index 00000000..d3151d58 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/qmldir @@ -0,0 +1,4 @@ +module Gui + +ApplicationWindow ApplicationWindow.qml +StatusBar StatusBar.qml diff --git a/examples/BasicPy/src/BasicPy/main.py b/examples/BasicPy/src/BasicPy/main.py new file mode 100644 index 00000000..dac3d02f --- /dev/null +++ b/examples/BasicPy/src/BasicPy/main.py @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: 2024 EasyApp contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2024 Contributors to the EasyApp project + +from pathlib import Path +import sys + +from PySide6.QtGui import QGuiApplication +from PySide6.QtQml import QQmlApplicationEngine + +# It is usually assumed that the EasyApp package is already installed in the desired python environment. +# If this is not the case, and if the example is run from the EasyApp repository, one need to add the path to the +# EasyApp source code. +CURRENT_DIR = Path(__file__).parent # path to qml components of the current project +EASYAPP_DIR = CURRENT_DIR / '..' / '..' / '..' / '..' / 'src' # path to qml components of the easyapp module +sys.path.append(str(EASYAPP_DIR)) + + +if __name__ == '__main__': + # Create Qt application + app = QGuiApplication(sys.argv) + + # Create the QML application engine + engine = QQmlApplicationEngine() + + # Add the paths where QML searches for components + engine.addImportPath(CURRENT_DIR) + engine.addImportPath(EASYAPP_DIR) + + # Load the main QML component + engine.load(CURRENT_DIR / 'main.qml') + + # Start the application event loop + if not engine.rootObjects(): + sys.exit(-1) + sys.exit(app.exec()) diff --git a/examples/BasicPy/src/BasicPy/main.qml b/examples/BasicPy/src/BasicPy/main.qml new file mode 100644 index 00000000..1c7c0070 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/main.qml @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import Gui as Gui + + +Gui.ApplicationWindow { + + id: applicationWindow // applicationWindow is globally accessible + +} diff --git a/examples/BasicQml/src/BasicQml.qmlproject b/examples/BasicQml/src/BasicQml.qmlproject new file mode 100644 index 00000000..077a02d5 --- /dev/null +++ b/examples/BasicQml/src/BasicQml.qmlproject @@ -0,0 +1,41 @@ +import QmlProject 1.1 + +Project { + mainFile: "BasicQml/main.qml" + + // List of module and plugin directories passed to QML runtime + importPaths: [ + "BasicQml", + "../../../src", // EasyApp + ] + + // Include .qml files from specified directory and its subdirectories + QmlFiles { + directory: "BasicQml" + } + QmlFiles { + directory: "../../../src/EasyApp" + } + + // Include .js files from specified directory and its subdirectories + JavaScriptFiles { + directory: "BasicQml" + } + JavaScriptFiles { + directory: "../../../src/EasyApp" + } + + // Include Module Definition Files (qmldir), as well as .ts and .qrc + // from specified directory and its subdirectories + Files { + directory: "BasicQml" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + Files { + directory: "../../../src/EasyApp" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + +} diff --git a/examples/BasicQml/src/BasicQml/Backends/MockBackend.qml b/examples/BasicQml/src/BasicQml/Backends/MockBackend.qml new file mode 100644 index 00000000..44da4805 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Backends/MockBackend.qml @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +import Backends.MockQml as MockLogic + + +QtObject { + + property var project: MockLogic.Project + property var status: MockLogic.Status + property var report: MockLogic.Report + +} + + diff --git a/examples/BasicQml/src/BasicQml/Backends/MockQml/Project.qml b/examples/BasicQml/src/BasicQml/Backends/MockQml/Project.qml new file mode 100644 index 00000000..566751ba --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Backends/MockQml/Project.qml @@ -0,0 +1,74 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + property bool created: false + + property string name: '' + + readonly property var info: { + 'description': '', + 'location': '', + 'creationDate': '' + } + + readonly property var examples: [ + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3 (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3-Raw (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Raw_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI, 2 phases', + 'name': 'La0.5Ba0.5CoO3-Mult-Phases (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Mult-Phases_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D20@ILL', + 'name': 'Co2SiO4 (D20)', + 'path': ':/Examples/Co2SiO4_D20@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, G41@LLB', + 'name': 'Dy3Al5O12 (G41)', + 'path': ':/Examples/Dy3Al5O12_G41@LLB/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D1A@ILL', + 'name': 'PbSO4 (D1A)', + 'path': ':/Examples/PbSO4_D1A@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, 3T2@LLB', + 'name': 'LaMnO3 (3T2)', + 'path': ':/Examples/LaMnO3_3T2@LLB/project.cif' + } + ] + + function create() { + console.debug(`Creating project '${name}'`) + info.creationDate = `${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}` + infoChanged() // this signal is not emitted automatically when only part of the object is changed + created = true + } + + function save() { + console.debug(`NOT IMPLEMENTED: Saving project '${name}'`) + } + + function editInfo(path, new_value) { + console.debug(`NOT IMPLEMENTED: Changing project info.${path} from '${info.path}' to '${new_value}'`) + } + +} diff --git a/examples/BasicQml/src/BasicQml/Backends/MockQml/Report.qml b/examples/BasicQml/src/BasicQml/Backends/MockQml/Report.qml new file mode 100644 index 00000000..84132709 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Backends/MockQml/Report.qml @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + property bool created: false + + readonly property string asHtml: ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Summary

        Project information

        NameLa0.5Ba0.5CoO3
        Descriptionneutrons, powder, constant wavelength
        No. of phases1
        No. of experiments1

        Crystal data

        Phase datablocklbco
        Crystal system, space groupcubic,  P m -3 m

        Data collection

        Experiment datablockhrpt
        Radiation probeneutron
        Measured range: min, max, inc (°)10.0,  164.85,  0.05
        + + +' + +} diff --git a/examples/BasicQml/src/BasicQml/Backends/MockQml/Status.qml b/examples/BasicQml/src/BasicQml/Backends/MockQml/Status.qml new file mode 100644 index 00000000..452ca9e5 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Backends/MockQml/Status.qml @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property string project: 'Undefined' + readonly property string phasesCount: '1' + readonly property string experimentsCount: '1' + readonly property string calculator: 'CrysPy' + readonly property string minimizer: 'Lmfit (leastsq)' + readonly property string variables: '31 (3 free, 28 fixed)' + +} diff --git a/examples/BasicQml/src/BasicQml/Backends/MockQml/qmldir b/examples/BasicQml/src/BasicQml/Backends/MockQml/qmldir new file mode 100644 index 00000000..7fb05624 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Backends/MockQml/qmldir @@ -0,0 +1,5 @@ +module MockQml + +singleton Project Project.qml +singleton Report Report.qml +singleton Status Status.qml diff --git a/examples/BasicQml/src/BasicQml/Backends/qmldir b/examples/BasicQml/src/BasicQml/Backends/qmldir new file mode 100644 index 00000000..fdc15f20 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Backends/qmldir @@ -0,0 +1,3 @@ +module Logic + +singleton MockBackend MockBackend.qml diff --git a/examples/BasicQml/src/BasicQml/Gui/ApplicationWindow.qml b/examples/BasicQml/src/BasicQml/Gui/ApplicationWindow.qml new file mode 100644 index 00000000..835e886f --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/ApplicationWindow.qml @@ -0,0 +1,114 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui as Gui +import Gui.Globals as Globals + +EaComponents.ApplicationWindow { + + /////////////////// + // APPLICATION BAR + /////////////////// + + // Left group of application bar tool buttons + appBarLeftButtons: [ + + EaElements.ToolButton { + enabled: Globals.BackendWrapper.projectCreated + highlighted: true + fontIcon: 'save' + ToolTip.text: qsTr('Save current state of the project') + onClicked: Globals.BackendWrapper.projectSave() + } + + ] + + // Right group of application bar tool buttons + appBarRightButtons: [ + + EaElements.ToolButton { + fontIcon: 'cog' + ToolTip.text: qsTr('Application preferences') + onClicked: EaGlobals.Vars.showAppPreferencesDialog = true + } + + ] + + // Central group of application bar page buttons (workflow tabs) + // Page buttons for the pages described below + appBarCentralTabs.contentData: [ + + // Home page + EaElements.AppBarTabButton { + id: homeButton + fontIcon: 'home' + text: qsTr('Home') + ToolTip.text: qsTr('Home') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.homeButton = homeButton + } + }, + // Home page + + // Project page + EaElements.AppBarTabButton { + id: projectButton + enabled: false + fontIcon: 'archive' + text: qsTr('Project') + ToolTip.text: qsTr('Project description page') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.projectButton = projectButton + } + }, + // Project page + + // Summary page + EaElements.AppBarTabButton { + id: summaryButton + enabled: false + fontIcon: 'clipboard-list' + text: qsTr('Summary') + ToolTip.text: qsTr('Summary of the work done') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton = summaryButton + } + } + // Summary page + ] + + ////////////////////////////////// + // APP PAGES (MAIN AREA + SIDEBAR) + ////////////////////////////////// + + // Pages for the tab buttons described above + contentArea: [ + Loader { source: 'Pages/Home/Content.qml' }, + Loader { source: 'Pages/Project/Layout.qml' }, + Loader { source: 'Pages/Report/Layout.qml' } + ] + + ///////////// + // STATUS BAR + ///////////// + + statusBar: Gui.StatusBar {} + + /////// + // MISC + /////// + + onClosing: Qt.quit() + + Component.onCompleted: console.debug(`Application window loaded ::: ${this}`) + Component.onDestruction: console.debug(`Application window destroyed ::: ${this}`) + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Globals/ApplicationInfo.qml b/examples/BasicQml/src/BasicQml/Gui/Globals/ApplicationInfo.qml new file mode 100644 index 00000000..48042f22 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Globals/ApplicationInfo.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property var about: { + 'name': 'BasicQml', + 'namePrefix': 'Basic', + 'nameSuffix': 'Qml', + 'namePrefixForLogo': 'basic', + 'nameSuffixForLogo': 'qml', + 'homePageUrl': 'https://github.com/EasyScience/EasyExample', + 'issuesUrl': 'https://github.com/EasyScience/EasyExample/issues', + 'licenseUrl': 'https://github.com/EasyScience/EasyExample/LICENCE.md', + 'dependenciesUrl': 'https://github.com/EasyScience/EasyExample/DEPENDENCIES.md', + 'version': '1.0.0', + 'icon': Qt.resolvedUrl('../Resources/Logos/App.svg'), + 'date': new Date().toISOString().slice(0,10), + 'developerYearsFrom': '2019', + 'developerYearsTo': '2024', + 'description': 'Example of a desktop application of basic complexity with Python backend and EasyApp-based GUI', + 'developerIcons': [ + { + 'url': 'https://ess.eu', + 'icon': Qt.resolvedUrl('../Resources/Logos/ESS.png'), + 'heightScale': 3.0 + } + ] + } + +} + diff --git a/examples/BasicQml/src/BasicQml/Gui/Globals/BackendWrapper.qml b/examples/BasicQml/src/BasicQml/Gui/Globals/BackendWrapper.qml new file mode 100644 index 00000000..c0d36666 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Globals/BackendWrapper.qml @@ -0,0 +1,67 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +// This module is registered in the main.py file and allows access to the properties +// and backend methods of the singleton object of the ‘PyBackend’ class. +// If ‘PyBackend’ is not defined, then 'MockBackend' from directory 'Backends' is used. +// It is needed to run the GUI frontend via the qml runtime tool without any Python backend. +import Backends as Backends + + +QtObject { + + //////////////// + // Backend proxy + //////////////// + + readonly property var activeBackend: { + if (typeof Backends.PyBackend !== 'undefined') { + console.debug('REAL python backend is in use') + return Backends.PyBackend + } else { + console.debug('MOCK QML backend is in use') + return Backends.MockBackend + } + } + + ///////////// + // Status bar + ///////////// + + readonly property string statusProject: activeBackend.status.project + readonly property string statusPhasesCount: activeBackend.status.phasesCount + readonly property string statusExperimentsCount: activeBackend.status.experimentsCount + readonly property string statusCalculator: activeBackend.status.calculator + readonly property string statusMinimizer: activeBackend.status.minimizer + readonly property string statusVariables: activeBackend.status.variables + + /////////////// + // Project page + /////////////// + + readonly property var projectInfo: activeBackend.project.info + readonly property var projectExamples: activeBackend.project.examples + + property bool projectCreated: activeBackend.project.created + onProjectCreatedChanged: activeBackend.project.created = projectCreated + property string projectName: activeBackend.project.name + onProjectNameChanged: activeBackend.project.name = projectName + + function projectCreate() { activeBackend.project.create() } + function projectSave() { activeBackend.project.save() } + function projectEditInfo(path, new_value) { activeBackend.project.editInfo(path, new_value) } + + /////////////// + // Summary page + /////////////// + + readonly property string reportAsHtml: activeBackend.report.asHtml + + property bool reportCreated: activeBackend.report.created + onReportCreatedChanged: activeBackend.report.created = reportCreated +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Globals/References.qml b/examples/BasicQml/src/BasicQml/Gui/Globals/References.qml new file mode 100644 index 00000000..0d9d7812 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Globals/References.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + + +// Initialisation of the reference dictionary. It is filled in later, when the required object is +// created and its unique id is assigned and added here instead of 'null'. After that, any object +// whose id is stored here can be accessed from any other qml file. +QtObject { + + // Populated in ApplicationWindows.qml + readonly property var applicationWindow: { + 'appBarCentralTabs': { + 'homeButton': null, + 'projectButton': null, + 'summaryButton': null, + } + } + + // Populated in Pages/... + readonly property var pages: { + 'project': { + 'sidebar': { + 'basic': { + 'popups': { + 'openCifFile': null + } + } + } + } + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Globals/qmldir b/examples/BasicQml/src/BasicQml/Gui/Globals/qmldir new file mode 100644 index 00000000..00d72e33 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Globals/qmldir @@ -0,0 +1,5 @@ +module Globals + +singleton ApplicationInfo ApplicationInfo.qml +singleton BackendWrapper BackendWrapper.qml +singleton References References.qml diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Home/Content.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Home/Content.qml new file mode 100644 index 00000000..e0b7a198 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Home/Content.qml @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Item { + + Column { + anchors.centerIn: parent + + // Application logo + Image { + id: appLogo + + source: Globals.ApplicationInfo.about.icon + anchors.horizontalCenter: parent.horizontalCenter + width: EaStyle.Sizes.fontPixelSize * 5 + fillMode: Image.PreserveAspectFit + antialiasing: true + } + // Application logo + + // Application name + Row { + id: appName + + property string fontFamily: EaStyle.Fonts.thirdFontFamily + property string fontPixelSize: EaStyle.Sizes.fontPixelSize * 4 + + anchors.horizontalCenter: parent.horizontalCenter + + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.Light + text: Globals.ApplicationInfo.about.namePrefixForLogo + } + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.DemiBold + text: Globals.ApplicationInfo.about.nameSuffixForLogo + } + } + // Application name + + // Application version + EaElements.Label { + id: appVersion + + anchors.horizontalCenter: parent.horizontalCenter + + text: { + return qsTr('Version') + ` ${Globals.ApplicationInfo.about.version} (${Globals.ApplicationInfo.about.date})` + } + } + // Application version + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Start button + EaElements.SideBarButton { + id: startButton + + anchors.horizontalCenter: parent.horizontalCenter + + fontIcon: 'rocket' + text: qsTr('Start') + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.projectButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.projectButton.toggle() + } + } + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Links + Row { + id: links + + anchors.horizontalCenter: parent.horizontalCenter + spacing: EaStyle.Sizes.fontPixelSize * 3 + + // Left links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('About %1'.arg(Globals.ApplicationInfo.about.name)) + onClicked: EaGlobals.Vars.showAppAboutDialog = true + Loader { source: 'Popups/About.qml' } + } + EaElements.Button { + text: qsTr('Online documentation') + onClicked: Qt.openUrlExternally('https://github.com/EasyScience/EasyApp') + } + EaElements.Button { + text: qsTr('Get in touch online') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Left links + + // Right links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('Tutorial') + ' 1: ' + qsTr('App interface') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 2: ' + qsTr('Basic usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 3: ' + qsTr('Advanced usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Right links + } + // Links + } + + Component.onCompleted: console.debug(`Home page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Home page destroyed ::: ${this}`) + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Home/Popups/About.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Home/Popups/About.qml new file mode 100644 index 00000000..11815fdd --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Home/Popups/About.qml @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.AboutDialog { + + visible: EaGlobals.Vars.showAppAboutDialog + onClosed: EaGlobals.Vars.showAppAboutDialog = false + + appIconPath: Globals.ApplicationInfo.about.icon + appUrl: Globals.ApplicationInfo.about.homePageUrl + + appPrefixName: Globals.ApplicationInfo.about.namePrefixForLogo + appSuffixName: Globals.ApplicationInfo.about.nameSuffixForLogo + appVersion: Globals.ApplicationInfo.about.version + appDate: Globals.ApplicationInfo.about.date + + eulaUrl: Globals.ApplicationInfo.about.licenseUrl + oslUrl: Globals.ApplicationInfo.about.dependenciesUrl + + description: Globals.ApplicationInfo.about.description + developerIcons: Globals.ApplicationInfo.about.developerIcons + developerYearsFrom: Globals.ApplicationInfo.about.developerYearsFrom + developerYearsTo: Globals.ApplicationInfo.about.developerYearsTo + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Layout.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Layout.qml new file mode 100644 index 00000000..6c03c65c --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Layout.qml @@ -0,0 +1,59 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.projectCreated ? + '' : + qsTr('No project defined') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Description') } + ] + + items: [ + Loader { source: 'MainArea/Description.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') }, + EaElements.TabButton { text: qsTr('Text mode controls'); enabled: false } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' }, + Loader { source: 'Sidebar/Text/Layout.qml' } + ] + + continueButton.text: Globals.BackendWrapper.projectCreated ? + qsTr('Continue') : + qsTr('Continue without project') + + continueButton.onClicked: { + console.debug(`Clicking '${continueButton.text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.toggle() + } + } + + Component.onCompleted: console.debug(`Project page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Project page destroyed ::: ${this}`) + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/MainArea/Description.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/MainArea/Description.qml new file mode 100644 index 00000000..8ce72b2f --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/MainArea/Description.qml @@ -0,0 +1,89 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + readonly property int commonSpacing: EaStyle.Sizes.fontPixelSize * 1.5 + + color: EaStyle.Colors.mainContentBackground + + Column { + id: container + + anchors.top: parent.top + anchors.left: parent.left + + anchors.topMargin: commonSpacing + anchors.leftMargin: commonSpacing * 1.5 + + spacing: commonSpacing + + // Project title + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + font.family: EaStyle.Fonts.secondFontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize * 3 + font.weight: Font.ExtraLight + validator: RegularExpressionValidator { regularExpression: /^[a-zA-Z][a-zA-Z0-9_\-\.]{1,30}$/ } + placeholderText: qsTr("Enter project name here") + text: Globals.BackendWrapper.projectName + onEditingFinished: Globals.BackendWrapper.projectName = text + } + // Project title + + // Project info + Grid { + columns: 2 + rowSpacing: 0 + columnSpacing: commonSpacing + + EaElements.Label { + font.bold: true + text: qsTr('Description:') + } + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + placeholderText: qsTr("Enter project description here") + text: Globals.BackendWrapper.projectInfo.description + onEditingFinished: Globals.BackendWrapper.projectEditInfo('description', text) + } + + EaElements.Label { + font.bold: true + text: qsTr('Location:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.location + } + + EaElements.Label { + font.bold: true + text: qsTr('Created:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.creationDate + } + } + // Project info + + // Project image + Image { + width: EaStyle.Sizes.fontPixelSize * 25 + fillMode: Image.PreserveAspectFit + } + // Project image + + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml new file mode 100644 index 00000000..065031c7 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No examples available') + + model: Globals.BackendWrapper.projectExamples + + // header + header: EaComponents.TableViewHeader { + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + EaComponents.TableViewLabel { + flexibleWidth: true + horizontalAlignment: Text.AlignLeft + text: qsTr('name / description') + } + } + // header + + // delegate + delegate: EaComponents.TableViewDelegate { + mouseArea.onPressed: { + const filePath = tableView.model[index].path + console.debug(`Loading example: ${filePath}`) + } + + EaComponents.TableViewLabel { + text: index + 1 + color: EaStyle.Colors.themeForegroundMinor + } + + EaComponents.TableViewTwoRowsAdvancedLabel { + fontIcon: 'archive' + text: tableView.model[index].name + minorText: tableView.model[index].description + ToolTip.text: tableView.model[index].description + } + } + // delegate + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml new file mode 100644 index 00000000..cb1ab180 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +//import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Grid { + + columns: 2 + spacing: EaStyle.Sizes.fontPixelSize + + // button 1 + EaElements.SideBarButton { + fontIcon: 'plus-circle' + text: qsTr('Create a new project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + EaGlobals.Vars.showProjectDescriptionDialog = true + } + + Loader { + source: '../Popups/ProjectDescription.qml' + } + } + // button 1 + + // button 2 + EaElements.SideBarButton { + fontIcon: 'upload' + text: qsTr('Open an existing project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.pages.project.sidebar.basic.popups.openCifFile.open() + } + + Loader { + source: '../Popups/OpenCifFile.qml' + } + } + // button 2 + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml new file mode 100644 index 00000000..8357f95a --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtCore + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No recent projects found') + + // Header row + header: EaComponents.TableViewHeader { + + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + } + // Header row + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Layout.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..23952b4b --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Layout.qml @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Get started') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/GetStarted.qml' } + } + + EaElements.GroupBox { + title: qsTr('Examples') + icon: 'database' + + Loader { source: 'Groups/Examples.qml' } + } + + EaElements.GroupBox { + title: qsTr('Recent projects') + icon: 'archive' + + Loader { source: 'Groups/Recent.qml' } + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml new file mode 100644 index 00000000..649bb8a8 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +FileDialog{ + + id: openCifFileDialog + + fileMode: FileDialog.OpenFile + nameFilters: [ 'CIF files (*.cif)'] + + onAccepted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + Globals.References.pages.project.sidebar.basic.popups.openCifFile = openCifFileDialog + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml new file mode 100644 index 00000000..dcc2277b --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ProjectDescriptionDialog { + + visible: EaGlobals.Vars.showProjectDescriptionDialog + onClosed: EaGlobals.Vars.showProjectDescriptionDialog = false + + projectName: Globals.BackendWrapper.projectName + projectDescription: Globals.BackendWrapper.projectInfo.description + + onAccepted: { + Globals.BackendWrapper.projectName = projectName + Globals.BackendWrapper.projectEditInfo('description', projectDescription) + Globals.BackendWrapper.projectCreate() + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + projectLocation = Globals.BackendWrapper.projectInfo.location + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml new file mode 100644 index 00000000..4bc89207 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column { + + property int labelsCount: 50 + + spacing: EaStyle.Sizes.fontPixelSize + + Repeater { + model: labelsCount + EaElements.Label { + text: `Label ${index+1} of ${labelsCount}` + } + } + +} + diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Layout.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..273d95a0 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Extra/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Scrolling') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/Scrolling.qml' } + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Text/Layout.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Text/Layout.qml new file mode 100644 index 00000000..3c9c9d63 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Project/Sidebar/Text/Layout.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + + +EaComponents.SideBarColumn {} + diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Layout.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Layout.qml new file mode 100644 index 00000000..3beddbdd --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Layout.qml @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.reportCreated ? + '' : + qsTr('No Summary Generated') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Summary') } + ] + + items: [ + Loader { source: 'MainArea/Summary.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' } + ] + + continueButton.visible: false + } + + Component.onCompleted: console.debug(`Summary page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Summary page destroyed ::: ${this}`) + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Report/MainArea/Summary.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/MainArea/Summary.qml new file mode 100644 index 00000000..0168ba3a --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/MainArea/Summary.qml @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + color: EaStyle.Colors.textViewBackground + Behavior on color { EaAnimations.ThemeChange {} } + + // Flickable + Flickable { + id: flick + + anchors.fill: parent + + contentWidth: textArea.contentWidth + contentHeight: textArea.contentHeight + + clip: true + flickableDirection: Flickable.VerticalFlick + + ScrollBar.vertical: EaElements.ScrollBar { + policy: ScrollBar.AsNeeded + interactive: false + } + + // Main text area + EaElements.TextArea { + id: textArea + + readOnly: true + + width: flick.width + topPadding: 0 + bottomPadding: 0 + padding: 2.5 * EaStyle.Sizes.fontPixelSize + + textFormat: TextEdit.RichText + text: Globals.BackendWrapper.reportAsHtml + } + // Main text area + + } + // Flickable + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml new file mode 100644 index 00000000..e80a6b4c --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs +import QtCore + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Column { + + property string projectLocation: Globals.BackendWrapper.projectInfo.location + + EaLogic.Utils.osPathSep() + + 'summary' + + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + format selector + Row { + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + EaElements.TextField { + id: nameField + width: saveButton.width - formatField.width - parent.spacing + topInset: nameLabel.height + topPadding: topInset + padding + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter summary file name here') + Component.onCompleted: text = 'summary' + EaElements.Label { + id: nameLabel + text: qsTr('Name') + } + } + // Name field + + // Format selector + EaElements.ComboBox { + id: formatField + topInset: formatLabel.height + topPadding: topInset + padding + width: EaStyle.Sizes.fontPixelSize * 10 + textRole: 'text' + valueRole: 'value' + model: [ + { value: 'html', text: qsTr('HTML') } + ] + EaElements.Label { + id: formatLabel + text: qsTr('Format') + } + } + // Format selector + } + // Name field + format selector + + // Location field + EaElements.TextField { + id: reportLocationField + width: saveButton.width + topInset: locationLabel.height + topPadding: topInset + padding + rightPadding: chooseButton.width + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter report location here') + Component.onCompleted: text = projectLocation + + EaElements.Label { + id: locationLabel + text: qsTr('Location') + } + + EaElements.ToolButton { + id: chooseButton + anchors.right: parent.right + topPadding: parent.topPadding + showBackground: false + fontIcon: 'folder-open' + ToolTip.text: qsTr('Choose report parent directory') + onClicked: reportParentDirDialog.open() + } + } + // Location field + + // Save button + EaElements.SideBarButton { + id: saveButton + wide: true + fontIcon: 'download' + text: qsTr('Save') + } + // Save button + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Layout.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..472d957a --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Basic/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + enabled: false + title: qsTr('Export summary') + icon: 'download' + collapsed: false + + Loader { source: 'Groups/Export.qml' } + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml new file mode 100644 index 00000000..9f478042 --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column {} + diff --git a/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Layout.qml b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..ef2a2edc --- /dev/null +++ b/examples/BasicQml/src/BasicQml/Gui/Pages/Report/Sidebar/Extra/Layout.qml @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Empty') + icon: 'rocket' + } + +} diff --git a/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.icns b/examples/BasicQml/src/BasicQml/Gui/Resources/Logos/App.icns new file mode 100644 index 0000000000000000000000000000000000000000..70975cb15da57f34bc198449a13b91090c21bd08 GIT binary patch literal 296301 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

      GRyfg%3LkEncR(R7LeupP} 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 literal 0 HcmV?d00001 diff --git a/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.png b/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5d4319e4f08aae9fda060afc38c3c9efea1a52 GIT binary patch literal 69247 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 BG3o#S literal 0 HcmV?d00001 diff --git a/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.svg b/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.svg new file mode 100644 index 00000000..5aab6b19 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/App.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/ESS.png b/examples/BasicC++/src/BasicC++/Gui/Resources/Logos/ESS.png new file mode 100644 index 0000000000000000000000000000000000000000..22c09d2e32bc6ff6f97f738225ce8847b4c7daa8 GIT binary patch literal 5161 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 + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaElements.StatusBar { + + visible: EaGlobals.Vars.appBarCurrentIndex !== 0 + + EaElements.StatusBarItem { + keyIcon: 'archive' + keyText: qsTr('Project') + valueText: Globals.BackendWrapper.statusProject + ToolTip.text: qsTr('Current project') + } + + EaElements.StatusBarItem { + keyIcon: 'layer-group' + keyText: qsTr('Models') + valueText: Globals.BackendWrapper.statusPhasesCount + ToolTip.text: qsTr('Number of models added') + } + + EaElements.StatusBarItem { + keyIcon: 'microscope' + keyText: qsTr('Experiments') + valueText: Globals.BackendWrapper.statusExperimentsCount + ToolTip.text: qsTr('Number of experiments added') + } + + EaElements.StatusBarItem { + keyIcon: 'calculator' + keyText: qsTr('Calculator') + valueText: Globals.BackendWrapper.statusCalculator + ToolTip.text: qsTr('Current calculation engine') + } + + EaElements.StatusBarItem { + keyIcon: 'level-down-alt' + keyText: qsTr('Minimizer') + valueText: Globals.BackendWrapper.statusMinimizer + ToolTip.text: qsTr('Current minimization engine and method') + } + + EaElements.StatusBarItem { + keyIcon: 'th-list' + keyText: qsTr('Parameters') + valueText: Globals.BackendWrapper.statusVariables + ToolTip.text: qsTr('Number of parameters: total, free and fixed') + } + +} diff --git a/examples/BasicC++/src/BasicC++/Gui/qmldir b/examples/BasicC++/src/BasicC++/Gui/qmldir new file mode 100644 index 00000000..d3151d58 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/Gui/qmldir @@ -0,0 +1,4 @@ +module Gui + +ApplicationWindow ApplicationWindow.qml +StatusBar StatusBar.qml diff --git a/examples/BasicC++/src/BasicC++/main.cpp b/examples/BasicC++/src/BasicC++/main.cpp new file mode 100644 index 00000000..798f06e5 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/main.cpp @@ -0,0 +1,29 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +#include +#include +#include + + +int main(int argc, char *argv[]) +{ + // Create Qt application + QGuiApplication app(argc, argv); + + // Create the QML application engine + QQmlApplicationEngine engine; + + // Add the paths where QML searches for components + // Use whatever is defined in the resources.qrc file + engine.addImportPath("qrc:/"); + + // Load the main QML component + engine.load("qrc:/main.qml"); + + // Start the application event loop + if (engine.rootObjects().isEmpty()) + return -1; + return app.exec(); +} diff --git a/examples/BasicC++/src/BasicC++/main.qml b/examples/BasicC++/src/BasicC++/main.qml new file mode 100644 index 00000000..1c7c0070 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/main.qml @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import Gui as Gui + + +Gui.ApplicationWindow { + + id: applicationWindow // applicationWindow is globally accessible + +} diff --git a/examples/BasicC++/src/BasicC++/resources.qrc b/examples/BasicC++/src/BasicC++/resources.qrc new file mode 100644 index 00000000..d9f07496 --- /dev/null +++ b/examples/BasicC++/src/BasicC++/resources.qrc @@ -0,0 +1,227 @@ + + + main.qml + Gui/Globals/ApplicationInfo.qml + Gui/Globals/BackendWrapper.qml + Gui/Globals/qmldir + Gui/Globals/References.qml + Gui/Pages/Home/Popups/About.qml + Gui/Pages/Home/Content.qml + Gui/Pages/Project/MainArea/Description.qml + Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml + Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml + Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml + Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml + Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml + Gui/Pages/Project/Sidebar/Basic/Layout.qml + Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml + Gui/Pages/Project/Sidebar/Extra/Layout.qml + Gui/Pages/Project/Sidebar/Text/Layout.qml + Gui/Pages/Project/Layout.qml + Gui/Pages/Report/MainArea/Summary.qml + Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml + Gui/Pages/Report/Sidebar/Basic/Layout.qml + Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml + Gui/Pages/Report/Sidebar/Extra/Layout.qml + Gui/Pages/Report/Layout.qml + Gui/Resources/Logos/App.icns + Gui/Resources/Logos/App.ico + Gui/Resources/Logos/App.png + Gui/Resources/Logos/App.svg + Gui/Resources/Logos/ESS.png + Gui/ApplicationWindow.qml + Gui/qmldir + Gui/StatusBar.qml + Backends/MockBackend.qml + Backends/MockQml/Project.qml + Backends/MockQml/qmldir + Backends/MockQml/Report.qml + Backends/MockQml/Status.qml + Backends/qmldir + ../../../../src/EasyApp/Gui/Animations/ColorReset.qml + ../../../../src/EasyApp/Gui/Animations/qmldir + ../../../../src/EasyApp/Gui/Animations/ThemeChange.qml + ../../../../src/EasyApp/Gui/Animations/TranslationChange.qml + ../../../../src/EasyApp/Gui/Charts/Plotly1dLine.qml + ../../../../src/EasyApp/Gui/Charts/Plotly1dMeasVsCalc.qml + ../../../../src/EasyApp/Gui/Charts/Plotly2dHeatmap.qml + ../../../../src/EasyApp/Gui/Charts/Plotly3dScatter.qml + ../../../../src/EasyApp/Gui/Charts/Plotly3dSurface.qml + ../../../../src/EasyApp/Gui/Charts/qmldir + ../../../../src/EasyApp/Gui/Charts/QtCharts1dBase 2.qml + ../../../../src/EasyApp/Gui/Charts/QtCharts1dBase.qml + ../../../../src/EasyApp/Gui/Charts/QtCharts1dMeasVsCalc.qml + ../../../../src/EasyApp/Gui/Charts/QtCharts1dValueAxis.qml + ../../../../src/EasyApp/Gui/Components/AboutDialog.qml + ../../../../src/EasyApp/Gui/Components/AppBarCentralTabs.qml + ../../../../src/EasyApp/Gui/Components/AppBarLeftButtons.qml + ../../../../src/EasyApp/Gui/Components/AppBarRightButtons.qml + ../../../../src/EasyApp/Gui/Components/ApplicationWindow.qml + ../../../../src/EasyApp/Gui/Components/BasicReport.qml + ../../../../src/EasyApp/Gui/Components/ContentArea.qml + ../../../../src/EasyApp/Gui/Components/ContentPage.qml + ../../../../src/EasyApp/Gui/Components/GuideWindow.qml + ../../../../src/EasyApp/Gui/Components/GuideWindowContainer.qml + ../../../../src/EasyApp/Gui/Components/JsonListModel.qml + ../../../../src/EasyApp/Gui/Components/MainContent.qml + ../../../../src/EasyApp/Gui/Components/PreferencesDialog.qml + ../../../../src/EasyApp/Gui/Components/ProjectDescriptionDialog.qml + ../../../../src/EasyApp/Gui/Components/qmldir + ../../../../src/EasyApp/Gui/Components/SideBar.qml + ../../../../src/EasyApp/Gui/Components/SideBarColumn.qml + ../../../../src/EasyApp/Gui/Components/TableView.qml + ../../../../src/EasyApp/Gui/Components/TableViewAdvancedLabel.qml + ../../../../src/EasyApp/Gui/Components/TableViewButton.qml + ../../../../src/EasyApp/Gui/Components/TableViewCheckBox.qml + ../../../../src/EasyApp/Gui/Components/TableViewComboBox.qml + ../../../../src/EasyApp/Gui/Components/TableViewDelegate.qml + ../../../../src/EasyApp/Gui/Components/TableViewHeader.qml + ../../../../src/EasyApp/Gui/Components/TableViewLabel.qml + ../../../../src/EasyApp/Gui/Components/TableViewLabelControl.qml + ../../../../src/EasyApp/Gui/Components/TableViewParameter.qml + ../../../../src/EasyApp/Gui/Components/TableViewTextInput.qml + ../../../../src/EasyApp/Gui/Components/TableViewTwoRowsAdvancedLabel.qml + ../../../../src/EasyApp/Gui/Elements/AppBarTabButton.qml + ../../../../src/EasyApp/Gui/Elements/ApplicationWindow.qml + ../../../../src/EasyApp/Gui/Elements/BoxShadow.qml + ../../../../src/EasyApp/Gui/Elements/Button.qml + ../../../../src/EasyApp/Gui/Elements/CheckBox.qml + ../../../../src/EasyApp/Gui/Elements/CheckIndicator.qml + ../../../../src/EasyApp/Gui/Elements/ComboBox.qml + ../../../../src/EasyApp/Gui/Elements/CursorDelegate.qml + ../../../../src/EasyApp/Gui/Elements/Dialog.qml + ../../../../src/EasyApp/Gui/Elements/DialogButtonBox.qml + ../../../../src/EasyApp/Gui/Elements/ElevationEffect.qml + ../../../../src/EasyApp/Gui/Elements/GroupBox.qml + ../../../../src/EasyApp/Gui/Elements/GroupButton.qml + ../../../../src/EasyApp/Gui/Elements/GroupColumn.qml + ../../../../src/EasyApp/Gui/Elements/GroupRow.qml + ../../../../src/EasyApp/Gui/Elements/Label.qml + ../../../../src/EasyApp/Gui/Elements/LinkedImage.qml + ../../../../src/EasyApp/Gui/Elements/Menu.qml + ../../../../src/EasyApp/Gui/Elements/MenuItem.qml + ../../../../src/EasyApp/Gui/Elements/ParamComboBox.qml + ../../../../src/EasyApp/Gui/Elements/Parameter.qml + ../../../../src/EasyApp/Gui/Elements/ParamTextField.qml + ../../../../src/EasyApp/Gui/Elements/Popup.qml + ../../../../src/EasyApp/Gui/Elements/qmldir + ../../../../src/EasyApp/Gui/Elements/RadioButton.qml + ../../../../src/EasyApp/Gui/Elements/RadioIndicator.qml + ../../../../src/EasyApp/Gui/Elements/RectangularGlow.qml + ../../../../src/EasyApp/Gui/Elements/RemoteController.qml + ../../../../src/EasyApp/Gui/Elements/RemotePointer.qml + ../../../../src/EasyApp/Gui/Elements/RunningLabel.qml + ../../../../src/EasyApp/Gui/Elements/ScrollBar.qml + ../../../../src/EasyApp/Gui/Elements/ScrollIndicator.qml + ../../../../src/EasyApp/Gui/Elements/SideBarButton.qml + ../../../../src/EasyApp/Gui/Elements/Slider.qml + ../../../../src/EasyApp/Gui/Elements/SliderHandle.qml + ../../../../src/EasyApp/Gui/Elements/SpinBox.qml + ../../../../src/EasyApp/Gui/Elements/SplashScreen.qml + ../../../../src/EasyApp/Gui/Elements/StatusBar.qml + ../../../../src/EasyApp/Gui/Elements/StatusBarItem.qml + ../../../../src/EasyApp/Gui/Elements/TabBar.qml + ../../../../src/EasyApp/Gui/Elements/TabButton.qml + ../../../../src/EasyApp/Gui/Elements/TextArea.qml + ../../../../src/EasyApp/Gui/Elements/TextField.qml + ../../../../src/EasyApp/Gui/Elements/TextInput.qml + ../../../../src/EasyApp/Gui/Elements/ToolBar.qml + ../../../../src/EasyApp/Gui/Elements/ToolButton.qml + ../../../../src/EasyApp/Gui/Elements/ToolTip.qml + ../../../../src/EasyApp/Gui/Globals/qmldir + ../../../../src/EasyApp/Gui/Globals/Vars.qml + ../../../../src/EasyApp/Gui/Html/BasicReport.html + ../../../../src/EasyApp/Gui/Html/BlankPage.html + ../../../../src/EasyApp/Gui/Html/plotly-2.18.0.min.js + ../../../../src/EasyApp/Gui/Html/Plotly1dLine.html + ../../../../src/EasyApp/Gui/Html/Plotly1dMeasVsCalc.html + ../../../../src/EasyApp/Gui/Html/Plotly2dHeatmap.html + ../../../../src/EasyApp/Gui/Html/Plotly3dMesh.html + ../../../../src/EasyApp/Gui/Html/Plotly3dScatter.html + ../../../../src/EasyApp/Gui/Html/Plotly3dSurface.html + ../../../../src/EasyApp/Gui/Html/PTSans-Bold.ttf + ../../../../src/EasyApp/Gui/Html/PTSans-Regular.ttf + ../../../../src/EasyApp/Gui/Logic/Plotting.js + ../../../../src/EasyApp/Gui/Logic/ProjectConfig.js + ../../../../src/EasyApp/Gui/Logic/qmldir + ../../../../src/EasyApp/Gui/Logic/Translate.js + ../../../../src/EasyApp/Gui/Logic/Utils.js + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/download.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Black.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Bold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-ExtraLight.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Light.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Medium.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Regular.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-SemiBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/EncodeSans-Thin.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans/OFL.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/download.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Black.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Bold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-ExtraLight.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Light.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Medium.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Regular.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-SemiBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/EncodeSansCondensed-Thin.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Condensed/OFL.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/download.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Black.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Bold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-ExtraLight.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Light.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Medium.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Regular.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-SemiBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/EncodeSansExpanded-Thin.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Encode_Sans_Expanded/OFL.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 5 Free-Solid-900.otf + ../../../../src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Regular-400.otf + ../../../../src/EasyApp/Gui/Resources/Fonts/FontAwesome/Font Awesome 6 Free-Solid-900.otf + ../../../../src/EasyApp/Gui/Resources/Fonts/FontAwesome/LICENSE.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/download.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Black.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-BlackItalic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Bold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-BoldItalic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraBoldItalic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLight.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-ExtraLightItalic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Italic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Light.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-LightItalic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-Regular.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/Nunito-SemiBoldItalic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/Nunito/OFL.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Mono/download.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Mono/OFL.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Mono/PTMono-Regular.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Sans/download.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Sans/OFL.txt + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Bold.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-BoldItalic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Italic.ttf + ../../../../src/EasyApp/Gui/Resources/Fonts/PT_Sans/PTSans-Regular.ttf + ../../../../src/EasyApp/Gui/Resources/Icons/description.txt + ../../../../src/EasyApp/Gui/Style/Colors.qml + ../../../../src/EasyApp/Gui/Style/Fonts.qml + ../../../../src/EasyApp/Gui/Style/qmldir + ../../../../src/EasyApp/Gui/Style/Sizes.qml + ../../../../src/EasyApp/Gui/Style/Times.qml + ../../../../src/EasyApp/Logic/Maintenance/qmldir + ../../../../src/EasyApp/Logic/Maintenance/Updater.qml + ../../../../src/EasyApp/Logic/Utils/__init__.py + ../../../../src/EasyApp/Logic/Utils/Utils.py + ../../../../src/EasyApp/Logic/__init__.py + ../../../../src/EasyApp/Logic/Logging.py + ../../../../src/EasyApp/Logic/Maintenance.py + ../../../../src/EasyApp/Logic/Translate.py + ../../../../src/EasyApp/__init__.py + + diff --git a/examples/BasicPy/src/BasicPy.pyproject b/examples/BasicPy/src/BasicPy.pyproject new file mode 100644 index 00000000..10a3755b --- /dev/null +++ b/examples/BasicPy/src/BasicPy.pyproject @@ -0,0 +1,39 @@ +{ + "files": [ + "BasicPy.qmlproject", + "BasicPy/main.py", + "BasicPy/main.qml", + "BasicPy/Gui/qmldir", + "BasicPy/Gui/ApplicationWindow.qml", + "BasicPy/Gui/StatusBar.qml", + "BasicPy/Gui/Globals/qmldir", + "BasicPy/Gui/Globals/ApplicationInfo.qml", + "BasicPy/Gui/Globals/BackendWrapper.qml", + "BasicPy/Gui/Globals/References.qml", + "BasicPy/Gui/Pages/Home/Content.qml", + "BasicPy/Gui/Pages/Home/Popups/About.qml", + "BasicPy/Gui/Pages/Project/Layout.qml", + "BasicPy/Gui/Pages/Project/MainAreaTabs/Description.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Basic/Layout.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Basic/Groups/Examples.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Basic/Groups/GetStarted.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Basic/Groups/Recent.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Basic/Popups/OpenCifFile.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Basic/Popups/ProjectDescription.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Extra/Layout.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Extra/Groups/Scrolling.qml", + "BasicPy/Gui/Pages/Project/SidebarTabs/Text/Layout.qml", + "BasicPy/Gui/Pages/Report/Layout.qml", + "BasicPy/Gui/Pages/Report/MainAreaTabs/Summary.qml", + "BasicPy/Gui/Pages/Report/SidebarTabs/Basic/Layout.qml", + "BasicPy/Gui/Pages/Report/SidebarTabs/Basic/Groups/Export.qml", + "BasicPy/Gui/Pages/Report/SidebarTabs/Extra/Layout.qml", + "BasicPy/Gui/Pages/Report/SidebarTabs/Extra/Groups/Empty.qml", + "BasicPy/Backends/qmldir", + "BasicPy/Backends/MockBackend.qml", + "BasicPy/Backends/MockQml/Project.qml", + "BasicPy/Backends/MockQml/Report.qml", + "BasicPy/Backends/MockQml/Status.qml", + "BasicPy/Backends/MockQml/qmldir" + ] +} diff --git a/examples/BasicPy/src/BasicPy.qmlproject b/examples/BasicPy/src/BasicPy.qmlproject new file mode 100644 index 00000000..42bbbc11 --- /dev/null +++ b/examples/BasicPy/src/BasicPy.qmlproject @@ -0,0 +1,41 @@ +import QmlProject 1.1 + +Project { + mainFile: "BasicPy/main.qml" + + // List of module and plugin directories passed to QML runtime + importPaths: [ + "BasicPy", + "../../../src", // EasyApp + ] + + // Include .qml files from specified directory and its subdirectories + QmlFiles { + directory: "BasicPy" + } + QmlFiles { + directory: "../../../src/EasyApp" + } + + // Include .js files from specified directory and its subdirectories + JavaScriptFiles { + directory: "BasicPy" + } + JavaScriptFiles { + directory: "../../../src/EasyApp" + } + + // Include Module Definition Files (qmldir), as well as .ts and .qrc + // from specified directory and its subdirectories + Files { + directory: "BasicPy" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + Files { + directory: "../../../src/EasyApp" + filter: "qmldir;*.ts;*.qrc;*.html" + recursive: true + } + +} diff --git a/examples/BasicPy/src/BasicPy/Backends/MockBackend.qml b/examples/BasicPy/src/BasicPy/Backends/MockBackend.qml new file mode 100644 index 00000000..44da4805 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Backends/MockBackend.qml @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +import Backends.MockQml as MockLogic + + +QtObject { + + property var project: MockLogic.Project + property var status: MockLogic.Status + property var report: MockLogic.Report + +} + + diff --git a/examples/BasicPy/src/BasicPy/Backends/MockQml/Project.qml b/examples/BasicPy/src/BasicPy/Backends/MockQml/Project.qml new file mode 100644 index 00000000..566751ba --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Backends/MockQml/Project.qml @@ -0,0 +1,74 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + property bool created: false + + property string name: '' + + readonly property var info: { + 'description': '', + 'location': '', + 'creationDate': '' + } + + readonly property var examples: [ + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3 (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI', + 'name': 'La0.5Ba0.5CoO3-Raw (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Raw_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, HRPT@PSI, 2 phases', + 'name': 'La0.5Ba0.5CoO3-Mult-Phases (HRPT)', + 'path': ':/Examples/La0.5Ba0.5CoO3-Mult-Phases_HRPT@PSI/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D20@ILL', + 'name': 'Co2SiO4 (D20)', + 'path': ':/Examples/Co2SiO4_D20@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, G41@LLB', + 'name': 'Dy3Al5O12 (G41)', + 'path': ':/Examples/Dy3Al5O12_G41@LLB/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, D1A@ILL', + 'name': 'PbSO4 (D1A)', + 'path': ':/Examples/PbSO4_D1A@ILL/project.cif' + }, + { + 'description': 'neutrons, powder, constant wavelength, 3T2@LLB', + 'name': 'LaMnO3 (3T2)', + 'path': ':/Examples/LaMnO3_3T2@LLB/project.cif' + } + ] + + function create() { + console.debug(`Creating project '${name}'`) + info.creationDate = `${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}` + infoChanged() // this signal is not emitted automatically when only part of the object is changed + created = true + } + + function save() { + console.debug(`NOT IMPLEMENTED: Saving project '${name}'`) + } + + function editInfo(path, new_value) { + console.debug(`NOT IMPLEMENTED: Changing project info.${path} from '${info.path}' to '${new_value}'`) + } + +} diff --git a/examples/BasicPy/src/BasicPy/Backends/MockQml/Report.qml b/examples/BasicPy/src/BasicPy/Backends/MockQml/Report.qml new file mode 100644 index 00000000..84132709 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Backends/MockQml/Report.qml @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + property bool created: false + + readonly property string asHtml: ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Summary

      Project information

      NameLa0.5Ba0.5CoO3
      Descriptionneutrons, powder, constant wavelength
      No. of phases1
      No. of experiments1

      Crystal data

      Phase datablocklbco
      Crystal system, space groupcubic,  P m -3 m

      Data collection

      Experiment datablockhrpt
      Radiation probeneutron
      Measured range: min, max, inc (°)10.0,  164.85,  0.05
      + + +' + +} diff --git a/examples/BasicPy/src/BasicPy/Backends/MockQml/Status.qml b/examples/BasicPy/src/BasicPy/Backends/MockQml/Status.qml new file mode 100644 index 00000000..452ca9e5 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Backends/MockQml/Status.qml @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property string project: 'Undefined' + readonly property string phasesCount: '1' + readonly property string experimentsCount: '1' + readonly property string calculator: 'CrysPy' + readonly property string minimizer: 'Lmfit (leastsq)' + readonly property string variables: '31 (3 free, 28 fixed)' + +} diff --git a/examples/BasicPy/src/BasicPy/Backends/MockQml/qmldir b/examples/BasicPy/src/BasicPy/Backends/MockQml/qmldir new file mode 100644 index 00000000..7fb05624 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Backends/MockQml/qmldir @@ -0,0 +1,5 @@ +module MockQml + +singleton Project Project.qml +singleton Report Report.qml +singleton Status Status.qml diff --git a/examples/BasicPy/src/BasicPy/Backends/qmldir b/examples/BasicPy/src/BasicPy/Backends/qmldir new file mode 100644 index 00000000..fdc15f20 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Backends/qmldir @@ -0,0 +1,3 @@ +module Logic + +singleton MockBackend MockBackend.qml diff --git a/examples/BasicPy/src/BasicPy/Gui/ApplicationWindow.qml b/examples/BasicPy/src/BasicPy/Gui/ApplicationWindow.qml new file mode 100644 index 00000000..835e886f --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/ApplicationWindow.qml @@ -0,0 +1,114 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui as Gui +import Gui.Globals as Globals + +EaComponents.ApplicationWindow { + + /////////////////// + // APPLICATION BAR + /////////////////// + + // Left group of application bar tool buttons + appBarLeftButtons: [ + + EaElements.ToolButton { + enabled: Globals.BackendWrapper.projectCreated + highlighted: true + fontIcon: 'save' + ToolTip.text: qsTr('Save current state of the project') + onClicked: Globals.BackendWrapper.projectSave() + } + + ] + + // Right group of application bar tool buttons + appBarRightButtons: [ + + EaElements.ToolButton { + fontIcon: 'cog' + ToolTip.text: qsTr('Application preferences') + onClicked: EaGlobals.Vars.showAppPreferencesDialog = true + } + + ] + + // Central group of application bar page buttons (workflow tabs) + // Page buttons for the pages described below + appBarCentralTabs.contentData: [ + + // Home page + EaElements.AppBarTabButton { + id: homeButton + fontIcon: 'home' + text: qsTr('Home') + ToolTip.text: qsTr('Home') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.homeButton = homeButton + } + }, + // Home page + + // Project page + EaElements.AppBarTabButton { + id: projectButton + enabled: false + fontIcon: 'archive' + text: qsTr('Project') + ToolTip.text: qsTr('Project description page') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.projectButton = projectButton + } + }, + // Project page + + // Summary page + EaElements.AppBarTabButton { + id: summaryButton + enabled: false + fontIcon: 'clipboard-list' + text: qsTr('Summary') + ToolTip.text: qsTr('Summary of the work done') + Component.onCompleted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton = summaryButton + } + } + // Summary page + ] + + ////////////////////////////////// + // APP PAGES (MAIN AREA + SIDEBAR) + ////////////////////////////////// + + // Pages for the tab buttons described above + contentArea: [ + Loader { source: 'Pages/Home/Content.qml' }, + Loader { source: 'Pages/Project/Layout.qml' }, + Loader { source: 'Pages/Report/Layout.qml' } + ] + + ///////////// + // STATUS BAR + ///////////// + + statusBar: Gui.StatusBar {} + + /////// + // MISC + /////// + + onClosing: Qt.quit() + + Component.onCompleted: console.debug(`Application window loaded ::: ${this}`) + Component.onDestruction: console.debug(`Application window destroyed ::: ${this}`) + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Globals/ApplicationInfo.qml b/examples/BasicPy/src/BasicPy/Gui/Globals/ApplicationInfo.qml new file mode 100644 index 00000000..3af43719 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Globals/ApplicationInfo.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +QtObject { + + readonly property var about: { + 'name': 'BasicPy', + 'namePrefix': 'Basic', + 'nameSuffix': 'Py', + 'namePrefixForLogo': 'basic', + 'nameSuffixForLogo': 'py', + 'homePageUrl': 'https://github.com/EasyScience/EasyExample', + 'issuesUrl': 'https://github.com/EasyScience/EasyExample/issues', + 'licenseUrl': 'https://github.com/EasyScience/EasyExample/LICENCE.md', + 'dependenciesUrl': 'https://github.com/EasyScience/EasyExample/DEPENDENCIES.md', + 'version': '1.0.0', + 'icon': Qt.resolvedUrl('../Resources/Logos/App.svg'), + 'date': new Date().toISOString().slice(0,10), + 'developerYearsFrom': '2019', + 'developerYearsTo': '2024', + 'description': 'Example of a desktop application of basic complexity with Python backend and EasyApp-based GUI', + 'developerIcons': [ + { + 'url': 'https://ess.eu', + 'icon': Qt.resolvedUrl('../Resources/Logos/ESS.png'), + 'heightScale': 3.0 + } + ] + } + +} + diff --git a/examples/BasicPy/src/BasicPy/Gui/Globals/BackendWrapper.qml b/examples/BasicPy/src/BasicPy/Gui/Globals/BackendWrapper.qml new file mode 100644 index 00000000..c0d36666 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Globals/BackendWrapper.qml @@ -0,0 +1,67 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + +// This module is registered in the main.py file and allows access to the properties +// and backend methods of the singleton object of the ‘PyBackend’ class. +// If ‘PyBackend’ is not defined, then 'MockBackend' from directory 'Backends' is used. +// It is needed to run the GUI frontend via the qml runtime tool without any Python backend. +import Backends as Backends + + +QtObject { + + //////////////// + // Backend proxy + //////////////// + + readonly property var activeBackend: { + if (typeof Backends.PyBackend !== 'undefined') { + console.debug('REAL python backend is in use') + return Backends.PyBackend + } else { + console.debug('MOCK QML backend is in use') + return Backends.MockBackend + } + } + + ///////////// + // Status bar + ///////////// + + readonly property string statusProject: activeBackend.status.project + readonly property string statusPhasesCount: activeBackend.status.phasesCount + readonly property string statusExperimentsCount: activeBackend.status.experimentsCount + readonly property string statusCalculator: activeBackend.status.calculator + readonly property string statusMinimizer: activeBackend.status.minimizer + readonly property string statusVariables: activeBackend.status.variables + + /////////////// + // Project page + /////////////// + + readonly property var projectInfo: activeBackend.project.info + readonly property var projectExamples: activeBackend.project.examples + + property bool projectCreated: activeBackend.project.created + onProjectCreatedChanged: activeBackend.project.created = projectCreated + property string projectName: activeBackend.project.name + onProjectNameChanged: activeBackend.project.name = projectName + + function projectCreate() { activeBackend.project.create() } + function projectSave() { activeBackend.project.save() } + function projectEditInfo(path, new_value) { activeBackend.project.editInfo(path, new_value) } + + /////////////// + // Summary page + /////////////// + + readonly property string reportAsHtml: activeBackend.report.asHtml + + property bool reportCreated: activeBackend.report.created + onReportCreatedChanged: activeBackend.report.created = reportCreated +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Globals/References.qml b/examples/BasicPy/src/BasicPy/Gui/Globals/References.qml new file mode 100644 index 00000000..0d9d7812 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Globals/References.qml @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +pragma Singleton + +import QtQuick + + +// Initialisation of the reference dictionary. It is filled in later, when the required object is +// created and its unique id is assigned and added here instead of 'null'. After that, any object +// whose id is stored here can be accessed from any other qml file. +QtObject { + + // Populated in ApplicationWindows.qml + readonly property var applicationWindow: { + 'appBarCentralTabs': { + 'homeButton': null, + 'projectButton': null, + 'summaryButton': null, + } + } + + // Populated in Pages/... + readonly property var pages: { + 'project': { + 'sidebar': { + 'basic': { + 'popups': { + 'openCifFile': null + } + } + } + } + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Globals/qmldir b/examples/BasicPy/src/BasicPy/Gui/Globals/qmldir new file mode 100644 index 00000000..00d72e33 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Globals/qmldir @@ -0,0 +1,5 @@ +module Globals + +singleton ApplicationInfo ApplicationInfo.qml +singleton BackendWrapper BackendWrapper.qml +singleton References References.qml diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Home/Content.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Home/Content.qml new file mode 100644 index 00000000..e0b7a198 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Home/Content.qml @@ -0,0 +1,140 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Item { + + Column { + anchors.centerIn: parent + + // Application logo + Image { + id: appLogo + + source: Globals.ApplicationInfo.about.icon + anchors.horizontalCenter: parent.horizontalCenter + width: EaStyle.Sizes.fontPixelSize * 5 + fillMode: Image.PreserveAspectFit + antialiasing: true + } + // Application logo + + // Application name + Row { + id: appName + + property string fontFamily: EaStyle.Fonts.thirdFontFamily + property string fontPixelSize: EaStyle.Sizes.fontPixelSize * 4 + + anchors.horizontalCenter: parent.horizontalCenter + + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.Light + text: Globals.ApplicationInfo.about.namePrefixForLogo + } + EaElements.Label { + font.family: parent.fontFamily + font.pixelSize: parent.fontPixelSize + font.weight: Font.DemiBold + text: Globals.ApplicationInfo.about.nameSuffixForLogo + } + } + // Application name + + // Application version + EaElements.Label { + id: appVersion + + anchors.horizontalCenter: parent.horizontalCenter + + text: { + return qsTr('Version') + ` ${Globals.ApplicationInfo.about.version} (${Globals.ApplicationInfo.about.date})` + } + } + // Application version + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Start button + EaElements.SideBarButton { + id: startButton + + anchors.horizontalCenter: parent.horizontalCenter + + fontIcon: 'rocket' + text: qsTr('Start') + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.projectButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.projectButton.toggle() + } + } + + // Vertical spacer + Item { width: 1; height: EaStyle.Sizes.fontPixelSize * 2.5 } + + // Links + Row { + id: links + + anchors.horizontalCenter: parent.horizontalCenter + spacing: EaStyle.Sizes.fontPixelSize * 3 + + // Left links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('About %1'.arg(Globals.ApplicationInfo.about.name)) + onClicked: EaGlobals.Vars.showAppAboutDialog = true + Loader { source: 'Popups/About.qml' } + } + EaElements.Button { + text: qsTr('Online documentation') + onClicked: Qt.openUrlExternally('https://github.com/EasyScience/EasyApp') + } + EaElements.Button { + text: qsTr('Get in touch online') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Left links + + // Right links + Column { + spacing: EaStyle.Sizes.fontPixelSize + + EaElements.Button { + text: qsTr('Tutorial') + ' 1: ' + qsTr('App interface') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 2: ' + qsTr('Basic usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + EaElements.Button { + text: qsTr('Tutorial') + ' 3: ' + qsTr('Advanced usage') + onClicked: console.debug(`Button clicked: ${text}`) + } + } + // Right links + } + // Links + } + + Component.onCompleted: console.debug(`Home page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Home page destroyed ::: ${this}`) + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Home/Popups/About.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Home/Popups/About.qml new file mode 100644 index 00000000..11815fdd --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Home/Popups/About.qml @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.AboutDialog { + + visible: EaGlobals.Vars.showAppAboutDialog + onClosed: EaGlobals.Vars.showAppAboutDialog = false + + appIconPath: Globals.ApplicationInfo.about.icon + appUrl: Globals.ApplicationInfo.about.homePageUrl + + appPrefixName: Globals.ApplicationInfo.about.namePrefixForLogo + appSuffixName: Globals.ApplicationInfo.about.nameSuffixForLogo + appVersion: Globals.ApplicationInfo.about.version + appDate: Globals.ApplicationInfo.about.date + + eulaUrl: Globals.ApplicationInfo.about.licenseUrl + oslUrl: Globals.ApplicationInfo.about.dependenciesUrl + + description: Globals.ApplicationInfo.about.description + developerIcons: Globals.ApplicationInfo.about.developerIcons + developerYearsFrom: Globals.ApplicationInfo.about.developerYearsFrom + developerYearsTo: Globals.ApplicationInfo.about.developerYearsTo + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Layout.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Layout.qml new file mode 100644 index 00000000..6c03c65c --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Layout.qml @@ -0,0 +1,59 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.projectCreated ? + '' : + qsTr('No project defined') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Description') } + ] + + items: [ + Loader { source: 'MainArea/Description.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') }, + EaElements.TabButton { text: qsTr('Text mode controls'); enabled: false } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' }, + Loader { source: 'Sidebar/Text/Layout.qml' } + ] + + continueButton.text: Globals.BackendWrapper.projectCreated ? + qsTr('Continue') : + qsTr('Continue without project') + + continueButton.onClicked: { + console.debug(`Clicking '${continueButton.text}' button ::: ${this}`) + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.toggle() + } + } + + Component.onCompleted: console.debug(`Project page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Project page destroyed ::: ${this}`) + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/MainArea/Description.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/MainArea/Description.qml new file mode 100644 index 00000000..8ce72b2f --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/MainArea/Description.qml @@ -0,0 +1,89 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + readonly property int commonSpacing: EaStyle.Sizes.fontPixelSize * 1.5 + + color: EaStyle.Colors.mainContentBackground + + Column { + id: container + + anchors.top: parent.top + anchors.left: parent.left + + anchors.topMargin: commonSpacing + anchors.leftMargin: commonSpacing * 1.5 + + spacing: commonSpacing + + // Project title + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + font.family: EaStyle.Fonts.secondFontFamily + font.pixelSize: EaStyle.Sizes.fontPixelSize * 3 + font.weight: Font.ExtraLight + validator: RegularExpressionValidator { regularExpression: /^[a-zA-Z][a-zA-Z0-9_\-\.]{1,30}$/ } + placeholderText: qsTr("Enter project name here") + text: Globals.BackendWrapper.projectName + onEditingFinished: Globals.BackendWrapper.projectName = text + } + // Project title + + // Project info + Grid { + columns: 2 + rowSpacing: 0 + columnSpacing: commonSpacing + + EaElements.Label { + font.bold: true + text: qsTr('Description:') + } + EaElements.TextInput { + width: Math.max(implicitWidth, 1) + placeholderText: qsTr("Enter project description here") + text: Globals.BackendWrapper.projectInfo.description + onEditingFinished: Globals.BackendWrapper.projectEditInfo('description', text) + } + + EaElements.Label { + font.bold: true + text: qsTr('Location:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.location + } + + EaElements.Label { + font.bold: true + text: qsTr('Created:') + } + EaElements.Label { + width: Math.max(implicitWidth, 1) + text: Globals.BackendWrapper.projectInfo.creationDate + } + } + // Project info + + // Project image + Image { + width: EaStyle.Sizes.fontPixelSize * 25 + fillMode: Image.PreserveAspectFit + } + // Project image + + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml new file mode 100644 index 00000000..065031c7 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Examples.qml @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No examples available') + + model: Globals.BackendWrapper.projectExamples + + // header + header: EaComponents.TableViewHeader { + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + EaComponents.TableViewLabel { + flexibleWidth: true + horizontalAlignment: Text.AlignLeft + text: qsTr('name / description') + } + } + // header + + // delegate + delegate: EaComponents.TableViewDelegate { + mouseArea.onPressed: { + const filePath = tableView.model[index].path + console.debug(`Loading example: ${filePath}`) + } + + EaComponents.TableViewLabel { + text: index + 1 + color: EaStyle.Colors.themeForegroundMinor + } + + EaComponents.TableViewTwoRowsAdvancedLabel { + fontIcon: 'archive' + text: tableView.model[index].name + minorText: tableView.model[index].description + ToolTip.text: tableView.model[index].description + } + } + // delegate + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml new file mode 100644 index 00000000..cb1ab180 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/GetStarted.qml @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +//import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Grid { + + columns: 2 + spacing: EaStyle.Sizes.fontPixelSize + + // button 1 + EaElements.SideBarButton { + fontIcon: 'plus-circle' + text: qsTr('Create a new project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + EaGlobals.Vars.showProjectDescriptionDialog = true + } + + Loader { + source: '../Popups/ProjectDescription.qml' + } + } + // button 1 + + // button 2 + EaElements.SideBarButton { + fontIcon: 'upload' + text: qsTr('Open an existing project') + + onClicked: { + console.debug(`Clicking '${text}' button ::: ${this}`) + Globals.References.pages.project.sidebar.basic.popups.openCifFile.open() + } + + Loader { + source: '../Popups/OpenCifFile.qml' + } + } + // button 2 + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml new file mode 100644 index 00000000..8357f95a --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Groups/Recent.qml @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtCore + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +EaComponents.TableView { + + id: tableView + + showHeader: false + tallRows: true + maxRowCountShow: 6 + + defaultInfoText: qsTr('No recent projects found') + + // Header row + header: EaComponents.TableViewHeader { + + EaComponents.TableViewLabel { + enabled: false + width: EaStyle.Sizes.fontPixelSize * 2.5 + } + + } + // Header row + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..23952b4b --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Layout.qml @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Get started') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/GetStarted.qml' } + } + + EaElements.GroupBox { + title: qsTr('Examples') + icon: 'database' + + Loader { source: 'Groups/Examples.qml' } + } + + EaElements.GroupBox { + title: qsTr('Recent projects') + icon: 'archive' + + Loader { source: 'Groups/Recent.qml' } + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml new file mode 100644 index 00000000..649bb8a8 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/OpenCifFile.qml @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +FileDialog{ + + id: openCifFileDialog + + fileMode: FileDialog.OpenFile + nameFilters: [ 'CIF files (*.cif)'] + + onAccepted: { + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + Globals.References.pages.project.sidebar.basic.popups.openCifFile = openCifFileDialog + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml new file mode 100644 index 00000000..dcc2277b --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Basic/Popups/ProjectDescription.qml @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ProjectDescriptionDialog { + + visible: EaGlobals.Vars.showProjectDescriptionDialog + onClosed: EaGlobals.Vars.showProjectDescriptionDialog = false + + projectName: Globals.BackendWrapper.projectName + projectDescription: Globals.BackendWrapper.projectInfo.description + + onAccepted: { + Globals.BackendWrapper.projectName = projectName + Globals.BackendWrapper.projectEditInfo('description', projectDescription) + Globals.BackendWrapper.projectCreate() + Globals.References.applicationWindow.appBarCentralTabs.summaryButton.enabled = true + } + + Component.onCompleted: { + projectLocation = Globals.BackendWrapper.projectInfo.location + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml new file mode 100644 index 00000000..4bc89207 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Groups/Scrolling.qml @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column { + + property int labelsCount: 50 + + spacing: EaStyle.Sizes.fontPixelSize + + Repeater { + model: labelsCount + EaElements.Label { + text: `Label ${index+1} of ${labelsCount}` + } + } + +} + diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..273d95a0 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Extra/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Scrolling') + icon: 'rocket' + collapsed: false + + Loader { source: 'Groups/Scrolling.qml' } + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Text/Layout.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Text/Layout.qml new file mode 100644 index 00000000..3c9c9d63 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Project/Sidebar/Text/Layout.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + + +EaComponents.SideBarColumn {} + diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Layout.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Layout.qml new file mode 100644 index 00000000..3beddbdd --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Layout.qml @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.ContentPage { + + defaultInfo: Globals.BackendWrapper.reportCreated ? + '' : + qsTr('No Summary Generated') + + mainView: EaComponents.MainContent { + tabs: [ + EaElements.TabButton { text: qsTr('Summary') } + ] + + items: [ + Loader { source: 'MainArea/Summary.qml' } + ] + } + + sideBar: EaComponents.SideBar { + tabs: [ + EaElements.TabButton { text: qsTr('Basic controls') }, + EaElements.TabButton { text: qsTr('Extra controls') } + ] + + items: [ + Loader { source: 'Sidebar/Basic/Layout.qml' }, + Loader { source: 'Sidebar/Extra/Layout.qml' } + ] + + continueButton.visible: false + } + + Component.onCompleted: console.debug(`Summary page loaded ::: ${this}`) + Component.onDestruction: console.debug(`Summary page destroyed ::: ${this}`) + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Report/MainArea/Summary.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/MainArea/Summary.qml new file mode 100644 index 00000000..0168ba3a --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/MainArea/Summary.qml @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Animations as EaAnimations +import EasyApp.Gui.Elements as EaElements + +import Gui.Globals as Globals + + +Rectangle { + + color: EaStyle.Colors.textViewBackground + Behavior on color { EaAnimations.ThemeChange {} } + + // Flickable + Flickable { + id: flick + + anchors.fill: parent + + contentWidth: textArea.contentWidth + contentHeight: textArea.contentHeight + + clip: true + flickableDirection: Flickable.VerticalFlick + + ScrollBar.vertical: EaElements.ScrollBar { + policy: ScrollBar.AsNeeded + interactive: false + } + + // Main text area + EaElements.TextArea { + id: textArea + + readOnly: true + + width: flick.width + topPadding: 0 + bottomPadding: 0 + padding: 2.5 * EaStyle.Sizes.fontPixelSize + + textFormat: TextEdit.RichText + text: Globals.BackendWrapper.reportAsHtml + } + // Main text area + + } + // Flickable + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml new file mode 100644 index 00000000..e80a6b4c --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Groups/Export.qml @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs +import QtCore + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Globals as EaGlobals +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Logic as EaLogic + +import Gui.Globals as Globals + + +Column { + + property string projectLocation: Globals.BackendWrapper.projectInfo.location + + EaLogic.Utils.osPathSep() + + 'summary' + + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + format selector + Row { + spacing: EaStyle.Sizes.fontPixelSize + + // Name field + EaElements.TextField { + id: nameField + width: saveButton.width - formatField.width - parent.spacing + topInset: nameLabel.height + topPadding: topInset + padding + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter summary file name here') + Component.onCompleted: text = 'summary' + EaElements.Label { + id: nameLabel + text: qsTr('Name') + } + } + // Name field + + // Format selector + EaElements.ComboBox { + id: formatField + topInset: formatLabel.height + topPadding: topInset + padding + width: EaStyle.Sizes.fontPixelSize * 10 + textRole: 'text' + valueRole: 'value' + model: [ + { value: 'html', text: qsTr('HTML') } + ] + EaElements.Label { + id: formatLabel + text: qsTr('Format') + } + } + // Format selector + } + // Name field + format selector + + // Location field + EaElements.TextField { + id: reportLocationField + width: saveButton.width + topInset: locationLabel.height + topPadding: topInset + padding + rightPadding: chooseButton.width + horizontalAlignment: TextInput.AlignLeft + placeholderText: qsTr('Enter report location here') + Component.onCompleted: text = projectLocation + + EaElements.Label { + id: locationLabel + text: qsTr('Location') + } + + EaElements.ToolButton { + id: chooseButton + anchors.right: parent.right + topPadding: parent.topPadding + showBackground: false + fontIcon: 'folder-open' + ToolTip.text: qsTr('Choose report parent directory') + onClicked: reportParentDirDialog.open() + } + } + // Location field + + // Save button + EaElements.SideBarButton { + id: saveButton + wide: true + fontIcon: 'download' + text: qsTr('Save') + } + // Save button + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml new file mode 100644 index 00000000..472d957a --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Basic/Layout.qml @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + enabled: false + title: qsTr('Export summary') + icon: 'download' + collapsed: false + + Loader { source: 'Groups/Export.qml' } + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml new file mode 100644 index 00000000..9f478042 --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Groups/Empty.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick + +import EasyApp.Gui.Style as EaStyle +import EasyApp.Gui.Elements as EaElements + + +Column {} + diff --git a/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml new file mode 100644 index 00000000..ef2a2edc --- /dev/null +++ b/examples/BasicPy/src/BasicPy/Gui/Pages/Report/Sidebar/Extra/Layout.qml @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2024 EasyApp contributors +// SPDX-License-Identifier: BSD-3-Clause +// © 2024 Contributors to the EasyApp project + +import QtQuick +import QtQuick.Controls + +import EasyApp.Gui.Elements as EaElements +import EasyApp.Gui.Components as EaComponents + +import Gui.Globals as Globals + + +EaComponents.SideBarColumn { + + EaElements.GroupBox { + title: qsTr('Empty') + icon: 'rocket' + } + +} diff --git a/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.icns b/examples/BasicPy/src/BasicPy/Gui/Resources/Logos/App.icns new file mode 100644 index 0000000000000000000000000000000000000000..70975cb15da57f34bc198449a13b91090c21bd08 GIT binary patch literal 296301 zcmZs?1B@s@(B^5?yMZ?{#aDxK=2ldjWgSQ^_o z1Av6uS{gGl{F9~t001yn3IqhOP~lMjFp8Orr-PLP6Tv?W@IO-ipS1X=qFGv)H~|2F z{Dc202srqE`T)Qi+uJw+{ud(rYl)0aOwIn=2LJ#N0Qg`1j|2b!`j-Lz>HpF{cgDZ+ zzls1%|Iz-(-GAVJ)BjHg0S5&9f6A{305Jfdu#>5wi@g&Ufs~=Mf~gaMnyHhsrM(>i zBONCL10Cb95&+CUPk;cRARqvMzd8WO0s;~e3jcfg)dfHS{J&a({;yWx|I?ZP@So`d z2_gA6MDlL9bw8qlGB~}3vkkgdl^Kw1K10^ii!L`4M5zz!pyo*h-r7K^W%<`R3qZ!N z>AX4dp)B+-zt1?feIh@C#W^Ol%uXKl0{34a_;eAg^XkA`fQ9^TFL3XoFHpWKnHh{|WlYJc&rF#F;;3JelDtjo#I~>o1ag z%#5Ga)vfK-oz2e?j=>AvaKOj8Ll&r}Nfn60G0qP2U5XflD82oroTGo*JFyQfV{rgjO4)y5rX8m#8} zwgur)gnJg#2jTwSl`+N$C)pm5HRA0LX$anQ9(Z3f-tuy1;P6kAk6NDANO4f~McjbX zMryxkNYd?e`4n_5OjI}^B4A7`BWwR^%J0^Q+8jbrK59R7BZYpeXluIdB!i`BRq*7M@J?r84?@T>ogPBDN{*X)-74e?2wX+T1-p*(VX>C=U*e2PK^Ux zUG_a(6xJPdAKeOua1MJ{B{d*8GOr~C#cRbDM79d@iOdYvz}{Xv_UC2mIo_|I{ee|^ z>JWkiZZIb3)*6<%DF2|``P&8wr@kuP#N+n2@%v!sWJ_tbQP6YIPMFgj51UhP{hs7>VU*7?99p%0J*&)#1CJPcAqoX+CMU z=A>-l7y(VNBn+QPjliXtJc%Aaa+wf`^mGO3K;Bd@7U-0jyd>+hk{I3$qT=)`jm1En zGS(VJn={TW#8+=08K2h3vn_)B=uKx~8};tzr_^-C?Lb&67N9i{aac@SN=3MEzJVIn zMbSBpATP1UseD0|SQEb5?aF9wDa~AZr$Yw%0u8bT($v7VJ#I=#e>dF3;J+)(1~sp- z8UeVY^h2cBYA>RxQ{8@eXuz&$5>LA zjjn`BR(?W>^2mY8dhFWc)#&MS7?c?i&gAcj^1u|v`KP}Rl8c%Ga5Qb0)>61UIaWfB zz=f6J0m(@1%Z#NlU9W2hV=`;TAxE8HU*I~4Zz))ZzTg#9h7ZK4RnO-bz$UBO{-i?1-O9YHbMYeS z0jVcp1R?RE#0q6*f?g~F8nD%+J}K{n94?M63tHUn(Ha6H!F^3nYI;|`qwEJe?d15c zbj$>XPZU%@wf|2Lo7-0>A#!MwOI`~iqn4nxR|J2>R-&ld`8VRCpJqr|y)wY1b$SR3 zy+IOuV$6ouCKV`?nGvugN|{NNq_LlcMD378GGw11GZMH?I$H+@ZU;89E6q@b-j*E9 zT#iNAQUv93ip|8R^VDK?0>G-IPIQ#KCYvqghB0U(ed5p+>iNcdE`|eT@a$_-T#)3v zP+j{oq>&7`@Ry3RzMGAly1v~GE@K(0d^S; zK2G@xF3T4ek=~IDp z8PtmnUXBSP4LwlmHxFgQnIQ{Y3b`Sj;Qsmx5mqwsWsdN2+48!W@21 zg_jC_v|$m_+-1uLae4j_#F_KM7~%gI3O8=6{*Ec4dqFyWtJ`u?nBhJY@A!i?tl?r;eT2qlJg zHKRoH{KiuL@!0X>UjN;2vx5IF6BELDwzpfok=Y!G?h3c=aMXOmS()*2fKqQ*90>ht z744hwfKG7650xvm0eKP`>|uDlt1NR~((eO!S~mT%I>r!G2+%qhZLhifYL~c|Fvyp~ zV#2|NMuR!+cg@E}+&D;r@rIuui0xF^LFY+?aEEq9Cpt79K8mNHkal?4z&E9BNODyR z5h0Y&)(TZl_9A=mRq`){vq8e)c4FE;miaT=(XKm7pkv+P@PdZw2gitAKYtU~5;zpj zQuSXa{N*&m7 zqApJ-1XO!EpqTb-lM8VNf+WEMwe~zdN8($FKZFgOpIzcB)TGM zD&SVRP7EXR&NLZTa4Bd2=+Fs8oV`) zSIy-Icgbwo3|ebizxw-Fc417WH4Q~+Lgil5W*(fa76?v$e^FaeQx*`sq^L(#y?l+S zDp`MsIV0RNc4`V7p7YPv) z`6}s6BgZuV&3w8O4XY2ysLu5pqC6Yh>*ol%@h~f~Xrx}Z5=t*7<#5y~Wt~%HBd+xs zH@{g8fe8@C$d?5ws`-Hihxxz&Ilu?=;ST+$mNggbb>+c-o>kAQd67#7{0K7a zG2ev!6!3X;i-~W-?V{e;Ln%^LARah{(I`|;Y5=}l{k3!Fc*uJBE?`Q zOQ*aT`2}_O-FtXFa=FmlPdIRg?>k0I$t{X*9BS&266uk`PBw7J@nU(BYyTqIsgctyp$iC4h|Q;FOFC>X_NmrsSx~taT@E{9S5D z`zIkRS<{BJB-yDbCQv<-YT)hw{=rj0hrZSrS6Gs&3$k<;iSF&_OPnl_AG}xXlQEX3 z!#RapsgJ;QM*0v&rWPVX6mfS6nVEKA1EYUMfctMWw74@8iIzkkQa z_cFy0)JAqZ;A5G=t%+%661v3>#xU)oPWInJSceRxV(MjXvlf_RBYpo%m?gz#BvS$^ z7#S+(@?bhzUPAy*+)m#6EKCQ5ne>yC6{%#Bbq-m2ItV_E#90_$Qi_&o-WqAdBx19W z(WyM0!aT-?QQ8P#XlomN6)K0IHCvY;Djs>o&~4``A;